Закрытие !guns меню по кнопке

Zira

Участник
Сообщения
9
Реакции
0
Пытаюсь реализовать вызов !guns как на ДМ'ах Убика. Т.е. просто нажимаешь G, открывается менюшка !guns, повторно нажимаешь G, менюшка закрывается. Открытие я сделал, а вот как закрывать не могу понять. Стоит плагин Deathmatch от Maxximou5
 
Последнее редактирование:

Islam Cherkess

Там мля о мля
Сообщения
1,504
Реакции
895
Попробуй сделать так что-бы после выбора 2-х оружий (сначала пистолет а потом основное) меню закрывалась сама
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
ClientCommand(client, "menuselect 0"); или FakeClientCommand(client,"menuselect 0");
Что-то из этого вроде как должно работать и закрывать текущее открытое меню.
 

Zira

Участник
Сообщения
9
Реакции
0
Попробуй сделать так что-бы после выбора 2-х оружий (сначала пистолет а потом основное) меню закрывалась сама
Так оно и закрывается, по сути все ок, но для эстетики хочется, чтоб закрывалось по нажатию

ClientCommand(client, "menuselect 0"); или FakeClientCommand(client,"menuselect 0");
Что-то из этого вроде как должно работать и закрывать текущее открытое меню.

ClientComand выдает в консоль: FCVAR_SERVER_CAN_EXECUTE prevented server running command: menuselect 0
FakeClientComand не работает
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
Так оно и закрывается, по сути все ок, но для эстетики хочется, чтоб закрывалось по нажатию
при нажатии проверяешь открыто ли меню. если нет - открываешь, если да - закрываешь через CancelClientMenu.
 

Zira

Участник
Сообщения
9
Реакции
0
при нажатии проверяешь открыто ли меню. если нет - открываешь, если да - закрываешь через CancelClientMenu.
Код проверки:
PHP:
    if(GetClientMenu(client) != MenuSource_None )
        CancelClientMenu(client,false);
     else
        DisplayOptionsMenu(client);
Уже находящийся в плагине код вызова меню:
PHP:
void DisplayOptionsMenu(int client)
{
    int allowSameWeapons = (g_bRememberChoice[client]) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
    Menu menu = new Menu(MenuHandler);
    menu.SetTitle("Weapon Menu:");
    menu.AddItem("New", "New weapons");
    menu.AddItem("Same", "Same weapons", allowSameWeapons);
    menu.AddItem("Random", "Random weapons");
    menu.ExitBackButton = false;
    menu.Display(client, MENU_TIME_FOREVER);
}
Меню открывается, но продолжает висеть после повторного нажатия. Закрывается только после попытки выбрать какой либо из пунктов
 

Zira

Участник
Сообщения
9
Реакции
0
Пожалуй самый лучшие вариант: Просто создать пустую панельку, и вызывать ее.
PHP:
{
    Panel panel = new Panel();
    panel.SetTitle("");
    panel.DrawText("");
    panel.Send(client, PanelHandler1, 1);
    delete panel;
    return Plugin_Handled;
}
В итоге менюшка исчезает, и видно маленький прозрачный квадратик только в течении секунды
 

fl0wer

Участник
Сообщения
19
Реакции
3
Пожалуй самый лучшие вариант: Просто создать пустую панельку, и вызывать ее.
PHP:
{
    Panel panel = new Panel();
    panel.SetTitle("");
    panel.DrawText("");
    panel.Send(client, PanelHandler1, 1);
    delete panel;
    return Plugin_Handled;
}
В итоге менюшка исчезает, и видно маленький прозрачный квадратик только в течении секунды
Можно просто
C-подобный:
InternalShowMenu(iClient, "\10", 1);
Работает точно так же.
 
  • Мне нравится
Реакции: Zira
Сверху Снизу