Sub menu para vip
#1
Hola todos, bueno lo que quiero hacer es un menu de extra items gratis para el vip y que salga la opcion en el menu normal de zp, lo que quiero saber es como puedo hacer ese sub menu si ya esta en un menu? me podrian dar un ejemplo porfavor?.. gracias antemano

menu normal de zp:

Código PHP:
/*================================================================================
    
    ----------------------
    -*- [ZP] Main Menu -*-
    ----------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
================================================================================*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define LIBRARY_BUYMENUS "zp50_buy_menus"
#include <zp50_buy_menus>
#define LIBRARY_ZOMBIECLASSES "zp50_class_zombie"
#include <zp50_class_zombie>
#define LIBRARY_HUMANCLASSES "zp50_class_human"
#include <zp50_class_human>
#define LIBRARY_ITEMS "zp50_items"
#include <zp50_items>
#define LIBRARY_ADMIN_MENU "zp50_admin_menu"
#include <zp50_admin_menu>
#define LIBRARY_RANDOMSPAWN "zp50_random_spawn"
#include <zp50_random_spawn>
#include <zp50_colorchat>

#define TASK_WELCOMEMSG 100

// CS Player PData Offsets (win32)
const OFFSET_CSMENUCODE 205

// Menu keys
const KEYSMENU MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
#define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))

new g_ChooseTeamOverrideActive

new cvar_buy_custom_primarycvar_buy_custom_secondarycvar_buy_custom_grenades
new cvar_random_spawning

public plugin_init()
{
    
register_plugin("[ZP] Main Menu"ZP_VERSION_STRING"ZP Dev Team")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
register_clcmd("chooseteam""clcmd_chooseteam")
    
    
register_clcmd("say /zpmenu""clcmd_zpmenu")
    
register_clcmd("say zpmenu""clcmd_zpmenu")
    
    
// Menus
    
register_menu("Main Menu"KEYSMENU"menu_main")
}

public 
plugin_natives()
{
    
set_module_filter("module_filter")
    
set_native_filter("native_filter")
}
public 
module_filter(const module[])
{
    if (
equal(moduleLIBRARY_BUYMENUS) || equal(moduleLIBRARY_ZOMBIECLASSES) || equal(moduleLIBRARY_HUMANCLASSES) || equal(moduleLIBRARY_ITEMS) || equal(moduleLIBRARY_ADMIN_MENU) || equal(moduleLIBRARY_RANDOMSPAWN))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}
public 
native_filter(const name[], indextrap)
{
    if (!
trap)
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}

public 
plugin_cfg()
{
    
cvar_buy_custom_primary get_cvar_pointer("zp_buy_custom_primary")
    
cvar_buy_custom_secondary get_cvar_pointer("zp_buy_custom_secondary")
    
cvar_buy_custom_grenades get_cvar_pointer("zp_buy_custom_grenades")
    
cvar_random_spawning get_cvar_pointer("zp_random_spawning_csdm")
}

// Event Round Start
public event_round_start()
{
    
// Show main menu message
    
remove_task(TASK_WELCOMEMSG)
    
set_task(2.0"task_welcome_msg"TASK_WELCOMEMSG)
}

// Welcome Message Task
public task_welcome_msg()
{
    
zp_colored_print(0"==== ^x04Zombie Plague %s^x01 ===="ZP_VERSION_STR_LONG)
    
zp_colored_print(0"%L"LANG_PLAYER"NOTICE_INFO1")
}

public 
clcmd_chooseteam(id)
{
    if (
flag_get(g_ChooseTeamOverrideActiveid))
    {
        
show_menu_main(id)
        return 
PLUGIN_HANDLED;
    }
    
    
flag_set(g_ChooseTeamOverrideActiveid)
    return 
PLUGIN_CONTINUE;
}

public 
clcmd_zpmenu(id)
{
    
show_menu_main(id)
}

public 
client_putinserver(id)
{
    
flag_set(g_ChooseTeamOverrideActiveid)
}

// Main Menu
show_menu_main(id)
{
    static 
menu[250]
    new 
len
    
    
// Title
    
len += formatex(menu[len], charsmax(menu) - len"\yZombie Plague %s^n^n"ZP_VERSION_STR_LONG)
    
    
// 1. Buy menu
    
if (LibraryExists(LIBRARY_BUYMENUSLibType_Library) && (get_pcvar_num(cvar_buy_custom_primary)
    || 
get_pcvar_num(cvar_buy_custom_secondary) || get_pcvar_num(cvar_buy_custom_grenades)) && is_user_alive(id))
        
len += formatex(menu[len], charsmax(menu) - len"\r1.\w %L^n"id"MENU_BUY")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d1. %L^n"id"MENU_BUY")
    
    
// 2. Extra Items
    
if (LibraryExists(LIBRARY_ITEMSLibType_Library) && is_user_alive(id))
        
len += formatex(menu[len], charsmax(menu) - len"\r2.\w %L^n"id"MENU_EXTRABUY")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d2. %L^n"id"MENU_EXTRABUY")
    
    
// 3. Zombie class
    
if (LibraryExists(LIBRARY_ZOMBIECLASSESLibType_Library) && zp_class_zombie_get_count() > 1)
        
len += formatex(menu[len], charsmax(menu) - len"\r3.\w %L^n"id"MENU_ZCLASS")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d3. %L^n"id"MENU_ZCLASS")
    
    
// 4. Human class
    
if (LibraryExists(LIBRARY_HUMANCLASSESLibType_Library) && zp_class_human_get_count() > 1)
        
len += formatex(menu[len], charsmax(menu) - len"\r4.\w %L^n"id"MENU_HCLASS")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d4. %L^n"id"MENU_HCLASS")
    
    
// 5. Unstuck
    
if (LibraryExists(LIBRARY_RANDOMSPAWNLibType_Library) && is_user_alive(id))
        
len += formatex(menu[len], charsmax(menu) - len"\r5.\w %L^n"id"MENU_UNSTUCK")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d5. %L^n"id"MENU_UNSTUCK")
    
    
// 6. Help
    
len += formatex(menu[len], charsmax(menu) - len"\r6.\w %L^n^n"id"MENU_INFO")
    
    
// 7. Choose Team
    
len += formatex(menu[len], charsmax(menu) - len"\r7.\w %L^n^n"id"MENU_CHOOSE_TEAM")
    
    
// 9. Admin menu
    
if (LibraryExists(LIBRARY_ADMIN_MENULibType_Library) && is_user_admin(id))
        
len += formatex(menu[len], charsmax(menu) - len"\r9.\w %L"id"MENU_ADMIN")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d9. %L"id"MENU_ADMIN")
    
    
// 0. Exit
    
len += formatex(menu[len], charsmax(menu) - len"^n^n\r0.\w %L"id"MENU_EXIT")
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
show_menu(idKEYSMENUmenu, -1"Main Menu")
}

// Main Menu
public menu_main(idkey)
{
    
// Player disconnected?
    
if (!is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    switch (
key)
    {
        case 
0// Buy Menu
        
{
            
// Custom buy menus enabled?
            
if (LibraryExists(LIBRARY_BUYMENUSLibType_Library) && (get_pcvar_num(cvar_buy_custom_primary)
            || 
get_pcvar_num(cvar_buy_custom_secondary) || get_pcvar_num(cvar_buy_custom_grenades)))
            {
                
// Check whether the player is able to buy anything
                
if (is_user_alive(id))
                    
zp_buy_menus_show(id)
                else
                    
zp_colored_print(id"%L"id"CANT_BUY_WEAPONS_DEAD")
            }
            else
                
zp_colored_print(id"%L"id"CUSTOM_BUY_DISABLED")
        }
        case 
1// Extra Items
        
{
            
// Items enabled?
            
if (LibraryExists(LIBRARY_ITEMSLibType_Library))
            {
                
// Check whether the player is able to buy anything
                
if (is_user_alive(id))
                    
zp_items_show_menu(id)
                else
                    
zp_colored_print(id"%L"id"CANT_BUY_ITEMS_DEAD")
            }
            else
                
zp_colored_print(id"%L"id"CMD_NOT_EXTRAS")
        }
        case 
2// Zombie Classes
        
{
            if (
LibraryExists(LIBRARY_ZOMBIECLASSESLibType_Library) && zp_class_zombie_get_count() > 1)
                
zp_class_zombie_show_menu(id)
            else
                
zp_colored_print(id"%L"id"CMD_NOT_ZCLASSES")
        }
        case 
3// Human Classes
        
{
            if (
LibraryExists(LIBRARY_HUMANCLASSESLibType_Library) && zp_class_human_get_count() > 1)
                
zp_class_human_show_menu(id)
            else
                
zp_colored_print(id"%L"id"CMD_NOT_HCLASSES")
        }
        case 
4:
        {
            
// Check if player is stuck
            
if (LibraryExists(LIBRARY_RANDOMSPAWNLibType_Library) && is_user_alive(id))
            {
                if (
is_player_stuck(id))
                {
                    
// Move to an initial spawn
                    
if (get_pcvar_num(cvar_random_spawning))
                        
zp_random_spawn_do(idtrue// random spawn (including CSDM)
                    
else
                        
zp_random_spawn_do(idfalse// regular spawn
                
}
                else
                    
zp_colored_print(id"%L"id"CMD_NOT_STUCK")
            }
            else
                
zp_colored_print(id"%L"id"CMD_NOT")
        }
        case 
5// Help Menu
        
{
            
show_help(id)
        }
        case 
6// Menu override
        
{
            
flag_unset(g_ChooseTeamOverrideActiveid)
            
client_cmd(id"chooseteam")
        }
        case 
8// Admin Menu
        
{
            if (
LibraryExists(LIBRARY_ADMIN_MENULibType_Library) && is_user_admin(id))
                
zp_admin_menu_show(id)
            else
                
zp_colored_print(id"%L"id"NO_ADMIN_MENU")
        }
    }
    
    return 
PLUGIN_HANDLED;
}

// Help MOTD
show_help(id)
{
    static 
motd[1024]
    new 
len
    
    len 
+= formatex(motd[len], charsmax(motd) - len"%L"id"MOTD_INFO11""Zombie Plague Mod"ZP_VERSION_STR_LONG"ZP Dev Team")
    
len += formatex(motd[len], charsmax(motd) - len"%L"id"MOTD_INFO12")
    
    
show_motd(idmotd)
}

// Check if a player is stuck (credits to VEN)
stock is_player_stuck(id)
{
    static 
Float:originF[3]
    
pev(idpev_originoriginF)
    
    
engfunc(EngFunc_TraceHulloriginForiginF0, (pev(idpev_flags) & FL_DUCKING) ? HULL_HEAD HULL_HUMANid0)
    
    if (
get_tr2(0TR_StartSolid) || get_tr2(0TR_AllSolid) || !get_tr2(0TR_InOpen))
        return 
true;
    
    return 
false;

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)