setarg

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

Описание:

Изменяет значение аргумента, полученного по ссылке (в том числе через переменное число аргументов).

Параметры:

(arg, index=0, value)
arg Индекс аргумента (нумерация начинается с 0).
index Индекс элемента, если указанный аргумент является массивом (иначе параметр можно пропустить с помощью знака _).
value Значение, которое нужно сохранить в аргументе.


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

1 при успешном выполнении, либо 0, если указан неправильный индекс аргумента.

Bug.png
Баг Pawn
Функция не проверяет валидность индекса аргумента и адреса ссылки на аргумент, из-за чего возможна запись данных за пределами секции данных скрипта и падение сервера.


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

IncValues(...)
{
    // Увеличим значение всех аргументов функции на 1.
    // Обратите внимание: в вызове setarg() параметр index пропущен (знак "_").
    for (new i = 0, n = numargs(); i < n; ++i)
        setarg(i, _, getarg(i) + 1);
}

main()
{
    new a = 1, b = 3, c = 5;
    printf("До: %d %d %d", a, b, c); // Вывод: "До: 1, 3, 5"
    IncValues(a, b, c);
    printf("После: %d %d %d", a, b, c); // Вывод: "После: 2, 4, 6"
}


См. также: