Advertisement
Guest User

logger

a guest
Apr 19th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. /* Chat Logger v2.1a
  2. Author: Jim (jim_yang @ AlliedModders Forum)
  3. Credit: aligind4h0us3 for the idea, suggestion and test.
  4. Cheap_Suit
  5. Amx Mod X Team for Adminchat plugin.
  6.  
  7. Description: It logs messages of say(@|@@|@@@), say_team(@), amx_say, amx_chat, amx_psay, amx_csay, amx_tsay
  8. Install: put this plugin above adminchat.amxx in amxxdir\configs\plugins.ini
  9. Cvar: cl_logmode 0 log chat messages to ChatLog.htm in amxxdir\logs\
  10. 1 log chat messages(by date)to XXXX.XX.XX.htm in amxxdir\logs\
  11. XXXX.XX.XX is the date.
  12. default is 1.
  13. */
  14.  
  15. #include <amxmodx>
  16. #include <amxmisc>
  17. #include <cstrike>
  18.  
  19. #define MAXLEN 511
  20. #define TITLE "<h2 align=center>Chat Logger</h2><hr>"
  21. #define FONT "<font face=^"Verdana^" size=2>"
  22. static FilePath[49]
  23. new g_cvarlogmode
  24. new g_adminchatID
  25. new const HUDPOS[4][] = {"", "HUDCHAT", "HUDCENTER", "HUDBOTTOM"}
  26. new const TEAMCOLOR[_:CsTeams][] = {"gray", "red", "blue", "gray"}
  27. new const TEAMNAME[_:CsTeams][] = {"*DEAD*", "(Terrorist) ", "(Counter-Terrorist) ", "*SPEC*"}
  28.  
  29. public plugin_init()
  30. {
  31. register_plugin("Chat Logger", "2.1a", "Jim")
  32. g_cvarlogmode = register_cvar("cl_logmode", "1")
  33. register_clcmd("say", "logtext")
  34. register_clcmd("say_team", "logtext")
  35. register_concmd("amx_say", "logtext")
  36. register_concmd("amx_chat", "logtext")
  37. register_concmd("amx_psay", "logtext")
  38. register_concmd("amx_tsay", "logtext")
  39. register_concmd("amx_csay", "logtext")
  40. get_localinfo("amxx_logs", FilePath, 48)
  41. }
  42.  
  43. public plugin_cfg()
  44. {
  45. g_adminchatID = is_plugin_loaded("Admin Chat")
  46. }
  47.  
  48. public logtext(id)
  49. {
  50. if(is_user_bot(id)) return
  51.  
  52. new bool:IsAdminChatRunning = false
  53. if(g_adminchatID != -1)
  54. {
  55. new tmp[1], status[2]
  56. get_plugin(g_adminchatID,tmp,0,tmp,0,tmp,0,tmp,0,status,1)
  57. if(status[0] == 0x72)
  58. IsAdminChatRunning = true
  59. }
  60.  
  61. static datestr[11], LogFile[65]
  62. new timestr[9], authid[32], ip[16], cmd[9], logmsg[MAXLEN + 1]
  63. new pos = 0, ufg = get_user_flags(id) & ADMIN_CHAT
  64.  
  65. get_time("%Y.%m.%d", datestr, 10)
  66. get_time("%H:%M:%S", timestr, 8)
  67. get_user_authid(id, authid, 31)
  68. get_user_ip(id, ip, 15, 1)
  69.  
  70. if(get_pcvar_num(g_cvarlogmode))
  71. {
  72. formatex(LogFile, 64, "%s/%s.htm", FilePath, datestr)
  73. if(!file_exists(LogFile))
  74. {
  75. new title[80]
  76. formatex(title, 79, "<title>Chat Logger - %s</title>%s", datestr, TITLE)
  77. write_file(LogFile, title)
  78. write_file(LogFile, FONT)
  79. }
  80. formatex(logmsg, MAXLEN, "<meta charset=UTF-8>%s &lt;%s&gt;&lt;%s&gt;", timestr, authid, ip)
  81. }
  82. else
  83. {
  84. formatex(LogFile, 64, "%s/ChatLog.htm", FilePath)
  85. if(!file_exists(LogFile))
  86. {
  87. write_file(LogFile, "<title>Chat Logger</title>")
  88. write_file(LogFile, TITLE)
  89. write_file(LogFile, FONT)
  90. }
  91. formatex(logmsg, MAXLEN, "<meta charset=UTF-8>%s - %s &lt;%s&gt;&lt;%s&gt;", datestr, timestr, authid, ip)
  92. }
  93.  
  94. read_argv(0, cmd, 8)
  95. if(cmd[0] == 0x61)
  96. {
  97. if(!IsAdminChatRunning || !ufg) return
  98.  
  99. formatex(logmsg, MAXLEN, "%s <font color=purple>", logmsg)
  100. if(cmd[5] == 0x68)
  101. formatex(logmsg, MAXLEN, "%s(ADMINS) ", logmsg)
  102. else
  103. {
  104. switch(cmd[4])
  105. {
  106. case 0x73: formatex(logmsg, MAXLEN, "%s(ALL) ", logmsg)
  107. case 0x74: formatex(logmsg, MAXLEN, "%s(HUDCHAT) ", logmsg)
  108. case 0x63: formatex(logmsg, MAXLEN, "%s(HUDCENTER) ", logmsg)
  109. case 0x70:
  110. {
  111. new priv, pname[32]
  112. read_argv(1, pname, 31)
  113. pos = strlen(pname) + 1
  114. priv = cmd_target(id, pname, 0)
  115. if(!priv)
  116. return
  117. get_user_name(priv, pname, 31)
  118. CheckPlayerName(pname)
  119. formatex(logmsg, MAXLEN, "%s(%s) ", logmsg, pname)
  120. }
  121. }
  122. }
  123. }
  124. else
  125. {
  126. new a = 0, at[5]
  127. read_argv(1, at, 4)
  128. while(at[a] == 0x40)
  129. a++
  130. if(IsAdminChatRunning && a && cmd[3])
  131. {
  132. pos = 1
  133. formatex(logmsg, MAXLEN, "%s <font color=teal>(%s) ", logmsg, is_user_admin(id) ? "ADMIN" : "PLAYER")
  134. }
  135. else if(IsAdminChatRunning && 0 < a < 4 && !cmd[3] && ufg)
  136. {
  137. pos = IsColorLetter(at[a]) ? a + 1 : a
  138. formatex(logmsg, MAXLEN, "%s <font color=purple>(%s) ", logmsg, HUDPOS[a])
  139. }
  140. else
  141. {
  142. if(!is_user_connected(id)) return
  143. new CsTeams:team = cs_get_user_team(id)
  144. formatex(logmsg, MAXLEN, "%s <font color=%s>", logmsg, TEAMCOLOR[_:team])
  145. switch(team)
  146. {
  147. case 1, 2:
  148. {
  149. if(!is_user_alive(id))
  150. formatex(logmsg, MAXLEN, "%s*DEAD*", logmsg)
  151. if(cmd[3])
  152. formatex(logmsg, MAXLEN, "%s%s", logmsg, TEAMNAME[_:team])
  153. }
  154. case 0, 3: formatex(logmsg, MAXLEN, "%s%s", logmsg, TEAMNAME[_:team])
  155. }
  156. }
  157. }
  158.  
  159. new name[32], said[192]
  160. get_user_name(id, name, 31)
  161. CheckPlayerName(name)
  162. read_args(said, 191)
  163. remove_quotes(said)
  164. replace_all(said, 191, "<", "&lt;")
  165. replace_all(said, 191, ">", "&gt;")
  166. formatex(logmsg, MAXLEN, "%s%s</font> : <font color=green>%s</font><br>", logmsg, name, said[pos])
  167. write_file(LogFile, logmsg)
  168. }
  169.  
  170. CheckPlayerName(name[])
  171. {
  172. new i = 0, c
  173. while((c = name[i]))
  174. {
  175. switch(c)
  176. {
  177. case 0x3C: name[i] = 0x5B
  178. case 0x3E: name[i] = 0x5D
  179. }
  180. i++
  181. }
  182. }
  183.  
  184. bool:IsColorLetter(c)
  185. {
  186. switch(c)
  187. {
  188. case 0x72,0x67,0x62,0x79,0x6D,0x63,0x6F: return true
  189. default: return false
  190. }
  191. return false
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement