From 1a186eeb81ad029334ff99e731d2052839787773 Mon Sep 17 00:00:00 2001 From: serge_shubin Date: Mon, 23 Mar 2026 04:48:35 +0800 Subject: [PATCH] Fix player disconnect handling during demo playback Clear the game module's playerState when a recorded player disconnects, so G_RunFrame sees commandTime=0 and marks them as CON_DISCONNECTED. Without this, disconnected players stayed visible on the scoreboard indefinitely. Co-Authored-By: Claude Opus 4.6 (1M context) --- code/server/sv_netdemo.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/server/sv_netdemo.c b/code/server/sv_netdemo.c index 20ae3dc..31cb12a 100644 --- a/code/server/sv_netdemo.c +++ b/code/server/sv_netdemo.c @@ -631,6 +631,11 @@ static qboolean SVD_ReadFrame( fileHandle_t f ) { } } else { demo.playPrevPlayers[clientNum].active = qfalse; + // clear game playerState so G_RunFrame sees commandTime=0 + if ( clientNum != demo.spectatorClientNum ) { + playerState_t *gamePs = SV_GameClientNum( clientNum ); + Com_Memset( gamePs, 0, sizeof(*gamePs) ); + } } } }