using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Admin_menukz { [BepInPlugin("com.kz.Admin_menukz", "Admin_menukz", "1.0.0")] public class AdminMenuPlugin : BaseUnityPlugin { public enum ThirdPersonCameraMode { Standard, FreeLook } internal static ManualLogSource Log; private Harmony _harmony; private bool _showMenu; private Rect _menuRect = new Rect(50f, 50f, 400f, 560f); private Vector2 _scrollPos = Vector2.zero; private Vector2 _teleportScrollPos = Vector2.zero; private string _statusMessage = ""; private float _statusClearTime; private int _currentTab; private readonly string[] _tabTitles = new string[4] { "\ud83c\udf00 Teleport", "\ud83d\udee0 Utilidades", "⚡ Cheats", "\ud83e\udd16 Bots" }; internal static readonly List SpawnedBots = new List(); private int _botCounter; private const int MAX_BOTS = 100; private GUIStyle _headerStyle; private GUIStyle _boxStyle; private GUIStyle _buttonStyle; private GUIStyle _smallButtonStyle; private GUIStyle _labelStyle; private GUIStyle _statusStyle; private GUIStyle _toggleStyle; private GUIStyle _tabButtonStyle; private bool _stylesInitialized; private Texture2D _bgTex; private Texture2D _btnTex; private Texture2D _btnHoverTex; private Texture2D _redBtnTex; private Texture2D _redBtnHoverTex; private Texture2D _toggleOnTex; private Texture2D _toggleOffTex; private Texture2D _tabActiveTex; private Texture2D _tabInactiveTex; public static bool IsMenuOpen { get; private set; } = false; public static bool IsSpawningBot { get; private set; } = false; public static string NextBotName { get; set; } = "Bot1"; public static bool ThirdPersonEnabled { get; set; } = false; public static ThirdPersonCameraMode CameraMode { get; set; } = ThirdPersonCameraMode.Standard; public static float ThirdPersonDistance { get; set; } = 6f; public static float ThirdPersonHeight { get; set; } = 0.25f; public static float ThirdPersonSide { get; set; } = 0f; public static float ThirdPersonSmoothSpeed { get; set; } = 35f; public static KeyCode ThirdPersonToggleKey { get; set; } = (KeyCode)285; public static float OrbitYaw { get; set; } = 0f; public static float OrbitPitch { get; set; } = 15f; public static bool CheatFly { get; set; } = false; public static bool CheatSuperJump { get; set; } = false; public static bool CheatNoFallDamage { get; set; } = false; public static bool CheatInfiniteStamina { get; set; } = false; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; _harmony = new Harmony("com.kz.Admin_menukz"); _harmony.PatchAll(typeof(CharacterNamePatch)); _harmony.PatchAll(typeof(AdminMenuInputPatches)); _harmony.PatchAll(typeof(AdminCheatPatches)); _harmony.PatchAll(typeof(NativeNameSystemPatches)); _harmony.PatchAll(typeof(PlayerDetectionPatches)); _harmony.PatchAll(typeof(ThirdPersonCameraPatches)); _harmony.PatchAll(typeof(CampfireBotCompatibilityPatches)); Log.LogInfo((object)"[Admin_menukz] Plugin loaded! Press F5 for Admin Menu, F4 for 3rd Person Camera."); } private void Update() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown(ThirdPersonToggleKey)) { ThirdPersonEnabled = !ThirdPersonEnabled; SetStatus(ThirdPersonEnabled ? "Cámara 3ra Persona: ACTIVADA" : "Cámara 3ra Persona: DESACTIVADA"); } if (Input.GetKeyDown((KeyCode)286)) { _showMenu = !_showMenu; IsMenuOpen = _showMenu; if (_showMenu) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; } } if (_statusClearTime > 0f && Time.time >= _statusClearTime) { _statusMessage = ""; _statusClearTime = 0f; } SpawnedBots.RemoveAll((SpawnedBot b) => (Object)(object)b.BotObject == (Object)null); HandleInfiniteStaminaCheat(); HandleNoFallDamageCheat(); HandleFlyCheat(); } private void LateUpdate() { if (_showMenu) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; } } private void OnDestroy() { RemoveAllBots(); try { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } catch { } if ((Object)(object)_bgTex != (Object)null) { Object.Destroy((Object)(object)_bgTex); } if ((Object)(object)_btnTex != (Object)null) { Object.Destroy((Object)(object)_btnTex); } if ((Object)(object)_btnHoverTex != (Object)null) { Object.Destroy((Object)(object)_btnHoverTex); } if ((Object)(object)_redBtnTex != (Object)null) { Object.Destroy((Object)(object)_redBtnTex); } if ((Object)(object)_redBtnHoverTex != (Object)null) { Object.Destroy((Object)(object)_redBtnHoverTex); } if ((Object)(object)_toggleOnTex != (Object)null) { Object.Destroy((Object)(object)_toggleOnTex); } if ((Object)(object)_toggleOffTex != (Object)null) { Object.Destroy((Object)(object)_toggleOffTex); } if ((Object)(object)_tabActiveTex != (Object)null) { Object.Destroy((Object)(object)_tabActiveTex); } if ((Object)(object)_tabInactiveTex != (Object)null) { Object.Destroy((Object)(object)_tabInactiveTex); } } private void HandleInfiniteStaminaCheat() { if (CheatInfiniteStamina) { Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null && (Object)(object)realLocalPlayer.data != (Object)null) { realLocalPlayer.infiniteStam = true; realLocalPlayer.data.currentStamina = 1f; realLocalPlayer.data.extraStamina = 1f; } } } private void HandleNoFallDamageCheat() { if (!CheatNoFallDamage) { return; } Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null) { realLocalPlayer.data.fallSeconds = 0f; if (realLocalPlayer.refs != null && (Object)(object)realLocalPlayer.refs.afflictions != (Object)null) { realLocalPlayer.refs.afflictions.SetStatus((STATUSTYPE)0, 0f, false); } } } private void HandleFlyCheat() { //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) if (!CheatFly) { return; } Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer == (Object)null || realLocalPlayer.refs == null || (Object)(object)realLocalPlayer.refs.ragdoll == (Object)null) { return; } realLocalPlayer.data.fallSeconds = 0f; realLocalPlayer.data.sinceGrounded = 0f; Transform obj = (((Object)(object)MainCamera.instance != (Object)null) ? ((Component)MainCamera.instance).transform : (((Object)(object)Camera.main != (Object)null) ? ((Component)Camera.main).transform : ((Component)realLocalPlayer).transform)); Vector3 forward = obj.forward; Vector3 right = obj.right; Vector3 val = Vector3.zero; if (!IsMenuOpen) { if (Input.GetKey((KeyCode)119)) { val += forward; } if (Input.GetKey((KeyCode)115)) { val -= forward; } if (Input.GetKey((KeyCode)100)) { val += right; } if (Input.GetKey((KeyCode)97)) { val -= right; } if (Input.GetKey((KeyCode)32)) { val += Vector3.up; } if (Input.GetKey((KeyCode)306) || Input.GetKey((KeyCode)99)) { val -= Vector3.up; } } float num = (Input.GetKey((KeyCode)304) ? 28f : 12f); Vector3 val2 = ((Vector3)(ref val)).normalized * (num * Time.deltaTime); realLocalPlayer.refs.ragdoll.MoveAllRigsInDirection(val2); realLocalPlayer.refs.ragdoll.HaltBodyVelocity(false); } private void OnGUI() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) if (_showMenu) { InitStyles(); _menuRect = GUI.Window(556677, _menuRect, new WindowFunction(DrawMenuWindow), "", _boxStyle); } } private void InitStyles() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Expected O, but got Unknown //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Expected O, but got Unknown //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Expected O, but got Unknown //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Expected O, but got Unknown //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Expected O, but got Unknown //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Expected O, but got Unknown //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Expected O, but got Unknown //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_045a: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Expected O, but got Unknown //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_0479: Expected O, but got Unknown //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Unknown result type (might be due to invalid IL or missing references) if (!_stylesInitialized) { _stylesInitialized = true; _bgTex = MakeTex(2, 2, new Color(0.08f, 0.08f, 0.12f, 0.96f)); _btnTex = MakeTex(2, 2, new Color(0.18f, 0.45f, 0.85f, 1f)); _btnHoverTex = MakeTex(2, 2, new Color(0.25f, 0.55f, 0.95f, 1f)); _redBtnTex = MakeTex(2, 2, new Color(0.75f, 0.15f, 0.15f, 1f)); _redBtnHoverTex = MakeTex(2, 2, new Color(0.9f, 0.2f, 0.2f, 1f)); _toggleOnTex = MakeTex(2, 2, new Color(0.2f, 0.7f, 0.3f, 1f)); _toggleOffTex = MakeTex(2, 2, new Color(0.25f, 0.25f, 0.35f, 1f)); _tabActiveTex = MakeTex(2, 2, new Color(0.2f, 0.5f, 0.9f, 1f)); _tabInactiveTex = MakeTex(2, 2, new Color(0.15f, 0.15f, 0.22f, 1f)); _boxStyle = new GUIStyle(GUI.skin.window); _boxStyle.normal.background = _bgTex; _boxStyle.onNormal.background = _bgTex; _boxStyle.padding = new RectOffset(12, 12, 12, 12); _headerStyle = new GUIStyle(GUI.skin.label); _headerStyle.fontSize = 18; _headerStyle.fontStyle = (FontStyle)1; _headerStyle.normal.textColor = new Color(0.4f, 0.8f, 1f); _headerStyle.alignment = (TextAnchor)4; _buttonStyle = new GUIStyle(GUI.skin.button); _buttonStyle.fontSize = 14; _buttonStyle.fontStyle = (FontStyle)1; _buttonStyle.normal.background = _btnTex; _buttonStyle.normal.textColor = Color.white; _buttonStyle.hover.background = _btnHoverTex; _buttonStyle.hover.textColor = Color.white; _buttonStyle.active.background = _btnHoverTex; _buttonStyle.active.textColor = Color.yellow; _buttonStyle.border = new RectOffset(4, 4, 4, 4); _smallButtonStyle = new GUIStyle(_buttonStyle); _smallButtonStyle.fontSize = 11; _smallButtonStyle.normal.background = _redBtnTex; _smallButtonStyle.hover.background = _redBtnHoverTex; _labelStyle = new GUIStyle(GUI.skin.label); _labelStyle.fontSize = 13; _labelStyle.normal.textColor = new Color(0.85f, 0.85f, 0.9f); _labelStyle.richText = true; _statusStyle = new GUIStyle(GUI.skin.label); _statusStyle.fontSize = 12; _statusStyle.normal.textColor = new Color(0.3f, 1f, 0.4f); _statusStyle.alignment = (TextAnchor)4; _statusStyle.richText = true; _toggleStyle = new GUIStyle(GUI.skin.toggle); _toggleStyle.fontSize = 14; _toggleStyle.fontStyle = (FontStyle)1; _toggleStyle.normal.textColor = new Color(0.9f, 0.9f, 0.9f); _toggleStyle.onNormal.textColor = new Color(0.4f, 1f, 0.5f); _toggleStyle.margin = new RectOffset(4, 4, 6, 6); _tabButtonStyle = new GUIStyle(GUI.skin.button); _tabButtonStyle.fontSize = 12; _tabButtonStyle.fontStyle = (FontStyle)1; _tabButtonStyle.normal.background = _tabInactiveTex; _tabButtonStyle.normal.textColor = new Color(0.7f, 0.7f, 0.8f); _tabButtonStyle.onNormal.background = _tabActiveTex; _tabButtonStyle.onNormal.textColor = Color.white; } } private void DrawMenuWindow(int windowID) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) GUILayout.Space(5f); GUILayout.Label("⚙ ADMIN MENU KZ ⚙", _headerStyle, Array.Empty()); GUILayout.Space(5f); GUILayout.BeginHorizontal(Array.Empty()); for (int i = 0; i < _tabTitles.Length; i++) { GUI.backgroundColor = ((_currentTab == i) ? new Color(0.3f, 0.65f, 1f) : new Color(0.2f, 0.2f, 0.3f)); if (GUILayout.Button(_tabTitles[i], _tabButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { _currentTab = i; } } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); GUILayout.Space(6f); DrawSeparator(); if (!string.IsNullOrEmpty(_statusMessage)) { GUILayout.Label(_statusMessage, _statusStyle, Array.Empty()); GUILayout.Space(3f); } switch (_currentTab) { case 0: DrawTeleportTab(); break; case 1: DrawUtilitiesTab(); break; case 2: DrawCheatsTab(); break; case 3: DrawBotsTab(); break; } GUILayout.Space(10f); DrawSeparator(); GUILayout.Label("Presiona F5 para cerrar | Admin_menukz v1.0.0", _labelStyle, Array.Empty()); GUI.DragWindow(); } public static List GetAvailableTeleportTargets() { List list = new List(); Character realLocalPlayer = GetRealLocalPlayer(); if (Character.AllCharacters != null) { foreach (Character allCharacter in Character.AllCharacters) { if ((Object)(object)allCharacter != (Object)null && (Object)(object)((Component)allCharacter).gameObject != (Object)null && (Object)(object)allCharacter != (Object)(object)realLocalPlayer && !list.Contains(allCharacter)) { list.Add(allCharacter); } } } return list; } private void DrawTeleportTab() { //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("\ud83c\udf00 TELETRANSPORTE DE JUGADORES:", _labelStyle, Array.Empty()); GUILayout.Space(6f); if (!PhotonNetwork.InRoom) { GUILayout.Label("⚠ Debes estar en una partida para usar el teletransporte.", _labelStyle, Array.Empty()); GUILayout.Space(10f); return; } Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer == (Object)null) { GUILayout.Label("Esperando a que cargue tu personaje...", _labelStyle, Array.Empty()); return; } List availableTeleportTargets = GetAvailableTeleportTargets(); GUI.enabled = availableTeleportTargets.Count > 0; if (GUILayout.Button("\ud83c\udf00 Traer a TODOS hacia mí", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(38f) })) { TeleportAllToMe(realLocalPlayer, availableTeleportTargets); } GUI.enabled = true; GUILayout.Space(8f); DrawSeparator(); GUILayout.Label($"Jugadores y Bots disponibles ({availableTeleportTargets.Count}):", _labelStyle, Array.Empty()); GUILayout.Space(4f); if (availableTeleportTargets.Count == 0) { GUILayout.Space(15f); GUILayout.Label("No hay otros jugadores ni bots en la partida actualmente.", _labelStyle, Array.Empty()); GUILayout.Space(8f); if (GUILayout.Button("\ud83e\udd16 Ir a la pestaña de Bots para spawnear", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) })) { _currentTab = 3; } return; } _teleportScrollPos = GUILayout.BeginScrollView(_teleportScrollPos, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(220f) }); foreach (Character item in availableTeleportTargets) { if ((Object)(object)item == (Object)null || (Object)(object)((Component)item).gameObject == (Object)null) { continue; } string characterName = item.characterName; int num; object obj; if (!item.isBot) { num = (((Object)(object)((Component)item).GetComponent() != (Object)null) ? 1 : 0); if (num == 0) { obj = "\ud83d\udc64"; goto IL_01d5; } } else { num = 1; } obj = "\ud83e\udd16"; goto IL_01d5; IL_01d5: string text = (string)obj; string text2 = ((num != 0) ? "Bot" : "Jugador"); float num2 = Vector3.Distance(realLocalPlayer.Center, item.Center); GUILayout.BeginVertical(_boxStyle, Array.Empty()); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label(text + " " + characterName + " (" + text2 + ")", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }); GUILayout.Label($"{num2:F0} m", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(55f) }); GUILayout.EndHorizontal(); GUILayout.Space(2f); GUILayout.BeginHorizontal(Array.Empty()); if (GUILayout.Button("\ud83d\ude80 Ir hacia él/ella", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) })) { TeleportMeTo(realLocalPlayer, item); } if (GUILayout.Button("\ud83e\uddf2 Traer hacia mí", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) })) { TeleportTargetToMe(realLocalPlayer, item); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.Space(3f); } GUILayout.EndScrollView(); } private void TeleportMeTo(Character localPlayer, Character target) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) try { if (!((Object)(object)localPlayer == (Object)null) && !((Object)(object)target == (Object)null)) { Vector3 val = target.Center + Vector3.up * 0.8f + ((Component)target).transform.forward * -0.6f; ((MonoBehaviourPun)localPlayer).photonView.RPC("WarpPlayerRPC", (RpcTarget)0, new object[2] { val, true }); SetStatus("✓ Teletransportado hacia " + target.characterName + ""); Log.LogInfo((object)$"[Admin_menukz] Teleported local player to {target.characterName} at {val}"); } } catch (Exception ex) { Log.LogError((object)$"[Admin_menukz] Error teleporting to target: {ex}"); SetStatus("Error al teletransportar: " + ex.Message + ""); } } private void TeleportTargetToMe(Character localPlayer, Character target) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) try { if (!((Object)(object)localPlayer == (Object)null) && !((Object)(object)target == (Object)null)) { Vector3 val = localPlayer.Center + ((Component)localPlayer).transform.forward * 1.5f + Vector3.up * 0.8f; ((MonoBehaviourPun)target).photonView.RPC("WarpPlayerRPC", (RpcTarget)0, new object[2] { val, true }); SetStatus("✓ " + target.characterName + " traído hacia ti"); Log.LogInfo((object)$"[Admin_menukz] Teleported {target.characterName} to local player at {val}"); } } catch (Exception ex) { Log.LogError((object)$"[Admin_menukz] Error teleporting target to me: {ex}"); SetStatus("Error al traer jugador: " + ex.Message + ""); } } private void TeleportAllToMe(Character localPlayer, List targets) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)localPlayer == (Object)null || targets == null || targets.Count == 0) { return; } int count = targets.Count; for (int i = 0; i < count; i++) { Character val = targets[i]; if (!((Object)(object)val == (Object)null) && !((Object)(object)((Component)val).gameObject == (Object)null)) { float num = (float)i * (360f / (float)Mathf.Max(1, count)) * ((float)Math.PI / 180f); Vector3 val2 = new Vector3(Mathf.Cos(num), 0f, Mathf.Sin(num)) * 2f + Vector3.up * 0.8f; Vector3 val3 = localPlayer.Center + val2; ((MonoBehaviourPun)val).photonView.RPC("WarpPlayerRPC", (RpcTarget)0, new object[2] { val3, true }); } } SetStatus($"✓ {count} jugadores y bots traídos hacia ti"); Log.LogInfo((object)$"[Admin_menukz] Teleported all {count} targets to local player."); } catch (Exception ex) { Log.LogError((object)$"[Admin_menukz] Error teleporting all targets to me: {ex}"); SetStatus("Error al traer a todos: " + ex.Message + ""); } } private void DrawUtilitiesTab() { //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("UTILIDADES Y JUGABILIDAD:", _labelStyle, Array.Empty()); GUILayout.Space(6f); bool thirdPersonEnabled = ThirdPersonEnabled; ThirdPersonEnabled = GUILayout.Toggle(ThirdPersonEnabled, " \ud83c\udfa5 Cámara en 3ra Persona (F4)", _toggleStyle, Array.Empty()); if (thirdPersonEnabled != ThirdPersonEnabled) { SetStatus(ThirdPersonEnabled ? "3ra Persona activada (F4)" : "3ra Persona desactivada"); if (ThirdPersonEnabled) { Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null) { OrbitYaw = realLocalPlayer.data.lookValues.x; OrbitPitch = 0f - realLocalPlayer.data.lookValues.y; } } } if (ThirdPersonEnabled) { GUILayout.Space(4f); GUILayout.BeginVertical(_boxStyle, Array.Empty()); GUILayout.Label("Tipo de Cámara:", _labelStyle, Array.Empty()); GUILayout.BeginHorizontal(Array.Empty()); bool num = CameraMode == ThirdPersonCameraMode.Standard; bool flag = CameraMode == ThirdPersonCameraMode.FreeLook; GUI.backgroundColor = (num ? new Color(0.25f, 0.65f, 1f) : new Color(0.2f, 0.2f, 0.25f)); if (GUILayout.Button(num ? "● \ud83c\udfaf Estándar (Fija)" : " \ud83c\udfaf Estándar (Fija)", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) })) { CameraMode = ThirdPersonCameraMode.Standard; Character realLocalPlayer2 = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer2 != (Object)null && (Object)(object)realLocalPlayer2.data != (Object)null) { realLocalPlayer2.data.lookValues.x = OrbitYaw; realLocalPlayer2.data.lookValues.y = 0f - OrbitPitch; ThirdPersonCameraPatches.RecalculateLook(realLocalPlayer2); } } GUI.backgroundColor = (flag ? new Color(0.25f, 0.65f, 1f) : new Color(0.2f, 0.2f, 0.25f)); if (GUILayout.Button(flag ? "● \ud83c\udf10 Orbital Libre" : " \ud83c\udf10 Orbital Libre", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) })) { CameraMode = ThirdPersonCameraMode.FreeLook; Character realLocalPlayer3 = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer3 != (Object)null && (Object)(object)realLocalPlayer3.data != (Object)null) { OrbitYaw = realLocalPlayer3.data.lookValues.x; OrbitPitch = 0f - realLocalPlayer3.data.lookValues.y; } } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); if (CameraMode == ThirdPersonCameraMode.FreeLook) { GUILayout.Label("\ud83c\udf10 Modo Orbital Libre: Gira 360° libremente alrededor del personaje. WASD se mueve relativo a la cámara.", _labelStyle, Array.Empty()); } else { GUILayout.Label("\ud83c\udfaf Modo Estándar: La cámara sigue directamente la dirección de apuntado y mirada del personaje.", _labelStyle, Array.Empty()); } GUILayout.Space(6f); DrawSeparator(); GUILayout.Space(4f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label($"Distancia: {ThirdPersonDistance:F1} m", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) }); ThirdPersonDistance = GUILayout.HorizontalSlider(ThirdPersonDistance, 1f, 15f, Array.Empty()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label($"Altura: {ThirdPersonHeight:F2} m", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) }); ThirdPersonHeight = GUILayout.HorizontalSlider(ThirdPersonHeight, -1.5f, 3f, Array.Empty()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty()); string arg = ((ThirdPersonSide > 0.1f) ? "Derecha" : ((ThirdPersonSide < -0.1f) ? "Izquierda" : "Centro")); GUILayout.Label($"Hombro ({arg}): {ThirdPersonSide:F2} m", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) }); ThirdPersonSide = GUILayout.HorizontalSlider(ThirdPersonSide, -2f, 2f, Array.Empty()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty()); if (GUILayout.Button("⯇ Izquierda", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(24f) })) { ThirdPersonSide = -0.5f; } if (GUILayout.Button("⏺ Centro", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(24f) })) { ThirdPersonSide = 0f; } if (GUILayout.Button("⯈ Derecha", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(24f) })) { ThirdPersonSide = 0.5f; } GUILayout.EndHorizontal(); GUILayout.Space(4f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label($"Suavidad: {ThirdPersonSmoothSpeed:F0}", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) }); ThirdPersonSmoothSpeed = GUILayout.HorizontalSlider(ThirdPersonSmoothSpeed, 5f, 60f, Array.Empty()); GUILayout.EndHorizontal(); GUILayout.Space(6f); if (GUILayout.Button("↺ Restablecer Valores por Defecto", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) })) { ThirdPersonDistance = 6f; ThirdPersonHeight = 0.25f; ThirdPersonSide = 0f; ThirdPersonSmoothSpeed = 35f; CameraMode = ThirdPersonCameraMode.Standard; SetStatus("Valores por defecto restablecidos (Distancia 6m, Altura 0.25m, Centro, Suavidad 35)."); } GUILayout.EndVertical(); GUILayout.Space(4f); GUILayout.Label("✓ Escalada, recolección, combate y construcción optimizados para 3ra persona sin atravesar paredes ni texturas.", _labelStyle, Array.Empty()); } else { GUILayout.Space(4f); GUILayout.Label("Activa la casilla o presiona [F4] en cualquier momento para alternar entre 1ra y 3ra persona cómodamente.", _labelStyle, Array.Empty()); } } private void DrawCheatsTab() { GUILayout.Label("PODERES DEL JUGADOR:", _labelStyle, Array.Empty()); GUILayout.Space(6f); CheatFly = GUILayout.Toggle(CheatFly, " \ud83e\udd85 Volar (Fly / Noclip)", _toggleStyle, Array.Empty()); if (CheatFly) { GUILayout.Label(" WASD: Mover | Espacio: Subir | Ctrl: Bajar | Shift: Sprint", _labelStyle, Array.Empty()); } GUILayout.Space(4f); CheatSuperJump = GUILayout.Toggle(CheatSuperJump, " \ud83e\udd98 Súper Salto (Super Jump)", _toggleStyle, Array.Empty()); if (CheatSuperJump) { GUILayout.Label(" Impulso y gravedad reducida al saltar", _labelStyle, Array.Empty()); } GUILayout.Space(4f); CheatNoFallDamage = GUILayout.Toggle(CheatNoFallDamage, " \ud83d\udee1 Sin Daño por Caída (No Fall Damage)", _toggleStyle, Array.Empty()); if (CheatNoFallDamage) { GUILayout.Label(" Inmune a daño, lesiones y desmayos por caídas", _labelStyle, Array.Empty()); } GUILayout.Space(4f); CheatInfiniteStamina = GUILayout.Toggle(CheatInfiniteStamina, " ⚡ Estamina Infinita (Infinite Stamina)", _toggleStyle, Array.Empty()); if (CheatInfiniteStamina) { GUILayout.Label(" Escala y corre sin agotar tu energía", _labelStyle, Array.Empty()); } GUILayout.Space(10f); if (GUILayout.Button("Desactivar Todos los Cheats", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) })) { CheatFly = false; CheatSuperJump = false; CheatNoFallDamage = false; CheatInfiniteStamina = false; Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null) { realLocalPlayer.infiniteStam = false; } SetStatus("Cheats desactivados."); } } private void DrawBotsTab() { //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) int count = SpawnedBots.Count; GUILayout.Label($"Bots activos: {count} / {100}", _labelStyle, Array.Empty()); GUILayout.Space(5f); bool inRoom = PhotonNetwork.InRoom; if (!inRoom) { GUILayout.Label("⚠ Debes estar en una partida para spawnear bots.", _labelStyle, Array.Empty()); GUILayout.Space(10f); } GUI.enabled = inRoom && count < 100; if (GUILayout.Button("➕ Spawnear Bot", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(38f) })) { SpawnBot(); } GUI.enabled = true; GUILayout.Space(5f); GUI.enabled = count > 0; if (GUILayout.Button("\ud83d\uddd1 Eliminar Todos los Bots", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { RemoveAllBots(); SetStatus("Todos los bots eliminados."); } GUI.enabled = true; GUILayout.Space(8f); if (count <= 0) { return; } DrawSeparator(); GUILayout.Label("Lista de Bots:", _labelStyle, Array.Empty()); GUILayout.Space(3f); _scrollPos = GUILayout.BeginScrollView(_scrollPos, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(150f) }); for (int num = SpawnedBots.Count - 1; num >= 0; num--) { SpawnedBot spawnedBot = SpawnedBots[num]; if (!((Object)(object)spawnedBot.BotObject == (Object)null)) { GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label(" \ud83e\udd16 " + spawnedBot.BotName + "", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }); if (GUILayout.Button("✕", _smallButtonStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(30f), GUILayout.Height(22f) })) { RemoveBot(num); } GUILayout.EndHorizontal(); } } GUILayout.EndScrollView(); } private void DrawSeparator() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) GUILayout.Space(2f); GUI.DrawTexture(GUILayoutUtility.GetRect(1f, 1f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }), (Texture)(object)MakeTex(1, 1, new Color(0.3f, 0.5f, 0.8f, 0.5f))); GUILayout.Space(2f); } private void SetStatus(string message, float duration = 4f) { _statusMessage = message; _statusClearTime = Time.time + duration; } public static Character GetRealLocalPlayer() { if (Character.AllCharacters != null) { foreach (Character allCharacter in Character.AllCharacters) { if ((Object)(object)allCharacter != (Object)null && allCharacter.IsLocal && (Object)(object)((Component)allCharacter).GetComponent() == (Object)null) { return allCharacter; } } } if ((Object)(object)Character.localCharacter != (Object)null) { _ = (Object)(object)((Component)Character.localCharacter).GetComponent() == (Object)null; return Character.localCharacter; } return Character.localCharacter; } private void SpawnBot() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) try { if (!PhotonNetwork.InRoom) { SetStatus("No estás en una partida."); return; } if (SpawnedBots.Count >= 100) { SetStatus("Límite de bots alcanzado (100)."); return; } Character realLocalPlayer = GetRealLocalPlayer(); Vector3 val; Quaternion val2; if ((Object)(object)realLocalPlayer != (Object)null) { val = realLocalPlayer.Center + Vector3.up * 2.5f + new Vector3(Random.Range(-0.1f, 0.1f), 0f, Random.Range(-0.1f, 0.1f)); val2 = ((Component)realLocalPlayer).transform.rotation; } else { val = Vector3.zero + Vector3.up * 5f; val2 = Quaternion.identity; } _botCounter++; string text = (NextBotName = "Bot" + _botCounter); IsSpawningBot = true; GameObject val3 = null; try { val3 = PhotonNetwork.Instantiate("Character", val, val2, (byte)0, (object[])null); } finally { IsSpawningBot = false; } if ((Object)(object)val3 == (Object)null) { Log.LogError((object)"[Admin_menukz] PhotonNetwork.Instantiate('Character') returned null!"); SetStatus("Error al spawnear bot."); return; } if ((Object)(object)realLocalPlayer != (Object)null) { Character.localCharacter = realLocalPlayer; } Character component = val3.GetComponent(); if ((Object)(object)component != (Object)null) { component.isBot = true; AdminBotMarker adminBotMarker = val3.GetComponent(); if ((Object)(object)adminBotMarker == (Object)null) { adminBotMarker = val3.AddComponent(); } adminBotMarker.BotName = text; if (Character.AllCharacters != null && !Character.AllCharacters.Contains(component)) { Character.AllCharacters.Add(component); } if ((Object)(object)component.input != (Object)null) { ((Behaviour)component.input).enabled = false; } CharacterInput component2 = val3.GetComponent(); if ((Object)(object)component2 != (Object)null) { ((Behaviour)component2).enabled = false; } } if ((Object)(object)realLocalPlayer != (Object)null) { Character.localCharacter = realLocalPlayer; } SpawnedBot item = new SpawnedBot { BotObject = val3, BotName = text, BotCharacter = component }; SpawnedBots.Add(item); Log.LogInfo((object)$"[Admin_menukz] Spawned {text} at {val}"); SetStatus("✓ " + text + " spawneado!"); } catch (Exception ex) { Log.LogError((object)$"[Admin_menukz] SpawnBot error: {ex}"); SetStatus("Error: " + ex.Message + ""); } } private void RemoveBot(int index) { if (index < 0 || index >= SpawnedBots.Count) { return; } SpawnedBot spawnedBot = SpawnedBots[index]; string botName = spawnedBot.BotName; if ((Object)(object)spawnedBot.BotObject != (Object)null) { Character component = spawnedBot.BotObject.GetComponent(); if ((Object)(object)component != (Object)null && Character.AllCharacters != null) { Character.AllCharacters.Remove(component); } PhotonView component2 = spawnedBot.BotObject.GetComponent(); if ((Object)(object)component2 != (Object)null && component2.IsMine) { PhotonNetwork.Destroy(spawnedBot.BotObject); } else { Object.Destroy((Object)(object)spawnedBot.BotObject); } } SpawnedBots.RemoveAt(index); if (Character.AllCharacters != null) { Character.AllCharacters.RemoveAll((Character x) => (Object)(object)x == (Object)null || (Object)(object)((Component)x).gameObject == (Object)null); } Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null) { Character.localCharacter = realLocalPlayer; } try { GUIManager instance = GUIManager.instance; if (instance != null) { instance.RefreshInteractablePrompt(); } } catch { } SetStatus("" + botName + " eliminado."); Log.LogInfo((object)("[Admin_menukz] Removed " + botName)); } private void RemoveAllBots() { for (int num = SpawnedBots.Count - 1; num >= 0; num--) { SpawnedBot spawnedBot = SpawnedBots[num]; if ((Object)(object)spawnedBot.BotObject != (Object)null) { Character component = spawnedBot.BotObject.GetComponent(); if ((Object)(object)component != (Object)null && Character.AllCharacters != null) { Character.AllCharacters.Remove(component); } PhotonView component2 = spawnedBot.BotObject.GetComponent(); if ((Object)(object)component2 != (Object)null && component2.IsMine) { PhotonNetwork.Destroy(spawnedBot.BotObject); } else { Object.Destroy((Object)(object)spawnedBot.BotObject); } } } SpawnedBots.Clear(); if (Character.AllCharacters != null) { Character.AllCharacters.RemoveAll((Character x) => (Object)(object)x == (Object)null || (Object)(object)((Component)x).gameObject == (Object)null); } Character realLocalPlayer = GetRealLocalPlayer(); if ((Object)(object)realLocalPlayer != (Object)null) { Character.localCharacter = realLocalPlayer; } try { GUIManager instance = GUIManager.instance; if (instance != null) { instance.RefreshInteractablePrompt(); } } catch { } Log.LogInfo((object)"[Admin_menukz] All bots removed."); } private static Texture2D MakeTex(int width, int height, Color color) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown Color[] array = (Color[])(object)new Color[width * height]; for (int i = 0; i < array.Length; i++) { array[i] = color; } Texture2D val = new Texture2D(width, height); val.SetPixels(array); val.Apply(); return val; } } public class AdminBotMarker : MonoBehaviour { public string BotName; } internal class SpawnedBot { public GameObject BotObject; public string BotName; public Character BotCharacter; } [HarmonyPatch] internal static class CharacterNamePatch { [HarmonyPatch(typeof(Character), "get_characterName")] [HarmonyPrefix] private static bool Prefix(Character __instance, ref string __result) { if ((Object)(object)__instance == (Object)null) { return true; } AdminBotMarker component = ((Component)__instance).GetComponent(); if ((Object)(object)component != (Object)null && !string.IsNullOrEmpty(component.BotName)) { __result = component.BotName; return false; } return true; } } [HarmonyPatch] internal static class AdminMenuInputPatches { [HarmonyPatch(typeof(Character), "Awake")] [HarmonyPrefix] private static void Character_Awake_Prefix(Character __instance) { if (AdminMenuPlugin.IsSpawningBot) { __instance.isBot = true; ((Component)__instance).gameObject.AddComponent().BotName = AdminMenuPlugin.NextBotName; } } [HarmonyPatch(typeof(Character), "Awake")] [HarmonyPostfix] private static void Character_Awake_Postfix(Character __instance) { if (!((Object)(object)((Component)__instance).GetComponent() != (Object)null) || !((Object)(object)Character.localCharacter == (Object)(object)__instance) || Character.AllCharacters == null) { return; } foreach (Character allCharacter in Character.AllCharacters) { if ((Object)(object)allCharacter != (Object)null && allCharacter.IsLocal && (Object)(object)((Component)allCharacter).GetComponent() == (Object)null && (Object)(object)allCharacter != (Object)(object)__instance) { Character.localCharacter = allCharacter; break; } } } [HarmonyPatch(typeof(CursorHandler), "Update")] [HarmonyPostfix] private static void CursorHandler_Update_Postfix() { if (AdminMenuPlugin.IsMenuOpen) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; } } [HarmonyPatch(typeof(CharacterInput), "Sample")] [HarmonyPrefix] private static void CharacterInput_Sample_Prefix(ref bool playerMovementActive) { if (AdminMenuPlugin.IsMenuOpen) { playerMovementActive = false; } } [HarmonyPatch(typeof(CharacterInteractible), "IsInteractible")] [HarmonyPrefix] private static bool CharacterInteractible_IsInteractible_Prefix(CharacterInteractible __instance, Character interactor, ref bool __result) { if ((Object)(object)__instance != (Object)null && (Object)(object)__instance.character != (Object)null && (Object)(object)((Component)__instance.character).GetComponent() != (Object)null) { __result = __instance.IsPrimaryInteractible(interactor) || __instance.IsSecondaryInteractible(interactor); return false; } return true; } [HarmonyPatch(typeof(CharacterInteractible), "IsSecondaryInteractible")] [HarmonyPrefix] private static bool CharacterInteractible_IsSecondaryInteractible_Prefix(CharacterInteractible __instance, Character interactor, ref bool __result) { if ((Object)(object)__instance != (Object)null && (Object)(object)__instance.character != (Object)null && (Object)(object)((Component)__instance.character).GetComponent() != (Object)null && !__instance.character.data.dead && (Object)(object)__instance.character != (Object)(object)Character.localCharacter && (Object)(object)Character.localCharacter != (Object)null && (Object)(object)Character.localCharacter.data.currentItem != (Object)null && Character.localCharacter.data.currentItem.canUseOnFriend) { __result = true; return false; } return true; } } [HarmonyPatch] internal static class AdminCheatPatches { [HarmonyPatch(typeof(CharacterMovement), "CheckFallDamage")] [HarmonyPrefix] private static bool CharacterMovement_CheckFallDamage_Prefix(CharacterMovement __instance) { if (AdminMenuPlugin.CheatNoFallDamage) { Character component = ((Component)__instance).GetComponent(); if ((Object)(object)component != (Object)null && component.IsLocal) { return false; } } return true; } [HarmonyPatch(typeof(CharacterClimbing), "CheckFallDamage")] [HarmonyPrefix] private static bool CharacterClimbing_CheckFallDamage_Prefix(CharacterClimbing __instance) { if (AdminMenuPlugin.CheatNoFallDamage) { Character component = ((Component)__instance).GetComponent(); if ((Object)(object)component != (Object)null && component.IsLocal) { return false; } } return true; } [HarmonyPatch(typeof(Character), "Fall")] [HarmonyPrefix] private static bool Character_Fall_Prefix(Character __instance) { if (__instance.IsLocal && AdminMenuPlugin.CheatNoFallDamage) { __instance.data.fallSeconds = 0f; return false; } return true; } [HarmonyPatch(typeof(Character), "RPCA_Fall")] [HarmonyPrefix] private static bool Character_RPCA_Fall_Prefix(Character __instance) { if (__instance.IsLocal && AdminMenuPlugin.CheatNoFallDamage) { __instance.data.fallSeconds = 0f; return false; } return true; } [HarmonyPatch(typeof(CharacterMovement), "JumpRpc")] [HarmonyPrefix] private static void CharacterMovement_JumpRpc_Prefix(CharacterMovement __instance, bool isPalJump) { if (AdminMenuPlugin.CheatSuperJump) { Character component = ((Component)__instance).GetComponent(); if ((Object)(object)component != (Object)null && component.IsLocal) { __instance.DoSuperJump(34f, 0.35f, 3, 2.5f); } } } } [HarmonyPatch] internal static class NativeNameSystemPatches { [HarmonyPatch(typeof(UIPlayerNames), "Init")] [HarmonyPrefix] private static void UIPlayerNames_Init_Prefix(UIPlayerNames __instance) { try { FieldInfo fieldInfo = AccessTools.Field(typeof(UIPlayerNames), "indexCounter"); if (fieldInfo == null) { return; } int num = (int)fieldInfo.GetValue(__instance); if (__instance.playerNameText != null && num < __instance.playerNameText.Length) { return; } int num2 = ((__instance.playerNameText != null) ? __instance.playerNameText.Length : 0); int num3 = Mathf.Max(num2 + 16, num + 16); PlayerName[] array = (PlayerName[])(object)new PlayerName[num3]; if (num2 > 0) { Array.Copy(__instance.playerNameText, array, num2); } PlayerName val = ((num2 > 0) ? __instance.playerNameText[0] : null); if ((Object)(object)val != (Object)null) { for (int i = num2; i < num3; i++) { GameObject val2 = Object.Instantiate(((Component)val).gameObject, ((Component)val).transform.parent); ((Object)val2).name = $"PlayerNameText_{i}"; val2.SetActive(false); array[i] = val2.GetComponent(); } } __instance.playerNameText = array; } catch (Exception arg) { ManualLogSource log = AdminMenuPlugin.Log; if (log != null) { log.LogError((object)$"[Admin_menukz] Error expanding UIPlayerNames array: {arg}"); } } } [HarmonyPatch(typeof(UIPlayerNames), "UpdateName")] [HarmonyPrefix] private static void UIPlayerNames_UpdateName_Prefix(UIPlayerNames __instance, int index) { if (!((Object)(object)__instance != (Object)null) || __instance.playerNameText == null || index < 0 || index >= __instance.playerNameText.Length) { return; } PlayerName val = __instance.playerNameText[index]; if (!((Object)(object)val != (Object)null) || !((Object)(object)val.characterInteractable != (Object)null) || !((Object)(object)val.characterInteractable.character != (Object)null)) { return; } AdminBotMarker component = ((Component)val.characterInteractable.character).GetComponent(); if ((Object)(object)component != (Object)null && !string.IsNullOrEmpty(component.BotName)) { if ((Object)(object)val.text != (Object)null && ((TMP_Text)val.text).text != component.BotName) { ((TMP_Text)val.text).text = component.BotName; } if ((Object)(object)val.hostStar != (Object)null && val.hostStar.activeSelf) { val.hostStar.SetActive(false); } } } } [HarmonyPatch] internal static class PlayerDetectionPatches { [HarmonyPatch(typeof(PlayerHandler), "GetAllPlayerCharacters")] [HarmonyPostfix] private static void GetAllPlayerCharacters_Postfix(ref List __result) { if (__result == null) { __result = new List(); } __result.RemoveAll((Character c) => (Object)(object)c == (Object)null || (Object)(object)((Component)c).gameObject == (Object)null); foreach (SpawnedBot spawnedBot in AdminMenuPlugin.SpawnedBots) { if (spawnedBot != null && (Object)(object)spawnedBot.BotObject != (Object)null && (Object)(object)spawnedBot.BotCharacter != (Object)null && !__result.Contains(spawnedBot.BotCharacter)) { __result.Add(spawnedBot.BotCharacter); } } } } [HarmonyPatch] internal static class CampfireBotCompatibilityPatches { [HarmonyPatch(typeof(Campfire), "PlayerCharactersInRadius")] [HarmonyPrefix] private static bool PlayerCharactersInRadius_Prefix(Campfire __instance, float radius, ref List __result) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) List list = Traverse.Create((object)__instance).Field("_charactersInRadius").GetValue>(); if (list == null) { list = new List(); } list.Clear(); Vector3 position = ((Component)__instance).transform.position; if (PlayerHandler.Exists) { foreach (Character allPlayerCharacter in PlayerHandler.GetAllPlayerCharacters()) { if ((Object)(object)allPlayerCharacter != (Object)null && (Object)(object)((Component)allPlayerCharacter).gameObject != (Object)null && !allPlayerCharacter.isBot && (Object)(object)((Component)allPlayerCharacter).GetComponent() == (Object)null && (Object)(object)allPlayerCharacter.data != (Object)null && !allPlayerCharacter.data.dead && Vector3.Distance(position, allPlayerCharacter.Center) <= radius) { list.Add(allPlayerCharacter); } } } __result = list; return false; } [HarmonyPatch(typeof(Campfire), "EveryoneInRange", new Type[] { typeof(float) })] [HarmonyPrefix] private static bool EveryoneInRange_Range_Prefix(Campfire __instance, float range, ref bool __result) { List list = __instance.PlayerCharactersInRadius(range); if (PlayerHandler.Exists) { foreach (Character allPlayerCharacter in PlayerHandler.GetAllPlayerCharacters()) { if ((Object)(object)allPlayerCharacter != (Object)null && (Object)(object)((Component)allPlayerCharacter).gameObject != (Object)null && !allPlayerCharacter.isBot && (Object)(object)((Component)allPlayerCharacter).GetComponent() == (Object)null && (Object)(object)allPlayerCharacter.data != (Object)null && !allPlayerCharacter.data.dead && !list.Contains(allPlayerCharacter)) { __result = false; return false; } } } __result = true; return false; } [HarmonyPatch(/*Could not decode attribute arguments.*/)] [HarmonyPrefix] private static bool EveryoneInRange_Printout_Prefix(Campfire __instance, out string printout, float range, ref bool __result) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) bool flag = true; printout = ""; List list = __instance.PlayerCharactersInRadius(range); Vector3 position = ((Component)__instance).transform.position; if (PlayerHandler.Exists) { foreach (Character allPlayerCharacter in PlayerHandler.GetAllPlayerCharacters()) { if ((Object)(object)allPlayerCharacter != (Object)null && (Object)(object)((Component)allPlayerCharacter).gameObject != (Object)null && !allPlayerCharacter.isBot && (Object)(object)((Component)allPlayerCharacter).GetComponent() == (Object)null && (Object)(object)allPlayerCharacter.data != (Object)null && !allPlayerCharacter.data.dead && !list.Contains(allPlayerCharacter)) { float num = Vector3.Distance(position, allPlayerCharacter.Center); flag = false; string arg = (((Object)(object)((MonoBehaviourPun)allPlayerCharacter).photonView != (Object)null && ((MonoBehaviourPun)allPlayerCharacter).photonView.Owner != null) ? ((MonoBehaviourPun)allPlayerCharacter).photonView.Owner.NickName : "Jugador"); printout += $"\n{arg} {Mathf.RoundToInt(num * CharacterStats.unitsToMeters)}m"; } } } if (!flag) { printout = LocalizedText.GetText("CANTLIGHT", true) + "\n" + printout; } __result = flag; return false; } } [HarmonyPatch] internal static class ThirdPersonCameraPatches { public static void RecalculateLook(Character character) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)character == (Object)null) && !((Object)(object)character.data == (Object)null)) { Vector3 val = Quaternion.Euler(0f - character.data.lookValues.y, character.data.lookValues.x, 0f) * Vector3.forward; Vector3 normalized = ((Vector3)(ref val)).normalized; character.data.lookDirection = normalized; Vector3 val2 = normalized; val2.y = 0f; character.data.lookDirection_Flat = ((((Vector3)(ref val2)).sqrMagnitude > 0.001f) ? ((Vector3)(ref val2)).normalized : Vector3.forward); CharacterData data = character.data; val = Vector3.Cross(Vector3.up, character.data.lookDirection); data.lookDirection_Right = ((Vector3)(ref val)).normalized; CharacterData data2 = character.data; val = Vector3.Cross(character.data.lookDirection, character.data.lookDirection_Right); data2.lookDirection_Up = ((Vector3)(ref val)).normalized; } } [HarmonyPatch(typeof(CharacterMovement), "CameraLook")] [HarmonyPrefix] private static bool CharacterMovement_CameraLook_Prefix(CharacterMovement __instance) { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) if (!AdminMenuPlugin.ThirdPersonEnabled || AdminMenuPlugin.CameraMode != AdminMenuPlugin.ThirdPersonCameraMode.FreeLook) { return true; } if (AdminMenuPlugin.IsMenuOpen) { return false; } Character value = Traverse.Create((object)__instance).Field("character").GetValue(); if ((Object)(object)value == (Object)null || !value.IsLocal) { return true; } float num = 1.5f; try { object value2 = Traverse.Create((object)__instance).Field("mouseSensSetting").GetValue(); if (value2 != null) { num = Traverse.Create(value2).Property("Value", (object[])null).GetValue(); } } catch { } Vector2 lookInput = value.input.lookInput; AdminMenuPlugin.OrbitYaw += lookInput.x * num; AdminMenuPlugin.OrbitPitch -= lookInput.y * num; AdminMenuPlugin.OrbitPitch = Mathf.Clamp(AdminMenuPlugin.OrbitPitch, -75f, 85f); if (value.data.isClimbing || value.data.isRopeClimbing || value.data.isVineClimbing || value.input.useSecondaryIsPressed || value.input.interactIsPressed || value.input.usePrimaryIsPressed) { value.data.lookValues.x = AdminMenuPlugin.OrbitYaw; value.data.lookValues.y = 0f - AdminMenuPlugin.OrbitPitch; RecalculateLook(value); } else if (((Vector2)(ref value.input.movementInput)).sqrMagnitude > 0.01f) { Vector3 val = Quaternion.Euler(0f, AdminMenuPlugin.OrbitYaw, 0f) * Vector3.forward; Vector3 val2 = Quaternion.Euler(0f, AdminMenuPlugin.OrbitYaw, 0f) * Vector3.right; Vector3 val3 = val * value.input.movementInput.y + val2 * value.input.movementInput.x; Vector3 normalized = ((Vector3)(ref val3)).normalized; if (((Vector3)(ref normalized)).sqrMagnitude > 0.001f) { float num2 = Mathf.Atan2(normalized.x, normalized.z) * 57.29578f; value.data.lookValues.x = Mathf.MoveTowardsAngle(value.data.lookValues.x, num2, Time.deltaTime * 1200f); value.data.lookValues.y = Mathf.Lerp(value.data.lookValues.y, 0f, Time.deltaTime * 8f); RecalculateLook(value); } } return false; } private static Vector3 GroundDirection(Vector3 planeNormal, Vector3 sideDirection) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return -Vector3.Cross(sideDirection, planeNormal); } [HarmonyPatch(typeof(Character), "CalculateWorldMovementDir")] [HarmonyPrefix] private static bool Character_CalculateWorldMovementDir_Prefix(Character __instance) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) if (!AdminMenuPlugin.ThirdPersonEnabled || AdminMenuPlugin.CameraMode != AdminMenuPlugin.ThirdPersonCameraMode.FreeLook) { return true; } if (!__instance.IsLocal) { return true; } Vector3 val = Quaternion.Euler(0f, AdminMenuPlugin.OrbitYaw, 0f) * Vector3.forward; Vector3 val2 = Quaternion.Euler(0f, AdminMenuPlugin.OrbitYaw, 0f) * Vector3.right; Vector3 val3 = val * __instance.input.movementInput.y + val2 * __instance.input.movementInput.x; val3.y = 0f; __instance.data.worldMovementInput = ((Vector3)(ref val3)).normalized; Vector3 planeNormal = ((__instance.data.sinceGrounded > 0.2f) ? Vector3.up : __instance.data.groundNormal); Vector3 val4 = GroundDirection(planeNormal, -val2); Vector3 val5 = GroundDirection(planeNormal, val); if (__instance.data.sinceGrounded < 0.2f) { __instance.data.groundedForward = val4; __instance.data.groundedRight = val5; } Vector3 val6 = val4 * __instance.input.movementInput.y + val5 * __instance.input.movementInput.x; val6 = Vector3.ClampMagnitude(val6, 1f); __instance.data.worldMovementInput_Grounded = val6; Vector3 val7 = (__instance.data.isGrounded ? __instance.data.worldMovementInput_Grounded : __instance.data.worldMovementInput); float num = Mathf.Lerp(__instance.refs.movement.movementTurnSpeed, __instance.refs.movement.airMovementTurnSpeed, __instance.data.sinceGrounded * 4f); __instance.data.worldMovementInput_Lerp = Vector3.MoveTowards(__instance.data.worldMovementInput_Lerp, val7, Time.deltaTime * num); return false; } [HarmonyPatch(typeof(MainCameraMovement), "CharacterCam")] [HarmonyPostfix] private static void MainCameraMovement_CharacterCam_Postfix(MainCameraMovement __instance) { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) if (!AdminMenuPlugin.ThirdPersonEnabled) { return; } Character localCharacter = Character.localCharacter; if ((Object)(object)localCharacter == (Object)null || (Object)(object)MainCamera.instance == (Object)null || (Object)(object)Traverse.Create((object)MainCamera.instance).Field("camOverride").GetValue() != (Object)null) { return; } Transform transform = ((Component)__instance).transform; Transform val = ((localCharacter.refs != null && (Object)(object)localCharacter.refs.head != (Object)null) ? localCharacter.refs.head.transform : null); Vector3 val2 = (((Object)(object)val != (Object)null) ? (val.position + Vector3.up * 0.1f) : (localCharacter.Center + Vector3.up * 0.4f)); Quaternion val3; if (AdminMenuPlugin.CameraMode == AdminMenuPlugin.ThirdPersonCameraMode.FreeLook) { val3 = (transform.rotation = Quaternion.Euler(AdminMenuPlugin.OrbitPitch, AdminMenuPlugin.OrbitYaw, 0f)); } else { val3 = transform.rotation; AdminMenuPlugin.OrbitYaw = localCharacter.data.lookValues.x; AdminMenuPlugin.OrbitPitch = 0f - localCharacter.data.lookValues.y; } Vector3 val5 = val3 * Vector3.right * AdminMenuPlugin.ThirdPersonSide + Vector3.up * AdminMenuPlugin.ThirdPersonHeight - val3 * Vector3.forward * AdminMenuPlugin.ThirdPersonDistance; Vector3 val6 = val2 + val5; Vector3 val7 = val6 - val2; float magnitude = ((Vector3)(ref val7)).magnitude; if (magnitude > 0.01f) { val7 /= magnitude; int num = LayerMask.op_Implicit(HelperFunctions.GetMask((LayerType)1)) | LayerMask.GetMask(new string[2] { "Default", "Terrain" }); RaycastHit[] array = Physics.SphereCastAll(val2, 0.22f, val7, magnitude, num, (QueryTriggerInteraction)1); float num2 = magnitude; List list = null; if (localCharacter.refs != null && (Object)(object)localCharacter.refs.ragdoll != (Object)null) { list = Traverse.Create((object)localCharacter.refs.ragdoll).Field("colliderList").GetValue>(); } RaycastHit[] array2 = array; for (int i = 0; i < array2.Length; i++) { RaycastHit val8 = array2[i]; if ((Object)(object)((RaycastHit)(ref val8)).collider != (Object)null && !((RaycastHit)(ref val8)).collider.isTrigger && (list == null || !list.Contains(((RaycastHit)(ref val8)).collider)) && ((RaycastHit)(ref val8)).distance < num2) { num2 = Mathf.Max(0.25f, ((RaycastHit)(ref val8)).distance - 0.15f); } } val6 = val2 + val7 * num2; } transform.position = Vector3.Lerp(transform.position, val6, Time.deltaTime * AdminMenuPlugin.ThirdPersonSmoothSpeed); } [HarmonyPatch(typeof(CharacterClimbing), "TryToStartWallClimb")] [HarmonyPrefix] private static bool CharacterClimbing_TryToStartWallClimb_Prefix(CharacterClimbing __instance, bool forceAttempt, Vector3 overide, bool botGrab, float raycastDistance) { //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) if (!AdminMenuPlugin.ThirdPersonEnabled || botGrab || forceAttempt) { return true; } try { Character value = Traverse.Create((object)__instance).Field("character").GetValue(); PhotonView value2 = Traverse.Create((object)__instance).Field("view").GetValue(); if ((Object)(object)value == (Object)null || !__instance.CanClimb() || value.isBot || ((Object)(object)value2 != (Object)null && !value2.IsMine)) { return false; } Transform val = ((value.refs != null && (Object)(object)value.refs.head != (Object)null) ? value.refs.head.transform : null); Vector3 val2 = (((Object)(object)val != (Object)null) ? val.position : (value.Center + Vector3.up * 0.4f)); Vector3 lookDirection = value.data.lookDirection; Vector3 val3 = val2 + lookDirection * 1.6f; RaycastHit val4 = HelperFunctions.LineCheck(val2, val3, (LayerType)1, 0f, (QueryTriggerInteraction)1); if (!Object.op_Implicit((Object)(object)((RaycastHit)(ref val4)).transform)) { val4 = HelperFunctions.LineCheck(val2, val3, (LayerType)1, 0.08f, (QueryTriggerInteraction)1); } if (!Object.op_Implicit((Object)(object)((RaycastHit)(ref val4)).transform)) { val4 = HelperFunctions.LineCheck(val2, val3, (LayerType)1, 0.15f, (QueryTriggerInteraction)1); } if (!Object.op_Implicit((Object)(object)((RaycastHit)(ref val4)).transform)) { return false; } if (!Traverse.Create((object)__instance).Method("AcceptableGrabAngle", new object[2] { ((RaycastHit)(ref val4)).normal, ((RaycastHit)(ref val4)).collider }).GetValue()) { return false; } float value3 = Traverse.Create((object)__instance).Field("sinceLastClimbStarted").GetValue(); bool value4 = Traverse.Create((object)value).Method("OutOfStamina", Array.Empty()).GetValue(); if (value3 <= 1f && value4) { return false; } value.data.sinceCanClimb = 0f; bool value5 = Traverse.Create((object)__instance).Property("validJumpToClimb", (object[])null).GetValue(); if (value.data.sincePressClimb < 0.1f || value5) { if (value.refs != null && (Object)(object)value.refs.items != (Object)null) { value.refs.items.EquipSlotRpc(-1, -1); } Traverse.Create((object)__instance).Field("sinceLastClimbStarted").SetValue((object)0f); value2.RPC("StartClimbRpc", (RpcTarget)0, new object[2] { ((RaycastHit)(ref val4)).point, ((RaycastHit)(ref val4)).normal }); } return false; } catch (Exception arg) { ManualLogSource log = AdminMenuPlugin.Log; if (log != null) { log.LogError((object)$"[Admin_menukz] Error in TryToStartWallClimb 3rd person prefix: {arg}"); } return true; } } [HarmonyPatch(typeof(Interaction), "DoInteractableRaycasts")] [HarmonyPrefix] private static void Interaction_DoInteractableRaycasts_Prefix(ref float overrideDistance) { if (AdminMenuPlugin.ThirdPersonEnabled) { if (overrideDistance <= 0f) { overrideDistance = 2.2f + AdminMenuPlugin.ThirdPersonDistance + 1.2f; } else { overrideDistance += AdminMenuPlugin.ThirdPersonDistance + 1.2f; } } } [HarmonyPatch(typeof(CharacterItems), "RaycastClimbingSpikeStart")] [HarmonyPrefix] private static bool CharacterItems_RaycastClimbingSpikeStart_Prefix(CharacterItems __instance, ref bool __result) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) if (!AdminMenuPlugin.ThirdPersonEnabled) { return true; } try { Character value = Traverse.Create((object)__instance).Field("character").GetValue(); ClimbingSpikeComponent value2 = Traverse.Create((object)__instance).Field("currentClimbingSpikeComponent").GetValue(); if ((Object)(object)value == (Object)null || (Object)(object)value2 == (Object)null || (Object)(object)MainCamera.instance == (Object)null) { return true; } float num = (value.data.isClimbingAnything ? value2.climbingSpikeStartDistance : value2.climbingSpikeStartDistanceGrounded); num += AdminMenuPlugin.ThirdPersonDistance + 1.2f; Transform transform = ((Component)MainCamera.instance).transform; RaycastHit val = default(RaycastHit); bool flag = Physics.Raycast(transform.position, transform.forward, ref val, num, LayerMask.op_Implicit(HelperFunctions.GetMask((LayerType)1))); Traverse.Create((object)__instance).Field("climbingSpikeHit").SetValue((object)val); __result = flag; return false; } catch { return true; } } [HarmonyPatch(typeof(Constructable), "TryUpdatePreview")] [HarmonyPrefix] private static void Constructable_TryUpdatePreview_Prefix(Constructable __instance) { if (AdminMenuPlugin.ThirdPersonEnabled && (Object)(object)__instance != (Object)null && __instance.maxConstructDistance < 12f) { __instance.maxConstructDistance += AdminMenuPlugin.ThirdPersonDistance; } } } }