diff --git a/Torch.Server/TorchServer.cs b/Torch.Server/TorchServer.cs index 002c496..2797de7 100644 --- a/Torch.Server/TorchServer.cs +++ b/Torch.Server/TorchServer.cs @@ -196,6 +196,7 @@ namespace Torch.Server State = ServerState.Stopped; IsRunning = false; CanRun = true; + SimulationRatio = 0; } /// @@ -244,11 +245,23 @@ namespace Torch.Server if (newState == TorchSessionState.Loaded) { _multiplayerManagerDedicated = CurrentSession.Managers.GetManager(); + _multiplayerManagerDedicated.PlayerJoined += MultiplayerManagerDedicatedOnPlayerJoined; + _multiplayerManagerDedicated.PlayerLeft += MultiplayerManagerDedicatedOnPlayerLeft; CurrentSession.Managers.GetManager().RegisterCommandModule(typeof(WhitelistCommands)); ModCommunication.Register(); } } + private void MultiplayerManagerDedicatedOnPlayerLeft(IPlayer player) + { + OnlinePlayers--; + } + + private void MultiplayerManagerDedicatedOnPlayerJoined(IPlayer player) + { + OnlinePlayers++; + } + /// public override void Init(object gameInstance) { @@ -267,7 +280,6 @@ namespace Torch.Server SimulationRatio = Math.Min(Sync.ServerSimulationRatio, 1); var elapsed = TimeSpan.FromSeconds(Math.Floor(_uptime.Elapsed.TotalSeconds)); ElapsedPlayTime = elapsed; - OnlinePlayers = _multiplayerManagerDedicated?.Players.Count ?? 0; if (_watchdog == null && Config.TickTimeout > 0) {