From 497243f5737f3226ebd5f98b6f3d666f78a4bbf9 Mon Sep 17 00:00:00 2001 From: D1GQ Date: Mon, 9 Dec 2024 04:20:41 -0600 Subject: [PATCH] fixes --- Helpers/PlayerControlHelper.cs | 2 +- Helpers/Utils.cs | 8 +----- .../RPCHandlers/DespawnNetObjectHandler.cs | 2 +- .../RPCHandlers/SendQuickChatHandler.cs | 4 +-- Patches/PlayerControlPatch.cs | 26 +++++++++---------- Patches/PlayerJoinAndLeftPatch.cs | 2 -- 6 files changed, 18 insertions(+), 26 deletions(-) diff --git a/Helpers/PlayerControlHelper.cs b/Helpers/PlayerControlHelper.cs index bcc0d43..d56103e 100644 --- a/Helpers/PlayerControlHelper.cs +++ b/Helpers/PlayerControlHelper.cs @@ -290,7 +290,7 @@ static class PlayerControlHelper BAUAntiCheat.SickoData.ContainsKey(player.GetHashPuid()) || BAUAntiCheat.AUMData.ContainsKey(player.GetHashPuid())); // Check if player is the host - public static bool IsHost(this PlayerControl player) => player?.Data != null && GameData.Instance?.GetHost()?.Puid == player.Data.Puid; + public static bool IsHost(this PlayerControl player) => player?.Data != null && GameData.Instance?.GetHost() == player.Data; // Get players HashPuid public static string GetHashPuid(this PlayerControl player) diff --git a/Helpers/Utils.cs b/Helpers/Utils.cs index 7b815b3..72f7c96 100644 --- a/Helpers/Utils.cs +++ b/Helpers/Utils.cs @@ -113,13 +113,7 @@ public static class Utils public static string GetHashPuid(PlayerControl player) { if (player?.Data?.Puid == null) return ""; - - string puid = player.Data.Puid; - - using SHA256 sha256 = SHA256.Create(); - byte[] sha256Bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(puid)); - string sha256Hash = BitConverter.ToString(sha256Bytes).Replace("-", "").ToLower(); - return sha256Hash.Substring(0, 5) + sha256Hash.Substring(sha256Hash.Length - 4); + return GetHashStr(player.Data.Puid); } // Get HashPuid from puid public static string GetHashStr(string str) diff --git a/Modules/AntiCheat/RPCHandlers/DespawnNetObjectHandler.cs b/Modules/AntiCheat/RPCHandlers/DespawnNetObjectHandler.cs index 9f1bf75..6a15234 100644 --- a/Modules/AntiCheat/RPCHandlers/DespawnNetObjectHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/DespawnNetObjectHandler.cs @@ -11,7 +11,7 @@ public class DespawnNetObjectHandler : RPCHandler public override void HandleGameData(MessageReader reader) { - if (!GameState.IsHost) return; + // if (!GameState.IsHost) return; uint netId = reader.ReadPackedUInt32(); var innerNetObject = innerNetClient.FindObjectByNetId(netId); diff --git a/Modules/AntiCheat/RPCHandlers/SendQuickChatHandler.cs b/Modules/AntiCheat/RPCHandlers/SendQuickChatHandler.cs index d096c38..5bd567f 100644 --- a/Modules/AntiCheat/RPCHandlers/SendQuickChatHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/SendQuickChatHandler.cs @@ -10,10 +10,10 @@ public class SendQuickChatHandler : RPCHandler public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader) { - if (sender.IsAlive() && GameState.IsInGamePlay && !GameState.IsMeeting && !GameState.IsExilling) + if (sender.IsAlive() && GameState.IsInGamePlay && !GameState.IsMeeting && !GameState.IsExilling || reader.BytesRemaining == 0) { BetterNotificationManager.NotifyCheat(sender, GetFormatActionText()); - LogRpcInfo($"{sender.IsAlive()} && {GameState.IsInGamePlay} && {!GameState.IsMeeting} && {!GameState.IsExilling}"); + LogRpcInfo($"{sender.IsAlive()} && {GameState.IsInGamePlay} && {!GameState.IsMeeting} && {!GameState.IsExilling} || {reader.BytesRemaining == 0}"); } } } diff --git a/Patches/PlayerControlPatch.cs b/Patches/PlayerControlPatch.cs index 490be25..b860c9a 100644 --- a/Patches/PlayerControlPatch.cs +++ b/Patches/PlayerControlPatch.cs @@ -14,7 +14,6 @@ namespace BetterAmongUs.Patches; [HarmonyPatch(typeof(PlayerControl))] class PlayerControlPatch { - public static Dictionary time = []; [HarmonyPatch(nameof(PlayerControl.FixedUpdate))] [HarmonyPrefix] public static void FixedUpdate_Prefix(PlayerControl __instance) @@ -71,7 +70,7 @@ class PlayerControlPatch var sbTagTop = new StringBuilder(); var sbTagBottom = new StringBuilder(); - SetPlayerOutline(player, hashPuid, friendCode, sbTag); + SetPlayerOutline(player, hashPuid, player.Data.FriendCode, sbTag); if (GameState.IsInGame && GameState.IsLobby && !GameState.IsFreePlay) { @@ -104,7 +103,7 @@ class PlayerControlPatch private static string ValidateFriendCode(PlayerControl player, out string color) { color = "#FFFFFF"; - if (player?.Data == null) return ""; + if (player?.Data == null) return string.Empty; void TryKick() { @@ -145,36 +144,37 @@ class PlayerControlPatch friendCode = new string('*', friendCode.Length); } - return friendCode; + return friendCode.Trim(); } private static void SetPlayerOutline(PlayerControl player, string hashPuid, string friendCode, StringBuilder sbTag) { - if (hashPuid != "" && BAUAntiCheat.SickoData.ContainsKey(hashPuid) - || friendCode != "" && BAUAntiCheat.SickoData.ContainsValue(friendCode)) + var color = player.cosmetics.currentBodySprite.BodySprite.material.GetColor("_OutlineColor"); + if ((!string.IsNullOrEmpty(hashPuid) && hashPuid.Length > 0 && BAUAntiCheat.SickoData.ContainsKey(hashPuid)) + || (!string.IsNullOrEmpty(friendCode) && friendCode.Length > 0 && BAUAntiCheat.SickoData.ContainsValue(friendCode))) { sbTag.Append($"{Translator.GetString("Player.SickoUser")}+++"); player.SetOutlineByHex(true, "#00f583"); } - else if (hashPuid != "" && BAUAntiCheat.AUMData.ContainsKey(hashPuid) - || friendCode != "" && BAUAntiCheat.AUMData.ContainsValue(friendCode)) + else if ((!string.IsNullOrEmpty(hashPuid) && hashPuid.Length > 0 && BAUAntiCheat.AUMData.ContainsKey(hashPuid)) + || (!string.IsNullOrEmpty(friendCode) && friendCode.Length > 0 && BAUAntiCheat.AUMData.ContainsValue(friendCode))) { sbTag.Append($"{Translator.GetString("Player.AUMUser")}+++"); player.SetOutlineByHex(true, "#4f0000"); } - else if (hashPuid != "" && BAUAntiCheat.KNData.ContainsKey(hashPuid) - || friendCode != "" && BAUAntiCheat.KNData.ContainsValue(friendCode)) + else if ((!string.IsNullOrEmpty(hashPuid) && hashPuid.Length > 0 && BAUAntiCheat.KNData.ContainsKey(hashPuid)) + || (!string.IsNullOrEmpty(friendCode) && friendCode.Length > 0 && BAUAntiCheat.KNData.ContainsValue(friendCode))) { sbTag.Append($"{Translator.GetString("Player.KNUser")}+++"); player.SetOutlineByHex(true, "#8731e7"); } - else if (hashPuid != "" && BAUAntiCheat.PlayerData.ContainsKey(hashPuid) - || friendCode != "" && BAUAntiCheat.PlayerData.ContainsValue(friendCode)) + else if ((!string.IsNullOrEmpty(hashPuid) && hashPuid.Length > 0 && BAUAntiCheat.PlayerData.ContainsKey(hashPuid)) + || (!string.IsNullOrEmpty(friendCode) && friendCode.Length > 0 && BAUAntiCheat.PlayerData.ContainsValue(friendCode))) { sbTag.Append($"{Translator.GetString("Player.KnownCheater")}+++"); player.SetOutlineByHex(true, "#fc0000"); } - else + else if (color == Utils.HexToColor32("#00f583") || color == Utils.HexToColor32("#4f0000") || color == Utils.HexToColor32("#fc0000") || color == Utils.HexToColor32("#8731e7")) { player.SetOutline(false, null); } diff --git a/Patches/PlayerJoinAndLeftPatch.cs b/Patches/PlayerJoinAndLeftPatch.cs index b6278d0..c313e61 100644 --- a/Patches/PlayerJoinAndLeftPatch.cs +++ b/Patches/PlayerJoinAndLeftPatch.cs @@ -15,8 +15,6 @@ class OnGameJoinedPatch { try { - PlayerControlPatch.time.Clear(); - BAUAntiCheat.PauseAntiCheat(); // Fix host icon in lobby on modded servers