diff --git a/src/FiveStack.Commands/Timeout.cs b/src/FiveStack.Commands/Timeout.cs index f43a61b..ba62f07 100644 --- a/src/FiveStack.Commands/Timeout.cs +++ b/src/FiveStack.Commands/Timeout.cs @@ -13,6 +13,12 @@ public partial class FiveStackPlugin ] public void OnPause(CCSPlayerController? player, CommandInfo? command) { + MatchManager? match = _matchService.GetCurrentMatch(); + if (match != null && match.gameEnded) + { + return; + } + _timeoutSystem.RequestPause(player); } @@ -32,6 +38,12 @@ public void OnResume(CCSPlayerController? player, CommandInfo? command) ] public void OnTimeout(CCSPlayerController? player, CommandInfo? command) { + MatchManager? match = _matchService.GetCurrentMatch(); + if (match != null && match.gameEnded) + { + return; + } + _timeoutSystem.CallTacTimeout(player); } } diff --git a/src/FiveStack.Events/GameEnd.cs b/src/FiveStack.Events/GameEnd.cs index d7b03d5..4cad2bb 100644 --- a/src/FiveStack.Events/GameEnd.cs +++ b/src/FiveStack.Events/GameEnd.cs @@ -21,6 +21,8 @@ public HookResult OnGameEnd(EventCsWinPanelMatch @event, GameEventInfo info) return HookResult.Continue; } + match.gameEnded = true; + PublishRoundInformation(); MatchData? matchData = match.GetMatchData(); diff --git a/src/FiveStack.Services/MatchManager.cs b/src/FiveStack.Services/MatchManager.cs index e1daa1f..0460cab 100644 --- a/src/FiveStack.Services/MatchManager.cs +++ b/src/FiveStack.Services/MatchManager.cs @@ -19,6 +19,7 @@ public class MatchManager private MatchData? _matchData; private eMapStatus _currentMapStatus = eMapStatus.Unknown; private Timer? _resumeMessageTimer; + public bool gameEnded = false; private readonly MatchEvents _matchEvents; private readonly GameServer _gameServer; @@ -964,6 +965,8 @@ public void Reset() _currentMapStatus = eMapStatus.Unknown; + gameEnded = false; + readySystem.Reset(); captainSystem.Reset(); knifeSystem.Reset();