Guest User

Untitled

a guest
Feb 8th, 2012
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.36 KB | None | 0 0
  1. /* AMX Mod X
  2. * Admin Commands Plugin
  3. *
  4. * by the AMX Mod X Development Team
  5. * originally developed by OLO
  6. *
  7. * This file is part of AMX Mod X.
  8. *
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License as published by the
  12. * Free Software Foundation; either version 2 of the License, or (at
  13. * your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful, but
  16. * WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18. * General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software Foundation,
  22. * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. *
  24. * In addition, as a special exception, the author gives permission to
  25. * link the code of this program with the Half-Life Game Engine ("HL
  26. * Engine") and Modified Game Libraries ("MODs") developed by Valve,
  27. * L.L.C ("Valve"). You must obey the GNU General Public License in all
  28. * respects for all of the code used other than the HL Engine and MODs
  29. * from Valve. If you modify this file, you may extend this exception
  30. * to your version of the file, but you are not obligated to do so. If
  31. * you do not wish to do so, delete this exception statement from your
  32. * version.
  33. */
  34.  
  35. #include <amxmodx>
  36. #include <amxmisc>
  37.  
  38. #define MAXRCONCVARS 16
  39.  
  40. new g_cvarRcon[MAXRCONCVARS][32]
  41. new g_cvarRconNum
  42. new g_pauseCon
  43. new Float:g_pausAble
  44. new bool:g_Paused
  45. new bool:g_PauseAllowed = false
  46. new g_addCvar[] = "amx_cvar add %s"
  47. new Float:oldtime;
  48.  
  49. public plugin_init()
  50. {
  51. register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team")
  52. register_dictionary("admincmd.txt")
  53. register_dictionary("common.txt")
  54. register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
  55. register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
  56. register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
  57. register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<authid or ip> <minutes> [reason]")
  58. register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<authid or ip>")
  59. register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
  60. register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
  61. register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]")
  62. register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game")
  63. register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")
  64. register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]")
  65. register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN)
  66. register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN)
  67. register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>")
  68. register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
  69. register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")
  70. register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>")
  71. register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")
  72. register_clcmd("pauseAck", "cmdLBack")
  73. }
  74.  
  75. public plugin_cfg()
  76. {
  77. // Cvars which can be changed only with rcon access
  78. server_cmd(g_addCvar, "rcon_password")
  79. server_cmd(g_addCvar, "amx_show_activity")
  80. server_cmd(g_addCvar, "amx_mode")
  81. server_cmd(g_addCvar, "amx_password_field")
  82. server_cmd(g_addCvar, "amx_default_access")
  83. server_cmd(g_addCvar, "amx_reserved_slots")
  84. server_cmd(g_addCvar, "amx_reservation")
  85. server_cmd(g_addCvar, "amx_conmotd_file")
  86. }
  87.  
  88. public cmdKick(id, level, cid)
  89. {
  90. if (!cmd_access(id, level, cid, 2))
  91. return PLUGIN_HANDLED
  92.  
  93. new arg[32]
  94. read_argv(1, arg, 31)
  95. new player = cmd_target(id, arg, 1)
  96.  
  97. if (!player)
  98. return PLUGIN_HANDLED
  99.  
  100. new authid[32], authid2[32], name2[32], name[32], userid2, reason[32]
  101.  
  102. get_user_authid(id, authid, 31)
  103. get_user_authid(player, authid2, 31)
  104. get_user_name(player, name2, 31)
  105. get_user_name(id, name, 31)
  106. userid2 = get_user_userid(player)
  107. read_argv(2, reason, 31)
  108. remove_quotes(reason)
  109.  
  110. log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)
  111.  
  112. switch (get_cvar_num("amx_show_activity"))
  113. {
  114. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2)
  115. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_1", name2)
  116. }
  117.  
  118. if (is_user_bot(player))
  119. server_cmd("kick #%d", userid2)
  120. else
  121. {
  122. if (reason[0])
  123. server_cmd("kick #%d ^"%s^"", userid2, reason)
  124. else
  125. server_cmd("kick #%d", userid2)
  126. }
  127.  
  128. console_print(id, "[AMXX] Client ^"%s^" kicked", name2)
  129.  
  130. return PLUGIN_HANDLED
  131. }
  132.  
  133. public cmdUnban(id, level, cid)
  134. {
  135. if (!cmd_access(id, level, cid, 2))
  136. return PLUGIN_HANDLED
  137.  
  138. new arg[32], authid[32], name[32]
  139.  
  140. read_argv(1, arg, 31)
  141.  
  142. if (contain(arg, ".") != -1)
  143. {
  144. server_cmd("removeip ^"%s^";writeip", arg)
  145. console_print(id, "[AMXX] %L", id, "IP_REMOVED", arg)
  146. } else {
  147. server_cmd("removeid %s;writeid", arg)
  148. console_print(id, "[AMXX] %L", id, "AUTHID_REMOVED", arg)
  149. }
  150.  
  151. get_user_name(id, name, 31)
  152.  
  153. switch (get_cvar_num("amx_show_activity"))
  154. {
  155. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_UNBAN_2", name, arg)
  156. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_UNBAN_1", arg)
  157. }
  158.  
  159. get_user_authid(id, authid, 31)
  160. log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
  161.  
  162. return PLUGIN_HANDLED
  163. }
  164.  
  165. public cmdAddBan(id, level, cid)
  166. {
  167. if (!cmd_access(id, level, cid, 3))
  168. return PLUGIN_HANDLED
  169.  
  170. new arg[32], authid[32], name[32], minutes[32], reason[32]
  171.  
  172. read_argv(1, arg, 31)
  173. read_argv(2, minutes, 31)
  174. read_argv(3, reason, 31)
  175.  
  176. if (contain(arg, ".") != -1)
  177. {
  178. server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
  179. console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg)
  180. } else {
  181. server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
  182. console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg)
  183. }
  184.  
  185. get_user_name(id, name, 31)
  186.  
  187. switch (get_cvar_num("amx_show_activity"))
  188. {
  189. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_ADDBAN_2", name, arg)
  190. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_ADDBAN_1", arg)
  191. }
  192.  
  193. get_user_authid(id, authid, 31)
  194. log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason)
  195.  
  196. return PLUGIN_HANDLED
  197. }
  198.  
  199. public cmdBan(id, level, cid)
  200. {
  201. if (!cmd_access(id, level, cid, 3))
  202. return PLUGIN_HANDLED
  203.  
  204. new target[32], minutes[8], reason[64]
  205.  
  206. read_argv(1, target, 31)
  207. read_argv(2, minutes, 7)
  208. read_argv(3, reason, 63)
  209.  
  210. new player = cmd_target(id, target, 9)
  211.  
  212. if (!player)
  213. return PLUGIN_HANDLED
  214.  
  215. new authid[32], name2[32], authid2[32], name[32]
  216. new userid2 = get_user_userid(player)
  217.  
  218. get_user_authid(player, authid2, 31)
  219. get_user_authid(id, authid, 31)
  220. get_user_name(player, name2, 31)
  221. get_user_name(id, name, 31)
  222.  
  223. log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
  224.  
  225. new temp[64], banned[16], nNum = str_to_num(minutes)
  226. if (nNum)
  227. format(temp, 63, "%L", player, "FOR_MIN", minutes)
  228. else
  229. format(temp, 63, "%L", player, "PERM")
  230.  
  231. format(banned, 15, "%L", player, "BANNED")
  232.  
  233. if (reason[0])
  234. server_cmd("kick #%d ^"%s (%s %s)^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, reason, banned, temp, minutes, authid2)
  235. else
  236. server_cmd("kick #%d ^"%s %s^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, banned, temp, minutes, authid2)
  237.  
  238. new activity = get_cvar_num("amx_show_activity")
  239. if (activity != 0)
  240. {
  241. new players[32], pnum, msg[256], len
  242. get_players(players, pnum, "c")
  243.  
  244. for (new i = 0; i < pnum; i++)
  245. {
  246. len = format(msg, 255, "%L", players[i], "ADMIN")
  247.  
  248. if (activity == 1)
  249. len += copy(msg[len], 255-len, ":")
  250. else
  251. len += format(msg[len], 255-len, " %s:", name)
  252.  
  253. len += format(msg[len], 255-len, " %L", players[i], "BAN")
  254. len += format(msg[len], 255-len, " %s ", name2)
  255.  
  256. if (nNum)
  257. format(msg[len], 255-len, "%L", players[i], "FOR_MIN", minutes)
  258. else
  259. format(msg[len], 255-len, "%L", players[i], "PERM")
  260.  
  261. client_print(players[i], print_chat, "%s", msg)
  262. }
  263. }
  264. console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
  265.  
  266. return PLUGIN_HANDLED
  267. }
  268.  
  269. public cmdBanIP(id, level, cid)
  270. {
  271. if (!cmd_access(id, level, cid, 3))
  272. return PLUGIN_HANDLED
  273.  
  274. new target[32], minutes[8], reason[64]
  275.  
  276. read_argv(1, target, 31)
  277. read_argv(2, minutes, 7)
  278. read_argv(3, reason, 63)
  279.  
  280. new player = cmd_target(id, target, 9)
  281.  
  282. if (!player)
  283. return PLUGIN_HANDLED
  284.  
  285. new authid[32], name2[32], authid2[32], name[32]
  286. new userid2 = get_user_userid(player)
  287.  
  288. get_user_authid(player, authid2, 31)
  289. get_user_authid(id, authid, 31)
  290. get_user_name(player, name2, 31)
  291. get_user_name(id, name, 31)
  292.  
  293. log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
  294.  
  295. new temp[64], banned[16], nNum = str_to_num(minutes)
  296. if (nNum)
  297. format(temp, 63, "%L", player, "FOR_MIN", minutes)
  298. else
  299. format(temp, 63, "%L", player, "PERM")
  300. format(banned, 15, "%L", player, "BANNED")
  301.  
  302. new address[32]
  303. get_user_ip(player, address, 31, 1)
  304.  
  305. if (reason[0])
  306. server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address)
  307. else
  308. server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address)
  309.  
  310. new activity = get_cvar_num("amx_show_activity")
  311. if (activity != 0)
  312. {
  313. new players[32], pnum, msg[256], len
  314. get_players(players, pnum, "c")
  315.  
  316. for (new i = 0; i < pnum; i++)
  317. {
  318. len = format(msg, 255, "%L", players[i], "ADMIN")
  319.  
  320. if (activity == 1)
  321. len += copy(msg[len], 255-len, ":")
  322. else
  323. len += format(msg[len], 255-len, " %s:", name)
  324.  
  325. len += format(msg[len], 255-len, " %L", players[i], "BAN")
  326. len += format(msg[len], 255-len, " %s ", name2)
  327.  
  328. if (nNum)
  329. format(msg[len], 255-len, "%L", players[i], "FOR_MIN", minutes)
  330. else
  331. format(msg[len], 255-len, "%L", players[i], "PERM")
  332.  
  333. client_print(players[i], print_chat, "%s", msg)
  334. }
  335. }
  336. console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
  337.  
  338. return PLUGIN_HANDLED
  339. }
  340.  
  341. public cmdSlay(id, level, cid)
  342. {
  343. if (!cmd_access(id, level, cid, 2))
  344. return PLUGIN_HANDLED
  345.  
  346. new arg[32]
  347.  
  348. read_argv(1, arg, 31)
  349.  
  350. new player = cmd_target(id, arg, 5)
  351.  
  352. if (!player)
  353. return PLUGIN_HANDLED
  354.  
  355. user_kill(player)
  356.  
  357. new authid[32], name2[32], authid2[32], name[32]
  358.  
  359. get_user_authid(id, authid, 31)
  360. get_user_name(id, name, 31)
  361. get_user_authid(player, authid2, 31)
  362. get_user_name(player, name2, 31)
  363.  
  364. log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)
  365.  
  366. switch (get_cvar_num("amx_show_activity"))
  367. {
  368. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2)
  369. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAY_1", name2)
  370. }
  371. console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)
  372.  
  373. return PLUGIN_HANDLED
  374. }
  375.  
  376. public cmdSlap(id, level, cid)
  377. {
  378. if (!cmd_access(id, level, cid, 2))
  379. return PLUGIN_HANDLED
  380.  
  381. new arg[32]
  382.  
  383. read_argv(1, arg, 31)
  384. new player = cmd_target(id, arg, 5)
  385.  
  386. if (!player)
  387. return PLUGIN_HANDLED
  388.  
  389. new spower[32], authid[32], name2[32], authid2[32], name[32]
  390.  
  391. read_argv(2, spower, 31)
  392.  
  393. new damage = str_to_num(spower)
  394.  
  395. user_slap(player, damage)
  396.  
  397. get_user_authid(id, authid, 31)
  398. get_user_name(id, name, 31)
  399. get_user_authid(player, authid2, 31)
  400. get_user_name(player, name2, 31)
  401.  
  402. log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)
  403.  
  404. switch (get_cvar_num("amx_show_activity"))
  405. {
  406. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAP_2", name, name2, damage)
  407. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_SLAP_1", name2, damage)
  408. }
  409. console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)
  410.  
  411. return PLUGIN_HANDLED
  412. }
  413.  
  414. public chMap(map[])
  415. {
  416. set_cvar_float("mp_timelimit", oldtime)
  417. server_cmd("changelevel %s", map)
  418. }
  419.  
  420. public cmdMap(id, level, cid)
  421. {
  422. if (!cmd_access(id, level, cid, 2))
  423. return PLUGIN_HANDLED
  424.  
  425. new arg[32]
  426. new arglen = read_argv(1, arg, 31)
  427.  
  428. if (!is_map_valid(arg))
  429. {
  430. new errormsg[128];
  431. formatex(errormsg, 127, "[AMXX] %L", id, "MAP_NOT_FOUND");
  432. console_print(id, errormsg)
  433. return PLUGIN_HANDLED
  434. }
  435.  
  436. new authid[32], name[32]
  437.  
  438. get_user_authid(id, authid, 31)
  439. get_user_name(id, name, 31)
  440.  
  441. switch (get_cvar_num("amx_show_activity"))
  442. {
  443. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_MAP_2", name, arg)
  444. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_MAP_1", arg)
  445. }
  446.  
  447. log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg)
  448.  
  449. new _modName[10]
  450. get_modname(_modName, 9)
  451.  
  452. if (!equal(_modName, "zp"))
  453. {
  454. message_begin(MSG_ALL, SVC_INTERMISSION)
  455. message_end()
  456. }
  457.  
  458.  
  459. new timeleft = get_timeleft()
  460. new Float:minutesleft=float(timeleft)/60.0
  461. new Float:currentlimit=get_cvar_float("mp_timelimit")
  462. new Float:minutesplayed=currentlimit-minutesleft
  463. new Float:timelimit = float(floatround(minutesplayed+1.5))
  464. if(timelimit>0.4)
  465. {
  466. oldtime = currentlimit;
  467. set_cvar_float("mp_timelimit", timelimit)
  468. }
  469.  
  470. set_task(5.0, "chMap", 0, arg, arglen + 1)
  471.  
  472. return PLUGIN_HANDLED
  473. }
  474.  
  475. onlyRcon(name[])
  476. {
  477. for (new a = 0; a < g_cvarRconNum; ++a)
  478. if (equali(g_cvarRcon[a], name))
  479. return 1
  480. return 0
  481. }
  482.  
  483. public cmdCvar(id, level, cid)
  484. {
  485. if (!cmd_access(id, level, cid, 2))
  486. return PLUGIN_HANDLED
  487.  
  488. new arg[32], arg2[64]
  489.  
  490. read_argv(1, arg, 31)
  491. read_argv(2, arg2, 63)
  492.  
  493. if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON))
  494. {
  495. if (cvar_exists(arg2))
  496. {
  497. if (g_cvarRconNum < MAXRCONCVARS)
  498. copy(g_cvarRcon[g_cvarRconNum++], 31, arg2)
  499. else
  500. console_print(id, "[AMXX] %L", id, "NO_MORE_CVARS")
  501. }
  502. return PLUGIN_HANDLED
  503. }
  504.  
  505. if (!cvar_exists(arg))
  506. {
  507. console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)
  508. return PLUGIN_HANDLED
  509. }
  510.  
  511. if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
  512. {
  513. console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
  514. return PLUGIN_HANDLED
  515. }
  516. else if (equal(arg, "sv_password") && !(get_user_flags(id) & ADMIN_PASSWORD))
  517. {
  518. console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
  519. return PLUGIN_HANDLED
  520. }
  521.  
  522. if (read_argc() < 3)
  523. {
  524. get_cvar_string(arg, arg2, 63)
  525. console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)
  526. return PLUGIN_HANDLED
  527. }
  528.  
  529. new authid[32], name[32]
  530.  
  531. get_user_authid(id, authid, 31)
  532. get_user_name(id, name, 31)
  533.  
  534. log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2)
  535. set_cvar_string(arg, arg2)
  536.  
  537. new activity = get_cvar_num("amx_show_activity")
  538. if (activity != 0)
  539. {
  540. new players[32], pnum, admin[64], cvar_val[64], len
  541. get_players(players, pnum, "c")
  542.  
  543. for (new i = 0; i < pnum; i++)
  544. {
  545. len = format(admin, 255, "%L", players[i], "ADMIN")
  546.  
  547. if (activity == 1)
  548. len += copy(admin[len], 255-len, ":")
  549. else
  550. len += format(admin[len], 255-len, " %s:", name)
  551.  
  552. if (equal(arg, "rcon_password") || equal(arg, "sv_password"))
  553. format(cvar_val, 63, "*** %L ***", players[i], "PROTECTED")
  554. else
  555. copy(cvar_val, 63, arg2)
  556.  
  557. client_print(players[i], print_chat, "%L", players[i], "SET_CVAR_TO", admin, arg, arg2)
  558. }
  559. }
  560. console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)
  561.  
  562. return PLUGIN_HANDLED
  563. }
  564.  
  565. public cmdPlugins(id, level, cid)
  566. {
  567. if (!cmd_access(id, level, cid, 1))
  568. return PLUGIN_HANDLED
  569.  
  570. new name[32], version[32], author[32], filename[32], status[32]
  571. new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]
  572.  
  573. format(lName, 31, "%L", id, "NAME")
  574. format(lVersion, 31, "%L", id, "VERSION")
  575. format(lAuthor, 31, "%L", id, "AUTHOR")
  576. format(lFile, 31, "%L", id, "FILE")
  577. format(lStatus, 31, "%L", id, "STATUS")
  578.  
  579. new num = get_pluginsnum()
  580. new running = 0
  581.  
  582. console_print(id, "%L:", id, "LOADED_PLUGINS")
  583. console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)
  584.  
  585. for (new i = 0; i <num; i++)
  586. {
  587. get_plugin(i, filename, 31, name, 31, version, 31, author, 31, status, 31)
  588. console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
  589.  
  590. if (equal(status, "running"))
  591. running++
  592. }
  593. console_print(id, "%L", id, "PLUGINS_RUN", num, running)
  594.  
  595. return PLUGIN_HANDLED
  596. }
  597.  
  598. public cmdModules(id, level, cid)
  599. {
  600. if (!cmd_access(id, level, cid, 1))
  601. return PLUGIN_HANDLED
  602.  
  603. new name[32], version[32], author[32], status, sStatus[16]
  604. new lName[32], lVersion[32], lAuthor[32]
  605.  
  606. format(lName, 31, "%L", id, "NAME")
  607. format(lVersion, 31, "%L", id, "VERSION")
  608. format(lAuthor, 31, "%L", id, "AUTHOR")
  609.  
  610. new num = get_modulesnum()
  611.  
  612. console_print(id, "%L:", id, "LOADED_MODULES")
  613. console_print(id, "%-23.22s %-8.7s %-20.19s", lName, lVersion, lAuthor)
  614.  
  615. for (new i = 0; i < num; i++)
  616. {
  617. get_module(i, name, 31, author, 31, version, 31, status)
  618.  
  619. switch (status)
  620. {
  621. case module_loaded: copy(sStatus, 15, "running")
  622. default: copy(sStatus, 15, "error")
  623. }
  624.  
  625. console_print(id, "%-23.22s %-8.7s %-20.19s", name, version, author)
  626. }
  627. console_print(id, "%L", id, "NUM_MODULES", num)
  628.  
  629. return PLUGIN_HANDLED
  630. }
  631.  
  632. public cmdCfg(id, level, cid)
  633. {
  634. if (!cmd_access(id, level, cid, 2))
  635. return PLUGIN_HANDLED
  636.  
  637. new arg[128]
  638. read_argv(1, arg, 127)
  639.  
  640. if (!file_exists(arg))
  641. {
  642. console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)
  643. return PLUGIN_HANDLED
  644. }
  645.  
  646. new authid[32], name[32]
  647.  
  648. get_user_authid(id, authid, 31)
  649. get_user_name(id, name, 31)
  650.  
  651. log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg)
  652.  
  653. console_print(id, "[AMXX] Executing file ^"%s^"", arg)
  654. server_cmd("exec %s", arg)
  655.  
  656. switch(get_cvar_num("amx_show_activity"))
  657. {
  658. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_CONF_2", name, arg)
  659. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_CONF_1", arg)
  660. }
  661.  
  662. return PLUGIN_HANDLED
  663. }
  664.  
  665. public cmdLBack()
  666. {
  667. if (!g_PauseAllowed)
  668. return PLUGIN_CONTINUE
  669.  
  670. new paused[25]
  671.  
  672. format(paused, 24, "%L", g_pauseCon, g_Paused ? "UNPAUSED" : "PAUSED")
  673. set_cvar_float("pausable", g_pausAble)
  674. console_print(g_pauseCon, "[AMXX] Server %s", paused)
  675. g_PauseAllowed = false
  676.  
  677. if (g_Paused)
  678. g_Paused = false
  679. else
  680. g_Paused = true
  681.  
  682. return PLUGIN_HANDLED
  683. }
  684.  
  685. public cmdPause(id, level, cid)
  686. {
  687. if (!cmd_access(id, level, cid, 1))
  688. return PLUGIN_HANDLED
  689.  
  690. new authid[32], name[32], slayer = id
  691.  
  692. get_user_authid(id, authid, 31)
  693. get_user_name(id, name, 31)
  694. g_pausAble = get_cvar_float("pausable")
  695.  
  696. if (!slayer)
  697. slayer = find_player("h")
  698.  
  699. if (!slayer)
  700. {
  701. console_print(id, "[AMXX] %L", id, "UNABLE_PAUSE")
  702. return PLUGIN_HANDLED
  703. }
  704.  
  705. set_cvar_float("pausable", 1.0)
  706. g_PauseAllowed = true
  707. client_cmd(slayer, "pause;pauseAck")
  708.  
  709. log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")
  710.  
  711. console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")
  712.  
  713. new activity = get_cvar_num("amx_show_activity")
  714. if (activity != 0)
  715. {
  716. new players[32], pnum, msg[128], len
  717. get_players(players, pnum, "c")
  718.  
  719. for (new i = 0; i < pnum; i++)
  720. {
  721. len = format(msg, 127, "%L", players[i], "ADMIN")
  722.  
  723. if (activity == 1)
  724. len += copy(msg[len], 127-len, ": ")
  725. else
  726. len += format(msg[len], 127-len, " %s: ", name)
  727.  
  728. format(msg[len], 127-len, "%L", players[i], g_Paused ? "UNPAUSE" : "PAUSE")
  729. client_print(players[i], print_chat, "%s server", msg)
  730. }
  731. }
  732. g_pauseCon = id
  733.  
  734. return PLUGIN_HANDLED
  735. }
  736.  
  737. public cmdShowRcon(id, level, cid)
  738. {
  739. if (!cmd_access(id, level, cid, 2))
  740. return PLUGIN_HANDLED
  741.  
  742. new password[64]
  743.  
  744. get_cvar_string("rcon_password", password, 63)
  745.  
  746. if (!password[0])
  747. {
  748. cmdRcon(id, level, cid)
  749. } else {
  750. new args[128]
  751.  
  752. read_args(args, 127)
  753. client_cmd(id, "rcon_password %s", password)
  754. client_cmd(id, "rcon %s", args)
  755. }
  756.  
  757. return PLUGIN_HANDLED
  758. }
  759.  
  760. public cmdRcon(id, level, cid)
  761. {
  762. if (!cmd_access(id, level, cid, 2))
  763. return PLUGIN_HANDLED
  764.  
  765. new arg[128], authid[32], name[32]
  766.  
  767. read_args(arg, 127)
  768. get_user_authid(id, authid, 31)
  769. get_user_name(id, name, 31)
  770.  
  771. log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)
  772.  
  773. console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)
  774. server_cmd("%s", arg)
  775.  
  776. return PLUGIN_HANDLED
  777. }
  778.  
  779. public cmdWho(id, level, cid)
  780. {
  781. if (!cmd_access(id, level, cid, 1))
  782. return PLUGIN_HANDLED
  783.  
  784. new players[32], inum, cl_on_server[64], authid[32], name[32], flags, sflags[32]
  785. new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16]
  786.  
  787. format(lImm, 15, "%L", id, "IMMU")
  788. format(lRes, 15, "%L", id, "RESERV")
  789. format(lAccess, 15, "%L", id, "ACCESS")
  790. format(lYes, 15, "%L", id, "YES")
  791. format(lNo, 15, "%L", id, "NO")
  792.  
  793. get_players(players, inum)
  794. format(cl_on_server, 63, "%L", id, "CLIENTS_ON_SERVER")
  795. console_print(id, "^n%s:^n # %-16.15s %-20s %-8s %-4.3s %-4.3s %s", cl_on_server, "nick", "authid", "userid", lImm, lRes, lAccess)
  796.  
  797. for (new a = 0; a < inum; ++a)
  798. {
  799. get_user_authid(players[a], authid, 31)
  800. get_user_name(players[a], name, 31)
  801. flags = get_user_flags(players[a])
  802. get_flags(flags, sflags, 31)
  803. console_print(id, "%2d %-16.15s %-20s %-8d %-6.5s %-6.5s %s", players[a], name, authid,
  804. get_user_userid(players[a]), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)
  805. }
  806.  
  807. console_print(id, "%L", id, "TOTAL_NUM", inum)
  808. get_user_authid(id, authid, 31)
  809. get_user_name(id, name, 31)
  810. log_amx("Cmd: ^"%s<%d><%s><>^" ask for players list", name, get_user_userid(id), authid)
  811.  
  812. return PLUGIN_HANDLED
  813. }
  814.  
  815. hasTag(name[], tags[4][32], tagsNum)
  816. {
  817. for (new a = 0; a < tagsNum; ++a)
  818. if (contain(name, tags[a]) != -1)
  819. return a
  820. return -1
  821. }
  822.  
  823. public cmdLeave(id, level, cid)
  824. {
  825. if (!cmd_access(id, level, cid, 2))
  826. return PLUGIN_HANDLED
  827.  
  828. new argnum = read_argc()
  829. new ltags[4][32]
  830. new ltagsnum = 0
  831.  
  832. for (new a = 1; a < 5; ++a)
  833. {
  834. if (a < argnum)
  835. read_argv(a, ltags[ltagsnum++], 31)
  836. else
  837. ltags[ltagsnum++][0] = 0
  838. }
  839.  
  840. new nick[32], ires, pnum = get_maxplayers() + 1, count = 0, lReason[128]
  841.  
  842. for (new b = 1; b < pnum; ++b)
  843. {
  844. if (!is_user_connected(b) && !is_user_connecting(b)) continue
  845.  
  846. get_user_name(b, nick, 31)
  847. ires = hasTag(nick, ltags, ltagsnum)
  848.  
  849. if (ires != -1)
  850. {
  851. console_print(id, "[AMXX] %L", id, "SKIP_MATCH", nick, ltags[ires])
  852. continue
  853. }
  854.  
  855. if (get_user_flags(b) & ADMIN_IMMUNITY)
  856. {
  857. console_print(id, "[AMXX] %L", id, "SKIP_IMM", nick)
  858. continue
  859. }
  860.  
  861. console_print(id, "[AMXX] %L", id, "KICK_PL", nick)
  862.  
  863. if (is_user_bot(b))
  864. server_cmd("kick #%d", get_user_userid(b))
  865. else
  866. {
  867. format(lReason, 127, "%L", b, "YOU_DROPPED")
  868. server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason)
  869. }
  870. count++
  871. }
  872.  
  873. console_print(id, "[AMXX] %L", id, "KICKED_CLIENTS", count)
  874.  
  875. new authid[32], name[32]
  876.  
  877. get_user_authid(id, authid, 31)
  878. get_user_name(id, name, 31)
  879. log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])
  880.  
  881. switch(get_cvar_num("amx_show_activity"))
  882. {
  883. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_LEAVE_2", name, ltags[0], ltags[1], ltags[2], ltags[3])
  884. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_LEAVE_1", ltags[0], ltags[1], ltags[2], ltags[3])
  885. }
  886.  
  887. return PLUGIN_HANDLED
  888. }
  889.  
  890. public cmdNick(id, level, cid)
  891. {
  892. if (!cmd_access(id, level, cid, 3))
  893. return PLUGIN_HANDLED
  894.  
  895. new arg1[32], arg2[32], authid[32], name[32], authid2[32], name2[32]
  896.  
  897. read_argv(1, arg1, 31)
  898. read_argv(2, arg2, 31)
  899.  
  900. new player = cmd_target(id, arg1, 1)
  901.  
  902. if (!player)
  903. return PLUGIN_HANDLED
  904.  
  905. get_user_authid(id, authid, 31)
  906. get_user_name(id, name, 31)
  907. get_user_authid(player, authid2, 31)
  908. get_user_name(player, name2, 31)
  909.  
  910. client_cmd(player, "name ^"%s^"", arg2)
  911.  
  912. log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2)
  913.  
  914. switch (get_cvar_num("amx_show_activity"))
  915. {
  916. case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_NICK_2", name, name2, arg2)
  917. case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_NICK_1", name2, arg2)
  918. }
  919. console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)
  920.  
  921. return PLUGIN_HANDLED
  922. }
Advertisement
Add Comment
Please, Sign In to add comment