Участник
Пользователь
- Сообщения
- 134
- Реакции
- 40
- Помог
- 2 раз(а)
Решил модифицировать меню сервера. Решил менять цвет/название пунктов в зависимости от выполнения нужных мне условий.
Получается как-то так:
Хотел узнать правильный ли это подход или я что-то упускаю.
А так же возникает одна неприятная вещь, например пункт с паузой должен гореть серым цветом, визуальная давая понять игроку, что он неактивен. Но когда условия его активации соблюдены, если в этот момент меню у игрока уже было открыто, соответственно оно само по себе не обновляется и пункт остается серым, хотя его и можно нажать. Как можно выйти из этой ситуации? У меня крутится вариант обновлять меню игроку через amxclient_cmd(id, "menu");, в момент соблюдения всех условий, в конкретно данном случаи, когда игрок нажмет на кнопку старта, но тогда надо отлавливать открыто ли конкретно это меню у игрока в момент нажатия кнопки, что бы не открывать его тем, кто в этом не нуждается. Если этот вариант верный, то можете подсказать как это сделать для нового меню? Я видел варианты на этом форуме, но они все были для меню старого типа.
Получается как-то так:
Код:
switch (kz_get_timer_state(id)){
case TIMER_ENABLED: {
formatex(szMsg, charsmax(szMsg), "%L^n", id, "MAINMENU_ONPAUSE");
}
case TIMER_PAUSED: {
formatex(szMsg, charsmax(szMsg), "\y%L^n", id, "MAINMENU_OFFPAUSE");
}
case TIMER_DISABLED: {
formatex(szMsg, charsmax(szMsg), "\d%L^n", id, "MAINMENU_ONPAUSE");
}
}
menu_additem(iMenu, szMsg);
formatex(szMsg, charsmax(szMsg), "%L^n", id, "MAINMENU_START");
menu_additem(iMenu, szMsg);
if(is_user_alive(id)){
formatex(szMsg, charsmax(szMsg), "%L", id, "MAINMENU_LSPEC");
}else{
formatex(szMsg, charsmax(szMsg), "%L", id, "MAINMENU_DSPEC");
}
menu_additem(iMenu, szMsg);
А так же возникает одна неприятная вещь, например пункт с паузой должен гореть серым цветом, визуальная давая понять игроку, что он неактивен. Но когда условия его активации соблюдены, если в этот момент меню у игрока уже было открыто, соответственно оно само по себе не обновляется и пункт остается серым, хотя его и можно нажать. Как можно выйти из этой ситуации? У меня крутится вариант обновлять меню игроку через amxclient_cmd(id, "menu");, в момент соблюдения всех условий, в конкретно данном случаи, когда игрок нажмет на кнопку старта, но тогда надо отлавливать открыто ли конкретно это меню у игрока в момент нажатия кнопки, что бы не открывать его тем, кто в этом не нуждается. Если этот вариант верный, то можете подсказать как это сделать для нового меню? Я видел варианты на этом форуме, но они все были для меню старого типа.