Szerző Téma: Nem nagyon értem a PVvart  (Megtekintve 557 alkalommal)

Nem nagyon értem a PVvart
« Dátum: 2012. november 26. - 13:46:12 »
0 Show voters
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;
}

Nem elérhető Iceaac

  • 2187
    • Profil megtekintése
Nem nagyon értem a PVvart
« Válasz #1 Dátum: 2012. november 26. - 14:30:00 »
0 Show voters
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.

Nem nagyon értem a PVvart
« Válasz #2 Dátum: 2012. november 26. - 15:03:15 »
0 Show voters
Ez világos én ezt értem! :) Azt nem értem, hogy ott miért jó ha 120-at adunk a setpvarnak? Az mit csinál?

Nem elérhető Iceaac

  • 2187
    • Profil megtekintése
Nem nagyon értem a PVvart
« Válasz #3 Dátum: 2012. november 26. - 15:37:04 »
+1 Show voters
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.  :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal