include new menu

Сообщения
10
Реакции
0
Добрый день форумчане, могли бы вы мне помочь в проблеме.
при создании меню с использванием инклюда newmenu есть проблема.
Код:
new menu = menu_create()

formatex(szMenu, charsmax(szMenu), "1"); // Пункт меню
menu_additem(iMenu, szMenu, "", -1);
formatex(szMenu, charsmax(szMenu), "1");  // Пункт меню
menu_additem(iMenu, szMenu, "", -1);
formatex(szMenu, charsmax(szMenu), "Назад"); // кнопка назад
menu_additem(iMenu, szMenu, "", -1);
Как сделать что б два пункта меню были под цифрой 1 и 2 а следующий пункт "назад" был под 9?
Возможно выразил свою мысль как то не корректно, буду вопросы задавайте..
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Проблема в:
при создании меню с использванием инклюда newmenu
3 Авг 2018
О, лайки.

Решение:
Использовать старую систему меню.
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
fl0wer, а предложить вариант решения для новой уже сложнее?
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Mistrick, предложи, разрешаю, необязательно у меня спрашивать чтобы написать ТС'у ))
 
Последнее редактирование:
Сообщения
10
Реакции
0
Sonyx, А где можно найти какие именно есть свойства?
 
Последнее редактирование модератором:
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Glubus, в инклуде. (шадов не ставь дизлайк помогаю как могу(( )
 
Сообщения
10
Реакции
0
Sonyx,или другие подскажите пожалуйста, и сам код правилен( не обращайте внимание на то что написанно в кейсаx это как пример написал)
Код:
public menu(id)
{
    new szMenu[1024], iMenu;
    formatex(szMenu, charsmax(szMenu), "\y%L", id, "Menu");
    iMenu = menu_create(szMenu, "Handle_MainMenu", 1);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "1 пункт" );
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "2 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "3 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "4 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    menu_setprop(iMenu, MPROP_PERPAGE, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Назад" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Выxод" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    return menu_display(id, iMenu, 0);
}

public Handle_MainMenu(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 iKey = str_to_num(s_Data);
    switch(iKey)
    {
        case 0: client_print(id, say /1);    
        case 1: client_print(id, say /1);
        case 2: client_print(id, say /1);
        case 3: client_print(id, say /1);
        // Как добавить case в другое меню что б работало с кнопкой назад?
    }
    menu_destroy(menu);
    menu(id);
    return PLUGIN_HANDLED;
}
3 Авг 2018
Glubus, в инклуде. (шадов не ставь дизлайк помогаю как могу(( )
Извеняйте тупанул)
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Сообщения
10
Реакции
0
shadow, Уже нашел, спасибо.
3 Авг 2018
fl0wer,
Код:
public menu(id)
{
    new szMenu[1024], iMenu;
    formatex(szMenu, charsmax(szMenu), "\y%L", id, "Menu");
    iMenu = menu_create(szMenu, "Handle_MainMenu", 1);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "1 пункт" );
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "2 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "3 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "4 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    menu_setprop(iMenu, MPROP_PERPAGE, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Назад" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Выxод" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    return menu_display(id, iMenu, 0);
}

public Handle_MainMenu(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 iKey = str_to_num(s_Data);
    switch(iKey)
    {
        case 0: client_print(id, say /1);   
        case 1: client_print(id, say /1);
        case 2: client_print(id, say /1);
        case 3: client_print(id, say /1);
        case 8: return menu2 // Будет ли так правильно и работать?
    }
    menu_destroy(menu);
    menu(id);
    return PLUGIN_HANDLED;
}
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Откуда мне знать? Единственное, что могу посоветовать как и говорил ранее, использовать старую систему меню и в качестве примера взять реклама (особенно первые комменты) и не использовать такой большой бесполезный модуль.
 
Последнее редактирование:
Сообщения
10
Реакции
0
shadow, Уже нашел, спасибо.
3 Авг 2018
fl0wer,
Код:
public menu(id)
{
    new szMenu[1024], iMenu;
    formatex(szMenu, charsmax(szMenu), "\y%L", id, "Menu");
    iMenu = menu_create(szMenu, "Handle_MainMenu", 1);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "1 пункт" );
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "2 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "3 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "4 пункт");
    menu_additem(iMenu, szMenu, "", 0);
    menu_setprop(iMenu, MPROP_PERPAGE, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Назад" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    formatex(szMenu, charsmax(szMenu), "\w%L", id, "Выxод" );
    menu_setprop(iMenu, MPROP_BACKNAME, szMenu, 0);
    return menu_display(id, iMenu, 0);
}

public Handle_MainMenu(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 iKey = str_to_num(s_Data);
    switch(iKey)
    {
        case 0: client_print(id, say /1);  
        case 1: client_print(id, say /1);
        case 2: client_print(id, say /1);
        case 3: client_print(id, say /1);
        case 8: return menu2 // Будет ли так правильно и работать?
    }
    menu_destroy(menu);
    menu(id);
    return PLUGIN_HANDLED;
}
Mistrick , может ты поможешь с этим?
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
вот за что можно (нет) любить АМХХ

большой бесполезный модуль
новое меню не модуль, а в основной библиотеке АМХХ прибито гвоздями

использовать старую систему меню
согласен. В даном случае она лучше подойдет

// Будет ли так правильно и работать?
нет ибо в menu_additem 3-им аргументом идет указание значение с помощью которого потом можна узнать какой пунк был выбран

Код:
menu_additem(menu, "1", "1");
menu_additem(menu, "2", "2");
menu_addblank2(menu);
menu_addblank2(menu);
menu_addblank2(menu);
menu_addblank2(menu);
menu_addblank2(menu);
menu_addblank2(menu);
menu_setprop(menu, MPROP_BACKNAME, "Назад");
Работать будет только на АМХХ 1.8.3. На 1.8.2 есть баганый menu_addblank который не работает как надо
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Glubus, вопрос в том, чего вы хотите. Изменить дефолтную навигацию нельзя, если у вас несколько страниц, то у вас максимум 7 пунктов и 3 на навигацию.
Если у вас одна страница, то примерный выход написал fantom.
Или хотя бы больше 7 пунктов пусть покажет на странице через новое меню.
https://github.com/alliedmodders/am...59a69aca0fdcc9d866/amxmodx/newmenus.cpp#L1003
При нуле не будет встроенной навигации. Дальше можно фантазировать как и со старой.
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
fl0wer, у обоих вариантов меню свои костыли. Каждому выбирать своё. Я лишь указал возможность реализации в новой. Копи-пастить код фантома не вижу смысла, разница будет в паре строк.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу