"Per-player variable system" ili skraćeno "PVar" je nova metoda stvaranja varijablova za igraÄe u PAWN jeziku za SA:MP mod na efikasno-dinamiÄki naÄin za kojeg su varijablovi stvoreni globalno, Å¡to znaÄi da se mogu koristiti u gamemodu i filterskriptama u isto vrijeme.
Ovaj novi sustav koji je moguć od SA:MP 0.3a R5 verzije pa naprijed ima nekoliko prednosti od obiÄnih polja sa MAX_PLAYERS veliÄinom.
PVar-ove možete dijeliti i pristupiti im preko gamemod skripta i filterskripta, što je lakše za modeliranje vaše kode,
PVar-ovi su automatsko izbrisani kad igraÄ napusti server, Å¡to znaÄi da ne trebate resetirati varijablove za svakog novog igraÄa koji se konekta na vaÅ¡ server,
nema potrebe za kompleksne enumerator strukture,
štedi memoriju tako da ne dodjeljuje memoriju pawn niza za playerid-ove koji vjerojatno nikada neće biti korišteni,
lahko možete enumerirati i uskladiÅ¡titi PVar listu - to je lakÅ¡e za otklanjanje greÅ¡aka i za skladiÅ¡tenje informacija za igraÄe,
iako PVar nije bio napravljen, vratit će vrijednost 0,
PVar-ovi mogu skladiÅ¡titi velike stringove koristeÄi dinamiÄki dodijeljenu memoriju.
Funkcije za stavljanje/primanje PVar-ova su:
INTEGER:
Funkcija (stavljanje):
SetPVarInt(playerid, varname[], int_value);
Primjer:
/* stavljanje */
SetPVarInt(playerid, "Admin_Nivo", 5);
Funkcija (primanje):
GetPVarInt(playerid, varname[]);
Primjer:
/* primanje */
if(GetPVarInt(playerid, "Admin_Nivo") == 5) SendClientMessage(playerid, 0xFFFFFFFF, "Vaš admin nivo je 5.");
STRING:
Funkcija (stavljanje):
SetPVarString(playerid, varname[], string_value[]);
Primjer:
/* stavljanje */
new
imeIgraca;
GetPlayerName(playerid, imeIgraca, MAX_PLAYER_NAME);
SetPVarString(playerid, "ime", imeIgraca);
Funkcija:
GetPVarString(playerid, varname[], string_return[], len);
Primjer (primanje):
/* primanje */
new
_imeIgraca;
GetPlayerName(playerid, _imeIgraca, MAX_PLAYER_NAME);
GetPVarString(playerid, "ime", _imeIgraca, MAX_PLAYER_NAME);
if(!strcmp(_imeIgraca, _imeIgraca, true)) SendClientMessage(playerid, 0xFFFFFFFF, "Vaš tekst.");
FLOAT:
Funkcija (stavljanje):
SetPVarFloat(playerid, varname[], Float:float_value);
Primjer:
/* stavljanje */
new
Float:pozicija;
GetPlayerPos(playerid, pozicija, pozicija, pozicija);
SetPVarFloat(playerid, "pozicija_X", pozicija);
SetPVarFloat(playerid, "pozicija_Y", pozicija);
SetPVarFloat(playerid, "pozicija_Z", pozicija);
Funkcija (primanje):
GetPVarFloat(playerid, varname[]);
Primjer:
/* primanje */
SetPlayerPos(playerid, GetPVarFloat(playerid, "pozicija_X"), GetPVarFloat(playerid, "pozicija_Y"), GetPVarFloat(playerid, "pozicija_Z"));
BRISANJE:
Funkcija (brisanje):
DeletePVar(playerid, varname[]);
Primjer:
/* brisanje */
DeletePVar(playerid, "Admin_Nivo");
Ostale funkcije (nisu toliko važne za vas, osim možda GetPVarType funkcije):
GetPVarsUpperIndex
GetPVarNameAtIndex
GetPVarType
