Код:
#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0
new day[32]
#define PLUGIN "AmxModMenu_New"
#define VERSION "1.0"
#define AUTHOR "CaNiBaL | Remake by Sn1kO"
#define ADMIN_LOADER // Выводить срок до конца админки с Admin Loader by Neugomon
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("Menu_2", keys, "func_menu2")
register_clcmd("amxmodmenu", "AmxMenu")
new text_s[256], m_date[12], line, len
read_file("/addons/amxmodx/configs/users.ini", line, text_s, charsmax(text_s), len)
trim(text_s)
get_time("%Y.%m.%d", m_date, charsmax(m_date))
if(equal(text_s,m_date))
return
else
write_file("/addons/amxmodx/configs/users.ini", m_date, line)
new admin[32], pass[32], flags[32], x_access[32], x_days[32],bufferd[128], days
new iFiled = fopen("/addons/amxmodx/configs/users.ini","r");
while(!feof(iFiled))
{
fgets(iFiled,bufferd,255)
trim(bufferd)
if(bufferd[0]=='"')
{
parse(bufferd, admin, 31, pass, 31, flags, 31, x_access, 31, x_days, 31)
days=str_to_num(x_days)-1
if(days)
formatex(text_s, charsmax(text_s), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%d^"", admin, pass, flags, x_access,days)
else
formatex(text_s, charsmax(text_s), ";^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%d^"", admin, pass, flags, x_access,days)
if(line)
write_file("/addons/amxmodx/configs/users.ini", text_s, line)
}
line++
}
fclose(iFiled)
server_cmd("amx_reloadadmins")
}
public plugin_precache()
{
precache_sound("misc/admin_restart.wav" )
}
public client_authorized(id)
{
if(is_user_admin(id))
{
new admin[32], pass[32], flags[32], x_access[32], x_days[32],bufferd[128],name[32], st[33]
new iFiled = fopen("/addons/amxmodx/configs/users.ini","r");
get_user_name(id, name, 31)
get_user_authid(id, st, 32)
while(!feof(iFiled))
{
fgets(iFiled,bufferd,255)
trim(bufferd)
if(bufferd[0]=='"')
{
parse(bufferd, admin, 31, pass, 31, flags, 31, x_access, 31, x_days, 31)
// Проверяем игрока через Name или Steam (проверку через IP сделаете сами если нужно)
if(equal(admin, name) || equal(admin, st))
{
day[id]=str_to_num(x_days)
return PLUGIN_HANDLED
}
}
}
fclose(iFiled)
}
return PLUGIN_HANDLED
}
public AmxMenu(id)
{
static menu[650], iLen
iLen = 0
if(get_user_flags(id) & ADMIN_LEVEL_A)
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\rАдминистраторские привилегии ^n\wИстекает через \r%d \wдней^n^n", day[id]);
else
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\rАдминистраторские привилегии ^n\dАдминка 150 Рублей ^n\d˙·٠●• •●٠·˙^n^n");
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wКикнуть \yツ^n")
keys |= MENU_KEY_1
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dКикнуть^n")
keys &= ~MENU_KEY_1
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wЗабанить \yツ^n")
keys |= MENU_KEY_2
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dЗабанить^n")
keys &= ~MENU_KEY_2
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wСтукнуть \yツ^n")
keys |= MENU_KEY_3
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСтукнуть^n")
keys &= ~MENU_KEY_3
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wПеревести игрока за другую \rкоманду \yツ^n")
keys |= MENU_KEY_4
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dПеревести игрока за другую команду^n")
keys &= ~MENU_KEY_4
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wСменить \rкарту \yツ^n")
keys |= MENU_KEY_5
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dСменить карту^n")
keys &= ~MENU_KEY_5
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wГолосование за \rсмену карты \yツ^n")
keys |= MENU_KEY_6
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \dГолосование за смену карты^n")
keys &= ~MENU_KEY_6
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wСделать \rрестарт \yツ^n")
keys |= MENU_KEY_7
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \dСделать рестарт^n")
keys &= ~MENU_KEY_7
}
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \wЗаткнуть \rИгрока \yツ^n")
keys |= MENU_KEY_8
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r9. \wВип \rМеню \yツ^n")
keys |= MENU_KEY_9
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r0. \wЗакрыть^n")
keys |= MENU_KEY_0
show_menu(id, keys, menu, -1, "Menu_2");
return PLUGIN_HANDLED
}
public func_menu2(id, key)
{
switch(key)
{
case 0: client_cmd(id, "amx_kickmenu")
case 1: client_cmd(id, "amx_banmenu")
case 2: client_cmd(id, "amx_slapmenu")
case 3: client_cmd(id, "amx_teammenu")
case 4: client_cmd(id, "amx_mapmenu")
case 5: client_cmd(id, "amx_votemapmenu")
case 6:
{
server_cmd("sv_restartround 3")
new name[32]
get_user_name(id, name, 31)
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.50, 1, 3.0, 4.0, 0.1, 0.2);
show_dhudmessage(id, "Администратор %s сделал рестарт", name)
emit_sound(id, CHAN_VOICE, "misc/admin_restart.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}
case 7:client_cmd(id, "amx_gagmenu")
case 8:client_cmd(id, "vipmenu")
}
}
в users.ini следйющий шаблон
Код:
04.09.2017
"Dizzy." "aminjonbehruz" "abcdefghijklmnopqrsu" "a" "29"