-
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..
-
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);
}
-
Megnézem
-
A moveobjectnek megse adtál sebességet.
-
Megadtam a sebességet, de a lift az alsó megállóhelyen van és nem mozdul meg.
-
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);
}
-
Ugyanaz a hiba, nem mozdul. Az baj, hogy nem a módba írtam, hanem egy külön filterscriptbe?
-
Í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;
}
-
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.
-
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;
}
-
Kordinátákat ellenőriztem. Az objekt nem látszódik, és a parancsot nem ismeri fel (nincs ilyen parancs azt írja).
-
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ű :)
-
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;
}
-
if(strcmp(cmd, \"/felvonó\", true) == 0) {
if(!IsObjectMoving(liftobject)) MoveLift();
else SendClientMessage(playerid, -1, \"Jelenleg mozog a felvonó!\");
return 1;
}
-
Ugyanaz a probléma áll fent. Nem mozdul és ezt a szöveget adja ki : SERVER: Unknown command.
-
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;
}
-
Í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