This commit is contained in:
D1GQ committed 2025-04-09 23:22:12 -05:00
1 parent a347c20fa5
commit ca4bb1adbe
10 files changed
+36 -12

No files matched your search

+1 -1
View File
@@ -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
+3 -3
View File
@@ -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;
}
@@ -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();
+1 -1
View File
@@ -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())
{
@@ -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;
@@ -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())
{
@@ -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();
@@ -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)}");
}
*/
}
}
@@ -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())
{
+14 -2
View File
@@ -10,11 +10,17 @@ internal static class VoteBanSystemPatch
{
private static readonly Dictionary<VoteBanSystem, List<(int ClientId, (ushort HashPuid, string FriendCode) Voter)>> _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)