mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using BetterAmongUs.Attributes;
|
|
using BetterAmongUs.Helpers;
|
|
using BetterAmongUs.Managers;
|
|
using BetterAmongUs.Mono;
|
|
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
|
using Hazel;
|
|
|
|
namespace BetterAmongUs.Modules.AntiCheat;
|
|
|
|
[RegisterRPCHandler]
|
|
internal sealed class SetLevelHandler : RPCHandler
|
|
{
|
|
internal override byte CallId => (byte)RpcCalls.SetLevel;
|
|
|
|
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
|
|
{
|
|
if (sender.DataIsCollected() == true && sender.BetterData().AntiCheatInfo.HasSetLevel && !GameState.IsLocalGame && GameState.IsVanillaServer)
|
|
{
|
|
if (BetterNotificationManager.NotifyCheat(sender, GetFormatSetText()))
|
|
{
|
|
LogRpcInfo($"Player attempted to set level multiple times");
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
sender.BetterData().AntiCheatInfo.HasSetLevel = true;
|
|
|
|
return true;
|
|
}
|
|
|
|
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
|
|
{
|
|
uint level = reader.ReadPackedUInt32() + 1;
|
|
|
|
if (level > BetterGameSettings.DetectedLevelAbove.GetInt())
|
|
{
|
|
if (BetterNotificationManager.NotifyCheat(sender, string.Format(Translator.GetString("AntiCheat.InvalidLevelRPC"), level)))
|
|
{
|
|
LogRpcInfo($"Suspicious level set: {level} (max allowed: {BetterGameSettings.DetectedLevelAbove.GetInt()})");
|
|
}
|
|
}
|
|
}
|
|
}
|