Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1

Тема: setproperty

  1. #1
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,767
    Репутация:
    2256 ±

    setproperty

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

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

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

    Пример использования:
    Установка свойств разными способами (на примере целочисленного значения):
    1. // 1-й способ: перечислить все параметры
    2. setproperty(0, "my_int0", 2, "");
    3.  
    4. // 2-й способ: перечислить только нужные параметры с помощью их имён
    5. setproperty(.name="my_int0", .value=2);
    6.  
    7. // 3-й способ: перечислить только нужные параметры, для пропуска ненужных поставить "_"
    8. // (не требуется перечислять каждый параметр по имени)
    9. setproperty(_, "my_int0", 2, _);
    10.  
    11. // 4-й способ: поскольку последний параметр необязателен для сохранения
    12. // целочисленных значений, можно пропустить его (модификация 3-го способа)
    13. setproperty(_, "my_int0", 2);

    Установка свойств со значениями целочисленного и строкового типа (для получения хеша имени свойства используется y_stringhash):
    1. // создаём целочисленное свойство с именем "my_int1" и значением 23
    2. setproperty(_, "my_int1", 23);
    3.  
    4. // теперь создадим свойство "my_string1" со значением строкового типа "Sample text":
    5. // 1. вычислим хеш названия свойства
    6. // (для примера взято вычисление хеша средствами y_stringhash)
    7. new hash = YHash("my_string1", true, hash_fnv1);
    8. // 2. создадим свойство с хешем от имени "my_string1", сохранённым в переменной hash
    9. // и строковым значением "Sample text"
    10. setproperty(_, _, hash, "Sample text");

    Получение предыдущего значения свойства при обновлении значения:
    1. // для начала создадим свойство "my_int0" со значением 2
    2. setproperty(_, "my_int0", 2, _);
    3. // с помощью getproperty получаем значение свойства и выводим его на экран
    4. printf("Значение свойства my_int0: %d", getproperty(_, "my_int0", _, _));
    5.  
    6. // теперь устанавливаем новое значение свойства
    7. // при этом setproperty вернёт старое значение свойства,
    8. // которое будет сохранено в result
    9. new result = setproperty(_, "my_int0", 3, _);
    10. // выведем новое (полученное с помощью getproperty)
    11. // и старое (сохранено в переменной result) значения свойства "my_int0"
    12. printf("Новое значение свойства my_int0: %d", getproperty(_, "my_int0", _, _));
    13. printf("Старое значение свойства my_int0: %d", result);
    См. также:


    Статью подготовил: Daniel_Cortez
    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  2. 3 пользователя(ей) сказали cпасибо:
    L0ndl3m (22.05.2014)Osetin (22.05.2014)[ForD] (22.05.2014)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •