A játékos változók Üdv mindenkinek.
Ebben a leírásban szeretném nektek bemutatni a player variables-t, vagyis a játékos változókat.
Kezdjük is.
Nos, a PVar egy új módja a játékos változók hatékony készítésére, mely dinamikus, egyszerû a használata, ámde gyorsabb mint a sima j. változók!
A PVar-ok minden filterszkriptben, játékmódban egy idõben használható.
A PVar-ok a SA-MP 0.3a R5 kiadásától használható, ennek mérete MAX_PLAYERS.
Néhány egyéb információ:
- A PVarok automatikusan törlõdnek amikor egy játékos elhagyja a szervert, vagyis nem kell állítgatni a változó értékét.
- Nincs szükség bonyolult enum/játékos információk szerkezeteire.
- Memória takarékos
- Könnyedén kiiratható a PVar-ok listája, így minden egyszerûbben tárolódik el.
- Ha PVar még nem készült el, alapértemezett értéke mindig 0.
- A PVar-ok nagyon nagy karakterláncokat képesek \"tartani\" vagyis tárolni, amelyet dinamikusan olvassa be.Funkciók:SetPVarInt Megváltoztathatod egy játékos változó értékét, csak egész számot írj be.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó neve
int_value - A változó értékePélda: SetPVarInt(playerid, \"ElsoPVarom\", 1);
GetPVarIntLekérdezi a játékos változó értékét, egész számmal tér vissza.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó nevePélda: GetPVarInt(playerid, \"ElsoPVarom\");
SetPVarStringMegváltoztathatod egy játékos változó értékét, csak karakterláncot írj be.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó neve
string_value - A változó értékePélda: SetPVarString(playerid, \"ElsoPVarom\", \"Elsõ karakterláncos PVarom!\");
GetPVarStringLekérdezi a játékos változó értékét, karakterlánccal tér vissza.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó neve
&string_return - A lekérdezendõ karakterlánc eltárolásának a helye
len - A karakterlánc hosszúságaPélda:
new eltarolas[64]; // létrehozunk egy 64 cellás karakterláncot
GetPVarString(playerid, \"ElsoPVarom\", eltarolas, 64); // lekérdezzük a változó értékét és eltároljuk
printf(\"Kiadott üzenet: %s\", eltarolas); // majd betöltjük a karakterláncot az eltarolasból és kiiratjuk a szerverkonzolba
SetPVarFloatMegváltoztathatod egy játékos változó értékét, csak lebegõpontos számot írj be.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó neve
float_value - A lebegõpontos változó értéke amit elszeretnénk menteni a PVar-baPélda:
new pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
SetPVarFloat(playerid, \"XKOORD\", pos[0]);
SetPVarFloat(playerid, \"YKOORD\", pos[1]);
SetPVarFloat(playerid, \"ZKOORD\", pos[2]);
GetPVarFloatLekérdezi a játékos változó értékét, lebegõpontos számmal tér vissza.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó nevePélda: SetPlayerPos(playerid, GetPVarFloat(playerid,\"XKOORD\"), GetPVarFloat(playerid,\"YKOORD\"), GetPVarFloat(playerid,\"ZKOORD\")); // Itt pedig az eltárolt koordinátákat betöltjük, és elteleportáljuk a játékost ezekre a koordinátákra
DeletePVarTöröl egy játékos változót.Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó nevePélda: DeletePVar(playerid, \"ElsoPVarom\");
Egyéb funkciók:GetPVarTypeLekérdezi, és visszatér a játékos változód típusával. (integer, string, float)Paraméterek:
playerid - A játékos azonosítószáma
varname - A változó nevePélda:
SetPVarInt(playerid, \"Negyven\", 40);
SetPVarString(playerid, \"UdvSzoveg\", \"Üdvözöllek\");
SetPVarFloat(playerid, \"KettoEgeszNegy\", 2.4);
printf(\"Null típus: %d\", GetPVarType(playerid, \"NincsIttSemmi\"));
printf(\"Egész szám típus (%d): %d\", GetPVarInt(playerid, \"Negyven\"), GetPVarType(playerid, \"Negyven\"));
printf(\"Lebegõpontos típus (%f): %d\", GetPVarFloat(playerid, \"KettoEgeszNegy\"), GetPVarType(playerid, \"KettoEgeszNegy\"));
new szoveg[10];
GetPVarString(playerid, \"UdvSzoveg\", text, 10);
printf(\"Karakterlánc típus (%s): %d\", text, GetPVarType(playerid, \"UdvSzoveg\"));
A funkciók paramétereit megtalálhatod a http://jump.fm/ACACR oldalon.Ha segítség kell, írj PM-et nekem, PVar tárggyal!Példaszkript: http://sampforum.hu/index.php?topic=6068.0Ezt a szkriptet ne használjátok, mert hibás, csak tanulmányozzátok! Kiegészítés #1
Nemrég olvastam a hivatalos fórumon, hogy sokkal gyorsabban lekérdezhetjük a PVarunk értékét ha pl. GetPVarInt helyett GetPVarType-ot használunk. (a paraméterek ugyanazok)
Lényeg: Ha a PVar 1 vagy 0, csak akkor használható.
Sok szerencsét, jó játékot, jó szkriptelést!
ScreaM