• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь Доступ к пунктам Меню по определенным флагам

Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.

pollfank

Участник
Сообщения
167
Решения
1
Реакции
32
Баллы
28
Всем доброго дня.
Решил сделать себе для сервера простенькое меню для игроков.
Но хочу сделать так, чтобы пункты самого меню были доступны (видимы) только тем у кого есть определенные флаги доступа.
Вот как делаю
Код:
#include <amxmodx>

#define PLUGIN "Menu"
#define VERSION "1.0"
#define AUTHOR "Teams"

#define vip_flag ADMIN_LEVEL_H
#define test_flag ADMIN_LEVEL_G

public plugin_init() {

       register_clcmd("say /skins", "cmdMenu");
       register_plugin(PLUGIN, VERSION, AUTHOR);
}

public cmdMenu(id) {
       new i_Menu = menu_create("\rТЕСТ МЕНЮ", "menu_handler");
    
       if(!(get_user_flags(id) & vip_flag))
       {
           menu_addblank(i_Menu, 0);
       }else{
           menu_additem(i_Menu, "\yПункт-1", "1", 0);
       }
      
       if(!(get_user_flags(id) & test_flag))
       {
           menu_addblank(i_Menu, 0);
       }else{
           menu_additem(i_Menu, "\yПункт-2", "2", 0);
           menu_additem(i_Menu, "\yПункт-3", "3", 0);
           menu_additem(i_Menu, "\yПункт-4", "4", 0);
           menu_additem(i_Menu, "\yПункт-5", "5", 0);
       }
      
       menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
       menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
       menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");

       menu_display(id, i_Menu, 0)
      
       return PLUGIN_HANDLED;
}

public menu_handler(id, menu, item) {
       if( item < 0 ) return PLUGIN_CONTINUE;
       new cmd[3], access, callback;
       menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
       new Choise = str_to_num(cmd)
       switch (Choise) {
       case 1: {client_cmd(id, "say test_cmd")
       }
       case 2: {client_cmd(id, "say test_cmd")
       }
       case 3: {client_cmd(id, "say test_cmd")
       }
       case 4: {client_cmd(id, "say test_cmd")
       }
       case 5: {client_cmd(id, "say test_cmd")
       }
       }
       return PLUGIN_HANDLED;
}

Прошу помощи, как правильно сделать условие для проверки на наличие флага доступа. А то пока не получается. Что делаю не так.
Буду очень признателен за помощь.
 
Разобрался.

Код:
#include <amxmodx>

#define PLUGIN "Menu"
#define VERSION "1.0"
#define AUTHOR "Teams"

#define vip_flag ADMIN_LEVEL_H

public plugin_init() {

       register_clcmd("say /test", "cmdMenu");
       register_plugin(PLUGIN, VERSION, AUTHOR);
}

public cmdMenu(id) {
       new i_Menu = menu_create("\rТЕСТ МЕНЮ", "menu_handler");

       menu_additem(i_Menu, "\yПункт-1", "1", 0);
      
       if( get_user_flags(id) & vip_flag ){
           menu_additem(i_Menu, "\yПункт-2", "2", 0);
           menu_additem(i_Menu, "\yПункт-3", "3", 0);
           menu_additem(i_Menu, "\yПункт-4", "4", 0);
           menu_additem(i_Menu, "\yПункт-5", "5", 0);
           }else{
           menu_addblank(i_Menu, 0);
       }
      
       menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
       menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
       menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");

       menu_display(id, i_Menu, 0)
      
       return PLUGIN_HANDLED;
}

public menu_handler(id, menu, item) {
       if( item < 0 ) return PLUGIN_CONTINUE;
       new cmd[3], access, callback;
       menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
       new Choise = str_to_num(cmd)
       switch (Choise) {
       case 1: {client_cmd(id, "say test_cmd1")
       }
       case 2: {client_cmd(id, "say test_cmd2")
       }
       case 3: {client_cmd(id, "say test_cmd3")
       }
       case 4: {client_cmd(id, "say test_cmd4")
       }
       case 5: {client_cmd(id, "say test_cmd5")
       }
       }
       return PLUGIN_HANDLED;
}
 
Не рекомендую писать менюшки на этой системе.
В ней нельзя видоизменять цифры, обозначающие номер пункта, и добавлять более семи пунктов на одну страницу.
Да и вообще, много чего лишнего и неудобного тут.

Погугли "amxx старая система меню".
Там всё гораздо удобнее и понятнее, и, как бонус, можно контролировать абсолютно всю визуальную часть меню как вашей душе угодно.
 
Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.
Назад
Сверху