SetSVarFloat

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

Описание:

Устанавливает значение серверной переменной вещественного типа.

Параметры:

(varname[], Float:float_value)
varname[] Название переменной.
Float:float_value Вещественное значение, которое требуется записать в переменную.


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

1 в случае успеха, либо 0, если
  • вместо названия переменной (параметр varname) указана пустая строка;
  • длина названия больше 40 символов;
  • превышен лимит в 2000 SVar'ов.

Info rhombus.png
Примечание
SVar'ы создаются в момент установки их значения (SetSVarInt(), SetSVarFloat(), SetSVarString()) и сохраняют своё значение при перезагрузке мода/фильтрскриптов, однако могут быть удалены вручную с помощью функции DeleteSVar().
Максимальная длина названия SVar'а - 40 символов (41 с учётом символа конца строки '\0').
Названия SVar'ов не чувствительны к регистру. Например, названия "admin", "ADMIN", "Admin" и "AdMiN" будут обозначать один и тот же SVar.
Всего можно создать до 2000 SVar'ов.
В одном SVar'е может быть только одно значение - нельзя хранить 2 или 3 значения разных типов.


Bug.png
Баг SA-MP
Содержимое массива varname не изменяется во время работы функции, однако сам массив объявлен без атрибута const:
native SetSVarFloat(varname[], Float:float_value);
в то время, как правильный (const-корректный) заголовок функции должен выглядеть так:
native SetSVarFloat(const varname[], Float:float_value);
Если аргумент-массив объявлен без const, компилятор считает, что функция записывает в него данные, и потому не позволяет передавать в функцию неизменяемые массивы, выдавая ошибку несоответствия типов.
static const varname_radius[] = "damage_radius";
SetSVarFloat(varname_radius, 100.0); // error 035: argument type mismatch (argument 1)


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

// В коде гейммода.
new Float:x = GetSVarFloat("event_x");
new Float:y = GetSVarFloat("event_y");
new Float:z = GetSVarFloat("event_z");
SetPlayerPos(playerid, x, y, z);
SendClientMessage(playerid, -1, "Вы были телепортированы на мероприятие!");

// Где-то ещё (в одном из фильтрскриптов?)
new const Float:pos[3] = { -220.0, -600.0, 50.0 };
SetSVarFloat("event_x", pos[0]);
SetSVarFloat("event_y", pos[1]);
SetSVarFloat("event_z", pos[2]);
printf("Координаты мероприятия: %.2f %.2f %.2f", pos[0], pos[1], pos[2]);


См. также: