Thread: admin menu
View Single Post
yagami
Senior Member
Join Date: Jan 2021
Old 07-16-2023 , 12:17   Re: admin menu
Reply With Quote #6

Quote:
Originally Posted by Napoleon_be View Post
I don't have a lot of experience on stuff like this, but to me it seems you should check if the dispenser is one of another admin. Loop through all players and check for admins and set a bool to true for all the admins with a dispenser of their own. Then your check should look something like this:

PHP Code:
if(is_user_admin(id) && iOwner && iAdmin[iPlayers]) // use get_players() 
After you've done this, you should be able to filter out the remaining dispensers which are not your own or not one of any other admin.

Correct me if i'm wrong here, just trying to help out.
PHP Code:
public xMenuDispenser(id)
{
    new 
pMenu menu_create("Menu Dispenser""xMenuDispenserHandler")

    new 
iEnt = -1;
    new 
iLeveliHealthiOwnersEntId[6];

    while((
iEnt find_ent_by_class(iEntdispenser_classname)))
    {
        if(!
pev_valid(iEnt))
        {
            
iOwner != id && is_user_admin(id)

            if(
iOwner != id && is_user_admin(id))
                continue;
        }
        
iLevel  pev(iEntDISPENSER_LEVEL);
        
iHealth pev(iEntpev_health);
        
iOwner  pev(iEntDISPENSER_OWNER);
        
num_to_str(iEntsEntIdcharsmax(sEntId));

        
menu_additem(pMenufmt("\rLevel:\w[%d] \y|| \rVida:\w[%d]"iLeveliHealth), sEntId)
    } 
    
menu_display(idpMenu0);
}

public 
xMenuDispenserHandler(idmenuitem)

    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return;
    }

    new 
szData[6], szName[64], accesscallback;
    
menu_item_getinfo(menuitemaccessszDatacharsmax(szData), szNamecharsmax(szName), callback);

    new 
ent str_to_num(szData)  

    if(
pev_valid(ent))
    {
        
client_print_color(0print_team_default"%s ^3Voce destruiu seu ^4Dispenser^3"PREFIX_CHAT)
        
g_DispPlayerCount[id]--;
        
xLimitGlobal[cs_get_user_team(id)]--
        
isEnt[ent] = false    
        xRemoveEntFix
(ent);
        
xGiveMoneyDisp(id);
    }
}

public 
xMenuAdminDispenser(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED
        
    
new pMenu menu_create("Menu Dispenser""xMenuAdminDispenserHandler")

    new 
iEnt = -1;
    new 
iLeveliHealthiOwnersEntId[6];

    while((
iEnt find_ent_by_class(iEntdispenser_classname)))
    {
        if(!
pev_valid(iEnt))
        {
            
iLevel  pev(iEntDISPENSER_LEVEL);
            
iHealth pev(iEntpev_health);
            
iOwner  pev(iEntDISPENSER_OWNER);
            
num_to_str(iEntsEntIdcharsmax(sEntId));

            if(
iOwner != id && is_user_admin(id))
            {
                
num_to_str(iEntsEntIdcharsmax(sEntId));
                
menu_additem(pMenufmt("\rLevel:\w[%d] \y|| \rLife:\w[%d] || \rOwner:\w[%d]"iLeveliHealthiOwner), sEntId)
            }
        }
        
menu_display(idpMenu0)
    }
    return 
PLUGIN_HANDLED
}

public 
xMenuAdminDispenserHandler(idmenuitem)
{
    new 
szData[6], szName[64], accesscallback;
    
menu_item_getinfo(menuitemaccessszDatacharsmax(szData), szNamecharsmax(szName), callback);

    new 
ent str_to_num(szData)  

    if(
pev_valid(ent))
    {
        new 
iOwner pev(entDISPENSER_OWNER);

        if(!
is_user_admin(id) && iOwner)
        {
            
client_print_color(0print_team_default"%s ^3Admin %n destroyed his ^4Dispenser^3"PREFIX_CHATiOwner);
            
g_DispPlayerCount[iOwner]--;
            
xLimitGlobal[cs_get_user_team(iOwner)]--
            
isEnt[ent] = false
            xRemoveEntFix
(ent);
        }
    }
    

menu is not even opening
L 07/16/2023 - 13:17:28: Invalid menu id 0(0)
L 07/16/2023 - 13:17:28: [AMXX] Displaying debug trace (plugin "testedispenser.amxx", version "1.5")
L 07/16/2023 - 13:17:28: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 07/16/2023 - 13:17:28: [AMXX] [0] testedispenser.sma:MenuAdminDispenserHandle r (line 1711)
L 07/16/2023 - 13:17:28: [testedispenser.amxx] performance issue. Function xMenuAdminDispenserHandler executed more than 38.1ms.
yagami is offline