-
Ismét a segítségeteket kérem. Hogy tudok idõzítõt adni a rablásnak, hogy 5 percenként rabolhasson az illetõ?
itt a kód:
CMD:atmrabol(playerid,params[])
{
if(GetPlayerTeam(playerid) == Rendor || GetPlayerTeam(playerid) == Tuzolto)
{
SendClientMessage(playerid,NARANCS,\"Te legális frakcióban vagy nem rabolhatsz!\");
return 1;
}
if(atmroboff[playerid] == 1)
{
SendClientMessage(playerid,ZOLD,\"Te már raboltál!\");
SendClientMessage(playerid,ZOLD,\"Késõbb gyere vissza már raboltál!\");
}
if(atmroboff[playerid] == 0)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,1495.5366,-1749.8984,15.4453) || IsPlayerInRangeOfPoint(playerid,2.0,1304.4009,-1367.9572,13.5403))
{
SendClientMessage(playerid,CSARGA, \"Feltörted az ATM-et szedd össze a pénzt és fuss!\");
//TogglePlayerControllable(playerid, 0);
SendClientMessageToAll(PIROS,\"FIGYELEM: Kirabolták az egyik atmet!\");
atmroboff[playerid] = 1;
//SetTimerEx(\"atmrobb\",1000,0,\"i\",playerid);
GivePlayerMoney(playerid, random(20000 - 10000) + 1000);
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 2);
}
else
{
SendClientMessage(playerid,PIROS, \"Nem vagy atm közelében!\");
}
return 1;
}
return 1;
}
-
SetTimerEx(\" Nemrabol \", 1000, 0, \"i\", playerid);
1000 = ezt kell atirni hogy mennyi ideig tartson..
Ezzel könnyedén megoldhatod, nézz utána kicsit wiki-n.
-
Egy példa:
CMD:rabol(playerid) {
if(GetPVarInt(playerid,\"Rabol\") == 1) {
SetPVarInt(playerid,\"Rabol\",0);
SetTimerEx(\"RabolON\",300000,false,\"i\",playerid);
} else {
//Még nem járt le a timer... (Nem lehet még rabolni).
}
return 1;
}
public RabolON(playerid) {
if(GetPVarInt(playerid,\"Rabol\") == 0) return SetPVarInt(playerid,\"Rabol\",1);
}
-
Egyszerûen nem értem ezt a timer cuccot! :D Valamit valahol elindítok, de nem megy. Ennyire jutottam, ha valaki tud segíteni akkor cimkézze meg a dolgokat, hogy mi mit csinál. :) Elõre is köszönöm.
forward atmrablas();
public atmrablas()
{
return 1;
}
CMD:atmrabol(playerid,params[])
{
if(GetPlayerTeam(playerid) == Rendor || GetPlayerTeam(playerid) == Tuzolto)
{
SendClientMessage(playerid,NARANCS,\"Te legális frakcióban vagy nem rabolhatsz!\");
return 1;
}
if(rabolhato[playerid] == 1) //nem rabolható
{
SendClientMessage(playerid,ZOLD,\"Te már raboltál!\");
SendClientMessage(playerid,ZOLD,\"Késõbb gyere vissza már raboltál!\");
}
if(rabolhato[playerid] == 0) //rabolható
{
if(IsPlayerInRangeOfPoint(playerid,2.0,1495.5366,-1749.8984,15.4453) || IsPlayerInRangeOfPoint(playerid,2.0,1304.4009,-1367.9572,13.5403))
{
SendClientMessage(playerid,CSARGA, \"Feltörted az ATM-et szedd össze a pénzt és fuss!\");
//TogglePlayerControllable(playerid, 0);
SendClientMessageToAll(PIROS,\"FIGYELEM: Kirabolták az egyik ATM-et!\");
rabolhato[playerid] = 1; //itt már nem rabolható
SetTimerEx(\"atmrablas\",20000,0,\"i\",playerid); //1 perc
GivePlayerMoney(playerid, random(20000 - 10000) + 1000);
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 2);
}
else
{
SendClientMessage(playerid,PIROS, \"Nem vagy atm közelében!\");
}
return 1;
}
return 1;
}
-
SetTimerEx(\"idõzítõneve\", 1000, true, \"i\", false) // Elindítjuk az idõzítõt ami másodpercenként fut le addig amíg meg nem állítjuk (ha nem true hanem false az érték akkor csak 1x fut le)
forward idõzítõneve(playerid);
public idõzítõneve(playerid)
{
// Cuccok hogy mik történjenek az idõzítõ lefutása alatt
}
Ha az idõzítõ minden másodpercben lefut és mondjuk egy paranccsal le szeretnénk állítani akkor a KillTimer fgv kell, és változóba kell tárolni a SetTimerEx fgv.-t, tehát mód elején létrehozol egy new valamit; -t, és hozzárendelem a függvényhez, valami = SetTimerEx(\"idõzítõneve, 1000, true, \"i\", false);
CMD:timertorol(playerid)
{
KillTimer(valami);
return 1;
}
-
// Cuccok hogy mik történjenek az idõzítõ lefutása alatt[/quote]
Nem a lefutása alatt, mert akkor ez addig teljesülne ez az eljárás míg a timer számol vagyis megy..
Ami public idõzítõneve(playerid) alatt van az akkor teljesül, ha a timer/idõzítõ lejárt vagyis amikor a megadott idõ eléri a 0-t.
-
Értem. És akkor hogyan tegyem be a public alá, hogy a rabolhato-t átálítsa újra rabolhatóra?
-
Értem. És akkor hogyan tegyem be a public alá, hogy a rabolhato-t átálítsa újra rabolhatóra?
Én írtam rá egy példát nézd meg.
Amúgy meg létrehozol egy változót a változó alapesetben mondjuk legyen 0, ha a változó 0 akkor rabolható és amikor kirabolta a bankot a változót 1-re állítod (true) akár bool változó is lehet és az idõzítõt elindítod ha az adott idõ lejárt akkor a változót 0-ra állítod és egy feltétellel majd vizsgálod a változó értékét.