From 92b92dd3eb08eba76c7a98b4267b21a3a669b977 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Wed, 16 Oct 2019 21:24:30 +0200 Subject: [PATCH] Fix clients being resynched at the wrong gametic --- src/d_clisrv.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 476bb1a1e..3234bc756 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3841,7 +3841,7 @@ static void HandlePacketFromPlayer(SINT8 node) break; // Ignore tics from those not synched - if (resynch_inprogress[node]) + if (resynch_inprogress[node] && nettics[node] == gametic) break; // To save bytes, only the low byte of tic numbers are sent @@ -4699,7 +4699,7 @@ void TryRunTics(tic_t realtics) if (player_joining) return; - if (neededtic > gametic) + if (neededtic > gametic && !resynch_local_inprogress) { if (advancedemo) D_StartTitle(); @@ -4853,8 +4853,13 @@ void NetUpdate(void) for (i = 0; i < MAXNETNODES; ++i) if (resynch_inprogress[i]) { - SV_SendResynch(i); - counts = -666; + if (!nodeingame[i] || nettics[i] == gametic) + { + SV_SendResynch(i); + counts = -666; + } + else + counts = 0; // Let the client catch up with the server } // Do not make tics while resynching