kolobok1, Код:
#include <amxmodx>
#include <fun>
public plugin_init()
{
// Клиентская команда для вызова меню
register_clcmd("my_menu", "My_Menu")
}
public My_Menu(id)
{
// Сперва необходимо создать переменную для меню, с которой мы будем взаимодействовать в дальнейшем
new i_Menu = menu_create("\rPlayer menu:", "menu_handler")
// Необходимые переменные, которые понадобятся нам при выводе меню из игроков
new s_Players[32], i_Num, i_Player
// Переменные для хранения информации об игроках
new s_Name[32], s_Player[10]
// Получаем массив игроков
get_players(s_Players, i_Num)
// Цикл по всем игрокам
for (new i; i < i_Num; i++)
{
// Сохраняем текущего игрока в i_Player
i_Player = s_Players[i]
// Получаем имя и ID игрока
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
// Добавляем опцию по данному игроку
menu_additem(i_Menu, s_Name, s_Player, 0)
}
// Мы сформировали меню из игроков, присутствующих на сервере, теперь выводим его
menu_display(id, i_Menu, 0)
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
// Получаем ID игрока, который был выбран в меню
new i_Player = str_to_num(s_Data)
// Проверяем, если игрок живой
if (is_user_alive(i_Player))
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, i_Player)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(255)
write_byte(255)
write_byte(255)
message_end()
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
Взято
1 2P.S. Не проверял на работоспособность)
Отредактировал: ThisIsSparta, - 27.7.2015, 19:51