From 85de61ebc893e1cf1f1731c64651a7038cf30de9 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 5 Feb 2024 02:58:46 +0300 Subject: [PATCH] engine: client: fix userid not being written to player info on userinfo change --- engine/client/cl_parse.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 3a1f0cb2..03a3b8bb 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -1382,9 +1382,13 @@ void CL_UpdateUserinfo( sizebuf_t *msg, qboolean legacy ) if( slot >= MAX_CLIENTS ) Host_Error( "CL_ParseServerMessage: svc_updateuserinfo >= MAX_CLIENTS\n" ); + player = &cl.players[slot]; + if( !legacy ) id = MSG_ReadLong( msg ); // unique user ID - player = &cl.players[slot]; + else + id = 0; // bogus + active = MSG_ReadOneBit( msg ) ? true : false; if( active ) @@ -1406,6 +1410,10 @@ void CL_UpdateUserinfo( sizebuf_t *msg, qboolean legacy ) memset( player, 0, sizeof( *player )); } + + // in GoldSrc userinfo might be empty but userid is always sent as separate value + // thus avoids clean up even after client disconnect + player->userid = id; } /*