Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

SubMenu

[РЕШЕНО]
Статус пользователя ThePhoenix
сообщение 25.1.2017, 17:47
Сообщение #1


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Привет, как сделать Submenu?
Ну мне нужно на пункт 2 в менюшке открыть ещё одну менюшку.
Можно конечно зарегать 2 меню, но это как-то бредово.
Делаю так:
Код
{ "\yНазвание",                 "sub_menu",        Флаг },

+
Код
register_clcmd("sub_menu",         "SubCmdMenu", Флаг);

+
Код
public SubCmdMenu(id) {
    new s_Menu[512];
    formatex(s_Menu, charsmax(s_Menu), "\rМеню:");
    new i_Menu = menu_create(s_Menu, "SubCmdMenuHand");

    menu_additem(i_Menu, "\rНазвание", "1", 0);
    menu_additem(i_Menu, "\yНазвание", "2", 0);
    menu_additem(i_Menu, "\yНазвание", "3", 0);
    menu_additem(i_Menu, "\yНазвание", "4", 0);

    menu_setprop(i_Menu, MPROP_EXITNAME, "Назад");
    menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, i_Menu, 0);
}

public SubCmdMenuHand(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
    }

    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);

    new i_Key = str_to_num(s_Data);

    switch(i_Key) {
        case 1: client_cmd(id, "команда");
        case 2: client_cmd(id, "команда");
        case 3: client_cmd(id, "команда");
        case 4: client_cmd(id, "команда");
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Ловлю :
Код
L 01/25/2017 - 18:38:18: Start of error session.
L 01/25/2017 - 18:38:18: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20170125.log")
L 01/25/2017 - 18:38:18: Invalid menu id 173(178)
L 01/25/2017 - 18:38:18: [AMXX] Run time error 10 (plugin "menufront_end.amxx") (native "menu_item_getinfo") - debug not enabled!
L 01/25/2017 - 18:38:18: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Задебажить не успел и не часто ошибка.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя hitmanEN
сообщение 25.1.2017, 18:02
Сообщение #2


Стаж: 8 лет
Город: Санкт-Петербург


Сообщений: 401
Благодарностей: 92
Полезность: 187

Cкрытый текст
Мой совет никогда не пользуйся новыми менюшками...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 25.1.2017, 18:13
Сообщение #3


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

hitmanEN, и почему же?
Добавлять новые пункты в существующее меню и лазить искать - не вариант.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 25.1.2017, 18:17
Сообщение #4
Стаж: 13 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

В коде я вижу структуру только одного меню. Где второе ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 25.1.2017, 18:19
Сообщение #5
Стаж: 9 лет 9 месяцев

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ThePhoenix, мой совет никогда не слушай его советы.
Если скинешь весь код(сюда или в личку) - могу глянуть, а так не особо понятно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 25.1.2017, 18:25
Сообщение #6


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Цитата(SISA @ 25.1.2017, 19:17) *
В коде я вижу структуру только одного меню. Где второе ?

я просто не знаю, можно ли его постить :)
качал с другого ресурса и уже не помню, разрешается ли постить плагины на других ресурсах.
Могу в лс скинуть)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 25.1.2017, 18:27
Сообщение #7
Стаж: 9 лет 9 месяцев

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Вроде в этом проблема
Ты уничтожаешь меню и функция продолжает работать
Код:
    if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя r0no^
сообщение 25.1.2017, 18:28
Сообщение #8


Стаж: 11 лет
Город: Vilnius

Сообщений: 359
Благодарностей: 162
Полезность: 626

Не подходит?


Лишь утратив всё до конца, человек обретает свободу!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 25.1.2017, 18:31
Сообщение #9


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Цитата(r0no^ @ 25.1.2017, 19:28) *

нет конечно, у меня минимум кода и по делу, всё что мне нужно.
voed,
>Вроде в этом проблема
>Ты уничтожаешь меню и функция продолжает работать
Так если убрать этот код по идее старое меню закрываться не будет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 25.1.2017, 18:31
Сообщение #10
Стаж: 9 лет 9 месяцев

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ThePhoenix, убирать не надо, добавь return PLUGIN_HANDLED
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 25.1.2017, 18:48
Сообщение #11


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Цитата(voed @ 25.1.2017, 19:31) *
ThePhoenix, убирать не надо, добавь return PLUGIN_HANDLED

проверю сейчас :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя temirlan
сообщение 26.1.2017, 11:49
Сообщение #12
Стаж: 9 лет 8 месяцев
Город: Тараз

Сообщений: 9
Благодарностей: 1
Полезность: 0

Код
В plugin_init
register_clcmd("menu", "server_menu" )
register_clcmd("say /menu", "server_menu" )
register_clcmd("menu2", "server_menu2" )

public server_menu2(id)
{

new i_Menu = menu_create("СубМеню", "MMENU2" )
menu_additem(i_Menu, "Название", "1", 0)
menu_additem(i_Menu, "Название", "2", 0)
menu_additem(i_Menu, "Название", "3", 0)
menu_additem(i_Menu, "Название", "4", 0)
menu_additem(i_Menu, "Название", "5", 0)
menu_additem(i_Menu, "Название", "6", 0)
menu_addblank( i_Menu, 0)
menu_additem(i_Menu,"Назад", "9", 0)
menu_additem(i_Menu,"Выход", "0", 0)
menu_setprop(i_Menu, MPROP_PERPAGE, 0)
menu_display(id, i_Menu, 0)

return PLUGIN_HANDLED
}
public MMENU2(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)

new i_Key = str_to_num(s_Data)

switch(i_Key)
{

case 1:
{
client_cmd(id, "say ")
}
case 2:
{
client_cmd(id, "say")
}
case 3:
{
client_cmd(id, "say ")
}
case 4:
{
client_cmd(id, "say ")
}
case 5:
{
client_cmd(id, "say ")
}
case 6:
{
client_cmd(id, "say ")
}
case 9:
{
client_cmd(id, "menu")
}
}

menu_destroy(menu)
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThePhoenix
сообщение 26.1.2017, 12:50
Сообщение #13


Стаж: 9 лет 3 месяца

Сообщений: 2723
Благодарностей: 533
Полезность: 40

Цитата(voed @ 25.1.2017, 19:31) *
ThePhoenix, убирать не надо, добавь return PLUGIN_HANDLED

Вроде помогло :)

Цитата(temirlan @ 26.1.2017, 12:49) *

Не, спасибо.

ps.gif Тему можно закрывать!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: