
Доброго времени суток,хочу рассказать вам о том как сделать базовое меню на своем зомби сервере Zombie Plague (ZP).
Начнем 1 делом прописываем инклюды которые будут нужны в написание плагина в нашем случае :
#include <amxmodx>
далее мы делаем Инициализацию плагина:
public plugin_init()
{
//вставьте ваш код
register_clcmd( "my_awesome_menu","AwesomeMenu");
//регистрируем команду что бы добраться до меню
}
Далее регистрируем функцию что бы дальше можно было сделать меню:
}
public AwesomeMenu(id)
{
далее делаем переменную которая позже будет "держать меню":
new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler");
Первый Параметр - То как будет названа "шапка" меню
Второй параметр - Функция которая будет обращаться с меню (какая пункт был нажат и что он делает)
Далее Добавляем что-либо в меню:
menu_additem(menu, "\wI'm Selection #1", "1", 0);
menu_additem(menu, "\wI'm Selection #2", "2", 0);
menu_additem(menu, "\wI'm Secret Selection #3", "3", ADMIN_ADMIN);
//Первый параметр - к какому меню мы будем относить добавление этой вещи
//Второй параметр - то как будет назван этот предмет
//Третий параметр - данные которые мы хотим послать с этим пунктом
//Четвертый параметр - какой флаг мы хотим установить что бы можно было выбрать данную функцию
Далее мы устанавливаем собственность на меню:
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
//Первый параметр - какому индексу показать это (Вы не можете показать это всем сразу)
//Второй параметр - какое меню показать им (в этом случае, то что мы сделали)
После того как мы показали им меню мы должны использовать функцию которая была раньше в menu_create:
public menu_handler(id, menu, item)
{
//Мы не будем иметь дело если вышли из меню
if( item == MENU_EXIT )
{
menu_destroy(menu);
//позволяет разрушить меню когда они что-либо выбрали
return PLUGIN_HANDLED;
}
//Теперь создаем некоторые переменные которые дают нам информацию о выбранном пункте
new data[6], szName[64];
new access, callback;
//Эта функция даст нам информацию
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Далее мы посылаем данные с каждым пунктом к menu_additem
new key = str_to_num(data);
//Теперь Позволяет находить какой пункт был нажат
switch(key)
{
case 1:
{
//то что будет прописываться в чат
client_print(id, print_chat, "Вы выбрали 1 пункт");
// если мы хотим что бы меню закрылось после выбора
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:
{
client_print(id, print_chat, "Вы выбрали пункт 2");
}
case 3:
{
client_print(id, print_chat, "Вы Выбрали пункт для Администрации");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Вот полностью код плагина:
#include <amxmodx>
public plugin_init()
{
register_clcmd( "my_awesome_menu","AwesomeMenu");
}
public AwesomeMenu(id)
{
new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler");
menu_additem(menu, "\wI'm Selection #1", "1", 0);
menu_additem(menu, "\wI'm Selection #2", "2", 0);
menu_additem(menu, "\wI'm Secret Selection #3", "3", ADMIN_ADMIN);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
client_print(id, print_chat, "Вы Выбрали пункт 1");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:
{
client_print(id, print_chat, "Вы Выбрали пункт 2");
}
case 3:
{
client_print(id, print_chat, "Вы Выбрали пункт для Администрации");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Вроде все
P.S. Добавить еще статью как сделать под меню меню для голосования и т.д...
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.