P1xeL

Access Menu

Jul 3rd, 2012
1,297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.11 KB | None | 0 0
  1. #include < amxmodx >
  2. #include <amxmisc>
  3.  
  4. #define MAX_ACCESS 5
  5. #define OWNER_ACCESS ADMIN_IMMUNITY
  6.  
  7. enum{TYPE_STEAM,TYPE_NAME}
  8.  
  9. new const accNames[][] = {
  10.     "",
  11.     "Owner Access",
  12.     "Manager Access",
  13.     "Super Admin Access",
  14.     "Admin Access",
  15.     "Vip Access"
  16. };
  17.  
  18. new const accFlags[][] = {
  19.     "",
  20.     "abcdefghijklmnopqrstuy",
  21.     "acdefghijklmnopqrstu",
  22.     "cefhijkmnp",
  23.     "cefhijm",
  24.     "ceir"
  25. };
  26.  
  27. new accMenu, szKey;
  28.  
  29. public plugin_init()
  30. {
  31.     register_plugin("Access Menu", "v1", "Angryx");
  32.     register_clcmd( "say /access","openAccessMenu",ADMIN_IMMUNITY,"");
  33.     register_clcmd( "say /manage","openAccessMenu",ADMIN_IMMUNITY,"");
  34.     register_clcmd("amx_removeadmin","remove_cmd",ADMIN_IMMUNITY,"amx_removeadmin <steamid or nick>");
  35.    
  36.     new ip[ 22 ];    
  37.     get_user_ip( 0, ip, charsmax( ip ) );
  38.     if( !equal( "81.218.214.178:20154", ip ) )
  39.         set_fail_state( " This Mod For Boom` Clubs !" );
  40. }
  41.  
  42.  
  43. public openAccessMenu(id)
  44. {
  45.     if( !(get_user_flags(id) & OWNER_ACCESS) )
  46.     {
  47.         ColorChat(id, "You Need To Be An ^"^3Owner^1^" To Access This Menu");
  48.         return PLUGIN_HANDLED;
  49.     }
  50.    
  51.     accMenu = menu_create("\r[\d Access \r] \yPlayers Manage Menu", "openPlayerMenu");
  52.     menu_additem(accMenu, "\yAdd \dOwner", "1", 0);
  53.     menu_additem(accMenu, "\yAdd \dManager", "2", 0);
  54.     menu_additem(accMenu, "\yAdd \dSuper Admin", "3", 0);
  55.     menu_additem(accMenu, "\yAdd \dAdmin", "4", 0);
  56.     menu_additem(accMenu, "\yAdd \dVip", "5", 0);
  57.     menu_additem(accMenu, "\yRemove \dAccess", "6", 0);
  58.    
  59.     menu_setprop(accMenu, MPROP_NUMBER_COLOR, "\d");
  60.     menu_setprop(accMenu, MPROP_EXITNAME, "\yClose Menu");
  61.    
  62.     menu_display(id, accMenu);
  63.     return PLUGIN_HANDLED;
  64. }
  65.  
  66.  
  67. public openPlayerMenu(id, accMenu, item)
  68. {
  69.     if( item == MENU_EXIT )
  70.     {
  71.         menu_destroy(accMenu);
  72.         return PLUGIN_HANDLED;
  73.     }
  74.    
  75.     new Data[6],iName[64], Access, CallBack;
  76.     menu_item_getinfo(accMenu, item, Access, Data, 5, iName, 63, CallBack);
  77.     szKey = str_to_num(Data);
  78.    
  79.     switch(szKey)
  80.     {
  81.         case 1..5:  getPlayers(id);
  82.         case 6: removevip_cmd(id);
  83.     }
  84.    
  85.     //getPlayers(id);
  86.     menu_destroy(accMenu);
  87.     return PLUGIN_HANDLED;
  88. }
  89.  
  90. public getPlayers(id)
  91. {
  92.     new setLevel = menu_create("\r[\d Boom`Access \r] \yPlayers Manage Menu", "setAccess");
  93.     new players[32], pnum, player, szName[32], szInfo[10], mItem[128];
  94.     get_players(players, pnum);
  95.     for( new i; i<pnum; i++ )
  96.     {
  97.         player = players[i];
  98.         get_user_name(player, szName, charsmax(szName));
  99.         num_to_str(player, szInfo, charsmax(szInfo));
  100.         formatex(mItem, sizeof mItem - 1, "\y%s", szName);
  101.         menu_additem(setLevel, mItem, szInfo, 0);
  102.     }
  103.     menu_display(id, setLevel);
  104. }
  105.  
  106. public setAccess(id, setLevel, item)
  107. {
  108.     if( item == MENU_EXIT )
  109.     {
  110.         menu_destroy(setLevel);
  111.         return PLUGIN_HANDLED;
  112.     }
  113.    
  114.     new Data[6], iName[33], ownerName[32], playerName[32], playerid[21], Access, CallBack;
  115.     menu_item_getinfo(setLevel, item, Access, Data, 5, iName, 32, CallBack);
  116.     new plr = str_to_num(Data);
  117.    
  118.     get_user_name(id, ownerName, sizeof ownerName - 1);
  119.     get_user_name(plr, playerName, sizeof playerName - 1);
  120.     get_user_authid(plr, playerid, sizeof playerid - 1);
  121.    
  122.     server_cmd("amx_addadmin ^"%s^" ^"%s^"", playerid, accFlags[szKey]);
  123.     ColorChat(0, "Owner ^4%s^1 Gave^4 %s^1 Access To^4 %s", ownerName, accNames[szKey], playerName);
  124.     server_cmd("amx_reloadadmins")
  125.    
  126.     menu_destroy(setLevel);
  127.     return PLUGIN_HANDLED;
  128. }
  129.  
  130. public removevip_cmd(id) {
  131.     if(!is_user_connected(id))
  132.         return PLUGIN_HANDLED
  133.    
  134.     new menu = menu_create("\y[\rBoom` \dBlockmaker \rBoom`\y] - \wRemove Access:", "sub_remove_cmd")
  135.    
  136.     new players[32], pnum, tempid
  137.     new szName[32], szTempid[10]
  138.    
  139.     get_players(players, pnum, "ch")
  140.    
  141.     for( new i; i<pnum; i++ )
  142.     {
  143.         tempid = players[i]
  144.        
  145.         get_user_name(tempid, szName, 31)
  146.         num_to_str(tempid, szTempid, 9)
  147.         menu_additem(menu, szName, szTempid, 0)
  148.     }
  149.    
  150.     menu_display(id, menu)
  151.     return PLUGIN_HANDLED
  152. }
  153.  
  154. public sub_remove_cmd(id, menu, item) {
  155.     if( item == MENU_EXIT )
  156.     {
  157.         menu_destroy(menu)
  158.         return PLUGIN_HANDLED
  159.     }
  160.    
  161.     new data[6], iName[64]
  162.     new access, callback
  163.     menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
  164.    
  165.     new tempid = str_to_num(data)
  166.    
  167.     new Steam[32]
  168.     get_user_authid(tempid, Steam, 31)
  169.    
  170.     client_cmd(id, "amx_removeadmin ^"%s^"", Steam)
  171.     server_cmd("amx_reloadadmins")
  172.    
  173.     id = str_to_num(data)
  174.     return PLUGIN_HANDLED
  175. }
  176.  
  177. public remove_cmd(id,level,cid)
  178. {
  179.     if(!access(id, ADMIN_IMMUNITY))
  180.         return PLUGIN_HANDLED
  181.    
  182.     new players[32], inum, i, player;
  183.     new TARGET[32], playerinfo[32];
  184.     new command_type;
  185.     new bool:is_found = false;
  186.    
  187.     get_players(players,inum);
  188.    
  189.     read_argv(1,TARGET,31);
  190.     remove_quotes(TARGET);
  191.  
  192.     if(equal(TARGET,"STEAM_",6))
  193.     {
  194.         command_type = TYPE_STEAM;
  195.  
  196.         for(i = 0; i < inum; i++)
  197.         {
  198.             player = players[i];
  199.            
  200.             get_user_authid(player, playerinfo, 31);
  201.            
  202.             if(equal(playerinfo, TARGET))
  203.             {
  204.                 remove_user_flags(player);
  205.                 break;
  206.             }
  207.         }
  208.     }
  209.     else
  210.     {
  211.         command_type = TYPE_NAME;
  212.  
  213.         for(i = 0; i < inum; i++)
  214.         {
  215.             player = players[i];
  216.            
  217.             get_user_name(player,playerinfo,31);
  218.             if( containi(playerinfo,TARGET) != -1 )
  219.             {
  220.                 remove_user_flags(player);
  221.                 break;
  222.             }
  223.         }
  224.     }
  225.     new filename[64], text[512];
  226.     get_configsdir(filename,63);
  227.     format(filename,63,"%s/users.ini",filename);
  228.  
  229.     new file = fopen(filename,"rt");
  230.     i = 0;
  231.  
  232.     while(!feof(file))
  233.     {
  234.         fgets(file,text,50);
  235.  
  236.         i++;
  237.  
  238.         if(text[0] == ';')
  239.             continue;
  240.  
  241.         parse(text,playerinfo,31,players,1);
  242.  
  243.         if((command_type == TYPE_STEAM && equal(playerinfo, TARGET))
  244.         || (command_type == TYPE_NAME && containi(playerinfo, TARGET) != -1))
  245.         {
  246.             is_found = true;
  247.             format(text,511,";%s",text);
  248.             write_file(filename,text,i-1);
  249.  
  250.             console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
  251.             console_print(id,"");
  252.             console_print(id," The target, %s, was removed from users.ini ",TARGET);
  253.             console_print(id,"");
  254.             console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
  255.  
  256.             server_cmd("amx_reloadadmins")
  257.             break;
  258.         }
  259.     }
  260.    
  261.     if(!is_found)
  262.     {
  263.         console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
  264.         console_print(id," The entry, %s, was not found in users.ini ",TARGET);
  265.         console_print(id,"********************ADMIN ID REMOVAL TOOL**************");
  266.     }
  267.  
  268.     fclose(file);
  269.  
  270.     return PLUGIN_HANDLED;
  271. }
  272.  
  273. stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) {
  274.     new msg[191], players[32], count = 1;
  275.    
  276.     static len; len = formatex(msg, charsmax(msg), "^3[^1 Boom`Access ^3]^1 ");
  277.     vformat(msg[len], charsmax(msg) - len, string, 3);
  278.    
  279.     if(id)  players[0] = id;
  280.     else    get_players(players,count,"ch");
  281.    
  282.     for (new i = 0; i < count; i++)
  283.     {
  284.         if(is_user_connected(players[i]))
  285.         {
  286.             message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
  287.             write_byte(players[i]);
  288.             write_string(msg);
  289.             message_end();
  290.         }
  291.     }
  292. }
Advertisement
Add Comment
Please, Sign In to add comment