Плюси: Дуже легко редагуються і не засмічують код мода, на відміну від змінних і масивів, якщо ви створили PVar в моді, то він може використовуватися і в підвантаженими fs і навпаки, при коннекте гравця вони автоматично створюються, а при виході видаляються.
Мінуси: Ймовірно вам буде незручно зі строковим типом (тому що функція має вигляд GetPVarString (playerid, pvar [], output [], symbols). Однак кому-як, як показували чиїсь тести на форумі sa-mp.com . вони трохи повільніше змінних (проте тести OFFREAL'а показують що швидше, а зі строковим типом вдвічі швидше).
Тепер приступимо безпосередньо до вивчення функцій.
Почнемо з функцій редагування / створення PVar'ов.
Як ви вже знаєте в pawn скриптинга є чотири типи змінних - ціле число (integer), дійсний тип (float), строковий тип (string) і boolean (true і false), всі ці типи крім boolean доступні в PVar'ах. Ось функції:
SetPVarInt (playerid. Pvar # 91; # 93 ;, int); // створює і редагує PVar зі значенням цілого числа
SetPVarFloat (playerid. Pvar # 91; # 93 ;, float); // створює і редагує PVar з речовим типом
SetPVarString (playerid. Pvar # 91; # 93 ;, string # 91; # 93;); // створює і редагує PVar зі строковим типом
Якщо ви хочете створити PVar. то вам треба застосувати функцію SetPVarInt. SetPVarFloat або SetPVarString. також при створенні, значення PVar'a зробиться таким, яке ви вказали при використанні даних функцій.
SetPVarInt (playerid. "TestInt". 1); // створюємо PVar зі значенням цілого числа і присвоюємо йому значення 1
SetPVarFloat (playerid. "TestFloat". 6.1); // створюємо PVar зі значенням дрібного числа і присвоюємо йому значення 6.1
SetPVarString (playerid. "TestString". "Hello World!"); // створюємо PVar з строковим типом і записуємо в нього текст Hello World!
Редагуються PVar'и абсолютно тими ж функціями. Як ви вже помітили назву PVar'a пишеться в лапках ( ""), що дозволяє нам викликати дані PVar'и в скриптах підвантаженими до сервера з мода або з скриптів в моді (про це говорилося раніше).
Тепер перейдемо до функцій отримання значення PVar'a.
GetPVarInt (playerid. Pvar # 91; # 93;); // повертає значення PVar'a pvar # 91; # 93;
GetPVarFloat (playerid. Pvar # 91; # 93;); // повертає значення PVar'a pvar # 91; # 93;
GetPVarString (playerid. Pvar # 91; # 93 ;, output # 91; # 93 ;, symbols); // тут трохи складніше, записує значення PVar'a pvar # 91; # 93; в змінну зі строковим типом output # 91; # 93; (Так як з деяких причин функції в pawn не повинні повертати рядки), symbols - це скільки символів ви хотіли б записати в змінну output.
Ось приклади використання:
/ * Якщо значення PVar'a TestInt одно 2, виводимо в консоль його значення (тобто 2) * /
new testint = GetPVarInt (playerid. "TestInt"); // для зручності створюємо змінну
if (testint == 2) print (testint); // робимо перевірку
/ * Теж саме тільки з Float * /
new Float. testfloat = GetPVarFloat (playerid. "TestFloat"); // для зручності створюємо змінну
if (testfloat == 6.1) print (testfloat); // робимо перевірку
/ * А тепер трохи складніше, робимо операцію з String значенням, як ви пам'ятаєте ми присвоїли PVar'у TestString значення: Hello World! * /
new output # 91; 64 # 93 ;; // робимо змінну в яку буде записано значенням PVar'а
GetPVarString (playerid. "TestString". Output. Sizeof (output)); // гетто значення PVar'а
if (strcmp (output. "Hello World!". true. 13)) printf (output); // якщо знаходимо в output Hello World! виводимо в консоль output
Але це тільки приклади, ви ж можете використовувати ці функції як захочете.
Також хочу зауважити обділені нами функції. Одна з них DeletePVar.
Синтаксис і значення функції думаю зрозуміло.
DeletePVar (playerid. Pvar # 91; # 93;);
Видаляємо у зазначеного гравця playerid PVar pvar [].
Далі йде функція