• Гость, перед открытием темы прочитай описание раздела, чтобы не ошибиться. Любые вопросы по настройке сервера создаются в разделе Технической Поддержки.

Закрыто амхмодменю вопрос

Статус
В этой теме нельзя размещать новые ответы.

s1ngle71rus

Участник
Сообщения
145
Симпатии
1
Баллы
79
#1
Всем привет , подскажите можно ли как то сделать , чтобы плагин работал без админ лоудера ?
#include <amxmodx>
enum _:DATA { Name[64], Cmd[32], Flags }

#define ADMIN_LOADER // Выводить срок до конца админки с Admin Loader by Neugomon
new g_szDefaultItems[][DATA] = // Стандартные пункты в меню | { "название пункта", "команда", "флаг доступа" }
{
{ "Кикнуть", "amx_kickmenu", ADMIN_KICK },
{ "\rЗабанить", "amx_banmenu", ADMIN_BAN },
{ "\yУдарить\w/\rУбить", "amx_slapmenu", ADMIN_SLAY },
{ "\yКоманда игрока", "amx_teammenu", ADMIN_KICK },
{ "\rСмена карты", "amx_mapmenu", ADMIN_MAP },
{ "\rГолосование за карту", "amx_votemapmenu", ADMIN_VOTE },
{ "\rВыдать мут", "amx_gagmenu", "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[Name]);
copy(g_szMenuData[g_iNumItems][Cmd], charsmax(g_szMenuData[][Cmd]), g_szDefaultItems[Cmd]);
g_szMenuData[g_iNumItems][Flags] = g_szDefaultItems[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), "\rAmxModMenu^n\wОсталось \r%d \wдней^n^n", ((exp - systime) / 86400));
else len = formatex(szMenu, charsmax(szMenu), "\rAmxModMenu^n\rПоследний \wдень^n^n");
}
}
else if(exp == 0) len = formatex(szMenu, charsmax(szMenu), "\rAmxModMenu^n\wПрава \yне ограничены^n^n");
#else
len = formatex(szMenu, charsmax(szMenu), "\rAmxModMenu^n\wВыберите действие^n^n");
#endif
for(new i = start, flags = get_user_flags(id), a; i < end; i++)
{
if(flags & g_szMenuData[Flags])
{
keys |= (1 << a);
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r%d. \w%s^n", ++a, g_szMenuData[Name]);
}
else len += formatex(szMenu[len], charsmax(szMenu) - len, "\r%d. \d%s^n", ++a, g_szMenuData[Name]);
}

if(end != g_iNumItems)
{
formatex(szMenu[len], charsmax(szMenu) - len, "^n\r9. \yДалее^n\r0. \r%s", pos ? "Назад" : "Выход");
keys |= MENU_KEY_9;
}
else formatex(szMenu[len], charsmax(szMenu) - len, "^n\r0. \r%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 > 9)
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;
}
 
M

Mmonster

Гости
#2
Код:
//#define ADMIN_LOADER // Выводить срок до конца админки с Admin Loader by Neugomon
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху