Пример для теста.
Код:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Neizvesten"
#define VERSION "1.0"
#define AUTHOR "ReznyaProject"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("manager", -1, "manager_hand")
register_menu("manager_test", -1, "manager_test_hand")
register_clcmd("say /test", "manager_test_main")
}
public manager_main(id)
{
new MANAGER[512], i_keys = MENU_KEY_0
new Len = formatex(MANAGER, charsmax(MANAGER), "\yTest Menu 1^n^n")
i_keys |= MENU_KEY_1
Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r1. \wTest 1^n")
i_keys |= MENU_KEY_2
Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r2. \wTest 2^n")
Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r0. \wExit^n")
show_menu(id, i_keys, MANAGER, -1, "manager")
}
public manager_hand(id, i_key)
{
switch(i_key)
{
case 9: return PLUGIN_HANDLED;
default: client_print(id, print_chat, "Test menu 1")
}
return PLUGIN_HANDLED;
}
public manager_test_main(id)
{
new MANAGER_TEST[512], i_keys = MENU_KEY_0
new Len = formatex(MANAGER_TEST, charsmax(MANAGER_TEST), "\yTest Menu 2^n^n")
i_keys |= MENU_KEY_1
Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r1. \wTest 1^n")
i_keys |= MENU_KEY_2
Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r2. \wTest 2^n")
Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r0. \wExit^n")
show_menu(id, i_keys, MANAGER_TEST, -1, "manager_test")
}
public manager_test_hand(id, i_key)
{
switch(i_key)
{
case 9: return PLUGIN_HANDLED;
default: client_print(id, print_chat, "Test menu 2")
}
return PLUGIN_HANDLED;
}
Через команду "/test" вызываем меню "manager_money", нажимаю на любую из кнопок (кроме выхода) и видим в чате сообщения из хандледа который относится к меню "manager".
Если не юзать
Код:
return PLUGIN_HANDLED
, то вызываются вообще 2 ханда из первого и второго меню. Почему?!
Отредактировал: DumoH4uk, - 18.12.2014, 20:32