Серверные Переменные
| |
_wS_
|
Дата: Пятница, 13.01.2012, 23:26:53 | Сообщение # 1 |
|
Создают переменные обычно сразу же после включение скрипта в OnPluginStart.
Код native Handle:CreateConVar(const String:name[], const String:значение[], const String:описание[]="", флаги=0, bool:hasMin=false, Float:min=0.0, bool:hasMax=false, Float:max=0.0);
Код name - имя переменной hasMin - будет ли она иметь минимальное значение min - если да, то какое bool:hasMax - будет ли она иметь максимальное значение Float:max - если да, то какое
Самое главное это два первых параметра: 'name' и 'значение', остальное не обязательно.
Код public OnPluginStart() { CreateConVar("x", "1"); CreateConVar("y", "7.5"); CreateConVar("nick", "kot");
GetVars1(); }
GetVars1() { new Handle:h = FindConVar("x"); new x = h ? GetConVarInt(h) : 0;
new Float:y = (h = FindConVar("y")) ? GetConVarFloat(h) : 0.0;
decl String:nick[32]; if ((h = FindConVar("nick"))) { GetConVarString(h, nick, sizeof(nick)); } else { nick[0] = 0; }
PrintToServer("GetVars1:"); PrintToServer("x = %d, y = %.1f, nick = %s", x, y, nick);
GetVars2(); }
GetVars2() { // Меняем значения SetConVarInt(FindConVar("x"), 3); // Здесь тоже нужно проверять был ли найден cvar, но для теста пишем так. SetConVarFloat(FindConVar("y"), 3.0); SetConVarString(FindConVar("nick"), "tod");
// Показываем новые new x = GetConVarInt(FindConVar("x")); new Float:y = GetConVarFloat(FindConVar("y")); decl String:nick[32]; GetConVarString(FindConVar("nick"), nick, sizeof(nick));
PrintToServer("GetVars2:"); PrintToServer("x = %d, y = %.1f, nick = %s", x, y, nick); }
В результате должно выдать:
Код GetVars1: x = 1, y = 7.5, nick = kot GetVars2: x = 3, y = 3.0, nick = tod
FindConVar("var") - ищет 'var' и возвращает его Handle, или INVALID_HANDLE, если не нашел. CreateConVar("var", "var_value"); - создает переменную и возвращает её Handle.
Чтобы часто не использовать функцию FindConVar("var"), создайте глобальную переменную:
Код new Handle:g_hVar;
public OnPluginStart() { g_hVar = CreateConVar("x", "1"); go(); }
go { PrintToServer("x = %d", GetConVarInt(g_hVar)); SetConVarInt(g_hVar, 9); PrintToServer("x = %d", GetConVarInt(g_hVar)); }
SetConVarInt(Handle:convar, value, bool:replicate=false, bool:notify=false);
Код replicate - Если true, то новое значение ConVar будет установлено на всех клиентах. Это будет работать только если ConVar имеет FCVAR_REPLICATED флаг и если такой клиентский cvar существует.
notify - Если true, то клиенты будут уведомлены, что ConVar изменился. Это будет работать только если ConVar имеет FCVAR_NOTIFY флаг.
|
|
| |
_wS_
|
Дата: Суббота, 14.01.2012, 00:26:06 | Сообщение # 2 |
|
Можете создать файл cstrike/cfg/xz.cfg с вашими переменными, и после того, как они были созданы (CreateConVar) в вашем скрипте, сделать: ServerCommand("exec xz.cfg"); чтобы изменить значения на те, что в вашем xz.cfg.
CreateConVar("x", "1"); выглядит в файле .cfg так:
|
|
| |
Vitaminoz
|
Дата: Среда, 22.01.2014, 19:10:32 | Сообщение # 3 |
 |
Сообщений: 142
Репутация: 1 [ +/- ]
|
|
В каких случаях лучше использовать ServerCommand или SetConVar*
|
|
| |
TEIN
|
Дата: Среда, 22.01.2014, 19:33:18 | Сообщение # 4 |
 |
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
С помощью SetConVar* можно скрыть уведомление о смене переменной
|
|
| |
Vitaminoz
|
Дата: Среда, 22.01.2014, 19:42:35 | Сообщение # 5 |
 |
Сообщений: 142
Репутация: 1 [ +/- ]
|
|
А больше различий нету ? Например что быстрее реагирует и прочее.
|
|
| |
www22
|
Дата: Воскресенье, 09.06.2019, 18:47:45 | Сообщение # 6 |
 |
Сообщений: 84
Репутация: -1 [ +/- ]
|
|
_wS_, у меня какая то проблема непонятная , почему то измененный конфиг , подхватывается со второй карты, после запуска сервера, то есть после смены карты. Мож есть какая тонкость , чтоб новый конфиг сразу после запуска подхватывался ? Вот пример кода :
Код public OnPluginStart() { CreateConVar("sm_dod_xlog_version", PLUGIN_VERSION, "Extra weapon logging info version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); Здесь переменные созданные через CreateConVar
HookEvent("dod_stats_player_damage", PlayerDamageEvent); AutoExecConfig(true, "pt_xlog_overlays_v2") }
Да и есть один момент , там строчки связанны с материалы(vmt,vtf), мож это как то влияет на этот глюк ..
И Вот это немного не понятно : 2.
Цитата _wS_ (  ) ServerCommand("exec xz.cfg"); Если конфиг у меня создается в "cfg/sourcemod" , нужно писать папку "cfg/" в команду на вызов конфига ? А то думал мож ниже добавить ServerCommand , или же надо вообще в другом блоке это делать ?
Сообщение отредактировал www22 - Воскресенье, 09.06.2019, 18:49:55 |
|
| |
|