Raised This Month: $ Target: $400
 0% 

[Help] Custom Buy Menu separate to categories


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
YankoNL
Junior Member
Join Date: Dec 2018
Old 06-07-2021 , 03:20   Re: [Help] Custom Buy Menu separate to categories
Reply With Quote #4

Quote:
Originally Posted by Supremache View Post
I tried to optimizing original codes:
Spoiler


Example:
PHP Code:
new g_iItem[3]

public 
plugin_init()
{     
    
g_iItem[0] = zp_register_extra_iteem("Pistols Shop"00000000)
    
g_iItem[1] = zp_register_extra_iteem("Shotguns Shop"00000000)
    
g_iItem[2] = zp_register_extra_iteem("Snipers Shop"00000000)
}

public 
zp_extra_item_selecteedid Item )
{
    if( 
Item == g_iItem[0] )
        
PistolsMenu(id)
        
    if( 
Item == g_iItem[1] )
        
ShotgunsMenu(id)
        
    if( 
Item == g_iItem[2] )
        
SnipersMenu(id)
}

public 
PistolsMenu(id)
{
    
// Great the menu
}

public 
ShotgunsMenu(id)
{
    
// Great the menu
}

public 
SnipersMenu(id)
{
    
// Great the menu

Thank you so much you legend! Thank you for the optimization. I just want to ask about the menu, how should I put the items in them?
Like this?
PHP Code:
public PistolsMenu(id)
{
    new 
PMenu
    PMenu 
menu_create("Choose your pistol" "WeaponMenuHand")
    new 
Buffer[64] , Name[32]
    new 
Itemteam
    
    menu_setprop
(PMenuMPROP_NUMBER_COLOR"\r");
    
    for(
Item 0Item ArraySize(ItemName); Item ++)
    {
        
team ArrayGetCell(ItemTeamItem)
        
        if ((
zp_get_user_zombie(Player) && !zp_get_user_nemesis(Player) && !zpnm_get_user_assassin(Player) && !(team ZP_TEAM_ZOMBIE)) || (!zp_get_user_zombie(Player) && !zp_get_user_survivor(Player) && !zpnm_get_user_sniper(Player) && !(team ZP_TEAM_HUMAN)) || (zp_get_user_nemesis(Player) || (zpnm_get_user_assassin(Player) && !(team ZP_TEAM_NEMESIS)) && !(team ZP_TEAM_ASSASSIN)) || (zp_get_user_survivor(Player) && !(team ZP_TEAM_SURVIVOR)))
            continue
        
        
ArrayGetString(ItemNameItemNamecharsmax(Name))
        
        if(
zp_get_user_ammo_packs(Player) < ArrayGetCell(ItemCostItem))
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\dUnavailable\w]"NameArrayGetCell(ItemCostItem))
        }
        else if(
ArrayGetCell(ItemMinPlayersItem) && get_playersnum() < ArrayGetCell(ItemMinPlayersItem))
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rMin Players: \y%d\w]"NameArrayGetCell(ItemCostItem) , ArrayGetCell(ItemMinPlayersItem))
        }
        else if(
ArrayGetCell(ItemVipItem) && ArrayGetCell(ItemVipItem) && !(get_user_flags(Player) & VIP))
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rV.I.P Only\w]"NameArrayGetCell(ItemCostItem))
        }
        else if(
ArrayGetCell(ItemLimitInMapPItem) && ArrayGetCell(ItemLimitInMapPItem) == g_LimitInMap[Player][Item])
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rMap Limit: \y%d\w]"NameArrayGetCell(ItemCostItem) , ArrayGetCell(ItemLimitInMapPItem))
        }
        else if(
ArrayGetCell(ItemLimitInRoundItem) && ArrayGetCell(ItemLimitInRoundItem) == g_LimitInRound[Player][Item])
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rRound Limit: \y%d\w]"NameArrayGetCell(ItemCostItem) , ArrayGetCell(ItemLimitInRound  Item))
        }
        else if(
ArrayGetCell(LimitForAllMapItem) && ArrayGetCell(LimitForAllMapItem) == g_LimitAllMap)
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rOut of Stock\w]"NameArrayGetCell(ItemCostItem))
        }
        else if(
ArrayGetCell(LimitForAllRoundItem) && ArrayGetCell(LimitForAllRoundItem) == g_LimitAllRound)
        {
            
formatex(Buffercharsmax(Buffer), "\d%s %d$ \w[\rOut of Stock\w]"NameArrayGetCell(ItemCostItem))
        }
        else
        {
            
formatex(Buffercharsmax(Buffer), "\w%s \y[%d$]"NameArrayGetCell(ItemCostItem))
        }
        
menu_additem(PMenu Buffer)
        
        
menu_setprop(PMenuMPROP_NEXTNAME"Next")
        
menu_setprop(PMenuMPROP_BACKNAME"Back")
        
menu_setprop(PMenuMPROP_EXITNAME"Exit")
    }
    if (
pev_valid(Player) == 2set_pdata_int(Player20505)
    
menu_display(PlayerPMenu0)
    return 
PLUGIN_HANDLED
}

public 
PMenuHand(PlayerMenuItem)
{
    if(!
is_user_connected(Player) || !is_user_alive(Player))
    return 
PLUGIN_HANDLED
    
    
if(zp_get_user_zombie(Player))
    return 
PLUGIN_HANDLED
    
    
if(Item == MENU_EXIT
    {
        
menu_destroy(PMenu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
Cost ArrayGetCell(ItemCostItem)
    
    if(
zp_get_user_ammo_packs(Player) < Cost)
    {
        
client_print(Playerprint_center"Not enough money")
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(ItemMinPlayersItem) && get_playersnum() < ArrayGetCell(ItemMinPlayersItem))
    {
        
client_print(Playerprint_center"Need more players")
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(ItemVipItem) && ArrayGetCell(ItemVipItem) && !(get_user_flags(Player) & VIP))
    {
        
client_print(Playerprint_center"You need to be V.I.P")
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(ItemLimitInMapPItem) && ArrayGetCell(ItemLimitInMapPItem) == g_LimitInMap[Player][Item])
    {
        
client_print(Playerprint_center"Weapon map limit reached: [%d]" ArrayGetCell(ItemLimitInMapPItem))
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(ItemLimitInRoundItem) && ArrayGetCell(ItemLimitInRoundItem) == g_LimitInRound[Player][Item])
    {
        
client_print(Playerprint_center"Weapon round limit reached: [%d]" ArrayGetCell(ItemLimitInRoundItem))
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(LimitForAllMapItem) && ArrayGetCell(LimitForAllMapItem) == g_LimitAllMap)
    {
        
client_print(Playerprint_center"This weapon will be available next map.")
        return 
PLUGIN_HANDLED
    
}
    if(
ArrayGetCell(LimitForAllRoundItem) && ArrayGetCell(LimitForAllRoundItem) == g_LimitAllRound)
    {
        
client_print(Playerprint_center"This item will be available next round.")
        return 
PLUGIN_HANDLED
    
}
    
    if(
ArrayGetCell(ItemLimitInMapPItem) && ArrayGetCell(ItemLimitInMapPItem) > g_LimitInMap[Item][Player])
        
g_LimitInMap[Player][Item] ++
    if(
ArrayGetCell(ItemLimitInRoundItem) && ArrayGetCell(ItemLimitInRoundItem) > g_LimitInRound[Item][Player])
        
g_LimitInRound[Player][Item] ++
    if(
ArrayGetCell(LimitForAllMapItem) && ArrayGetCell(LimitForAllMapItem) > g_LimitAllMap)
        
g_LimitAllMap ++
    if(
ArrayGetCell(LimitForAllRoundItem) && ArrayGetCell(LimitForAllRoundItem) > g_LimitAllRound)
        
g_LimitAllRound ++
    
ExecuteForward(g_Itemg_EndPlayerItem)
    
zp_set_user_ammo_packs(Playerzp_get_user_ammo_packs(Player) - Cost)
    return 
PLUGIN_HANDLED

And if I do it like this all items will get displayed in pistol menu

Last edited by YankoNL; 06-07-2021 at 03:22.
YankoNL is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 00:20.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode