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

Помощь Помогите пожалуйста с админменю

tayet68101

Участник
Сообщения
11
Симпатии
0
Баллы
1
#1
Ребят, короче нашёл исходник вроде бы нормального админ меню. Но есть проблема. amxmodmenu могут открывать все игроки, даже без админки. Мне нужно чтобы amxmodmenu могли открывать исключительно админы. Помогите найти строчку отвечающую за это


#include <amxmodx>

#define MAX_MENU 35 // Максимальное допустимое число пунктов меню
#define MAX_LENGTH 63 // Максимальный размер одной строки

#define INIFILE "/addons/amxmodx/configs/amxmodmenu/menu.ini" // Файл настройки меню админа!
new MenuItem[MAX_MENU+1][MAX_LENGTH+1], MenuCmd[MAX_MENU+1][MAX_LENGTH+1], lines

#define INICMDFILE "/addons/amxmodx/configs/amxmodmenu/clcmd.ini" // Файл настройки клиентских команд для входа в меню
new MenuClcmd[MAX_MENU+1][MAX_LENGTH+1], cmd_lines

public plugin_precache()
{
register_plugin("Server AMXMODMENU [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("amxmodmenu_text", "\yМеню для админа \wот \rLeo_[BH]\w")

for(new num = 1; num < cmd_lines; num++)
{
register_clcmd(MenuClcmd[num], "open_admin_menu");
}
}

// // // // // // // // // // // // // // //

public open_admin_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
}
 
Последнее редактирование модератором:

BINGO

Участник
Сообщения
151
Симпатии
17
Баллы
79
#2
Ребят, короче нашёл исходник вроде бы нормального админ меню. Но есть проблема. amxmodmenu могут открывать все игроки, даже без админки. Мне нужно чтобы amxmodmenu могли открывать исключительно админы. Помогите найти строчку отвечающую за это
Тут нету строчки. которая прописываеться флаг
Видимо тебе нужен файл
#define INIFILE "/addons/amxmodx/configs/amxmodmenu/menu.ini" // Файл настройки меню админа!
#define INICMDFILE "/addons/amxmodx/configs/amxmodmenu/clcmd.ini"
 
Последнее редактирование модератором:

ko1dun

Модератор
Сообщения
142
Симпатии
34
Баллы
104
#3
Достаточно такого изменения
public open_admin_menu(id)
{

if( !is_user_admin(id) ) return PLUGIN_HANDLED

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
}
 

lddnsk

Администратор
Сообщения
254
Симпатии
65
Баллы
104
#4
Ну в конфигах не будет проверки флага, так или иначе код проверки доступа должен быть в коде плагина - в парсере конфига или общий, а тут вообще никак нигде не проверяется. Странный плагин
 
Сверху