Merge pull request #73 from TorchAPI/dedi-issue-69
Multiplayer Authentication Hook Removal
This commit is contained in:
@@ -203,19 +203,23 @@ namespace Torch.Managers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static void RemoveHandlers()
|
private static void RemoveHandlers()
|
||||||
{
|
{
|
||||||
var eventField = typeof(GameServer).GetField("<backing_store>ValidateAuthTicketResponse", BindingFlags.NonPublic | BindingFlags.Instance);
|
var eventField = typeof(GameServer).GetField("<backing_store>" + nameof(SteamServerAPI.Instance.GameServer.ValidateAuthTicketResponse), BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
if (eventField?.GetValue(SteamServerAPI.Instance.GameServer) is MulticastDelegate eventDel)
|
if (eventField?.GetValue(SteamServerAPI.Instance.GameServer) is MulticastDelegate eventDel)
|
||||||
{
|
{
|
||||||
foreach (var handle in eventDel.GetInvocationList())
|
foreach (var handle in eventDel.GetInvocationList())
|
||||||
{
|
{
|
||||||
if (handle.Method.Name == "GameServer_ValidateAuthTicketResponse")
|
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");
|
Log.Debug("Removed GameServer_ValidateAuthTicketResponse");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
eventField = typeof(GameServer).GetField("<backing_store>UserGroupStatus", BindingFlags.NonPublic | BindingFlags.Instance);
|
else
|
||||||
|
Log.Warn("Unable to unhook GameServer_ValidateAuthTicketResponse from the ValidateAuthTicketResponse event");
|
||||||
|
|
||||||
|
eventField = typeof(GameServer).GetField("<backing_store>" + nameof(SteamServerAPI.Instance.GameServer.UserGroupStatus), BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
eventDel = eventField?.GetValue(SteamServerAPI.Instance.GameServer) as MulticastDelegate;
|
eventDel = eventField?.GetValue(SteamServerAPI.Instance.GameServer) as MulticastDelegate;
|
||||||
if (eventDel != null)
|
if (eventDel != null)
|
||||||
{
|
{
|
||||||
@@ -227,7 +231,8 @@ namespace Torch.Managers
|
|||||||
Log.Debug("Removed GameServer_UserGroupStatus");
|
Log.Debug("Removed GameServer_UserGroupStatus");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
|
Log.Warn("Unable to unhook GameServer_UserGroupStatus from the UserGroupStatusResponse event");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Largely copied from SE
|
//Largely copied from SE
|
||||||
@@ -337,7 +342,6 @@ namespace Torch.Managers
|
|||||||
|
|
||||||
private void UserAccepted(ulong steamId)
|
private void UserAccepted(ulong steamId)
|
||||||
{
|
{
|
||||||
_members.Remove(steamId);
|
|
||||||
typeof(MyDedicatedServerBase).GetMethod("UserAccepted", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(MyMultiplayer.Static, new object[] {steamId});
|
typeof(MyDedicatedServerBase).GetMethod("UserAccepted", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(MyMultiplayer.Static, new object[] {steamId});
|
||||||
var vm = new PlayerViewModel(steamId) {State = ConnectionState.Connected};
|
var vm = new PlayerViewModel(steamId) {State = ConnectionState.Connected};
|
||||||
Log.Info($"Player {vm.Name} joined ({vm.SteamId})");
|
Log.Info($"Player {vm.Name} joined ({vm.SteamId})");
|
||||||
|
Reference in New Issue
Block a user