HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4.  
  5. #define FILE_NAME "ccp_file.ini"
  6.  
  7. new configsDir[64]
  8. new prefix[33] = {0,...}
  9. new SzSayText, SzMaxPlayers
  10. new CsTeams:g_team
  11.  
  12. new const say_info[2][CsTeams][] =
  13. {
  14. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  15. {"", "", "", ""}
  16. }
  17.  
  18. new const sayteam_info[2][CsTeams][] =
  19. {
  20. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  21. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  22. }
  23.  
  24. public plugin_init()
  25. {
  26. register_plugin("[RaZzoR PLUGIN] Custom Chat Prefixes", "1.0", "RaZzoR")
  27. register_clcmd("say", "hook_say")
  28. register_clcmd("say_team", "hook_say_team")
  29.  
  30. register_concmd("ccp_add_prefix", "add_prefix", ADMIN_BAN, "<prefix_szine> <nev_szine> <uzenet_szine> <[prefix]> <jog/steam_id/ip/nev>")
  31.  
  32. get_configsdir(configsDir, 63)
  33. format(configsDir, 63, "%s/%s", configsDir, FILE_NAME)
  34.  
  35. SzSayText = get_user_msgid("SayText")
  36. SzMaxPlayers = get_maxplayers()
  37. register_message(SzSayText, "MsgDuplicate")
  38. }
  39.  
  40. public MsgDuplicate(id){ return PLUGIN_HANDLED; }
  41.  
  42. public client_putinserver(id)
  43. prefix[id] = 0
  44.  
  45. public client_disconnect(id)
  46. prefix[id] = 0
  47.  
  48. public hook_say(id)
  49. {
  50. new SzMessages[192], SzPrefix[192], SzName[192], SzText[192]
  51. new line = 0
  52. new linetext[255], linetextlength
  53. new message_color[32], prefix_color[32], name_color[32], prefix[32], mode[32], steamid[32], name[32], ip[32]
  54.  
  55. g_team = cs_get_user_team(id)
  56.  
  57. get_user_authid(id, steamid, 31)
  58. get_user_name(id, name, 31)
  59. get_user_ip(id, ip, 31, 1)
  60.  
  61. read_args(SzMessages, 191)
  62. remove_quotes(SzMessages)
  63.  
  64. if(equal(SzMessages, "") || !is_user_connected(id))
  65. return PLUGIN_CONTINUE
  66.  
  67. if(file_exists(configsDir))
  68. {
  69. while((line = read_file(configsDir, line, linetext, 256, linetextlength)))
  70. {
  71. if(linetext[0] == ';')
  72. continue
  73.  
  74. parse(linetext, prefix_color, 31, name_color, 31, message_color, 31, prefix, 31, mode, 31)
  75.  
  76. if(get_user_flags(id) & read_flags(mode) || (equal(mode, ip)) || (equal(mode, steamid)) || (equal(mode, name)))
  77. {
  78. if(equal(prefix_color, "green"))
  79. format(SzPrefix, 191, "^1%s^4%s", say_info[is_user_alive(id)][g_team], prefix)
  80.  
  81. else if(equal(prefix_color, "team"))
  82. format(SzPrefix, 191, "^1%s^3%s", say_info[is_user_alive(id)][g_team], prefix)
  83.  
  84. else if(equal(prefix_color, "def"))
  85. format(SzPrefix, 191, "^1%s^1%s", say_info[is_user_alive(id)][g_team], prefix)
  86.  
  87.  
  88. if(equal(name_color, "green"))
  89. format(SzName, 191, "^4%s", name)
  90.  
  91. else if(equal(name_color, "team"))
  92. format(SzName, 191, "^3%s", name)
  93.  
  94. else if(equal(name_color, "def"))
  95. format(SzName, 191, "^1%s", name)
  96.  
  97.  
  98. if(equal(message_color, "green"))
  99. format(SzText, 191, "^4%s", SzMessages)
  100.  
  101. else if(equal(message_color, "team"))
  102. format(SzText, 191, "^3%s", SzMessages)
  103.  
  104. else if(equal(message_color, "def"))
  105. format(SzText, 191, "^1%s", SzMessages)
  106.  
  107. format(SzMessages, 191, "%s %s ^1: %s", SzPrefix, SzName, SzText)
  108.  
  109. prefix[id] = 1
  110. }
  111. }
  112. }
  113.  
  114. if(prefix[id] < 1)
  115. format(SzMessages, 191, "^1%s^3%s ^1: ^1%s", say_info[is_user_alive(id)][g_team], name, SzMessages)
  116.  
  117. for(new i = 1; i <= SzMaxPlayers; i++)
  118. {
  119. if(!is_user_connected(i))
  120. continue
  121.  
  122. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
  123. {
  124. message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i)
  125. write_byte(id)
  126. write_string(SzMessages)
  127. message_end()
  128. }
  129. }
  130.  
  131. return PLUGIN_CONTINUE
  132. }
  133.  
  134. public hook_say_team(id)
  135. {
  136. new SzMessages[192], SzPrefix[192], SzName[192], SzText[192]
  137. new line = 0
  138. new linetext[255], linetextlength
  139. new message_color[32], prefix_color[32], name_color[32], prefix[32], mode[32], steamid[32], name[32], ip[32]
  140.  
  141. g_team = cs_get_user_team(id)
  142.  
  143. get_user_authid(id, steamid, 31)
  144. get_user_name(id, name, 31)
  145. get_user_ip(id, ip, 31, 1)
  146.  
  147. read_args(SzMessages, 191)
  148. remove_quotes(SzMessages)
  149.  
  150. if(equal(SzMessages, "") || !is_user_connected(id))
  151. return PLUGIN_CONTINUE
  152.  
  153. if(file_exists(configsDir))
  154. {
  155. while((line = read_file(configsDir, line, linetext, 256, linetextlength)))
  156. {
  157. if(linetext[0] == ';')
  158. continue
  159.  
  160. parse(linetext, prefix_color, 31, name_color, 31, message_color, 31, prefix, 31, mode, 31)
  161.  
  162. if(get_user_flags(id) & read_flags(mode) || (equal(mode, ip)) || (equal(mode, steamid)) || (equal(mode, name)))
  163. {
  164. if(equal(prefix_color, "green"))
  165. format(SzPrefix, 191, "^1%s^4%s", sayteam_info[is_user_alive(id)][g_team], prefix)
  166.  
  167. else if(equal(prefix_color, "team"))
  168. format(SzPrefix, 191, "^1%s^3%s", sayteam_info[is_user_alive(id)][g_team], prefix)
  169.  
  170. else if(equal(prefix_color, "def"))
  171. format(SzPrefix, 191, "^1%s^1%s", sayteam_info[is_user_alive(id)][g_team], prefix)
  172.  
  173.  
  174. if(equal(name_color, "green"))
  175. format(SzName, 191, "^4%s", name)
  176.  
  177. else if(equal(name_color, "team"))
  178. format(SzName, 191, "^3%s", name)
  179.  
  180. else if(equal(name_color, "def"))
  181. format(SzName, 191, "^1%s", name)
  182.  
  183.  
  184. if(equal(message_color, "green"))
  185. format(SzText, 191, "^4%s", SzMessages)
  186.  
  187. else if(equal(message_color, "team"))
  188. format(SzText, 191, "^3%s", SzMessages)
  189.  
  190. else if(equal(message_color, "def"))
  191. format(SzText, 191, "^1%s", SzMessages)
  192.  
  193. format(SzMessages, 191, "%s %s ^1: %s", SzPrefix, SzName, SzText)
  194.  
  195. prefix[id] = 1
  196. }
  197. }
  198. }
  199.  
  200. if(prefix[id] < 1)
  201. format(SzMessages, 191, "^1%s^3%s ^1: ^1%s", sayteam_info[is_user_alive(id)][g_team], name, SzMessages)
  202.  
  203. for(new i = 1; i <= SzMaxPlayers; i++)
  204. {
  205. if(!is_user_connected(i))
  206. continue
  207.  
  208. if(get_user_team(i) != get_user_team(id))
  209. continue
  210.  
  211. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
  212. {
  213. message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i)
  214. write_byte(id)
  215. write_string(SzMessages)
  216. message_end()
  217. }
  218. }
  219.  
  220. return PLUGIN_CONTINUE
  221. }
  222.  
  223. public add_prefix(id, level, cid)
  224. {
  225. if(!cmd_access(id, level, cid, 2))
  226. return PLUGIN_CONTINUE
  227.  
  228. new arg_name_c[32], arg_prefix_c[32], arg_message_c[32], arg_prefix[32], arg_mode[32]
  229. new Buffer[256]
  230.  
  231. read_argv(1, arg_name_c, 31)
  232. read_argv(2, arg_prefix_c, 31)
  233. read_argv(3, arg_message_c, 31)
  234. read_argv(4, arg_prefix, 31)
  235. read_argv(5, arg_mode, 31)
  236.  
  237. format(Buffer, sizeof Buffer - 1, "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"^n", arg_name_c, arg_prefix_c, arg_message_c, arg_prefix, arg_mode)
  238.  
  239. new file = fopen(configsDir, "at+")
  240. fprintf(file, Buffer)
  241. fclose(file)
  242.  
  243. return PLUGIN_CONTINUE
  244. }