Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < amxmodx >
- #include <amxmisc>
- #define MAX_ACCESS 5
- #define OWNER_ACCESS ADMIN_IMMUNITY
- enum{TYPE_STEAM,TYPE_NAME}
- new const accNames[][] = {
- "",
- "Owner Access",
- "Manager Access",
- "Super Admin Access",
- "Admin Access",
- "Vip Access"
- };
- new const accFlags[][] = {
- "",
- "abcdefghijklmnopqrstuy",
- "cdefghijkmnopqrstu",
- "cefhijkmnp",
- "cefhijm",
- "ceir"
- };
- new accMenu, szKey;
- public plugin_init()
- {
- register_plugin("Access Menu", "v1.2", "omerzijke");
- register_clcmd( "say /access","openAccessMenu",ADMIN_IMMUNITY,"");
- register_clcmd( "say /manage","openAccessMenu",ADMIN_IMMUNITY,"");
- register_clcmd("amx_removeadmin","remove_cmd",ADMIN_IMMUNITY,"amx_removeadmin <steamid or nick>");
- }
- 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", "1", 0);
- menu_additem(accMenu, "\yAdd \dManager", "2", 0);
- menu_additem(accMenu, "\yAdd \dSuper Admin", "3", 0);
- menu_additem(accMenu, "\yAdd \dAdmin", "4", 0);
- menu_additem(accMenu, "\yAdd \dVip", "5", 0);
- menu_additem(accMenu, "\yRemove \dAccess", "6", 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);
- switch(szKey)
- {
- case 1..5: getPlayers(id);
- case 6: removevip_cmd(id);
- }
- //getPlayers(id);
- menu_destroy(accMenu);
- return PLUGIN_HANDLED;
- }
- public getPlayers(id)
- {
- new setLevel = menu_create("\r[\d Boom`Access \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;
- }
- public removevip_cmd(id) {
- if(!is_user_connected(id))
- return PLUGIN_HANDLED
- new menu = menu_create("\y[\rBoom` \dBlockmaker \rBoom`\y] - \wRemove Access:", "sub_remove_cmd")
- new players[32], pnum, tempid
- new szName[32], szTempid[10]
- get_players(players, pnum, "ch")
- for( new i; i<pnum; i++ )
- {
- tempid = players[i]
- get_user_name(tempid, szName, 31)
- num_to_str(tempid, szTempid, 9)
- menu_additem(menu, szName, szTempid, 0)
- }
- menu_display(id, menu)
- return PLUGIN_HANDLED
- }
- public sub_remove_cmd(id, menu, item) {
- if( item == MENU_EXIT )
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- new data[6], iName[64]
- new access, callback
- menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
- new tempid = str_to_num(data)
- new Steam[32]
- get_user_authid(tempid, Steam, 31)
- client_cmd(id, "amx_removeadmin ^"%s^"", Steam)
- server_cmd("amx_reloadadmins")
- id = str_to_num(data)
- return PLUGIN_HANDLED
- }
- public remove_cmd(id,level,cid)
- {
- if(!access(id, ADMIN_IMMUNITY))
- return PLUGIN_HANDLED
- new players[32], inum, i, player;
- new TARGET[32], playerinfo[32];
- new command_type;
- new bool:is_found = false;
- get_players(players,inum);
- read_argv(1,TARGET,31);
- remove_quotes(TARGET);
- if(equal(TARGET,"STEAM_",6))
- {
- command_type = TYPE_STEAM;
- for(i = 0; i < inum; i++)
- {
- player = players[i];
- get_user_authid(player, playerinfo, 31);
- if(equal(playerinfo, TARGET))
- {
- remove_user_flags(player);
- break;
- }
- }
- }
- else
- {
- command_type = TYPE_NAME;
- for(i = 0; i < inum; i++)
- {
- player = players[i];
- get_user_name(player,playerinfo,31);
- if( containi(playerinfo,TARGET) != -1 )
- {
- remove_user_flags(player);
- break;
- }
- }
- }
- new filename[64], text[512];
- get_configsdir(filename,63);
- format(filename,63,"%s/users.ini",filename);
- new file = fopen(filename,"rt");
- i = 0;
- while(!feof(file))
- {
- fgets(file,text,50);
- i++;
- if(text[0] == ';')
- continue;
- parse(text,playerinfo,31,players,1);
- if((command_type == TYPE_STEAM && equal(playerinfo, TARGET))
- || (command_type == TYPE_NAME && containi(playerinfo, TARGET) != -1))
- {
- is_found = true;
- format(text,511,";%s",text);
- write_file(filename,text,i-1);
- console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
- console_print(id,"");
- console_print(id," The target, %s, was removed from users.ini ",TARGET);
- console_print(id,"");
- console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
- server_cmd("amx_reloadadmins")
- break;
- }
- }
- if(!is_found)
- {
- console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
- console_print(id," The entry, %s, was not found in users.ini ",TARGET);
- console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
- }
- fclose(file);
- 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 Boom`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();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement