new const HUDPOS[4][] = {"", "HUDCHAT", "HUDCENTER", "HUDBOTTOM"}
new const TEAMCOLOR[_:CsTeams][] = {"gray", "red", "blue", "gray"}
new const TEAMNAME[_:CsTeams][] = {"*DEAD*", "(Terrorist) ", "(Counter-Terrorist) ", "*SPEC*"}
new g_cvarlog_authid,g_cvarlog_ip,len
register_plugin("Chat Logger", "2.1a", "Jim")
g_cvarlogmode = register_cvar("cl_logmode", "1")
g_cvarlog_authid = register_cvar("cl_log_authid", "1")
g_cvarlog_ip = register_cvar("cl_log_ip", "1")
register_clcmd("say", "logtext")
register_clcmd("say_team", "logtext")
register_concmd("amx_say", "logtext")
register_concmd("amx_chat", "logtext")
register_concmd("amx_psay", "logtext")
register_concmd("amx_tsay", "logtext")
register_concmd("amx_csay", "logtext")
get_localinfo("amxx_logs", FilePath, 48)
g_adminchatID = is_plugin_loaded("Admin Chat")
if(is_user_bot(id)) return
new bool:IsAdminChatRunning = false
get_plugin(g_adminchatID,tmp,0,tmp,0,tmp,0,tmp,0,status,1)
IsAdminChatRunning = true
static datestr[11], LogFile[65]
new timestr[9], authid[32], ip[16], cmd[9], logmsg[MAXLEN + 1]
new pos = 0, ufg = get_user_flags(id) & ADMIN_CHAT
get_time("%Y.%m.%d", datestr, 10)
get_time("%H:%M:%S", timestr, 8)
if(get_pcvar_num(g_cvarlogmode))
formatex(LogFile, 64, "%s/%s.htm", FilePath, datestr)
if(!file_exists(LogFile))
formatex(title, 79, "<title>Chat Logger - %s</title>%s", datestr, TITLE)
write_file(LogFile, title)
write_file(LogFile, FONT)
len=format(logmsg, MAXLEN, "%s", timestr)
formatex(LogFile, 64, "%s/ChatLog.htm", FilePath)
if(!file_exists(LogFile))
write_file(LogFile, "<title>Chat Logger</title>")
write_file(LogFile, TITLE)
write_file(LogFile, FONT)
len=format(logmsg, MAXLEN, "%s - %s", datestr, timestr)
if (get_pcvar_num(g_cvarlog_authid) || get_pcvar_num(g_cvarlog_ip)) len+=format(logmsg[len], MAXLEN, " ")
if (get_pcvar_num(g_cvarlog_authid)) {
get_user_authid(id, authid, 31)
len+=format(logmsg[len], MAXLEN, "<%s>",authid)
if (get_pcvar_num(g_cvarlog_ip)) {
get_user_ip(id, ip, 15, 1)
len+=format(logmsg[len], MAXLEN, "<%s>",ip)
if(!IsAdminChatRunning || !ufg) return
formatex(logmsg, MAXLEN, "%s <font color=purple>", logmsg)
formatex(logmsg, MAXLEN, "%s(ADMINS) ", logmsg)
case 0x73: formatex(logmsg, MAXLEN, "%s(ALL) ", logmsg)
case 0x74: formatex(logmsg, MAXLEN, "%s(HUDCHAT) ", logmsg)
case 0x63: formatex(logmsg, MAXLEN, "%s(HUDCENTER) ", logmsg)
priv = cmd_target(id, pname, 0)
get_user_name(priv, pname, 31)
formatex(logmsg, MAXLEN, "%s(%s) ", logmsg, pname)
if(IsAdminChatRunning && a && cmd[3])
formatex(logmsg, MAXLEN, "%s <font color=teal>(%s) ", logmsg, is_user_admin(id) ? "ADMIN" : "PLAYER")
else if(IsAdminChatRunning && 0 < a < 4 && !cmd[3] && ufg)
pos = IsColorLetter(at[a]) ? a + 1 : a
formatex(logmsg, MAXLEN, "%s <font color=purple>(%s) ", logmsg, HUDPOS[a])
if(!is_user_connected(id)) return
new CsTeams:team = cs_get_user_team(id)
formatex(logmsg, MAXLEN, "%s <font color=%s>", logmsg, TEAMCOLOR[_:team])
formatex(logmsg, MAXLEN, "%s*DEAD*", logmsg)
formatex(logmsg, MAXLEN, "%s%s", logmsg, TEAMNAME[_:team])
case 0, 3: formatex(logmsg, MAXLEN, "%s%s", logmsg, TEAMNAME[_:team])
get_user_name(id, name, 31)
replace_all(said, 191, "<", "<")
replace_all(said, 191, ">", ">")
formatex(logmsg, MAXLEN, "%s%s</font> : <font color=green>%s</font><br>", logmsg, name, said[pos])
write_file(LogFile, logmsg)
case 0x3C: name[i] = 0x5B
case 0x3E: name[i] = 0x5D
case 0x72,0x67,0x62,0x79,0x6D,0x63,0x6F: return true