GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Zippanto - 2015. július 08. - 16:37:16

Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 08. - 16:37:16
Sziasztok!
Leírjátok, hogyan tudnék időnként mozgó objektet létrehozni? Az objekt egy sífelvonó lenne a chilliad tetejére.
Mikor a felvonó lent van:
5837, -2099.14990, -2237.17969, 33.05110,   0.00000, 0.00000, 142.62920

 
Mikor a felvonó fent van:
5837, -2391.9258, -2002.0930, 301.2155,   0.0000, 0.0000, 140.5846

 
Úgy szeretném megcsinálni, hogy fent és lent is 10 másodpercet legyen, szóval mikor felér a fenti leszállóhelyre akkor ott 10 mp-t várakozik, és mikor letelt akkor elkezd lefelé menni. Mikor leér akkor ott is 10 mp és így tovább..
Cím: Időnként mozgó objekt
Írta: 1Mark6 - 2015. július 09. - 09:16:15
Eléggé egyszerű megcsinálna, csak Timer és egy Move(Dynamic)Object kell hozzá, szerintem te is megtudod csinálni.
Nem teszteltem, de logikailag mükődnie kell :
 
#include <a_samp>
new Lift;
forward LiftFelkuld();
forward LiftLekuld();
main()
{
print(\"\\n----------------------------------\");
print(\" LIFT\");
print(\"----------------------------------\\n\");
}
 
public OnGameModeInit()
{
    Lift = CreateObject(5837, -2099.14990, -2237.17969, 33.05110,   0.00000, 0.00000, 142.62920);
SetTimer(\"LiftFelkuld\",10000,0);
return 1;
}
public LiftFelkuld()
{
MoveObject(Lift,-2391.9258, -2002.0930, 301.2155,   0.0000, 0.0000, 140.5846);
SetTimer(\"LiftLekuld\",10000,0);
}
public LiftLekuld()
{
MoveObject(Lift,-2099.14990, -2237.17969, 33.05110,   0.00000, 0.00000, 142.62920);
SetTimer(\"LiftFelkuld\",10000,0);
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 10:22:26
Megnézem
Cím: Időnként mozgó objekt
Írta: Flash - 2015. július 09. - 10:25:00
A moveobjectnek megse adtál sebességet.
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 10:51:31
Megadtam a sebességet, de a lift az alsó megállóhelyen van és nem mozdul meg.
Cím: Időnként mozgó objekt
Írta: 1Mark6 - 2015. július 09. - 10:57:53
Tesztelve!
100-as sebbeségel 10mp-t vár, ezt tudod szabályozni : felrakod a várakozási időt 20mp-re és a sebbeséget 50re akkor is 10mpt fog várni csak lassab lesz!
 
#include <a_samp>
new Lift;
forward LiftFelkuld();
forward LiftLekuld();
main()
{
print(\"\\n----------------------------------\");
print(\" LIFT\");
print(\"----------------------------------\\n\");
}
 
public OnGameModeInit()
{
    Lift = CreateObject(5837, -2099.14990, -2237.17969, 33.05110,   0.00000, 0.00000, 142.62920);
SetTimer(\"LiftFelkuld\",10000,0);
return 1;
}
public LiftFelkuld()
{
MoveObject(Lift,-2391.9258, -2002.0930, 301.2155, 100, 0.0000, 0.0000, 140.5846);
SetTimer(\"LiftLekuld\",10000,0);
}
public LiftLekuld()
{
MoveObject(Lift,-2099.14990, -2237.17969, 33.05110,   100, 0.00000, 0.00000, 142.62920);
SetTimer(\"LiftFelkuld\",10000,0);
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 11:18:59
Ugyanaz a hiba, nem mozdul. Az baj, hogy nem a módba írtam, hanem egy külön filterscriptbe?
Cím: Időnként mozgó objekt
Írta: Flash - 2015. július 09. - 11:58:58
Írtam neked egyet egy másik megoldással.
 
#include <a_samp>
forward MoveLift();
new lift, liftobject;
public OnFilterScriptInit()
{
SetTimer(\"lift\", 20000, true);
    liftobject = CreateObject(5837, -2099.14990, -2237.17969, 33.05110,   0.00000, 0.00000, 142.62920);
return 1;
}
public MoveLift() {
    lift = !lift;
if(lift) MoveObject(liftobject, -2391.9258, -2002.0930, 301.2155, 15.0, 0.0000, 0.0000, 140.5846);
else MoveObject(liftobject, -2099.14990, -2237.17969, 33.05110, 15, 0.00000, 0.00000, 142.62920);
return 1;
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 12:10:34
Most meg az objektet nem teszi le. :(
Ha megkérlek titeket(téged) akkor írsz egy parancsot hozzá?
Úgy kéne, hogyha beírja /felvonó , akkor ha fent van a felvonó akkor lehozza, ha lent van akkora felvigye, és amikor út közben írják be akkor írjon ki nekik valamit.
Gondolom ezt is timerrel és változókkal kell.
Cím: Időnként mozgó objekt
Írta: .random. - 2015. július 09. - 13:14:53
Nem teszteltem!
Ha nincs ott az Object, akkor ellenőrizd a koordinátákat.
 

#include <a_samp>
#include <zcmd>
forward MoveLift();
new lift, liftobject;
public OnFilterScriptInit()
{
liftobject = CreateObject(5837, -2099.14990, -2237.17969, 33.05110, 0.00000, 0.00000, 142.62920);
return 1;
}
public MoveLift()
{
lift = !lift;
if(lift) MoveObject(liftobject, -2391.9258, -2002.0930, 301.2155, 15.0, 0.0000, 0.0000, 140.5846);
else MoveObject(liftobject, -2099.14990, -2237.17969, 33.05110, 15, 0.00000, 0.00000, 142.62920);
return 1;
}
CMD:felvono(playerid)
{
if(IsObjectMoving(liftobject)) return SendClientMessage(playerid, -1, \"Jelenleg mozog a felvonó!\");
MoveLift();
return 1;
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 13:56:45
Kordinátákat ellenőriztem. Az objekt nem látszódik, és a parancsot nem ismeri fel (nincs ilyen parancs azt írja).
Cím: Időnként mozgó objekt
Írta: .random. - 2015. július 09. - 14:07:51
Ne filterscript ként használd, hanem tedd bele a módba. Gondolom, hogy azt nem kell leírni, hogy mit hova, mivel elég egyértelmű :)
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 15:24:11
Beraktam a parancsot és minden dolgot még ami kellett hozzá, amikor beírtam a parancsot a szerveren ezt kaptam: SERVER: Unknown command.
Mi a baj ezzel?
 
if(strcmp(cmd, \"/felvonó\", true) == 0)
{
if(IsPlayerConnected(playerid))
{
   if(IsObjectMoving(liftobject))
   {
      MoveLift();
      return 1;
   }
   else
   {
       SendClientMessage(playerid, -1, \"Jelenleg mozog a felvonó!\");
       return 1;
   }
}
return 1;
}
Cím: Időnként mozgó objekt
Írta: Flash - 2015. július 09. - 15:26:57
if(strcmp(cmd, \"/felvonó\", true) == 0) {
if(!IsObjectMoving(liftobject)) MoveLift();
else SendClientMessage(playerid, -1, \"Jelenleg mozog a felvonó!\");
return 1;
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 15:32:48
Ugyanaz a probléma áll fent. Nem mozdul és ezt a szöveget adja ki : SERVER: Unknown command.
Cím: Időnként mozgó objekt
Írta: .random. - 2015. július 09. - 15:44:23
Próbáld meg így..
 
public MoveLift()
{
if(lift == 0) MoveObject(liftobject, -2391.9258, -2002.0930, 301.2155, 15.0, 0.0000, 0.0000, 140.5846), lift = 1;
else MoveObject(liftobject, -2099.14990, -2237.17969, 33.05110, 15, 0.00000, 0.00000, 142.62920), lift = 0;
return 1;
}
Cím: Időnként mozgó objekt
Írta: Zippanto - 2015. július 09. - 18:22:04
Így se megy. Amúgy mindegyik parancsra azt a SERVER: Unkown command. -ot írja. De ne fáradozzatok most ez miatt majd megoldom valahogy.
Köszönök minden segítséget