PDA

Просмотр полной версии : [Native] setproperty



Daniel_Cortez
22.05.2014, 12:16
Описание:

Создаёт в виртуальной машине новое свойство или изменяет уже существующее.

Параметры:

id - ID виртуальной машины (по умолчанию 0). Желательно пропускать этот параметр (см. пример ниже) либо оставлять его равным нулю, т.к. в SA:MP используется всего одна виртуальная машина.
name - название свойства (используется только если значение свойства не является строковым).
value - значение свойства, если сохраняется целое число, или уникальный идентификатор свойства, если нужно сохранить строку (как правило, это хеш от сохраняемой строки).
string[] - сохраняемое строковое значение. Для сохранения свойств с целочисленными значениями этот параметр не нужен.


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

Предыдущее значение свойства, если оно уже существовало, или 0, если оно только создано.

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

Установка свойств разными способами (на примере целочисленного значения):

// 1-й способ: перечислить все параметры
setproperty(0, "my_int0", 2, "");

// 2-й способ: перечислить только нужные параметры с помощью их имён
setproperty(.name="my_int0", .value=2);

// 3-й способ: перечислить только нужные параметры, для пропуска ненужных поставить "_"
// (не требуется перечислять каждый параметр по имени)
setproperty(_, "my_int0", 2, _);

// 4-й способ: поскольку последний параметр необязателен для сохранения
// целочисленных значений, можно пропустить его (модификация 3-го способа)
setproperty(_, "my_int0", 2);

Установка свойств со значениями целочисленного и строкового типа (для получения хеша имени свойства используется y_stringhash (http://u.to/vzzCBg)):

// создаём целочисленное свойство с именем "my_int1" и значением 23
setproperty(_, "my_int1", 23);

// теперь создадим свойство "my_string1" со значением строкового типа "Sample text":
// 1. вычислим хеш названия свойства
// (для примера взято вычисление хеша средствами y_stringhash)
new hash = YHash("my_string1", true, hash_fnv1);
// 2. создадим свойство с хешем от имени "my_string1", сохранённым в переменной hash
// и строковым значением "Sample text"
setproperty(_, _, hash, "Sample text");

Получение предыдущего значения свойства при обновлении значения:

// для начала создадим свойство "my_int0" со значением 2
setproperty(_, "my_int0", 2, _);
// с помощью getproperty получаем значение свойства и выводим его на экран
printf("Значение свойства my_int0: %d", getproperty(_, "my_int0", _, _));

// теперь устанавливаем новое значение свойства
// при этом setproperty вернёт старое значение свойства,
// которое будет сохранено в result
new result = setproperty(_, "my_int0", 3, _);
// выведем новое (полученное с помощью getproperty)
// и старое (сохранено в переменной result) значения свойства "my_int0"
printf("Новое значение свойства my_int0: %d", getproperty(_, "my_int0", _, _));
printf("Старое значение свойства my_int0: %d", result);

См. также:

[Native] getproperty (http://pro-pawn.ru/showthread.php?8920)
[Native] existproperty (http://pro-pawn.ru/showthread.php?8930)
[Native] deleteproperty (http://pro-pawn.ru/showthread.php?8931)



Статью подготовил: Daniel_Cortez (http://pro-pawn.ru/member.php?u=100)

Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других ресурсах без разрешения автора запрещено!