PHP Code:
#include < amxmodx >
#define MAX_ACCESS 5
#define OWNER_ACCESS ADMIN_IMMUNITY
new const accNames[ MAX_ACCESS +1 ][] = {
"",
"Owner Access",
"Manager Access",
"Super Admin Access",
"Admin Access",
"V.i.p Access"
};
new const accFlags[ MAX_ACCESS +1 ][] = {
"",
"abcdefghijklmnopqrstuy",
"acdefghijklmnopqrstu",
"cefhijkmnp",
"cefhijm",
"ceir"
};
new accMenu, szKey;
public plugin_init()
{
register_plugin("Access Menu", "v1", "Angryx");
register_clcmd( "say /access","openAccessMenu");
register_clcmd( "say /manage","openAccessMenu");
}
public openAccessMenu(id)
{
if( !(get_user_flags(id) & OWNER_ACCESS) )
{
ColorChat(id, "You Need To Be An ^"^3Owner^1^" To Access This Menu");
return PLUGIN_HANDLED;
}
accMenu = menu_create("\r[\d Access \r] \yPlayers Manage Menu", "openPlayerMenu");
menu_additem(accMenu, "\yAdd \dOwner", "0", 0);
menu_additem(accMenu, "\yAdd \dManager", "1", 0);
menu_additem(accMenu, "\yAdd \dSuper Admin", "2", 0);
menu_additem(accMenu, "\yAdd \dAdmin", "3", 0);
menu_additem(accMenu, "\yAdd \dVip", "4", 0);
menu_setprop(accMenu, MPROP_NUMBER_COLOR, "\d");
menu_setprop(accMenu, MPROP_EXITNAME, "\yClose Menu");
menu_display(id, accMenu);
return PLUGIN_HANDLED;
}
public openPlayerMenu(id, accMenu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(accMenu);
return PLUGIN_HANDLED;
}
new Data[6],iName[64], Access, CallBack;
menu_item_getinfo(accMenu, item, Access, Data, 5, iName, 63, CallBack);
szKey = str_to_num(Data);
getPlayers(id);
menu_destroy(accMenu);
return PLUGIN_HANDLED;
}
public getPlayers(id)
{
new setLevel = menu_create("\r[\d Boom \r] \yPlayers Manage Menu", "setAccess");
new players[32], pnum, player, szName[32], szInfo[10], mItem[128];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
player = players[i];
get_user_name(player, szName, charsmax(szName));
num_to_str(player, szInfo, charsmax(szInfo));
formatex(mItem, sizeof mItem - 1, "\y%s", szName);
menu_additem(setLevel, mItem, szInfo, 0);
}
//menu_display(id, setLevel);
}
public setAccess(id, setLevel, item)
{
if( item == MENU_EXIT )
{
menu_destroy(setLevel);
return PLUGIN_HANDLED;
}
new Data[6], iName[33], ownerName[32], playerName[32], playerid[21], Access, CallBack;
menu_item_getinfo(setLevel, item, Access, Data, 5, iName, 32, CallBack);
new plr = str_to_num(Data);
get_user_name(id, ownerName, sizeof ownerName - 1);
get_user_name(plr, playerName, sizeof playerName - 1);
get_user_authid(plr, playerid, sizeof playerid - 1);
server_cmd("amx_addadmin ^"%s^" ^"%s^"", playerid, accFlags[szKey]);
ColorChat(0, "Owner ^4%s^1 Gave^4 %s^1 Access To^4 %s", ownerName, accNames[szKey], playerName);
server_cmd("amx_reloadadmins")
menu_destroy(setLevel);
return PLUGIN_HANDLED;
}
stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) {
new msg[191], players[32], count = 1;
static len; len = formatex(msg, charsmax(msg), "^3[^1 Access ^3]^1 ");
vformat(msg[len], charsmax(msg) - len, string, 3);
if(id) players[0] = id;
else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
{
if(is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}