setarg
Материал из Pro-Pawn Wiki
Описание:
Изменяет значение аргумента, полученного по ссылке (в том числе через переменное число аргументов).
Параметры:
(arg, index=0, value) |
arg | Индекс аргумента (нумерация начинается с 0). |
index | Индекс элемента, если указанный аргумент является массивом (иначе параметр можно пропустить с помощью знака _ ).
|
value | Значение, которое нужно сохранить в аргументе. |
Возвращаемое значение:
1
при успешном выполнении, либо 0
, если указан неправильный индекс аргумента.
Баг 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"
}
{
// Увеличим значение всех аргументов функции на 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"
}
См. также: