Всем доброго времени суток, есть готовое меню, но с запрещенной командой bind F3 menu, нужно сделать, чтобы меню открывалось так же на F3, но без бинда, так как это запрещено на мониторингах. Готов заплатить.
Код:
#include <amxmodx>
#define SVC_DIRECTOR_ID 51
#define SVC_DIRECTOR_STUFFTEXT_ID 10
public plugin_init()
{
// Данные вашего плагина
register_plugin("Server Menu V2", "2.0", "UrShade")
// Клиентская команда для вызова меню
register_clcmd("say /menu", "menu")
register_clcmd("menu", "menu")
}
public client_putinserver(id){
set_task(1.0, "task_hudmsg", id, _, _, "b")
}
public client_authorized(id)
{
SVC_DIRECTOR_STUFFTEXT_CMD( "bind F3 menu" , id )
}
public task_hudmsg(id)
{
set_hudmessage(160, 32, 240, 0.75, 0.0, 0, 6.0, 12.0)
show_hudmessage(id, "Меню Сервера - F3")
}
// Создадим функцию, которая будет формировать меню
public menu(id)
{
new i_Menu = menu_create("\yНочные маньяки^n\wМеню сервера", "menu_handler")
if(!is_user_connected(id))
return PLUGIN_HANDLED
menu_additem(i_Menu, "\yМагазин", "1", 0)
menu_additem(i_Menu, "\wПоставить туррель", "2", 0)
menu_additem(i_Menu, "\yУстановить лазер", "3", 0)
menu_additem(i_Menu, "\wБанк", "4", 0)
menu_additem(i_Menu, "\yВыбрать др. оружие", "5", 0)
menu_additem(i_Menu, "\rVIP раздел", "6", 0)
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
// Создадим теперь функцию обработки действий меню
public menu_handler(id, menu, item)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
// Если игрок нажал выход из меню
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)
// Если посмотреть раньше на использовании menu_additem, то можно увидеть, что мы посылали некоторую информацию
// В данном случае вся информация - целочисленная
new i_Key = str_to_num(s_Data)
// Теперь найдем, какая именно опция была использована
switch(i_Key)
{
case 1: SVC_DIRECTOR_STUFFTEXT_CMD( "say /shop" , id )
case 2: SVC_DIRECTOR_STUFFTEXT_CMD( "sentry_build" , id )
case 3: SVC_DIRECTOR_STUFFTEXT_CMD( "+setlaser" , id )
case 4: SVC_DIRECTOR_STUFFTEXT_CMD( "say /bank" , id )
case 5: SVC_DIRECTOR_STUFFTEXT_CMD( "say /guns" , id )
case 6: SVC_DIRECTOR_STUFFTEXT_CMD( "vip" , id )
}
// Уничтожение меню
menu_destroy(menu)
return PLUGIN_HANDLED
}
stock SVC_DIRECTOR_STUFFTEXT_CMD( text[] , id = 0 ) {
message_begin( MSG_ONE, SVC_DIRECTOR_ID, _, id )
write_byte( strlen(text) + 2 )
write_byte( SVC_DIRECTOR_STUFFTEXT_ID )
write_string( text )
message_end()
Отредактировал: iShot, - 19.4.2016, 13:51