menu - открыть меню сервера (это команда по умолчанию и она может быть изменена в файле настроек) |
#include <amxmodx>
#define MAX_MENU 35 // Максимальное допустимое число пунктов меню
#define MAX_LENGTH 63 // Максимальный размер одной строки
#define INIFILE "/addons/amxmodx/configs/menu/menu.ini" // Файл настройки меню сервера!
new MenuItem[MAX_MENU+1][MAX_LENGTH+1], MenuCmd[MAX_MENU+1][MAX_LENGTH+1], lines
#define INICMDFILE "/addons/amxmodx/configs/menu/clcmd.ini" // Файл настройки клиентских команд для входа в меню
new MenuClcmd[MAX_MENU+1][MAX_LENGTH+1], cmd_lines
public plugin_precache()
{
register_plugin("Server Menu [INI]", "1.0", "Leo_[BH]")
cmd_ini_file()
menu_ini_file()
}
public cmd_ini_file()
{
new cmd_line = 1, cmd_bufferd[256]
new cmd_iFiled = fopen(INICMDFILE,"r")
while(!feof(cmd_iFiled))
{
fgets(cmd_iFiled,cmd_bufferd,255)
trim(cmd_bufferd)
if(cmd_bufferd[0]=='"')
{
parse(cmd_bufferd, MenuClcmd[cmd_line], MAX_LENGTH)
}
else
{
continue
}
cmd_line++
}
cmd_lines = cmd_line
fclose(cmd_iFiled)
}
public menu_ini_file()
{
new line = 1, bufferd[256]
new iFiled = fopen(INIFILE,"r")
while(!feof(iFiled))
{
fgets(iFiled,bufferd,255)
trim(bufferd)
if(bufferd[0]=='"')
{
parse(bufferd, MenuItem[line], MAX_LENGTH, MenuCmd[line], MAX_LENGTH)
}
else
{
continue
}
line++
}
lines = line
fclose(iFiled)
}
new g_Menu_Text
public plugin_init()
{
g_Menu_Text = register_cvar("menu_text", "\yМеню сервера \wот \rLeo_[BH]\w")
for(new num = 1; num < cmd_lines; num++)
{
register_clcmd(MenuClcmd[num], "open_server_menu");
}
}
// // // // // // // // // // // // // // //
public open_server_menu(id)
{
new g_szTextGL[64]
get_pcvar_string( g_Menu_Text, g_szTextGL, 63 );
new menu = menu_create(g_szTextGL, "handler_menu")
for(new num = 1; num < lines; num++)
{
new Number[4]
formatex(Number, charsmax(Number), "%i", num)
menu_additem(menu, MenuItem[num], Number)
}
menu_setprop(menu, MPROP_NEXTNAME, "Далее")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public handler_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[15], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data, 14, iName, 63, callback)
client_cmd(id, MenuCmd[str_to_num(data)])
menu_destroy(menu)
return PLUGIN_HANDLED
}
///////////////////////////////////////////////////////////
// ///
// Автор плагина - Leo_[BH] ///
// Делаю, пишу плагины на заказ! ///
// http://vk.com/id64427766 ///
// http://vk.com/cs_rain ///
// https://goo.gl/forms/7DwrBdaTnc0pJRqy2 ///
// ///
///////////////////////////////////////////////////////////