Sorokin, спасибо за код.
Я немного его изменил (флаг и ошибку), больше ничего не менял, но даже имея флаг P, я не могу выбрать команду. Просто пропадает GUI выбора команды и всё. Что с флагом, что без флага.
И ещё блокируется просмотр карты в free look. Т.е. игрок из спектаторов не может "летать" по карте. Я думаю, что лучше сделать алгоритм подключения так: если нет флага #define ACCESS_LEVEL, то нужно не скрывать GUI выбора команды, а при выборе любой команды кидать в спектаторы.
Код
#include <amxmodx>
#define ACCESS_LEVEL ADMIN_LEVEL_D
#define ERROR_MESSAGE "Не зайдёшь!"
public plugin_init()
{
register_plugin("Forbidden players", ".1a", "Sorokin");
register_message(get_user_msgid("ShowMenu"), "message_show_menu");
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu");
register_clcmd("chooseteam", "lolkek");
register_clcmd("jointeam", "lolkek");
}
public lolkek(id)
{
#if defined ERROR_MESSAGE
if (!(get_user_flags(id) & ACCESS_LEVEL))
return client_print(id, print_center, ERROR_MESSAGE);
#endif
return PLUGIN_CONTINUE;
}
public message_show_menu(msgid, dest, id)
{
if (!(!get_user_team(id) && !(get_user_flags(id) & ACCESS_LEVEL)))
return PLUGIN_CONTINUE;
static team_select[] = "#Team_Select";
static menu_text_code[sizeof team_select];
get_msg_arg_string(4, menu_text_code, charsmax(menu_text_code));
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE;
return PLUGIN_HANDLED;
}
public message_vgui_menu(msgid, dest, id)
{
if (get_msg_arg_int(1) != 2 || !(!get_user_team(id) && !(get_user_flags(id) & ACCESS_LEVEL)))
return PLUGIN_CONTINUE;
return PLUGIN_HANDLED;
}
Отредактировал: biffick, - 29.11.2017, 7:30