From 8add2733dd4a7922a467d977d5b6333d2d3dbe48 Mon Sep 17 00:00:00 2001 From: Galster-dev <46283010+Galster-dev@users.noreply.github.com> Date: Mon, 16 May 2022 19:14:24 +0300 Subject: [PATCH] Revert betraying Reactor's rpc for anti-anti-cheat purposes --- src/CrowdedMod/Net/CustomRpcCalls.cs | 6 +++++ src/CrowdedMod/Net/SetColorRpc.cs | 29 ++++++++++++++++++++++++ src/CrowdedMod/Patches/GenericPatches.cs | 8 ++++--- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/CrowdedMod/Net/CustomRpcCalls.cs create mode 100644 src/CrowdedMod/Net/SetColorRpc.cs diff --git a/src/CrowdedMod/Net/CustomRpcCalls.cs b/src/CrowdedMod/Net/CustomRpcCalls.cs new file mode 100644 index 0000000..e244147 --- /dev/null +++ b/src/CrowdedMod/Net/CustomRpcCalls.cs @@ -0,0 +1,6 @@ +namespace CrowdedMod.Net; + +public enum CustomRpcCalls +{ + SetColor +} \ No newline at end of file diff --git a/src/CrowdedMod/Net/SetColorRpc.cs b/src/CrowdedMod/Net/SetColorRpc.cs new file mode 100644 index 0000000..c1cb127 --- /dev/null +++ b/src/CrowdedMod/Net/SetColorRpc.cs @@ -0,0 +1,29 @@ +using Hazel; +using Reactor; +using Reactor.Networking; + +namespace CrowdedMod.Net; + +[RegisterCustomRpc((uint) CustomRpcCalls.SetColor)] +public class SetColorRpc : PlayerCustomRpc +{ + public SetColorRpc(CrowdedModPlugin plugin, uint id) : base(plugin, id) + { + } + + public override RpcLocalHandling LocalHandling => RpcLocalHandling.After; + public override void Write(MessageWriter writer, byte data) + { + writer.Write(data); + } + + public override byte Read(MessageReader reader) + { + return reader.ReadByte(); + } + + public override void Handle(PlayerControl player, byte data) + { + player.SetColor(data); + } +} \ No newline at end of file diff --git a/src/CrowdedMod/Patches/GenericPatches.cs b/src/CrowdedMod/Patches/GenericPatches.cs index 286f494..7ad2944 100644 --- a/src/CrowdedMod/Patches/GenericPatches.cs +++ b/src/CrowdedMod/Patches/GenericPatches.cs @@ -1,14 +1,16 @@ using System.Linq; +using CrowdedMod.Net; using HarmonyLib; +using Reactor.Networking; using UnhollowerBaseLib; using UnityEngine; namespace CrowdedMod.Patches { internal static class GenericPatches { - [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CheckColor))] - public static class PlayerControlCheckColorPatch { + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CmdCheckColor))] + public static class PlayerControlCmdCheckColorPatch { public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] byte colorId) { - __instance.RpcSetColor(colorId); + Rpc.Instance.Send(__instance, colorId); return false; } }