Многим, кто хочет оптимизировать свой мод, хотелось бы загружать, а самое главное выгружать переменные из памяти. Но к сожалению оператор delete ( в C|C++ удаляет переменную ) в pawn использовать нельзя. Поэтому разработчики сампа добавили PVar`ы - переменная, значение которой привязывается к каждому игроку.
Теперь немного о плюсах и минусах данной функции.
Плюсы:
- Незасоряет стек мода
- Легко редактировать
- Объявив в моде, можно использовать в fs, и наоборот
- При выходе игрока, автоматически удаляются
Минусы:
- Неудобно
- Медленнее обычных переменных, однако строковой тип быстрее, в общем, смотря чьим тестам верить
Объявить PVar так.
Код
SetPVarInt(playerid,pvar[],int);//создает и редактирует PVar с целым числом(int)
SetPVarFloat(playerid,pvar[],float);//создает и редактирует PVar с числом десятичной дроби(float)
SetPVarString(playerid,pvar[],string[]);//создает и редактирует PVar со строкой(массив)
А теперь на примерах
Код
SetPVarInt(playerid,"IntPVar",0);//задали PVar с именем "IntPVar" значение 0
SetPVarFloat(playerid,"FloatPVar",1.1);//задали PVar с именем "FloatPVar" значение 1.1
SetPVarString(playerid,"StringPVar","Pawn");//задали PVar с именем "StringPVar" текст "Pawn"
А теперь о том, как получить значение PVar`a.
Код
new pvarint = GetPVarInt(playerid,"IntPVar);//получили значение pvar`a с именем "IntPVar", в нашем случае 0.
new Float:pvarfloat = GetPVarFloat(playerid,"FloatPVar");//получили значение pvar`a с именем "IntPVar", в нашем случае 1.1
Со строковыми pvar`ами немного сложнее
new string[128];
Код
GetPVarString(playerid,"StringPVar",string,128);//записали значение pvar`a с именем "StringPVar" в массив string, в нашем случае "Pawn".
А теперь самая важная функция, которая позволяет нам удалять из стека PVar.
А теперь функции, которые используются очень редко, я даже не знаю какой пример можно привести с ними
Код
//что возвращает функция
#define PLAYER_VARTYPE_NONE 0 - неизвестно
#define PLAYER_VARTYPE_INT 1 - целое число
#define PLAYER_VARTYPE_STRING 2 - строка
#define PLAYER_VARTYPE_FLOAT 3 - вещественное число
//сама функция.
GetPVarType(playerid, pvar[]);// функции узнаёт тип pvar`a по его названию
PVar`ы кроме имени имеют так же и id.
Код
GetPVarsUpperIndex(playerid);//возвращает максимальный id pvar`a.
Вот функция, которая узнаёт id pvar`a по его id.
Код
new string[128];
GetPVarNameAtIndex(playerid, id, string, 128);//где id - ид pvar`a