From 447cf893afdb71aa6b33bbe9c277da4dcc8292da Mon Sep 17 00:00:00 2001 From: D1GQ Date: Wed, 18 Sep 2024 23:53:09 -0500 Subject: [PATCH] Slowly adding TOHE support --- Modules/RPC.cs | 122 ++++++++++++++++++------------------ Patches/PingTrackerPatch.cs | 2 + 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/Modules/RPC.cs b/Modules/RPC.cs index c1233d0..44075d8 100644 --- a/Modules/RPC.cs +++ b/Modules/RPC.cs @@ -153,72 +153,74 @@ internal static class RPC { if (player == null || player.IsLocalPlayer() || player.Data == null) return; + if (Enum.IsDefined(typeof(CustomRPC), (int)unchecked(callId))) + { + MessageReader reader = MessageReader.Get(oldReader); + + switch (callId) + { + case (byte)CustomRPC.BetterCheck: + { + var SetBetterUser = reader.ReadBoolean(); + var IsBetterHost = reader.ReadBoolean(); + var Signature = reader.ReadString(); + var Version = reader.ReadString(); + var IsVerified = Signature == Main.modSignature; + if (!player.IsHost() && IsBetterHost) + { + BetterNotificationManager.NotifyCheat(player, $"Invalid Action RPC: {Enum.GetName((CustomRPC)callId)} called as BetterHost"); + break; + } + + if (string.IsNullOrEmpty(Signature) || string.IsNullOrEmpty(Version)) + { + BetterNotificationManager.NotifyCheat(player, $"Invalid Action RPC: {Enum.GetName((CustomRPC)callId)} called with invalid info"); + break; + } + + player.BetterData().IsBetterUser = SetBetterUser; + player.BetterData().IsBetterHost = IsBetterHost; + + if (IsVerified) + { + player.BetterData().IsVerifiedBetterUser = true; + } + + Logger.Log($"Received better user RPC from: {player.Data.PlayerName}:{player.Data.FriendCode}:{Utils.GetHashPuid(player)} - " + + $"BetterUser: {SetBetterUser} - " + + $"BetterHost: {IsBetterHost} - " + + $"Version: {Version} - " + + $"Verified: {IsVerified} - " + + $"Signature: {Signature}"); + + SyncAllNames(force: true); + } + break; + /* + case (byte)CustomRPC.VersionCheck or (byte)CustomRPC.RequestRetryVersionCheck: + if (player.IsHost()) + { + player.BetterData().IsTOHEHost = true; + } + break; + */ + } + } + try { - var flag = Enum.IsDefined(typeof(CustomRPC), (int)callId) || Enum.IsDefined(typeof(RpcCalls), callId); - - if (!flag && player.IsHost()) + if (!GameStates.IsTOHEHostLobby) { - var BAU = "♻BetterAmongUs♻"; - Utils.DisconnectSelf($"{BAU} does not support\nModded Lobbies!"); + var flag = Enum.IsDefined(typeof(CustomRPC), (int)callId) || Enum.IsDefined(typeof(RpcCalls), callId); + + if (!flag && player.IsHost()) + { + var BAU = "♻BetterAmongUs♻"; + Utils.DisconnectSelf($"{BAU} does not support\nModded Lobbies!"); + } } } catch { } - - if (!Enum.IsDefined(typeof(CustomRPC), (int)unchecked(callId))) return; - - MessageReader reader = MessageReader.Get(oldReader); - - switch (callId) - { - case (byte)CustomRPC.BetterCheck: - { - var SetBetterUser = reader.ReadBoolean(); - var IsBetterHost = reader.ReadBoolean(); - var Signature = reader.ReadString(); - var Version = reader.ReadString(); - var IsVerified = Signature == Main.modSignature; - if (!player.IsHost() && IsBetterHost) - { - BetterNotificationManager.NotifyCheat(player, $"Invalid Action RPC: {Enum.GetName((CustomRPC)callId)} called as BetterHost"); - break; - } - - if (string.IsNullOrEmpty(Signature) || string.IsNullOrEmpty(Version)) - { - BetterNotificationManager.NotifyCheat(player, $"Invalid Action RPC: {Enum.GetName((CustomRPC)callId)} called with invalid info"); - break; - } - - player.BetterData().IsBetterUser = SetBetterUser; - player.BetterData().IsBetterHost = IsBetterHost; - - if (IsVerified) - { - player.BetterData().IsVerifiedBetterUser = true; - } - - Logger.Log($"Received better user RPC from: {player.Data.PlayerName}:{player.Data.FriendCode}:{Utils.GetHashPuid(player)} - " + - $"BetterUser: {SetBetterUser} - " + - $"BetterHost: {IsBetterHost} - " + - $"Version: {Version} - " + - $"Verified: {IsVerified} - " + - $"Signature: {Signature}"); - - SyncAllNames(force: true); - } - break; - /* - case (byte)CustomRPC.VersionCheck or (byte)CustomRPC.RequestRetryVersionCheck: - if (player.IsHost()) - { - player.BetterData().IsTOHEHost = true; - var BAU = "♻BetterAmongUs♻"; - Utils.DisconnectSelf($"{BAU} does not support TOHE"); - } - break; - */ - } } public static void HandleRPC(PlayerControl player, byte callId, MessageReader oldReader) diff --git a/Patches/PingTrackerPatch.cs b/Patches/PingTrackerPatch.cs index b2e45a6..1dd634b 100644 --- a/Patches/PingTrackerPatch.cs +++ b/Patches/PingTrackerPatch.cs @@ -34,6 +34,8 @@ public class PingTrackerPatch sb.Append("By The Enhanced Network\n"); // sb.Append($"{Main.Github}\n"); + if (GameStates.IsTOHEHostLobby) sb.Append($"TOHE Lobby\n"); + if (Main.BetterHost.Value && GameStates.IsHost) { sb.Append($"{Translator.GetString("BetterOption.BetterHost")}: Enabled\n");