diff --git a/Modules/AntiCheat/BetterAntiCheat.cs b/Modules/AntiCheat/BetterAntiCheat.cs index 8074cc0..cd81b91 100644 --- a/Modules/AntiCheat/BetterAntiCheat.cs +++ b/Modules/AntiCheat/BetterAntiCheat.cs @@ -115,7 +115,7 @@ class BetterAntiCheat if (!IsEnabled) return; - RPCHandler.HandleRPC(callId, player, reader, HandlerFlag.AntiCheatCheck); + RPCHandler.HandleRPC(callId, player, reader, HandlerFlag.CheatRpcCheck); } // Check and notify for invalid rpcs diff --git a/Modules/AntiCheat/RPCHandler.cs b/Modules/AntiCheat/RPCHandler.cs index 72361ee..b89c582 100644 --- a/Modules/AntiCheat/RPCHandler.cs +++ b/Modules/AntiCheat/RPCHandler.cs @@ -10,7 +10,7 @@ namespace BetterAmongUs.Modules.AntiCheat; internal enum HandlerFlag { Handle, - AntiCheatCheck, + CheatRpcCheck, AntiCheatCancel, AntiCheat, BetterHost, @@ -36,7 +36,7 @@ internal abstract class RPCHandler internal static bool CheckRange(Vector2 pos1, Vector2 pos2, float range) => Vector2.Distance(pos1, pos2) <= range; internal virtual void Handle(PlayerControl? sender, MessageReader reader) { } internal virtual void HandleGameData(MessageReader reader) { } - internal virtual void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) { } + internal virtual void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { } internal virtual bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader) => true; internal virtual void HandleAntiCheat(PlayerControl? sender, MessageReader reader) { } internal virtual bool BetterHandle(PlayerControl? sender, MessageReader reader) => true; @@ -56,9 +56,9 @@ internal abstract class RPCHandler try { if (handlerFlag == HandlerFlag.Handle) handler.Handle(sender, MessageReader.Get(reader)); - else if (handlerFlag == HandlerFlag.AntiCheatCheck) handler.HandleAntiCheatCheck(sender, MessageReader.Get(reader)); else if (handlerFlag == HandlerFlag.AntiCheatCancel) cancel = !handler.HandleAntiCheatCancel(sender, MessageReader.Get(reader)); else if (handlerFlag == HandlerFlag.AntiCheat) handler.HandleAntiCheat(sender, MessageReader.Get(reader)); + else if (handlerFlag == HandlerFlag.CheatRpcCheck) handler.HandleCheatRpcCheck(sender, MessageReader.Get(reader)); else if (handlerFlag == HandlerFlag.BetterHost) cancel = !handler.BetterHandle(sender, MessageReader.Get(reader)); if (!(cancel)) break; } diff --git a/Modules/AntiCheat/RPCHandlers/AUMChatHandler.cs b/Modules/AntiCheat/RPCHandlers/AUMChatHandler.cs index d8f3b07..4130dea 100644 --- a/Modules/AntiCheat/RPCHandlers/AUMChatHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/AUMChatHandler.cs @@ -13,7 +13,7 @@ internal sealed class AUMChatHandler : RPCHandler { internal override byte CallId => unchecked((byte)CustomRPC.AUMChat); - internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) + internal override void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { var nameString = reader.ReadString(); var msgString = reader.ReadString(); diff --git a/Modules/AntiCheat/RPCHandlers/AUMHandler.cs b/Modules/AntiCheat/RPCHandlers/AUMHandler.cs index e13c1f2..d5633e8 100644 --- a/Modules/AntiCheat/RPCHandlers/AUMHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/AUMHandler.cs @@ -13,7 +13,7 @@ internal sealed class AUMHandler : RPCHandler { internal override byte CallId => unchecked((byte)CustomRPC.AUM); - internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) + internal override void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { if (Main.AntiCheat.Value && BetterGameSettings.DetectCheatClients.GetBool()) { diff --git a/Modules/AntiCheat/RPCHandlers/KillNetworkChatHandler.cs b/Modules/AntiCheat/RPCHandlers/KillNetworkChatHandler.cs index 4de860b..367533b 100644 --- a/Modules/AntiCheat/RPCHandlers/KillNetworkChatHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/KillNetworkChatHandler.cs @@ -13,7 +13,7 @@ internal sealed class KillNetworkChatHandler : RPCHandler { internal override byte CallId => unchecked((byte)CustomRPC.KillNetworkChat); - internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) + internal override void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { if (!Main.AntiCheat.Value || !BetterGameSettings.DetectCheatClients.GetBool()) return; diff --git a/Modules/AntiCheat/RPCHandlers/KillNetworkHandler.cs b/Modules/AntiCheat/RPCHandlers/KillNetworkHandler.cs index de81fa1..494a9c8 100644 --- a/Modules/AntiCheat/RPCHandlers/KillNetworkHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/KillNetworkHandler.cs @@ -13,7 +13,7 @@ internal sealed class KillNetworkHandler : RPCHandler { internal override byte CallId => unchecked((byte)CustomRPC.KillNetwork); - internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) + internal override void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { if (Main.AntiCheat.Value && BetterGameSettings.DetectCheatClients.GetBool()) { diff --git a/Modules/AntiCheat/RPCHandlers/SetNameHandler.cs b/Modules/AntiCheat/RPCHandlers/SetNameHandler.cs index eec6485..19d2662 100644 --- a/Modules/AntiCheat/RPCHandlers/SetNameHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/SetNameHandler.cs @@ -17,7 +17,7 @@ internal sealed class SetNameHandler : RPCHandler internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader) { - if (GameState.IsHost) return false; + if (GameState.IsHost) return true; _ = reader.ReadUInt32(); var name = reader.ReadString(); diff --git a/Modules/AntiCheat/RPCHandlers/SetScannerHandler.cs b/Modules/AntiCheat/RPCHandlers/SetScannerHandler.cs index 0b6ce73..1fa3aab 100644 --- a/Modules/AntiCheat/RPCHandlers/SetScannerHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/SetScannerHandler.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Items.Attributes; +using Hazel; namespace BetterAmongUs.Modules.AntiCheat; @@ -6,4 +7,15 @@ namespace BetterAmongUs.Modules.AntiCheat; internal sealed class SetScannerHandler : RPCHandler { internal override byte CallId => (byte)RpcCalls.SetScanner; + + internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader) + { + /* + if (sender.IsImpostorTeam() || !sender.Data.Tasks.ToArray().Any(task => task.TypeId == (byte)TaskTypes.SubmitScan)) + { + BetterNotificationManager.NotifyCheat(sender, GetFormatActionText()); + LogRpcInfo($"{sender.IsImpostorTeam()} || {!sender.Data.Tasks.ToArray().Any(task => task.TypeId == (byte)TaskTypes.SubmitScan)}"); + } + */ + } } diff --git a/Modules/AntiCheat/RPCHandlers/SickoHandler.cs b/Modules/AntiCheat/RPCHandlers/SickoHandler.cs index 927c798..1731d61 100644 --- a/Modules/AntiCheat/RPCHandlers/SickoHandler.cs +++ b/Modules/AntiCheat/RPCHandlers/SickoHandler.cs @@ -13,7 +13,7 @@ internal sealed class SickoHandler : RPCHandler { internal override byte CallId => unchecked((byte)CustomRPC.Sicko); - internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) + internal override void HandleCheatRpcCheck(PlayerControl? sender, MessageReader reader) { if (Main.AntiCheat.Value && BetterGameSettings.DetectCheatClients.GetBool()) { diff --git a/Patches/VoteBanSystemPatch.cs b/Patches/VoteBanSystemPatch.cs index 0f6f4b9..3f3843d 100644 --- a/Patches/VoteBanSystemPatch.cs +++ b/Patches/VoteBanSystemPatch.cs @@ -10,11 +10,17 @@ internal static class VoteBanSystemPatch { private static readonly Dictionary> _voteData = []; + private static bool DoLog; + [HarmonyPatch(nameof(VoteBanSystem.AddVote))] [HarmonyPrefix] private static bool AddVote_Prefix(VoteBanSystem __instance, int srcClient, int clientId) { - if (!GameState.IsHost) return true; + if (!GameState.IsHost) + { + DoLog = true; + return true; + } var client = Utils.ClientFromClientId(srcClient); if (client == null) return false; @@ -42,6 +48,7 @@ internal static class VoteBanSystemPatch if (string.IsNullOrEmpty(client.ProductUserId) && string.IsNullOrEmpty(client.FriendCode)) { + DoLog = true; return true; } @@ -63,6 +70,7 @@ internal static class VoteBanSystemPatch } voters.Add((clientId, (clientHash, client.FriendCode))); + DoLog = true; return true; } @@ -71,7 +79,11 @@ internal static class VoteBanSystemPatch [HarmonyPostfix] private static void AddVote_Postfix(VoteBanSystem __instance, int srcClient, int clientId) { - LogVote(__instance, srcClient, clientId); + if (DoLog) + { + LogVote(__instance, srcClient, clientId); + DoLog = false; + } } private static void LogVote(VoteBanSystem voteBanSystem, int srcClient, int clientId)