-
Nos az lenne a kérdésem, hogy nem teljesen világos a pvar használata addig, még rendben van amikor a setpvar-t 1-re vagy 0-ra állítom de mivan akkor mikor nagyobb értéket kap mint 1 vagy 0 mutatok egy példát is ha valaki elmagyarázná nekem megköszönném! Ugyan is nekem ebben a példában egy úgymond \"timer\" funkcióként fogom fel de, hát ugye ez mégsem az. Egy tutorial alapján írtam de ott nincs részletezve semmi. :) Válaszotokat elõre is köszönöm!
CMD:gyogyszer(playerid, params[])
{
if(GetPlayerTeam(playerid) != Mentos) return SendClientMessage(playerid, PIROS, \"Csak a mentõsöknek van gyógyszerük.\");
if(GetPlayerWantedLevel(playerid) >= 1) return SendClientMessage(playerid, PIROS, \"Nem használhatod a parancsot mert keresett személy vagy.\");
if(GetPVarInt(playerid, \"UsedHealme\") > 1) return SendClientMessage(playerid, PIROS, \"Most vettél be gyógyszereket, nem adagolhatod túl magad!\");
SetPlayerHealth(playerid, 100);
SendClientMessage(playerid, ZOLD, \"[ORVOS] Bevetted a gyógyszereket.\");
SetPVarInt(playerid, \"UsedHealme\", 120);
return 1;
}
-
A gond az, hogy a feltételed ez:
if(GetPVarInt(playerid, \"UsedHealme\") > 1)
Azaz \"ha nagyobb mint 1\". Az értéket amint írtad 1-re tetted, a feltétel nem teljesül, mert a PVar értéke 1, nem nagyobb 1-nél.
Akár 4 féleképpen is írhatod:
GetPVarInt(playerid, \"UsedHealme\") >= 1
Azaz, ha a PVar értéke nagyobb mint, vagy egyenlõ 1el.
if(GetPVarInt(playerid, \"UsedHealme\") == 1)
Ha a PVar értéke egyenlõ 1-el.
if(GetPVarInt(playerid, \"UsedHealme\") > 0)
Ha a PVar értéke nagyobb, mint nulla.
if(GetPVarInt(playerid, \"UsedHealme\"))
Ha a PVar értéke \"igaz\". Ha jól emlékszem ez esetben ugyan azzal az eredménnyel szolgál, mint a \">=\", mivel 1 felett is teljesül a feltétel.
-
Ez világos én ezt értem! :) Azt nem értem, hogy ott miért jó ha 120-at adunk a setpvarnak? Az mit csinál?
-
Hopsz, most néztem a scripted többi részét. :-X
A PVar rendszer nem mûködik timerként.
A szkripthez egy idõzítõt kell hozzáadnod, ami változtatja az értékét.
Gondolom a 120 az 120 sec akart lenni, azaz 2 perc.
forward ResetHeal(playerid);
SetTimerEx(\"ResetHeal\", 120000, false, \"d\", playerid)
public ResetHeal(playerid) return SetPVarInt(playerid, \"UsedHealme\", 0)
A Te parancsodban pedig a:
SetPVarInt(playerid, \"UsedHealme\", 120);
helyett:
SetPVarInt(playerid, \"UsedHealme\", 1);
Így a parancs használatakor a \"UsedHealme\" PVar értéke 1 lesz, azaz igaz, a játékos használta a gyógyító parancsot.
Az idõzítõ 2 perc múlva visszaállítja a \"UsedHealme\" PVar értékét nullára, tehát hamisra, így újra használható lesz a parancs. :)