HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* A Pluignt Anonymous1337 Forditotta Magyarra! [www.hlmod.hu] */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5.  
  6. #define PLUGIN "Super Admin"
  7. #define VERSION "4.1"
  8. #define AUTHOR "[R]ak"
  9.  
  10. #define ShowSuperAdmin (get_pcvar_num(Pointer) == 2)
  11.  
  12. const MENU_OPTION = -4
  13. const TASKMENU = 2708
  14.  
  15. enum _:Menu_Name_Data {
  16. AMXSUPERMENU,
  17. SADMIN,
  18. KICK,
  19. BAN,
  20. BANIP,
  21. SLAY,
  22. SLAP
  23. }
  24.  
  25. enum _:Menu_Data {
  26. COMMANDMENU,
  27. COMMAND,
  28. MENU_NAME,
  29. MENU_OPTION_PREFIX,
  30. DATA1,
  31. DATA2,
  32. DATA3,
  33. DATA4
  34. }
  35.  
  36. new const Menu_Name[Menu_Name_Data][Menu_Data][] = {
  37. { "amxsupermenu", "", "Amx Szuper Menu", "", "", "", "", "" },
  38. { "amx_addsuperadmin_menu", "amx_addsuperadmin", "Szuper Admin Adasa Menu", "", "", "", "", "" },
  39. { "amx_super_kickmenu", "amx_super_kick", "Amx Szuper Kirugas Menu", "", "", "", "", "" },
  40. { "amx_super_banmenu", "amx_super_ban", "Amx Szuper Kitiltas Menu", "Ban", "Permanente", "5", "15", "60" },
  41. { "amx_super_banipmenu", "amx_super_banip", "Amx Szuper IP kitiltasa Menu", "Banip", "Permanente", "5", "15", "60" },
  42. { "amx_super_slaymenu", "amx_super_slay", "Amx Szuper Megoles Menu", "", "", "", "", "" },
  43. { "amx_super_slapmenu", "amx_super_slap", "Amx Szuper Utogetes Menu", "Slap", "0", "1", "5", "99" }
  44. }
  45.  
  46. new Pointer, Trie:SuperAdmins, g_RegisterID[Menu_Name_Data], g_MenuMain, g_MenuCallBack
  47.  
  48. public plugin_init() {
  49.  
  50. register_dictionary("common.txt")
  51.  
  52. register_plugin(PLUGIN, VERSION, AUTHOR)
  53.  
  54. register_concmd(Menu_Name[KICK][COMMAND], "Super_Kick", _, "<nev|#IP> <kirugas oka>")
  55. register_concmd(Menu_Name[BAN][COMMAND], "Super_Ban", _, "<nev|#IP> <ido> <kirugas oka>")
  56. register_concmd(Menu_Name[BANIP][COMMAND], "Super_Banip", _, "<nev|#IP> <ido> <kirugas oka>")
  57. register_concmd(Menu_Name[SLAY][COMMAND], "Super_Slay", _, "<nev|#IP>")
  58. register_concmd(Menu_Name[SLAP][COMMAND], "Super_Slap", _, "<nev|#IP> <sebzse>")
  59. register_concmd(Menu_Name[SADMIN][COMMAND], "Super_AddAdmin", _, "<nev|#IP|steamid>")
  60.  
  61. for(new i; i < sizeof Menu_Name; i++)
  62. g_RegisterID[i] = register_clcmd(Menu_Name[i][COMMANDMENU], "cmdSuperMenu")
  63.  
  64. Pointer = get_cvar_pointer("amx_show_activity")
  65.  
  66. g_MenuCallBack = menu_makecallback("CheckAlive")
  67. }
  68.  
  69. public plugin_cfg() {
  70. SuperAdmins = TrieCreate()
  71. new ConfigDir[64]
  72. get_configsdir(ConfigDir, charsmax(ConfigDir))
  73.  
  74. format(ConfigDir, charsmax(ConfigDir), "%s/SuperAdmin.ini", ConfigDir)
  75.  
  76. if(!file_exists(ConfigDir))
  77. create_file(ConfigDir)
  78.  
  79. new Data[37], File = fopen(ConfigDir, "rt")
  80.  
  81. while (!feof(File)) {
  82. fgets(File, Data, charsmax(Data))
  83.  
  84. trim(Data)
  85.  
  86. if (Data[0] == ';' || !Data[0])
  87. continue;
  88.  
  89. remove_quotes(Data)
  90. TrieSetCell(SuperAdmins, Data, true)
  91. }
  92.  
  93. fclose(File)
  94.  
  95. create_menu_main()
  96. }
  97.  
  98. public cmdSuperMenu(id, level, cid) {
  99.  
  100. if(cid == g_RegisterID[AMXSUPERMENU])
  101. show_menu_main(id)
  102. else if(cid == g_RegisterID[KICK])
  103. show_menu_custom(id, KICK)
  104. else if(cid == g_RegisterID[BAN])
  105. show_menu_custom(id, BAN)
  106. else if(cid == g_RegisterID[BANIP])
  107. show_menu_custom(id, BANIP)
  108. else if(cid == g_RegisterID[SLAY])
  109. show_menu_custom(id, SLAY)
  110. else if(cid == g_RegisterID[SLAP])
  111. show_menu_custom(id, SLAP)
  112. else
  113. show_menu_custom(id, SADMIN)
  114.  
  115. return PLUGIN_HANDLED
  116.  
  117. }
  118.  
  119. show_menu_main(id)
  120. menu_display(id, g_MenuMain)
  121.  
  122. show_menu_custom(id, Type, MenuKey = 0, page = 0) {
  123.  
  124. new Item[4], Name[32], Player, Player_Num, Players[32], Menu_Item_Option[32], AddOption, Menu = menu_create(Menu_Name[Type][MENU_NAME], "menu_custom_handler")
  125.  
  126. AddOption = (Type != KICK && Type != SLAY && Type != SADMIN)
  127.  
  128. Item[1] = Type
  129. Item[2] = MenuKey
  130. Item[3] = 0
  131.  
  132. if(AddOption)
  133. formatex(Menu_Item_Option, charsmax(Menu_Item_Option), "%s: %s", Menu_Name[Type][MENU_OPTION_PREFIX], Menu_Name[Type][MenuKey+DATA1])
  134.  
  135. get_players(Players, Player_Num)
  136.  
  137. for(new i; i < Player_Num; i++) {
  138.  
  139. if(i && !(i % 6) && AddOption) {
  140. Item[0] = MENU_OPTION
  141. menu_additem(Menu, Menu_Item_Option, Item)
  142. }
  143.  
  144. Player = Item[0] = Players[i]
  145.  
  146. get_user_name(Player, Name, charsmax(Name))
  147.  
  148. menu_additem(Menu, Name, Item, .callback = (Type >= SLAY) ? g_MenuCallBack : -1)
  149. }
  150.  
  151. if(AddOption) {
  152.  
  153. Item[0] = MENU_OPTION
  154.  
  155. menu_additem(Menu, Menu_Item_Option, Item)
  156.  
  157. }
  158.  
  159. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
  160. menu_display(id, Menu, page)
  161.  
  162. }
  163.  
  164. public menu_main_handler(id, menu, item) {
  165.  
  166. if(item == MENU_EXIT)
  167. return
  168.  
  169. show_menu_custom(id, item+1)
  170.  
  171. }
  172.  
  173. public menu_custom_handler(id, menu, item) {
  174.  
  175. if(item == MENU_EXIT) {
  176. menu_destroy(menu)
  177. return
  178. }
  179.  
  180. new Data[5], Access, Callback
  181.  
  182. menu_item_getinfo(menu, item, Access, Data, charsmax(Data), _, _, Callback)
  183.  
  184. if(Data[0] == MENU_OPTION) {
  185. if((++Data[2] + DATA1) > DATA4)
  186. Data[2] = 0
  187. }
  188. else {
  189.  
  190. new type = Data[1], victim = Data[0]
  191.  
  192. client_cmd(id, "%s #%d %s", Menu_Name[type][COMMAND], get_user_userid(victim), Menu_Name[type][Data[2]+DATA1])
  193.  
  194. }
  195.  
  196. new page, newmenu, oldmenu
  197. player_menu_info(id, oldmenu, newmenu, page)
  198.  
  199. Data[0] = id
  200. Data[3] = page
  201.  
  202. set_task(0.1, "TaskShowMenu", TASKMENU, Data, sizeof Data)
  203.  
  204. menu_destroy(menu)
  205.  
  206. }
  207.  
  208. public TaskShowMenu(Args[])
  209. show_menu_custom(Args[0], Args[1], Args[2], Args[3])
  210.  
  211. public CheckAlive(id, menu, item) {
  212.  
  213. new Data[4], Access, Callback, Name[32]
  214.  
  215. menu_item_getinfo(menu, item, Access, Data, charsmax(Data), Name, charsmax(Name), Callback)
  216.  
  217. return (is_user_alive(Data[0])) ? ITEM_ENABLED : ITEM_DISABLED
  218.  
  219. }
  220.  
  221. public Super_Kick(id, level, cid) {
  222. if(!Is_SuperAdmin(id, cid, 2))
  223. return PLUGIN_HANDLED;
  224.  
  225. new Name[32], Reason[32]
  226.  
  227. read_argv(1, Name, charsmax(Name))
  228. read_argv(2, Reason, charsmax(Reason))
  229. remove_quotes(Reason)
  230.  
  231. new player = get_target(id, Name)
  232.  
  233. if(!player)
  234. return PLUGIN_HANDLED
  235.  
  236. if(Reason[0])
  237. server_cmd("kick #%d ^"%s^"", get_user_userid(player), Reason)
  238. else
  239. server_cmd("kick #%d", get_user_userid(player))
  240.  
  241. new Super_Admin[32], Victim[32]
  242.  
  243. get_user_name(id, Super_Admin, charsmax(Super_Admin))
  244. get_user_name(player, Victim, charsmax(Victim))
  245.  
  246. if(get_pcvar_num(Pointer))
  247. client_print(0, print_chat, "[AMXX] Admin %s: kirugta %s", ShowSuperAdmin ? Super_Admin : "", Victim)
  248.  
  249. return PLUGIN_HANDLED
  250. }
  251.  
  252. public Super_Ban(id, level, cid) {
  253. if(!Is_SuperAdmin(id, cid, 3))
  254. return PLUGIN_HANDLED;
  255.  
  256. new Name[32], Time[7] ,Reason[32]
  257.  
  258. read_argv(1, Name, charsmax(Name))
  259. read_argv(2, Time, charsmax(Time))
  260. read_argv(3, Reason, charsmax(Reason))
  261. remove_quotes(Reason)
  262.  
  263. new player = get_target(id, Name)
  264.  
  265. if (!player)
  266. return PLUGIN_HANDLED
  267.  
  268. new Authid[35], Time_Ban, Show_Time[20]
  269.  
  270. get_user_authid(player, Authid, charsmax(Authid))
  271. Time_Ban = str_to_num(Time)
  272.  
  273. if(!Time_Ban)
  274. formatex(Show_Time, charsmax(Show_Time), "Orokos")
  275. else
  276. formatex(Show_Time, charsmax(Show_Time), "%d Perc", Time_Ban)
  277.  
  278. if (Reason[0])
  279. server_cmd("kick #%d ^"%s | Kitiltva | Ido:%s)^";wait;banid ^"%s^" %s;wait;writeid", get_user_userid(player), Reason, Show_Time, Time_Ban, Authid)
  280. else
  281. server_cmd("kick #%d ^"Kitiltva | Ido:%s)^";wait;banid ^"%s^" %s;;wait;writeid", get_user_userid(player), Show_Time, Time_Ban, Authid)
  282.  
  283. new Super_Admin[32], Victim[32]
  284.  
  285. get_user_name(id, Super_Admin, charsmax(Super_Admin))
  286. get_user_name(player, Victim, charsmax(Victim))
  287.  
  288. if(get_pcvar_num(Pointer))
  289. client_print(0, print_chat, "[AMXX] Admin %s: Kitiltotta %s Jatekost |%s Percre", ShowSuperAdmin ? Super_Admin : "", Victim, Show_Time)
  290.  
  291. return PLUGIN_HANDLED
  292. }
  293.  
  294. public Super_Banip(id, level, cid) {
  295. if(!Is_SuperAdmin(id, cid, 3))
  296. return PLUGIN_HANDLED;
  297.  
  298. new Name[32], Time[7] ,Reason[32]
  299.  
  300. read_argv(1, Name, charsmax(Name))
  301. read_argv(2, Time, charsmax(Time))
  302. read_argv(3, Reason, charsmax(Reason))
  303. remove_quotes(Reason)
  304.  
  305. new player = get_target(id, Name)
  306.  
  307. if (!player)
  308. return PLUGIN_HANDLED
  309.  
  310. new Ip[20], Time_Ban, Show_Time[20]
  311.  
  312. get_user_ip(player, Ip, charsmax(Ip), 1)
  313. Time_Ban = str_to_num(Time)
  314.  
  315. if(!Time_Ban)
  316. formatex(Show_Time, charsmax(Show_Time), "Orokos")
  317. else
  318. formatex(Show_Time, charsmax(Show_Time), "%d Perc", Time_Ban)
  319.  
  320. if (Reason[0])
  321. server_cmd("kick #%d ^"%s | Kitiltva | Ido:%s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", get_user_userid(player), Reason, Show_Time, Time_Ban, Ip)
  322. else
  323. server_cmd("kick #%d ^"Kitiltva | Ido:%s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", get_user_userid(player), Show_Time, Time_Ban, Ip)
  324.  
  325. new Super_Admin[32], Victim[32]
  326.  
  327. get_user_name(id, Super_Admin, charsmax(Super_Admin))
  328. get_user_name(player, Victim, charsmax(Victim))
  329.  
  330. if(get_pcvar_num(Pointer))
  331. client_print(0, print_chat, "[AMXX] Admin %s: Kitiltotta %s Jatekost |%s Percre", ShowSuperAdmin ? Super_Admin : "", Victim, Show_Time)
  332.  
  333. return PLUGIN_HANDLED
  334. }
  335.  
  336. public Super_Slay(id, level, cid) {
  337. if(!Is_SuperAdmin(id, cid, 2))
  338. return PLUGIN_HANDLED;
  339.  
  340. new Name[32]
  341.  
  342. read_argv(1, Name, charsmax(Name))
  343.  
  344. new player = get_target(id, Name, true)
  345.  
  346. if (!player)
  347. return PLUGIN_HANDLED
  348.  
  349. user_kill(player)
  350.  
  351. new Super_Admin[32], Victim[32]
  352.  
  353. get_user_name(id, Super_Admin, charsmax(Super_Admin))
  354. get_user_name(player, Victim, charsmax(Victim))
  355.  
  356. if(get_pcvar_num(Pointer))
  357. client_print(0, print_chat, "[AMXX] Admin %s: Megolte %s", ShowSuperAdmin ? Super_Admin : "", Victim)
  358.  
  359. return PLUGIN_HANDLED
  360. }
  361.  
  362. public Super_Slap(id, level, cid) {
  363. if(!Is_SuperAdmin(id, cid, 2))
  364. return PLUGIN_HANDLED;
  365.  
  366. new Name[32], Power[32]
  367.  
  368. read_argv(1, Name, charsmax(Name))
  369. read_argv(2, Power, charsmax(Power))
  370.  
  371. new player = get_target(id, Name, true)
  372.  
  373. if (!player)
  374. return PLUGIN_HANDLED
  375.  
  376. user_slap(player, str_to_num(Power))
  377.  
  378. new Super_Admin[32], Victim[32]
  379.  
  380. get_user_name(id, Super_Admin, charsmax(Super_Admin))
  381. get_user_name(player, Victim, charsmax(Victim))
  382.  
  383. if(get_pcvar_num(Pointer))
  384. client_print(0, print_chat, "[AMXX] Admin %s: Megutotte %s | %d sebzessel", ShowSuperAdmin ? Super_Admin : "", Victim, str_to_num(Power))
  385.  
  386. return PLUGIN_HANDLED
  387. }
  388.  
  389. public Super_AddAdmin(id, level, cid) {
  390.  
  391. if(!Is_SuperAdmin(id, cid, 2))
  392. return PLUGIN_HANDLED;
  393.  
  394. new Steam[37]
  395.  
  396. read_argv(1, Steam, charsmax(Steam))
  397. remove_quotes(Steam)
  398.  
  399. if(Steam[0] != 'S' || Steam[4] != 'M' || Steam[7] != ':' || Steam[9] != ':') {
  400.  
  401. new player = get_target(id, Steam)
  402.  
  403. if(!player)
  404. return PLUGIN_HANDLED
  405.  
  406. get_user_authid(player, Steam, charsmax(Steam))
  407. }
  408.  
  409. if(TrieKeyExists(SuperAdmins, Steam)) {
  410. console_print(id, "Ez a STEAM_ID: %s mar letezik a SzuperAdmin fajlaban.", Steam)
  411. return PLUGIN_HANDLED
  412. }
  413.  
  414. new ConfigDir[64]
  415.  
  416. get_configsdir(ConfigDir, charsmax(ConfigDir))
  417.  
  418. format(ConfigDir, charsmax(ConfigDir), "%s/SuperAdmin.ini", ConfigDir)
  419.  
  420. new File = fopen(ConfigDir, "at")
  421.  
  422. if (!File)
  423. return PLUGIN_HANDLED
  424.  
  425. fprintf(File, "^n^"%s^"", Steam)
  426.  
  427. fclose(File)
  428.  
  429. TrieSetCell(SuperAdmins, Steam, true)
  430.  
  431. console_print(id, "%s Ez a STEAM_ID, SuperAdmin jogosultsaggal rendelkezik.", Steam)
  432.  
  433. return PLUGIN_HANDLED
  434. }
  435.  
  436. create_menu_main() {
  437.  
  438. new buffer[64]
  439.  
  440. formatex(buffer, charsmax(buffer), "[R]ak Acme Inc.- %s", Menu_Name[AMXSUPERMENU][MENU_NAME])
  441.  
  442. g_MenuMain = menu_create(buffer, "menu_main_handler")
  443.  
  444. for(new i = 1; i < sizeof Menu_Name; i++)
  445. menu_additem(g_MenuMain, Menu_Name[i][MENU_NAME])
  446.  
  447. }
  448.  
  449. Is_SuperAdmin(id, cid, Args) {
  450. new Authid[35]
  451.  
  452. get_user_authid(id, Authid, charsmax(Authid));
  453.  
  454. if(TrieKeyExists(SuperAdmins, Authid) || id == 0) {
  455.  
  456. if (read_argc() < Args) {
  457.  
  458. new cmd[32], info[128], flag
  459.  
  460. get_concmd(cid, cmd, charsmax(cmd), flag, info, charsmax(info), -1)
  461.  
  462. console_print(id,"%L: %s %s", id, "USAGE", cmd, info)
  463.  
  464. return false
  465. }
  466.  
  467. return true
  468. }
  469.  
  470. return false
  471. }
  472.  
  473. get_target(id, Arg[], CheckAlive = false) {
  474.  
  475. new player = find_player("bl", Arg)
  476.  
  477. if(player) {
  478.  
  479. if(player != find_player("blj", Arg)) {
  480.  
  481. console_print(id, "%L", id, "MORE_CL_MATCHT")
  482.  
  483. return false
  484. }
  485. }
  486. else if((player = find_player("c", Arg)) == 0 && Arg[0] == '#' && Arg[1])
  487. player = find_player("k", str_to_num(Arg[1]))
  488.  
  489. if(!player)
  490. console_print(id, "%L", id, "CL_NOT_FOUND")
  491. else if(CheckAlive && !is_user_alive(player)) {
  492.  
  493. new sName[32]
  494.  
  495. get_user_name(player, sName, charsmax(sName))
  496.  
  497. console_print(id, "%L", id, "CANT_PERF_DEAD", sName)
  498.  
  499. return false
  500.  
  501. }
  502.  
  503. return player
  504.  
  505. }
  506.  
  507. create_file(ConfigDir[]) {
  508.  
  509. new File = fopen(ConfigDir, "wt")
  510.  
  511. fprintf(File, "; SuperAdmint [R]ak Keszitette! Forditotta: Anonymous1337; File location: $moddir/addons/amxmodx/configs/SuperAdmin.ini^n^n; Line starting with ; is a comment^n^n; Alapertelmezett SuparAdmin account:^n; ^"STEAM_0:0:123456^"^n^n^n;Enjoy")
  512.  
  513. fclose(File)
  514. }
  515.  
  516. public plugin_end()
  517. TrieDestroy(SuperAdmins)
  518. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  519. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
  520. */
  521. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  522. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  523. */
  524.