Files
BetterAmongUs/Modules/AntiCheat/RPCHandlers/SetLevelHandler.cs
T

44 lines
1.5 KiB
C#

using BetterAmongUs.Helpers;
using BetterAmongUs.Items.Attributes;
using BetterAmongUs.Managers;
using BetterAmongUs.Patches;
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($"{sender.DataIsCollected() == true} && {!GameState.IsLocalGame} && {GameState.IsVanillaServer}");
}
return false;
}
sender.BetterData().AntiCheatInfo.HasSetLevel = true;
return true;
}
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
uint level = reader.ReadPackedUInt32();
if (level + 1 > BetterGameSettings.DetectedLevelAbove.GetInt())
{
if (BetterNotificationManager.NotifyCheat(sender, string.Format(Translator.GetString("AntiCheat.InvalidLevelRPC"), level)))
{
LogRpcInfo($"{level > BetterGameSettings.DetectedLevelAbove.GetInt()} - {level} > {BetterGameSettings.DetectedLevelAbove.GetInt()}");
}
}
}
}