diff --git a/Torch/Managers/MultiplayerManager.cs b/Torch/Managers/MultiplayerManager.cs index bc53dc8..bdd5d44 100644 --- a/Torch/Managers/MultiplayerManager.cs +++ b/Torch/Managers/MultiplayerManager.cs @@ -203,19 +203,23 @@ namespace Torch.Managers /// private static void RemoveHandlers() { - var eventField = typeof(GameServer).GetField("ValidateAuthTicketResponse", BindingFlags.NonPublic | BindingFlags.Instance); + var eventField = typeof(GameServer).GetField("" + nameof(SteamServerAPI.Instance.GameServer.ValidateAuthTicketResponse), BindingFlags.NonPublic | BindingFlags.Instance); if (eventField?.GetValue(SteamServerAPI.Instance.GameServer) is MulticastDelegate eventDel) { foreach (var handle in eventDel.GetInvocationList()) { if (handle.Method.Name == "GameServer_ValidateAuthTicketResponse") { - SteamServerAPI.Instance.GameServer.ValidateAuthTicketResponse -= handle as ValidateAuthTicketResponse; + SteamServerAPI.Instance.GameServer.ValidateAuthTicketResponse -= + handle as ValidateAuthTicketResponse; Log.Debug("Removed GameServer_ValidateAuthTicketResponse"); } } } - eventField = typeof(GameServer).GetField("UserGroupStatus", BindingFlags.NonPublic | BindingFlags.Instance); + else + Log.Warn("Unable to unhook GameServer_ValidateAuthTicketResponse from the ValidateAuthTicketResponse event"); + + eventField = typeof(GameServer).GetField("" + nameof(SteamServerAPI.Instance.GameServer.UserGroupStatus), BindingFlags.NonPublic | BindingFlags.Instance); eventDel = eventField?.GetValue(SteamServerAPI.Instance.GameServer) as MulticastDelegate; if (eventDel != null) { @@ -227,7 +231,8 @@ namespace Torch.Managers Log.Debug("Removed GameServer_UserGroupStatus"); } } - } + } else + Log.Warn("Unable to unhook GameServer_UserGroupStatus from the UserGroupStatusResponse event"); } //Largely copied from SE @@ -337,7 +342,6 @@ namespace Torch.Managers private void UserAccepted(ulong steamId) { - _members.Remove(steamId); typeof(MyDedicatedServerBase).GetMethod("UserAccepted", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(MyMultiplayer.Static, new object[] {steamId}); var vm = new PlayerViewModel(steamId) {State = ConnectionState.Connected}; Log.Info($"Player {vm.Name} joined ({vm.SteamId})");