]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/client.qc
Figure out how to log minigame chats
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / client.qc
index af05fd79cf023e31ee8e73ce32f5e0eb4feae123..5d90516a518caa72fcace15d6181e8458f53adb7 100644 (file)
@@ -622,7 +622,10 @@ void PutPlayerInServer(entity this)
        this.angles = spot.angles;
        this.angles_z = 0; // never spawn tilted even if the spot says to
        if (IS_BOT_CLIENT(this))
+       {
                this.v_angle = this.angles;
+               bot_aim_reset(this);
+       }
        this.fixangle = true; // turn this way immediately
        this.oldvelocity = this.velocity = '0 0 0';
        this.avelocity = '0 0 0';
@@ -1054,6 +1057,8 @@ string getwelcomemessage(entity this)
        return s;
 }
 
+bool autocvar_sv_qcphysics = false; // TODO this is for testing - remove when qcphysics work
+
 /**
 =============
 ClientConnect
@@ -1146,7 +1151,7 @@ void ClientConnect(entity this)
        if (IS_REAL_CLIENT(this))
                sv_notice_join(this);
 
-       this.move_qcphysics = false;
+       this.move_qcphysics = autocvar_sv_qcphysics;
 
        // update physics stats (players can spawn before physics runs)
        Physics_UpdateStats(this);
@@ -2924,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
@@ -2950,6 +2957,8 @@ 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);
                        });
+                       event_log_msg = sprintf(":chat_minigame:%d:%d:%s", source.playerid, etof(CS(source).active_minigame), msgin);
+
                }
                else if(teamsay > 0) // team message, only sent to team mates
                {
@@ -2962,6 +2971,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
                {
@@ -2970,6 +2980,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
                {
@@ -2981,9 +2992,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;
 }