1. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    Привет всем, подскажите пожалуйста, как эти меню переделать на старую систему меню? Спасибо заранее. Я заодно на будущее буду знать как это делать, а то много раз сталкивался с таким вопросом.

    Код:
    public OpenShopMenu(id)
    {
        if(!is_user_alive(id)) return ChatColor(id, "%s Вы должны быть живы, чтобы использовать меню!", CHAT_PREFIX);
       
        new szData[256], Items[64], Position[3];
        if(g_Discount[id] > 0) formatex(szData, charsmax(szData), "\r%s^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", MENU_PREFIX, fm_get_user_money(id), g_Discount[id]);
        else formatex(szData, charsmax(szData), "\r%s^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", MENU_PREFIX, fm_get_user_money(id));
       
        new Menu = menu_create(szData, "MainMenu_Handler");
       
        for(new i = 0; i < sizeof(g_szMainShopMenu); i++)
        {
            formatex(Items, charsmax(Items), "%s%s",  get_pcvar_num(g_pMenuEnableCvars[i]) ? "\w" : "\d", g_szMainShopMenu[i]);
            num_to_str(i, Position, charsmax(Position));
            menu_additem(Menu, Items, Position);
        }
        menu_setprop(Menu, MPROP_EXITNAME, "Выход");
       
        return menu_display(id, Menu);
    }
    
    public MainMenu_Handler(id, Menu, item)
    {
        if(item == MENU_EXIT) return menu_destroy(Menu);
    
        switch(item)
        {
            case 0:
            {
                new Wpn_Menu = menu_create("\rМеню оружия\R", "GunsMenu_Handler");
                static Items[64], Position[3], Buffer[192];
       
                for(new i = 0; i < Item_Counter; i++)
                {
                    ArrayGetString(Item_Name, i, Items, charsmax(Items));
                    formatex(Buffer, charsmax(Buffer), "%s \d- \y%i$", Items, GetItemCost(id, ArrayGetCell(Item_Cost, i)));
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Wpn_Menu, Buffer, Position);
                }
                menu_setprop(Wpn_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Wpn_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Wpn_Menu, MPROP_EXITNAME, "Выход");
               
                if(get_pcvar_num(g_pMenuEnableCvars[0])) menu_display(id, Wpn_Menu);
                else ChatColor(id, "%s Меню оружия выключено.", CHAT_PREFIX);
            }
           
            case 1:
            {
                new Inv_Menu = menu_create("\rМеню невидимости\R", "InvisibilityMenu_Handler");
                new Items[64], Position[3];
               
                for(new i = 0; i < sizeof(g_szInvisibilityMenu); i++)
                {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pInvisibilityMenuCvars[i]));
                    formatex(Items, charsmax(Items), "%s \d- \y%d$", g_szInvisibilityMenu[i], Discount);
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Inv_Menu, Items, Position);
                }
                menu_setprop(Inv_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Inv_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Inv_Menu, MPROP_EXITNAME, "Выход");
           
                if(get_pcvar_num(g_pMenuEnableCvars[1])) menu_display(id, Inv_Menu);
                else ChatColor(id, "%s Меню невидимости выключено.", CHAT_PREFIX);
            }
           
            case 2:
            {
                new Grav_Menu = menu_create("\rМеню гравитации\R", "GravityMenu_Handler");
                new Items[64], Position[3];
               
                for(new i = 0; i < sizeof(g_szGravityMenu); i++)
                {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pGravityMenuCvars[i]));
                    formatex(Items, charsmax(Items), "%s \d- \y%d$", g_szGravityMenu[i], Discount);
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Grav_Menu, Items, Position);
                }
                menu_setprop(Grav_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Grav_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Grav_Menu, MPROP_EXITNAME, "Выход");
               
                if(get_pcvar_num(g_pMenuEnableCvars[2])) menu_display(id, Grav_Menu);
                else ChatColor(id, "%s Меню гравитации выключено.", CHAT_PREFIX);
            }
           
            case 3:
            {
                new Hp_Menu = menu_create("\rМеню здоровья\R", "HealthMenu_Handler");
                new Items[64], Position[3];
               
                for(new i = 0; i < sizeof(g_szHealthMenu); i++)
                {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pHealthMenuCvars[i]));
                    formatex(Items, charsmax(Items), "%s \d- \y%d$", g_szHealthMenu[i], Discount);
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Hp_Menu, Items, Position);
                }
                menu_setprop(Hp_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Hp_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Hp_Menu, MPROP_EXITNAME, "Выход");
               
                if(get_pcvar_num(g_pMenuEnableCvars[3])) menu_display(id, Hp_Menu);
                else ChatColor(id, "%s Меню здоровья выключено.", CHAT_PREFIX);
            }
           
            case 4:
            {
                new Ap_Menu = menu_create("\rМеню брони\R", "ArmorMenu_Handler");
                new Items[64], Position[3];
               
                for(new i = 0; i < sizeof(g_szArmorMenu); i++)
                {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pArmorMenuCvars[i]));
                    formatex(Items, charsmax(Items), "%s \d- \y%d$", g_szArmorMenu[i], Discount);
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Ap_Menu, Items, Position);
                }
                menu_setprop(Ap_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Ap_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Ap_Menu, MPROP_EXITNAME, "Выход");
               
                if(get_pcvar_num(g_pMenuEnableCvars[4])) menu_display(id, Ap_Menu);
                else ChatColor(id, "%s Меню брони выключено.", CHAT_PREFIX);
            }
           
            case 5:
            {
                new Speed_Menu = menu_create("\rМеню скорости\R", "SpeedMenu_Handler");
                new Items[64], Position[3];
               
                for(new i = 0; i < sizeof(g_szSpeedMenu); i++)
                {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pSpeedMenuCvars[i]));
                    formatex(Items, charsmax(Items), "%s \d- \y%d$", g_szSpeedMenu[i], Discount);
                    num_to_str(i, Position, charsmax(Position));
                    menu_additem(Speed_Menu, Items, Position);
                }       
                menu_setprop(Speed_Menu, MPROP_BACKNAME, "Назад");
                menu_setprop(Speed_Menu, MPROP_NEXTNAME, "Вперед");
                menu_setprop(Speed_Menu, MPROP_EXITNAME, "Выход");
           
                if(get_pcvar_num(g_pMenuEnableCvars[5])) menu_display(id, Speed_Menu);
                else ChatColor(id, "%s Меню скорости выключено.", CHAT_PREFIX);
            }
        }
        return menu_destroy(Menu);
    }
     
  2. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.593
    Симпатии:
    4.166
    Пол:
    Мужской
    а чем новая не нравится?
     
  3. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    Может это покажется глупо, но мне нужно чтобы можно было менять цифры/цвет пунктов (нумерацию)
     
  4. windranger1337 Пользователь

    Регистрация:
    04.10.15
    Сообщения:
    303
    Симпатии:
    177
    Telegram:
    serfreeman1337
    Лол, берешь и пишешь такое же меню на старой системе. Изи же.

    Ну и цвет в новой системе можно сменить через
    Код:
    #define MPROP_NUMBER_COLOR   10   /* Color indicator to use for numbers (param1 = string, "\r"=default) */
     
    Lagnes нравится это.
  5. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    Вот я попробовал переделать, но у меня теперь в игре не открывает меню
    Код:
    public OpenShopMenu(id)
    {
        if(!is_user_alive(id)) return ChatColor(id, "%s Вы должны быть живы, чтобы использовать меню!", CHAT_PREFIX);
    
            new gszMenu[512], giKeys
    
        static iLen
        iLen = 0
    
        if(g_Discount[id] > 0) iLen = formatex(gszMenu[iLen], charsmax(gszMenu) - iLen, "\r%s^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", MENU_PREFIX, fm_get_user_money(id), g_Discount[id]);
        else iLen = formatex(gszMenu[iLen], charsmax(gszMenu) - iLen, "\r%s^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", MENU_PREFIX, fm_get_user_money(id));
       
        for(new i = 0; i < sizeof(g_szMainShopMenu) && i < MAX_MENU_ITEMS; i++)
        {
            iLen += formatex( gszMenu[iLen], charsmax(gszMenu) - iLen, "\r%d. %s%s^n", i + 1, get_pcvar_num(g_pMenuEnableCvars[i]) ? "\w" : "\d", g_szMainShopMenu[i])
            giKeys |= ( 1 << i )
        }
        formatex( gszMenu[iLen], charsmax(gszMenu) - iLen, "^n\r0. \wВыход" )
        giKeys |=  MENU_KEY_0
       
        show_menu(id, giKeys, gszMenu, -1, "MenuOpenShop");
    
        return PLUGIN_HANDLED
    }
    
    public FuncOpenShop(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        switch(key)
        {
            case 0:
            {
                            new cszMenu[512], giKeys
    
                static Items[64], iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\rМеню Оружия^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\rМеню Оружия^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < Item_Counter && i < MAX_MENU_ITEMS; i++)
                        {
                    ArrayGetString(Item_Name, i, Items, charsmax(Items));
                            iLen += formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\r%d. %s \d- \y%i$^n", i + 1, Items, GetItemCost(id, ArrayGetCell(Item_Cost, i)))
                            giKeys |= ( 1 << i )
                        }
                        formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[0])) show_menu(id, giKeys, cszMenu, -1, "MenuOpenCounter");
                else ChatColor(id, "%s Меню оружия выключено.", CHAT_PREFIX);
            }
           
            case 1:
            {
                            new iszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\rМеню Невидимости^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\rМеню Невидимости^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szInvisibilityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pInvisibilityMenuCvars[i]));
                            iLen += formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\r%d. %s \d- \y%d$^n", i + 1, g_szInvisibilityMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
           
                if(get_pcvar_num(g_pMenuEnableCvars[1])) show_menu(id, giKeys, iszMenu, -1, "MenuOpenInvis");
                else ChatColor(id, "%s Меню невидимости выключено.", CHAT_PREFIX);
            }
           
            case 2:
            {
                            new rszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\rМеню Гравитации^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\rМеню Гравитации^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szGravityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pGravityMenuCvars[i]));
                            iLen += formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\r%d. %s \d- \y%d$^n", i + 1, g_szGravityMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[2])) show_menu(id, giKeys, rszMenu, -1, "MenuOpenGravity");
                else ChatColor(id, "%s Меню гравитации выключено.", CHAT_PREFIX);
            }
           
            case 3:
            {
                            new hszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\rМеню Здоровья^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\rМеню Здоровья^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szGravityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pHealthMenuCvars[i]));
                            iLen += formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\r%d. %s \d- \y%d$^n", i + 1, g_szHealthMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[3])) show_menu(id, giKeys, hszMenu, -1, "MenuOpenHealth");
                else ChatColor(id, "%s Меню здоровья выключено.", CHAT_PREFIX);
            }
           
            case 4:
            {
                            new aszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\rМеню Брони^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\rМеню Брони^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szArmorMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pArmorMenuCvars[i]));
                            iLen += formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\r%d. %s \d- \y%d$^n", i + 1, g_szArmorMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[4])) show_menu(id, giKeys, aszMenu, -1, "MenuOpenArmor");
                else ChatColor(id, "%s Меню брони выключено.", CHAT_PREFIX);
            }
           
            case 5:
            {
                            new sszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\rМеню Брони^n\dНаличные: \r%d$ \w| \dСкидка: \r%d%%\R", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\rМеню Брони^n\dНаличные: \r%d$ \w| \dСкидка: \rОтсутствует\R", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szSpeedMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pSpeedMenuCvars[i]));
                            iLen += formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\r%d. %s \d- \y%d$^n", i + 1, g_szSpeedMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "^n\r0. \wВыход" )
                        giKeys |=  MENU_KEY_0
           
                if(get_pcvar_num(g_pMenuEnableCvars[5])) show_menu(id, giKeys, sszMenu, -1, "MenuOpenSpeed");
                else ChatColor(id, "%s Меню скорости выключено.", CHAT_PREFIX);
            }
        }
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenCounter(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        native_buy_item(id, key);
    
        return PLUGIN_HANDLED;
    }
    
    public native_buy_item(id, key)
    {
        new Money = fm_get_user_money(id);
        static Discount, DummyItem, NameItem[64];
        Discount = GetItemCost(id, ArrayGetCell(Item_Cost, key));
        ArrayGetString(Item_Name, key, NameItem, sizeof(NameItem));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %i$^1)", CHAT_PREFIX, Discount);
       
        ExecuteForward(g_Selected_Fwd, DummyItem, id, key);
        fm_set_user_money(id, Money-Discount);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%i$", CHAT_PREFIX, NameItem, Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenInvis(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pInvisibilityMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        fm_set_user_money(id, Money-Discount);
        fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, g_iInvisibilityLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3Невидимость: %s^1' за ^4%d$", CHAT_PREFIX, g_szInvisibilityMenu[key], Discount);
       
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenGravity(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pGravityMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        fm_set_user_money(id, Money-Discount);
        fm_set_user_gravity(id, g_iGravityLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szGravityMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenHealth(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Health = get_user_health(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pHealthMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        fm_set_user_money(id, Money-Discount);
        if(Health + g_iHealthLevel[key] > BUYHP_MAX) fm_set_user_health(id, BUYHP_MAX);
        else fm_set_user_health(id, Health + g_iHealthLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szHealthMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenArmor(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Armor = get_user_armor(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pArmorMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        fm_set_user_money(id, Money-Discount);
        if(Armor + g_iArmorLevel[key] > BUYAP_MAX) fm_set_user_armor(id, BUYAP_MAX);
        else fm_set_user_armor(id, Armor + g_iArmorLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szArmorMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public MenuOpenSpeed(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pSpeedMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        fm_set_user_money(id, Money-Discount);
        g_lvlSpeed[id] = g_iSpeedLevel[key];
        g_SpeedUse[id] = true; fwdHamPreFrame(id);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szSpeedMenu[key], Discount);
       
        return PLUGIN_HANDLED;
    }                               
     
  6. windranger1337 Пользователь

    Регистрация:
    04.10.15
    Сообщения:
    303
    Симпатии:
    177
    Telegram:
    serfreeman1337
    В register_menu тоже все цифры используются? Пробовал делать отладку, выводить значения giKeys и gszMenu.
     
    Lagnes нравится это.
  7. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    Все, спасибо, решил проблему, просто названия пабликам кейсов не те дал хД
     
  8. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    Ребят, подскажите пожалуйста, как можно сделать кнопку назад? Я попробовал, кнопка то есть, а при нажатии в начальное меню не перекидывает

    Код:
    public OpenShopMenu(id)
    {
        if(!is_user_alive(id)) return ChatColor(id, "%s Вы должны быть живы, чтобы использовать меню!", CHAT_PREFIX);
    
            new gszMenu[512], giKeys
    
        static iLen
        iLen = 0
    
        if(g_Discount[id] > 0) iLen = formatex(gszMenu[iLen], charsmax(gszMenu) - iLen, "\y%s^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", MENU_PREFIX, fm_get_user_money(id), g_Discount[id]);
        else iLen = formatex(gszMenu[iLen], charsmax(gszMenu) - iLen, "\y%s^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", MENU_PREFIX, fm_get_user_money(id));
       
        for(new i = 0; i < sizeof(g_szMainShopMenu) && i < MAX_MENU_ITEMS; i++)
        {
            iLen += formatex( gszMenu[iLen], charsmax(gszMenu) - iLen, "\y[\r%d\y] %s%s^n", i + 1, get_pcvar_num(g_pMenuEnableCvars[i]) ? "\w" : "\d", g_szMainShopMenu[i])
            giKeys |= ( 1 << i )
        }
        formatex( gszMenu[iLen], charsmax(gszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
        giKeys |=  MENU_KEY_0
       
        show_menu(id, giKeys, gszMenu, -1, "MenuOpenShop");
    
        return PLUGIN_HANDLED
    }
    
    public FuncOpenShop(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        switch(key)
        {
            case 0:
            {
                            new cszMenu[512], giKeys
    
                static Items[64], iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\yМеню Оружия^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\yМеню Оружия^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < Item_Counter && i < MAX_MENU_ITEMS; i++)
                        {
                    ArrayGetString(Item_Name, i, Items, charsmax(Items));
                            iLen += formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%i$^n", i + 1, Items, GetItemCost(id, ArrayGetCell(Item_Cost, i)))
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(cszMenu[iLen], charsmax(cszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[0])) show_menu(id, giKeys, cszMenu, -1, "MenuOpenCounter");
                else ChatColor(id, "%s Меню оружия выключено.", CHAT_PREFIX);
            }
    
            case 1:
            {
                            new tszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(tszMenu[iLen], charsmax(tszMenu) - iLen, "\yМеню Предметов^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(tszMenu[iLen], charsmax(tszMenu) - iLen, "\yМеню Предметов^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szItemsMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pItemsMenuCvars[i]));
                            iLen += formatex(tszMenu[iLen], charsmax(tszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szItemsMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(tszMenu[iLen], charsmax(tszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(tszMenu[iLen], charsmax(tszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
           
                if(get_pcvar_num(g_pMenuEnableCvars[1])) show_menu(id, giKeys, tszMenu, -1, "MenuOpenItems");
                else ChatColor(id, "%s Меню предметов выключено.", CHAT_PREFIX);
            }
    
            case 2:
            {
                            new iszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\yМеню Невидимости^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\yМеню Невидимости^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szInvisibilityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pInvisibilityMenuCvars[i]));
                            iLen += formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szInvisibilityMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(iszMenu[iLen], charsmax(iszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
           
                if(get_pcvar_num(g_pMenuEnableCvars[2])) show_menu(id, giKeys, iszMenu, -1, "MenuOpenInvis");
                else ChatColor(id, "%s Меню невидимости выключено.", CHAT_PREFIX);
            }
           
            case 3:
            {
                            new rszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\yМеню Гравитации^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\yМеню Гравитации^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szGravityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pGravityMenuCvars[i]));
                            iLen += formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szGravityMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(rszMenu[iLen], charsmax(rszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[3])) show_menu(id, giKeys, rszMenu, -1, "MenuOpenGravity");
                else ChatColor(id, "%s Меню гравитации выключено.", CHAT_PREFIX);
            }
           
            case 4:
            {
                            new hszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\yМеню Здоровья^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\yМеню Здоровья^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szGravityMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pHealthMenuCvars[i]));
                            iLen += formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szHealthMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(hszMenu[iLen], charsmax(hszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[4])) show_menu(id, giKeys, hszMenu, -1, "MenuOpenHealth");
                else ChatColor(id, "%s Меню здоровья выключено.", CHAT_PREFIX);
            }
           
            case 5:
            {
                            new aszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\yМеню Брони^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\yМеню Брони^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szArmorMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pArmorMenuCvars[i]));
                            iLen += formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "\y\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szArmorMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(aszMenu[iLen], charsmax(aszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
               
                if(get_pcvar_num(g_pMenuEnableCvars[5])) show_menu(id, giKeys, aszMenu, -1, "MenuOpenArmor");
                else ChatColor(id, "%s Меню брони выключено.", CHAT_PREFIX);
            }
           
            case 6:
            {
                            new sszMenu[512], giKeys
    
                static iLen;
                        iLen = 0
    
                        if(g_Discount[id] > 0) iLen = formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\yМеню Брони^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \r%d%%^n^n", fm_get_user_money(id), g_Discount[id]);
                        else iLen = formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\yМеню Брони^n\dНаличные\y: \r%d$ \w| \dСкидка\y: \rОтсутствует^n^n", fm_get_user_money(id));
       
                        for(new i = 0; i < sizeof(g_szSpeedMenu) && i < MAX_MENU_ITEMS; i++)
                        {
                    new Discount = GetItemCost(id, get_pcvar_num(g_pSpeedMenuCvars[i]));
                            iLen += formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "\y[\r%d\y] \w%s \d- \y%d$^n", i + 1, g_szSpeedMenu[i], Discount)
                            giKeys |= ( 1 << i )
                        }
                        iLen += formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "^n\y[\r9\y] \wНазад" )
                        giKeys |=  MENU_KEY_9
                        formatex(sszMenu[iLen], charsmax(sszMenu) - iLen, "^n\y[\r0\y] \wВыход" )
                        giKeys |=  MENU_KEY_0
           
                if(get_pcvar_num(g_pMenuEnableCvars[6])) show_menu(id, giKeys, sszMenu, -1, "MenuOpenSpeed");
                else ChatColor(id, "%s Меню скорости выключено.", CHAT_PREFIX);
            }
        }
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenCounter(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        native_buy_item(id, key);
    
        switch(key)
        {
            case 9:
            {
                       OpenShopMenu(id)
            }
        }
    
        return PLUGIN_HANDLED;
    }
    
    public native_buy_item(id, key)
    {
        new Money = fm_get_user_money(id);
        static Discount, DummyItem, NameItem[64];
        Discount = GetItemCost(id, ArrayGetCell(Item_Cost, key));
        ArrayGetString(Item_Name, key, NameItem, sizeof(NameItem));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %i$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
       
        ExecuteForward(g_Selected_Fwd, DummyItem, id, key);
        fm_set_user_money(id, Money-Discount);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%i$", CHAT_PREFIX, NameItem, Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenInvis(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pInvisibilityMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, g_iInvisibilityLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3Невидимость: %s^1' за ^4%d$", CHAT_PREFIX, g_szInvisibilityMenu[key], Discount);
       
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenItems(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pItemsMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 0:
            {
                       CheckClip[id] = true;
            }
    
            case 1:
            {
                       fm_give_item(id, "weapon_hegrenade");
            }
    
            case 2:
            {
                       b_Damage[id] = true;
            }
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szItemsMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenGravity(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pGravityMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        fm_set_user_gravity(id, g_iGravityLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szGravityMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenHealth(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Health = get_user_health(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pHealthMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        if(Health + g_iHealthLevel[key] > BUYHP_MAX) fm_set_user_health(id, BUYHP_MAX);
        else fm_set_user_health(id, Health + g_iHealthLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szHealthMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenArmor(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Armor = get_user_armor(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pArmorMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        if(Armor + g_iArmorLevel[key] > BUYAP_MAX) fm_set_user_armor(id, BUYAP_MAX);
        else fm_set_user_armor(id, Armor + g_iArmorLevel[key]);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szArmorMenu[key], Discount);
    
        return PLUGIN_HANDLED;
    }
    
    public FuncOpenSpeed(id, key)
    {
        if( key == MENU_BUTTON_EXIT )
            return PLUGIN_HANDLED
    
        new Money = fm_get_user_money(id);
        new Discount = GetItemCost(id, get_pcvar_num(g_pSpeedMenuCvars[key]));
       
        if(!Discount) return ChatColor(id, "%s Этот пункт заблокирован!", CHAT_PREFIX);
        if(Money < Discount) return ChatColor(id, "%s Недостаточно денег для покупки! (^4нужно %d$^1)", CHAT_PREFIX, Discount);
    
        switch(key)
        {
            case 8:
            {
                       OpenShopMenu(id)
            }
        }
    
        fm_set_user_money(id, Money-Discount);
        g_lvlSpeed[id] = g_iSpeedLevel[key];
        g_SpeedUse[id] = true; fwdHamPreFrame(id);
        ChatColor(id, "%s Вы приобрели '^3%s^1' за ^4%d$", CHAT_PREFIX, g_szSpeedMenu[key], Discount);
       
        return PLUGIN_HANDLED;
    }                           
     
  9. windranger1337 Пользователь

    Регистрация:
    04.10.15
    Сообщения:
    303
    Симпатии:
    177
    Telegram:
    serfreeman1337
    Потому что функционал пагинации нужно писать вручную.
    Для примера можешь посмотреть менюшки amxx menufront, plmenu и mapsmenu.

    "зато теперь я могу взять цифры в квадратные скобки" :D
     
    Lagnes нравится это.
  10. Lagnes Пользователь

    Регистрация:
    11.02.16
    Сообщения:
    41
    Симпатии:
    4
    Skype:
    fifa.tm
    именно:)