Advertisement
SirFulgeruL

Untitled

Feb 8th, 2019
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.58 KB | None | 0 0
  1. /* AMX Mod X
  2. * Admin Chat 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. new g_msgChannel
  39.  
  40. #define MAX_CLR 10
  41.  
  42. new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
  43. new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
  44. new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}
  45.  
  46. new amx_show_activity, amx_namegreen;
  47.  
  48. new g_msgSayText
  49.  
  50. public plugin_init()
  51. {
  52. register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
  53. register_dictionary("adminchatgreen.txt")
  54. register_dictionary("common.txt")
  55. register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
  56. register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
  57. register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
  58. register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
  59. register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
  60. register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
  61. register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")
  62.  
  63. amx_show_activity = get_cvar_pointer("amx_show_activity");
  64.  
  65. if (amx_show_activity == 0)
  66. {
  67. amx_show_activity = register_cvar("amx_show_activity", "2");
  68. }
  69.  
  70. amx_namegreen = register_cvar("amx_namegreen", "0");
  71. g_msgSayText = get_user_msgid("SayText");
  72. }
  73.  
  74. public cmdSayChat(id)
  75. {
  76. if (!access(id, ADMIN_CHAT))
  77. {
  78. return PLUGIN_CONTINUE
  79. }
  80.  
  81. new said[6], i = 0
  82. read_argv(1, said, 5)
  83.  
  84. while (said[i] == '@')
  85. {
  86. i++
  87. }
  88.  
  89. new message[192], name[32]
  90. read_args(message, 191)
  91. get_user_name(id, name, 31)
  92. remove_quotes(message)
  93. if (!i || i > 3)
  94. {
  95. if(!(get_pcvar_num(amx_namegreen)) ) return PLUGIN_CONTINUE
  96. new players[32], inum, player
  97. get_players(players, inum)
  98. if(is_user_alive(id))
  99. format(message, 191, "^4%s ^3: ^1%s", name, message)
  100. else
  101. format(message, 191, "^1*DEAD* ^4%s ^3: ^1%s", name, message)
  102. for(new j = 0; j < inum; ++j) {
  103. player = players[j]
  104. ColorChat(player, id, message)
  105. }
  106. return PLUGIN_HANDLED_MAIN
  107. }
  108.  
  109. new a = 0
  110. switch (said[i])
  111. {
  112. case 'r': a = 1
  113. case 'g': a = 2
  114. case 'b': a = 3
  115. case 'y': a = 4
  116. case 'm': a = 5
  117. case 'c': a = 6
  118. case 'o': a = 7
  119. }
  120.  
  121. new n, s = i
  122. if (a)
  123. {
  124. n++
  125. s++
  126. }
  127. while (said[s] && isspace(said[s]))
  128. {
  129. n++
  130. s++
  131. }
  132.  
  133.  
  134. new authid[32], userid
  135.  
  136. get_user_authid(id, authid, 31)
  137. userid = get_user_userid(id)
  138.  
  139. log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
  140. log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
  141.  
  142. if (++g_msgChannel > 6 || g_msgChannel < 3)
  143. {
  144. g_msgChannel = 3
  145. }
  146.  
  147. new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
  148.  
  149. set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)
  150.  
  151. switch ( get_pcvar_num(amx_show_activity) )
  152. {
  153. case 3, 4:
  154. {
  155. new maxpl = get_maxplayers();
  156. for (new pl = 1; pl <= maxpl; pl++)
  157. {
  158. if (is_user_connected(pl) && !is_user_bot(pl))
  159. {
  160. if (is_user_admin(pl))
  161. {
  162. show_hudmessage(pl, "%s : %s", name, message[i + n])
  163. client_print(pl, print_notify, "%s : %s", name, message[i + n])
  164. }
  165. else
  166. {
  167. show_hudmessage(pl, "%s", message[i + n])
  168. client_print(pl, print_notify, "%s", message[i + n])
  169. }
  170. }
  171. }
  172. }
  173. case 2:
  174. {
  175. show_hudmessage(0, "%s : %s", name, message[i + n])
  176. client_print(0, print_notify, "%s : %s", name, message[i + n])
  177. }
  178. default:
  179. {
  180. show_hudmessage(0, "%s", message[i + n])
  181. client_print(0, print_notify, "%s", message[i + n])
  182. }
  183. }
  184. if(a==1) {
  185. client_cmd(0, "spk ^"vox/warning _comma message from administration^"")
  186. }
  187.  
  188. return PLUGIN_HANDLED
  189. }
  190.  
  191. public cmdSayAdmin(id)
  192. {
  193. new said[2]
  194. read_argv(1, said, 1)
  195.  
  196. if (said[0] != '@')
  197. return PLUGIN_CONTINUE
  198.  
  199. new message[192], name[32], authid[32], userid
  200. new players[32], inum, player
  201.  
  202. read_args(message, 191)
  203. remove_quotes(message)
  204. get_user_authid(id, authid, 31)
  205. get_user_name(id, name, 31)
  206. userid = get_user_userid(id)
  207.  
  208. log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
  209. log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
  210.  
  211. if (is_user_admin(id))
  212. // ^1%s = write
  213. format(message, 191, "^1[* ^4%L ^1*] ^3%s ^1: ^1%s", id, "ADMIN", name, message[1])
  214. else
  215. format(message, 191, "^1[* ^3%L ^1*] ^3%s ^1: ^1%s", id, "PLAYER", name, message[1])
  216.  
  217. get_players(players, inum)
  218.  
  219. for (new i = 0; i < inum; ++i)
  220. {
  221. player = players[i]
  222. if (get_user_flags(player) & ADMIN_CHAT || player == id)
  223. {
  224. ColorChat(player, id, message)
  225. }
  226. }
  227. return PLUGIN_HANDLED
  228. }
  229.  
  230. public cmdChat(id, level, cid)
  231. {
  232. if (!cmd_access(id, level, cid, 2))
  233. return PLUGIN_HANDLED
  234.  
  235. new message[192], name[32], players[32], inum, authid[32], userid, player
  236.  
  237. read_args(message, 191)
  238. remove_quotes(message)
  239. get_user_authid(id, authid, 31)
  240. get_user_name(id, name, 31)
  241. userid = get_user_userid(id)
  242. get_players(players, inum)
  243.  
  244. log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
  245. log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
  246.  
  247. format(message, 191, "^4(ADMINS) ^3%s ^4: ^1%s", name, message)
  248. console_print(id, "%s", message)
  249.  
  250. for (new i = 0; i < inum; ++i)
  251. {
  252. player = players[i]
  253. if (access(players[i], ADMIN_CHAT))
  254. {
  255. ColorChat(player, id, message)
  256. }
  257. }
  258. return PLUGIN_HANDLED
  259. }
  260.  
  261. public cmdSay(id, level, cid)
  262. {
  263. if (!cmd_access(id, level, cid, 2))
  264. return PLUGIN_HANDLED
  265.  
  266. new message[192], name[32], authid[32], userid
  267.  
  268. read_args(message, 191)
  269. remove_quotes(message)
  270. get_user_authid(id, authid, 31)
  271. get_user_name(id, name, 31)
  272. userid = get_user_userid(id)
  273.  
  274. console_print(id, "%L", id, "PRINT_ALL", name, message)
  275.  
  276. log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
  277. log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
  278.  
  279. new colored[192]
  280.  
  281.  
  282. new players[32], inum, player
  283. get_players(players, inum)
  284.  
  285. for (new i = 0; i < inum; i++)
  286. {
  287. player = players[i]
  288. switch(get_pcvar_num(amx_show_activity))
  289. {
  290. case 3, 4:
  291. {
  292. if(is_user_admin(player)){
  293. formatex(colored,191,"^1(%L) ^4 ADMIN ^3%s ^1: %s", player, "ALL", name, message)
  294. }else{
  295. formatex(colored,191,"^1(%L) ^4 ADMIN ^1: %s", player, "ALL", message)
  296. }
  297. }
  298. case 2:formatex(colored,191,"^1(%L) ^4 ADMIN ^3%s ^1: %s", player, "ALL", name, message)
  299. default :formatex(colored,191,"^1(%L) ^4 ADMIN ^1: %s", player, "ALL", message)
  300. }
  301. ColorChat(player, id, colored)
  302. }
  303. return PLUGIN_HANDLED
  304. }
  305.  
  306. public cmdPsay(id, level, cid)
  307. {
  308. if (!cmd_access(id, level, cid, 3))
  309. return PLUGIN_HANDLED
  310.  
  311. new name[32]
  312. read_argv(1, name, 31)
  313. new priv = cmd_target(id, name, 0)
  314.  
  315. if (!priv)
  316. return PLUGIN_HANDLED
  317.  
  318. new length = strlen(name) + 1
  319.  
  320. get_user_name(priv, name, 31);
  321.  
  322. new message[192], name2[32], authid[32], authid2[32], userid, userid2
  323.  
  324. get_user_authid(id, authid, 31)
  325. get_user_name(id, name2, 31)
  326. userid = get_user_userid(id)
  327. read_args(message, 191)
  328.  
  329. if (message[0] == '"' && message[length] == '"') // HLSW fix
  330. {
  331. message[0] = ' '
  332. message[length] = ' '
  333. length += 2
  334. }
  335.  
  336. remove_quotes(message[length])
  337. get_user_name(priv, name, 31)
  338. new colored[192]
  339. formatex(colored,191,"^1(^4%s^1) ^4%s ^1: %s", name, name2, message[length])
  340. if (id && id != priv)
  341. {
  342. ColorChat(id, id, colored)
  343. }
  344. ColorChat(priv, id, colored)
  345.  
  346. console_print(id, "(%s) %s : %s", name, name2, message[length])
  347. get_user_authid(priv, authid2, 31)
  348. userid2 = get_user_userid(priv)
  349.  
  350. log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
  351. log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
  352.  
  353. return PLUGIN_HANDLED
  354. }
  355.  
  356. public cmdTsay(id, level, cid)
  357. {
  358. if (!cmd_access(id, level, cid, 3))
  359. return PLUGIN_HANDLED
  360.  
  361. new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0
  362.  
  363. read_argv(0, cmd, 15)
  364. new bool:tsay = (tolower(cmd[4]) == 't')
  365.  
  366. read_args(message, 191)
  367. remove_quotes(message)
  368. parse(message, color, 15)
  369.  
  370. new found = 0, a = 0
  371. new lang[3], langnum = get_langsnum()
  372.  
  373. for (new i = 0; i < MAX_CLR; ++i)
  374. {
  375. for (new j = 0; j < langnum; j++)
  376. {
  377. get_lang(j, lang)
  378. format(color2, 15, "%L", lang, g_Colors[i])
  379.  
  380. if (equali(color, color2))
  381. {
  382. a = i
  383. found = 1
  384. break
  385. }
  386. }
  387. if (found == 1)
  388. break
  389. }
  390.  
  391. new length = found ? (strlen(color) + 1) : 0
  392.  
  393. if (++g_msgChannel > 6 || g_msgChannel < 3)
  394. g_msgChannel = 3
  395.  
  396. new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
  397.  
  398. get_user_authid(id, authid, 31)
  399. get_user_name(id, name, 31)
  400. userid = get_user_userid(id)
  401. set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)
  402.  
  403. switch ( get_pcvar_num(amx_show_activity) )
  404. {
  405. case 3, 4:
  406. {
  407. new maxpl = get_maxplayers();
  408. for (new pl = 1; pl <= maxpl; pl++)
  409. {
  410. if (is_user_connected(pl) && !is_user_bot(pl))
  411. {
  412. if (is_user_admin(pl))
  413. {
  414. show_hudmessage(pl, "%s : %s", name, message[length])
  415. client_print(pl, print_notify, "%s : %s", name, message[length])
  416. }
  417. else
  418. {
  419. show_hudmessage(pl, "%s", message[length])
  420. client_print(pl, print_notify, "%s", message[length])
  421. }
  422. }
  423. }
  424. console_print(id, "%s : %s", name, message[length])
  425. }
  426. case 2:
  427. {
  428. show_hudmessage(0, "%s : %s", name, message[length])
  429. client_print(0, print_notify, "%s : %s", name, message[length])
  430. console_print(id, "%s : %s", name, message[length])
  431. }
  432. default:
  433. {
  434. show_hudmessage(0, "%s", message[length])
  435. client_print(0, print_notify, "%s", message[length])
  436. console_print(id, "%s", message[length])
  437. }
  438. }
  439.  
  440. if(a==1) {
  441. client_cmd(0, "spk ^"vox/warning _period message from administration^"")
  442. }
  443.  
  444. log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
  445. log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)
  446.  
  447. return PLUGIN_HANDLED
  448. }
  449.  
  450. ColorChat(id, iSender, fmt[], any:...)
  451. {
  452. new szMsg[192]
  453. szMsg[0] = 0x04
  454. vformat(szMsg[1], charsmax(szMsg)-1, fmt, 4)
  455.  
  456. if( !iSender )
  457. {
  458. iSender = 1
  459. }
  460.  
  461. message_begin(id ? MSG_ONE : MSG_ALL, g_msgSayText, _, id)
  462. {
  463. write_byte(iSender)
  464. write_string(szMsg)
  465. }
  466. message_end()
  467. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement