From: morosophos Date: Thu, 3 Jan 2019 16:48:40 +0000 (+0200) Subject: Add structured event log items about chat messages X-Git-Tag: xonotic-v0.8.5~1668^2~2 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=de06abaaedec22c21cbc6a1b4f69193e513ac930 Add structured event log items about chat messages --- diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 016444495..dc01cb457 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -2929,6 +2929,8 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc MUTATOR_CALLHOOK(ChatMessage, source, ret); ret = M_ARGV(1, int); + string event_log_msg = ""; + if(sourcemsgstr != "" && ret != 0) { if(ret < 0) // faked message, because the player is muted @@ -2955,6 +2957,9 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && CS(it).active_minigame == CS(source).active_minigame && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + // IDK if the following works: + // event_log_msg = sprintf(":chat_team_minigame:%d:%d:%s", source, CS(source).active_minigame, msgin); + } else if(teamsay > 0) // team message, only sent to team mates { @@ -2967,6 +2972,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc if(cmsgstr != "") centerprint(it, cmsgstr); }); + event_log_msg = sprintf(":chat_team:%d:%d:%s", source.playerid, source.team, strreplace("\n", " ", msgin)); } else if(teamsay < 0) // spectator message, only sent to spectators { @@ -2975,6 +2981,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(!(IS_PLAYER(it) || it.caplayer) && IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + event_log_msg = sprintf(":chat_spec:%d:%s", source.playerid, strreplace("\n", " ", msgin)); } else { @@ -2986,9 +2993,14 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + event_log_msg = sprintf(":chat:%d:%s", source.playerid, strreplace("\n", " ", msgin)); } } + if (autocvar_sv_eventlog && (event_log_msg != "")) { + GameLogEcho(event_log_msg); + } + return ret; }