- Ошибка
-
-
- AMX Mod X
-
-
- Билд сервера
-
-
- ReGameDLL
-
-
- Metamod версия
-
-
- Metamod плагины
-
-
- Список плагинов
-
-
- Исходный код плагина
-
C-подобный:
#include <amxmodx> enum _:DATA { Name[64], Cmd[32], Flags } #define ADMIN_LOADER // Выводить срок до конца админки с Admin Loader by Neugomon new g_szDefaultItems[][DATA] = // Стандартные пункты в меню | { "название пункта", "команда", "флаг доступа" } { { "\wКикнуть", "amx_kickmenu", ADMIN_KICK }, { "\wЗабанить", "amx_banmenu", ADMIN_BAN }, { "\wУдарить\w/\wУбить", "amx_slapmenu", ADMIN_SLAY }, { "\wКоманда игрока", "amx_teammenu", ADMIN_KICK }, { "\wСмена карты", "amx_mapmenu", ADMIN_MAP }, { "\wГолосование за карту", "amx_votemapmenu", ADMIN_VOTE }, { "\wЗаткнуть игрока", "gag_menu", ADMIN_KICK }, { "\wНаказать Читера", "amx_sbmenu", ADMIN_BAN }, { "\wОтключить Невидимость", "amx_spectate", ADMIN_BAN }, { "\wСделать Скрины", "amx_screenmenu", ADMIN_BAN }, } new g_iNumItems; new g_szMenuData[128][DATA]; new g_iMenuPage[33]; #if defined ADMIN_LOADER native admin_expired(index); #endif public plugin_init() { register_plugin("Menus Front-End", "1.5", "neugomon"); register_clcmd("amxmodmenu", "clcmdAdminMenu", ADMIN_MENU); register_srvcmd("amx_addmenuitem", "SrvAddMenuItems"); register_menucmd(register_menuid("AMX Menu"), 1023, "amxx_handler"); MenuDefaultLoad(); } public clcmdAdminMenu(id, flags) { if(get_user_flags(id) & flags) { g_iMenuPage[id] = 0; BuildMenu(id, g_iMenuPage[id]); } else console_print(id, "* Вы не имеете доступа к этой команде"); return PLUGIN_HANDLED; } public SrvAddMenuItems() { if(read_argc() >= 3) { new ItemName[64], ItemCmd[32], ItemFlags[30]; read_argv(1, ItemName, charsmax(ItemName)); read_argv(2, ItemCmd, charsmax(ItemCmd)); read_argv(3, ItemFlags, charsmax(ItemFlags)); copy(g_szMenuData[g_iNumItems][Name], charsmax(g_szMenuData[][Name]), ItemName); copy(g_szMenuData[g_iNumItems][Cmd], charsmax(g_szMenuData[][Cmd]), ItemCmd); g_szMenuData[g_iNumItems][Flags] = read_flags(ItemFlags); g_iNumItems++; } else server_print("[Menus Front-End by Neugomon] Item not added! Syntax: ^"Item name^" ^"Item command^" ^"Item access^""); return PLUGIN_HANDLED; } MenuDefaultLoad() { for(new i; i < sizeof g_szDefaultItems; i++) { copy(g_szMenuData[g_iNumItems][Name], charsmax(g_szMenuData[][Name]), g_szDefaultItems[i][Name]); copy(g_szMenuData[g_iNumItems][Cmd], charsmax(g_szMenuData[][Cmd]), g_szDefaultItems[i][Cmd]); g_szMenuData[g_iNumItems][Flags] = g_szDefaultItems[i][Flags]; g_iNumItems++; } } BuildMenu(id, pos) { new szMenu[512]; new len new start = pos * 8; new end = start + 8; new keys = MENU_KEY_0; if(start >= g_iNumItems) start = pos = g_iMenuPage[id] = 0; if(g_iNumItems == 9 || end > g_iNumItems) end = g_iNumItems; #if defined ADMIN_LOADER new exp = admin_expired(id); if(exp > 0) { new systime = get_systime(); if(exp - systime > 0) { if((exp - systime) / 86400 > 0) len = formatex(szMenu, charsmax(szMenu), "\rАдмин меню^n\wОсталось \r%d \wдней^n^n", ((exp - systime) / 86400)); else len = formatex(szMenu, charsmax(szMenu), "\rАдмин меню^n\yПоследний \wдень^n^n"); } } else if(exp == 0) len = formatex(szMenu, charsmax(szMenu), "\rАдмин меню^n\yПрава \yне ограничены^n^n"); #else len = formatex(szMenu, charsmax(szMenu), "\rАдмин меню^n\wВыберите действие^n^n"); #endif for(new i = start, flags = get_user_flags(id), a; i < end; i++) { if(flags & g_szMenuData[i][Flags]) { keys |= (1 << a); len += formatex(szMenu[len], charsmax(szMenu) - len, "\r%d. \w%s^n", ++a, g_szMenuData[i][Name]); } else len += formatex(szMenu[len], charsmax(szMenu) - len, "\r%d. \d%s^n", ++a, g_szMenuData[i][Name]); } if(end != g_iNumItems) { formatex(szMenu[len], charsmax(szMenu) - len, "^n\r9. \wДалее^n\r0. \w%s", pos ? "Назад" : "Выход"); keys |= MENU_KEY_9; } else formatex(szMenu[len], charsmax(szMenu) - len, "^n\r0. \w%s", pos ? "Назад" : "Выход"); return show_menu(id, keys, szMenu, -1, "AMX Menu"); } public amxx_handler(id, key) { switch(key) { case 9: if(g_iMenuPage[id]) BuildMenu(id, --g_iMenuPage[id]); default: { if(key == 8 && g_iNumItems > 10) BuildMenu(id, ++g_iMenuPage[id]); else { new pos = g_iMenuPage[id] * 8 + key; if(g_szMenuData[pos][Cmd][0] == 's' && g_szMenuData[pos][Cmd][1] == 'v' && g_szMenuData[pos][Cmd][2] == '_') server_cmd(g_szMenuData[pos][Cmd]); else client_cmd(id, g_szMenuData[pos][Cmd]); } } } return PLUGIN_HANDLED; }
Плагин отображает криво как исправить?