setproperty

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

Описание:

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

Параметры:

(id=0, const name[]="", value=cellmin, const string[]="")
id ID свойства (необязательный параметр). Может использоваться в качестве ID скрипта в хост-приложениях, поддерживающих работу сразу нескольких скриптов.
const name[] Название, по которому функция будет искать свойство (необязательный параметр).
value Значение свойства (необязательный параметр). Если название (name) не указано, функция будет искать свойство по ID и значению.
const string[] Cтроковое значение свойства (необязательный параметр).


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

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

Info rhombus.png
Примечание
Функция производит поиск свойства по комбинации из ID и названия (параметры id и name соответственно). Если название не указано, поиск производится по комбинации из ID и значения (параметр value).
Название свойства, указанное в параметре name, одновременно является и строковым значением свойства, возвращаемым в массиве string. Если нужно создать свойство, хранящее в себе строковое значение, вместо названия нужно отличать его от других свойств по ID (параметр id) или значению (параметр value).
Все свойства хранятся в структуре типа "список". Чем больше создано свойств, тем дольше будет проходить процесс доступа к ним в среднем.


Bug.png
Баг Pawn
При выгрузке/перезагрузке гейммода или фильтрскрипта удаляются все свойства, даже те, которые были созданы другими скриптами.


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

main()
{
    // Создадим свойство с названием "prop1", ID равным нулю и значением 10.
    setproperty(0, "prop1", 10);

    // Создадим ещё одно свойство, на этот раз для хранения строки ("abcd123").
    // Поскольку нужно сохранить строку, название указывать не следует.
    setproperty(1, "", 23, "abcd123");

    new string[10];
    new value;

    // Получим и выведем значение свойства "prop1".
    value = getproperty(0, "prop1");
    // Вывод: "prop1: 10"
    printf("prop1: %d", value);

    // Получим строковое значение из другого свойства.
    // Поиск производится по ID и одиночному (не строковому) значению -
    // указываем их те же, что и в вызове setproperty() при создании свойства.
    getproperty(1, "", 23, string);
    // Также не следует забывать, что полученная строка будет упакованная
    // и её придётся распаковать, чтобы она правильно выводилась через printf().
    strunpack(string, string);
    // Вывод: "Безымянное свойство<1, 23>: "abcd123""
    printf("Безымянное свойство<1, 23>: \"%s\"", string);
}


См. также: