diff --git a/scripts/zm/main/_zm_reimagined.gsc b/scripts/zm/main/_zm_reimagined.gsc index e9a9be89..339ddefb 100644 --- a/scripts/zm/main/_zm_reimagined.gsc +++ b/scripts/zm/main/_zm_reimagined.gsc @@ -358,6 +358,7 @@ enemy_counter_hud() timer_hud() { + level endon("end_game"); self endon("disconnect"); self thread round_timer_hud(); @@ -375,6 +376,8 @@ timer_hud() timer_hud.hidewheninmenu = 1; timer_hud.label = &"Total: "; + self thread set_time_frozen_on_end_game(timer_hud); + flag_wait( "initial_blackscreen_passed" ); timer_hud.alpha = 1; @@ -385,10 +388,12 @@ timer_hud() } timer_hud setTimerUp(0); + timer_hud.start_time = int(getTime() / 1000); } round_timer_hud() { + level endon("end_game"); self endon("disconnect"); round_timer_hud = newClientHudElem(self); @@ -404,6 +409,8 @@ round_timer_hud() round_timer_hud.hidewheninmenu = 1; round_timer_hud.label = &"Round: "; + self thread set_time_frozen_on_end_game(round_timer_hud); + flag_wait( "initial_blackscreen_passed" ); round_timer_hud.alpha = 1; @@ -416,7 +423,8 @@ round_timer_hud() while (1) { round_timer_hud setTimerUp(0); - start_time = int(getTime() / 1000); + round_timer_hud.start_time = int(getTime() / 1000); + round_timer_hud.end_time = undefined; if ( getDvar( "g_gametype" ) == "zgrief" ) { @@ -427,13 +435,29 @@ round_timer_hud() level waittill( "end_of_round" ); } - end_time = int(getTime() / 1000); - time = end_time - start_time; + round_timer_hud.end_time = int(getTime() / 1000); + time = round_timer_hud.end_time - round_timer_hud.start_time; set_time_frozen(round_timer_hud, time); } } +set_time_frozen_on_end_game(hud) +{ + self endon("disconnect"); + + level waittill("end_game"); + + if(!isDefined(hud.end_time)) + { + hud.end_time = int(getTime() / 1000); + } + + time = hud.end_time - hud.start_time; + + set_time_frozen(hud, time); +} + set_time_frozen(hud, time) { if ( getDvar( "g_gametype" ) == "zgrief" )