using System.Reflection; using HarmonyLib; using undead_universal_patch_il2cpp.Core; using UnityEngine; namespace undead_universal_patch_il2cpp.Patches { [HarmonyPatch] public class ConnectToRecNetPatchEvent { static readonly string TargetTypeName = "RecNet.Core"; static readonly string TargetMethodName = "ConnectToRecNet"; static readonly string Description = "Hile Patch event method"; // It's convenient. Could patch at a different time. But this part was easy. static bool Prepare() { if (AccessTools.Method(AccessTools.TypeByName(TargetTypeName), TargetMethodName) == null) { Plugin.Log.LogWarning($"'{Description}' disabled. The method for this patch was not found."); return false; } Plugin.Log.LogInfo($"'{Description}' succeeded validation."); return true; } static MethodBase TargetMethod() => AccessTools.Method(AccessTools.TypeByName(TargetTypeName), TargetMethodName); static void Prefix() { if (GenericConfig.HilePatch.Value) HilePatch.Patch(); } } public static class HilePatch { public static void Patch() { GameObject cheatManagerObject = GameObject.Find("[CheatManager]"); HileManager hileManager = cheatManagerObject.GetComponent(); PropertyInfo knownDllsProperty = AccessTools.Property(typeof(HileManager), "KnownDlls"); knownDllsProperty.SetValue(hileManager, new Il2CppInterop.Runtime.InteropTypes.Arrays.Il2CppStringArray([ "GameAssembly.dll", "UnityPlayer.dll", "WinPixEventRuntime.dll", "steam_api64.dll", "steam_api.dll", "d3d11.dll", "d3d9.dll", "d3d8.dll", "ddraw.dll", "dxgi.dll", "winhttp.dll" ])); Plugin.Log.LogInfo("Hile patch succeeded."); } } }