Advertisement
Guest User

Untitled

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