Quote:
Originally Posted by Napoleon_be
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 iLevel, iHealth, iOwner, sEntId[6];
while((iEnt = find_ent_by_class(iEnt, dispenser_classname)))
{
if(!pev_valid(iEnt))
{
iOwner != id && is_user_admin(id)
if(iOwner != id && is_user_admin(id))
continue;
}
iLevel = pev(iEnt, DISPENSER_LEVEL);
iHealth = pev(iEnt, pev_health);
iOwner = pev(iEnt, DISPENSER_OWNER);
num_to_str(iEnt, sEntId, charsmax(sEntId));
menu_additem(pMenu, fmt("\rLevel:\w[%d] \y|| \rVida:\w[%d]", iLevel, iHealth), sEntId)
}
menu_display(id, pMenu, 0);
}
public xMenuDispenserHandler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new szData[6], szName[64], access, callback;
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback);
new ent = str_to_num(szData)
if(pev_valid(ent))
{
client_print_color(0, print_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 iLevel, iHealth, iOwner, sEntId[6];
while((iEnt = find_ent_by_class(iEnt, dispenser_classname)))
{
if(!pev_valid(iEnt))
{
iLevel = pev(iEnt, DISPENSER_LEVEL);
iHealth = pev(iEnt, pev_health);
iOwner = pev(iEnt, DISPENSER_OWNER);
num_to_str(iEnt, sEntId, charsmax(sEntId));
if(iOwner != id && is_user_admin(id))
{
num_to_str(iEnt, sEntId, charsmax(sEntId));
menu_additem(pMenu, fmt("\rLevel:\w[%d] \y|| \rLife:\w[%d] || \rOwner:\w[%d]", iLevel, iHealth, iOwner), sEntId)
}
}
menu_display(id, pMenu, 0)
}
return PLUGIN_HANDLED
}
public xMenuAdminDispenserHandler(id, menu, item)
{
new szData[6], szName[64], access, callback;
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback);
new ent = str_to_num(szData)
if(pev_valid(ent))
{
new iOwner = pev(ent, DISPENSER_OWNER);
if(!is_user_admin(id) && iOwner)
{
client_print_color(0, print_team_default, "%s ^3Admin %n destroyed his ^4Dispenser^3", PREFIX_CHAT, iOwner);
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.