ottvan[playerid] = 1;
...
#define FILTERSCRIPT#include a_samp#include zcmdnew ottvan[MAX_PLAYERS];CMD:teleport(playerid) {SetPlayerPos(playerid, 0.0, 0.0, 3.0);SendClientMessage(playerid, -1, \"Sikeresen elteleportáltál!\");ottvan[playerid] = 1;SetTimer(\"AllTele\", 60000*15, false);return 1;}forward AllTele();public AllTele() {for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && ottvan == 1) SetPlayerPos(i, 10.0, 10.0, 3.0);}
if(true){ print(\"Teszt.\");}
if(true) { print(\"Teszt.\"); }
#define FILTERSCRIPT#include a_samp#include zcmdCMD:teleport(playerid) { SetPlayerPos(playerid, 0.0, 0.0, 3.0); SendClientMessage(playerid, -1, \"Sikeresen elteleportáltál!\");SetPVarInt(playerid, \"ottvan\", 1); SetTimerEx(\"AllTele\", 900000, false, \"i\", playerid); return 1;}forward AllTele();public AllTele() { for(new i; i < MAX_PLAYERS; i++) if(GetPVarInt(i, \"ottvan\")==1) SetPlayerPos(i, 10.0, 10.0, 3.0);}
ha jobban átértelmezed a szöveget akkor rájössz hogy kedves sutiwarrior nem azt kérte hogy kickeljen a szerver mindenkit, hanem hogy 15 perc múlva elteleportáljon mindenkit X koordinátához.
Most hogy meggondolom igazad lehet. És azon is elgondolkoztam hogy szükséges-e az IsPlayerConnect lekérdezés, mivel ott van a változó lekérdezése is, és nem azt kérdezzük le hogy 0 hanem hogy 1, és ugye nem lehet offline játékosnak az \"ottvan\" értéke 1. [/quote]De, lehet annak is az értéke egy, amennyiben változókat alkalmazunk és elfelejtjük azt a feladat zökkenõmentes végrehajtásához szükséges alapértékre állítani Connectkor vagy Disconnectkor. Ez az alapérték esetünkben nulla. PVaroknál azonban ez nem jelent veszélyt, így most helyes a forráskód ezen szempontból nézve. Azonban ez a része koránt sem: if(GetPVarInt(i, \"ottvan\")) Ugyanis 1 esetén false logikai értéket fog visszaadni és az elágazás hamis ága fog lefutni. Ezáltal pedig azok fognak áthelyezõni, akik be sem írták a parancsot.Egyébként ez a SetTimeres megoldás nem túl optimális még mindig. Hogy miért? Azt már feljebb egy korábbi hozzászólásom keretein belül leírtam: Ha más is beírja a parancsot, akkor a második ember hamarabb fog kirúgódni, mint 15 perc. [/quote]Ezt pedig kiegészíteném azzal, hogy ha ezek után 15 percen belül senki más nem írja be a parancsot, a timer senkit sem fog kirúgni. De ha jobban megnézzük a forráskódot, akad még itt probléma: a timer nincs leállítva egyszer sem, így állandóan feleslegesen fut tovább, illetve a parancs beírásával is csak egyre több timer jön létre. A parancs 10x faló beírása után már 10 timer fog menni, feleslegesen. Ez az egész pedig rövid idõn lagghoz vezethet - igaz, elég nagy idõközökrõl beszélünk. De ezt a sok problémát elfelejthetjük, elvégre valószínûleg a témanyitó a saját céljainak megfelelõen más idõzítõs rendszert fog alkalmazni.
if(GetPVarInt(i, \"ottvan\"))
Ha más is beírja a parancsot, akkor a második ember hamarabb fog kirúgódni, mint 15 perc. [/quote]Ezt pedig kiegészíteném azzal, hogy ha ezek után 15 percen belül senki más nem írja be a parancsot, a timer senkit sem fog kirúgni. De ha jobban megnézzük a forráskódot, akad még itt probléma: a timer nincs leállítva egyszer sem, így állandóan feleslegesen fut tovább, illetve a parancs beírásával is csak egyre több timer jön létre. A parancs 10x faló beírása után már 10 timer fog menni, feleslegesen. Ez az egész pedig rövid idõn lagghoz vezethet - igaz, elég nagy idõközökrõl beszélünk. De ezt a sok problémát elfelejthetjük, elvégre valószínûleg a témanyitó a saját céljainak megfelelõen más idõzítõs rendszert fog alkalmazni.
Timer = SetTimer();
KillTimer(Timer);
Timer[playerid] = SetTimerEx();
KillTimer(Timer[playerid]);