SetPVarInt

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Устанавливает значение привязанной к игроку переменной целочисленного типа.

Параметры:

(playerid, varname[], int_value)
playerid ID игрока.
varname[] Название переменной.
int_value Целочисленное значение, которое требуется записать в переменную.


Возвращаемое значение:

1 в случае успеха, либо 0, если игрок не подключен, вместо названия переменной (параметр varname) указана пустая строка или если длина названия больше 40 символов.

Info rhombus.png
Примечание
PVar'ы создаются в момент установки их значения (SetPVarInt(), SetPVarFloat(), SetPVarString()) и удаляются автоматически при отключении игрока (после вызова OnPlayerDisconnect()).
Максимальная длина названия PVar'а - 40 символов (41 с учётом символа конца строки '\0').
Названия PVar'ов не чувствительны к регистру. Например, названия "admin", "ADMIN", "Admin" и "AdMiN" будут обозначать один и тот же PVar.
Всего можно создать до 800 PVar'ов на одного игрока.
В одном PVar'е может быть только одно значение - нельзя хранить 2 или 3 значения разных типов.


Bug.png
Баг SA-MP
Содержимое массива varname не изменяется во время работы функции, однако сам массив объявлен без атрибута const:
native SetPVarInt(playerid, varname[], int_value);
в то время, как правильный (const-корректный) заголовок функции должен выглядеть так:
native SetPVarInt(playerid, const varname[], int_value);
Если аргумент-массив объявлен без const, компилятор считает, что функция записывает в него данные, и потому не позволяет передавать в функцию неизменяемые массивы, выдавая ошибку несоответствия типов.
static const weap_ammo_deagle[] = !"weap_ammo_deagle";
SetPVarInt(playerid, weap_ammo_deagle, 10_000); // error 035: argument type mismatch (argument 2)


Пример использования:

// В коде гейммода.
SetPVarInt(playerid, "money", 0);

// Где-то ещё (в одном из фильтрскриптов?)
new money = GetPVarInt(playerid, "money") + 100;
SetPVarInt(playerid, "money", money);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money);
SendClientMessage(playerid, -1, "Вы нашли 100-долларовую купюру!");


См. также: