AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   problem with callback, blocks all options (https://forums.alliedmods.net/showthread.php?t=155495)

EclipseCP 04-22-2011 20:07

problem with callback, blocks all options
 
hello, sorry for my english, use translator. :cry:

I have a problem with callback.

I wanted to do that if one condition X, a menu option to display my gray (to number), but block all ...

this is the menu

PHP Code:

show_menu_player_list(id)
{
    new 
menuidmenu[128], playeruserflagsbuffer[2]
    
userflags get_user_flags(id)
    
    
// Title
    
switch (PL_ACTION)
    {
        case 
ACTION_ZOMBIEFY_HUMANIZEformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN1")
        case 
ACTION_MAKE_NEMESISformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN2")
        case 
ACTION_MAKE_SURVIVORformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN3")
        case 
ACTION_RESPAWN_PLAYERformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN4")
    }
    
menuid menu_create(menu"menu_player_list")
    
    
// Player List
    
for (player 0player <= g_maxplayersplayer++)
    {
        
// Skip if not connected
        
if (!g_isconnected[player])
            continue;
        
        
// Format text depending on the action to take
        
switch (PL_ACTION)
        {
            case 
ACTION_ZOMBIEFY_HUMANIZE// Zombiefy/Humanize command
            
{
                if (
g_zombie[player])
                {
                    if (
allowed_human(player) && (userflags g_access_flag[ACCESS_MAKE_HUMAN]))
                        
formatex(menucharsmax(menu), "%s \r[%L]"g_playername[player], idg_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"g_playername[player], idg_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                }
                else
                {
                    if (
allowed_zombie(player) && (g_newround ? (userflags g_access_flag[ACCESS_MODE_INFECTION]) : (userflags g_access_flag[ACCESS_MAKE_ZOMBIE])))
                        
formatex(menucharsmax(menu), "%s \y[%L]"g_playername[player], idg_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"g_playername[player], idg_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
            }
            case 
ACTION_MAKE_NEMESIS// Nemesis command
            
{
                if (
allowed_nemesis(player) && (g_newround ? (userflags g_access_flag[ACCESS_MODE_NEMESIS]) : (userflags g_access_flag[ACCESS_MAKE_NEMESIS])))
                {
                    if (
g_zombie[player])
                        
formatex(menucharsmax(menu), "%s \r[%L]"g_playername[player], idg_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"g_playername[player], idg_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"g_playername[player], idg_zombie[player] ? g_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE" g_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_MAKE_SURVIVOR// Survivor command
            
{
                if (
allowed_survivor(player) && (g_newround ? (userflags g_access_flag[ACCESS_MODE_SURVIVOR]) : (userflags g_access_flag[ACCESS_MAKE_SURVIVOR])))
                {
                    if (
g_zombie[player])
                        
formatex(menucharsmax(menu), "%s \r[%L]"g_playername[player], idg_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"g_playername[player], idg_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"g_playername[player], idg_zombie[player] ? g_nemesis[player] ? "CLASS_NEMESIS" "CLASS_ZOMBIE" g_survivor[player] ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_RESPAWN_PLAYER// Respawn command
            
{
                if (
allowed_respawn(player) && (userflags g_access_flag[ACCESS_RESPAWN_PLAYERS]))
                    
formatex(menucharsmax(menu), "%s"g_playername[player])
                else
                    
formatex(menucharsmax(menu), "\d%s"g_playername[player])
            }
        }
        
        
// Add player
        
buffer[0] = player
        buffer
[1] = 0
        menu_additem
(menuidmenubuffer)
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
menu_display(idmenuid)


in some cases appears \d, but I want to transform into callback, as here

PHP Code:

            case ACTION_RESPAWN_PLAYER// Respawn command
            
{
                if (
allowed_respawn(player) && (userflags g_access_flag[ACCESS_RESPAWN_PLAYERS]))
                    
formatex(menucharsmax(menu), "%s"g_playername[player])
                else
                    
formatex(menucharsmax(menu), "\d%s"g_playername[player])
            } 

So what I did was

changed

PHP Code:

        // Add player
        
buffer[0] = player
        buffer
[1] = 0
        menu_additem
(menuidmenubuffer), ADMIN_ALLmenu_makecallback("c_player_list")) 

and added
PHP Code:

public c_player_list(idmenuiditem)
{
    if (
allowed_zombie(id) || allowed_nemesis(id) || allowed_survivor(id) || allowed_human(id))
    {
            return 
ITEM_ENABLED
    
}
    
    return 
ITEM_DISABLED


if not expressed well excuse me and ask me again :)

Greetings :D


All times are GMT -4. The time now is 19:56.

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