Valve Menu необходимо API

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Приветствую, кто нибудь из скриптеров работал с ValveMenu (я имею в виду KeyValue меню через ESC), имеется кусок кода:
PHP:
void OpenESCMenu(int iClient, int iOption)
{
   char szBuffer[192];
 
   SetGlobalTransTarget(iClient);
 
   KeyValues hKV = new KeyValues("NightVision_Menu");
   hKV.SetNum("time", 20);
   hKV.SetNum("level", 1);
 
   switch (iOption)
   {
       case 0, 1:
       {
           hKV.JumpToKey("1", true);
           hKV.SetString("command", "setinfo __color Default; z_nightvision_r 255; z_nightvision_g 192; z_nightvision_b 128; cancelselect");
       
           FormatEx(szBuffer, sizeof(szBuffer), "%t", "NightVision_DefaultColor");
           hKV.SetString("msg", szBuffer);
           ...
        }
   ...
Вот только вообще не ясно как отловить когда что-то нажали и тому подобное.
Единственное, что я придумал, это использовать setinfo и через OnClientSettingsChanged ловить
Да вот только при заходе игрока проверяется/вызывается OnClientSettingsChanged (который мне не нужен), я пытался в строке:
PHP:
 hKV.SetString("command", "setinfo __color Default; z_nightvision_r 255; z_nightvision_g 192; z_nightvision_b 128; cancelselect");
Использовать в конце заглушку по типу:
PHP:
setinfo __color \"\"
Но OnClientSettingsChanged видит только последнюю выполненную setinfo в одном стоке.

Как быть то товарищи ?
--- Добавлено позже ---
Решение:
Создать "фейковую" консольную команду
PHP:
RegConsoleCmd("__test_command", "", "Test Command is Used for buffer between ValveMenu and Server CallBack");

И через неё уже всё проверять
 
Последнее редактирование:

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Сам спросил - сам ответил.
На самом деле тоже интересовала реализация ESC-меню, по этому - можно и как статью оформить)
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
@Danyas, Я написал позже ответ на свой вопрос >_>

P.S. А так - аля бинды и все прелести консоли клиента
Разве что на SourceEngine 2007 только для команд (FCVAR_CLIENTCND_EXEC_ONLY)

Вот только если делать какой нибудь MetaMod плагин или ValveServerPlugin - то это добро уже сделано в обратных вызовах для программистов
А тут такой геморой нашего времени
 
Сверху Снизу