RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of LoaderSkipper v3.1.1
Mods/LoaderSkipper.dll
Decompiled 2 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using Il2CppRUMBLE.Managers; using Il2CppRUMBLE.Players.Scaling; using Il2CppRUMBLE.Utilities; using Il2CppTMPro; using LoaderSkipper; using MelonLoader; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(main), "LoaderSkipper", "3.1.1", "UlvakSkillz", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: MelonColor(255, 195, 0, 255)] [assembly: MelonAuthorColor(255, 195, 0, 255)] [assembly: VerifyLoaderVersion(0, 6, 2, true)] [assembly: AssemblyTitle("LoaderSkipper")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LoaderSkipper")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("924f355c-9d5e-4b6d-9104-9e3d94766e61")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace LoaderSkipper; public class main : MelonMod { [CompilerGenerated] private sealed class <CheckIfFileExists>d__25 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public string filePath; public string fileName; public main <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <CheckIfFileExists>d__25(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (!File.Exists(filePath + "\\" + fileName) || !File.Exists(FILEPATHLastTPose)) { if (!Directory.Exists(filePath)) { MelonLogger.Msg("Folder Not Found, Creating Folder: " + filePath); Directory.CreateDirectory(filePath); } if (!File.Exists(filePath + "\\" + fileName)) { MelonLogger.Msg("Creating File " + filePath + "\\" + fileName); File.Create(filePath + "\\" + fileName); } if (!File.Exists(FILEPATHLastTPose)) { MelonLogger.Msg("Creating File " + FILEPATHLastTPose); File.Create(FILEPATHLastTPose); } } else { <>4__this.fileText = <>4__this.ReadFileText(filePath + "\\" + fileName); } <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <StartGymLoad>d__19 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public main <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <StartGymLoad>d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(2f); <>1__state = 1; return true; case 1: <>1__state = -1; Singleton<SceneManager>.instance.PerformStartupGymLoad(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private GameObject status; private string currentScene = "Loader"; private bool sceneChanged = false; private bool init = false; private string[] fileText; private string FILEPATH = "UserData\\LoaderSkipper"; private string FILENAME = "OverrideLastTpose.txt"; private static string FILEPATHLastTPose = "UserData\\LoaderSkipper\\LastTpose.txt"; private bool tPoseSet = false; private static Transform[] measurements = (Transform[])(object)new Transform[4]; private GameObject head; private GameObject lController; private GameObject rController; private GameObject root; private PlayerMeasurement playerMeasurement; private bool measurementGot = false; private bool loading = false; public override void OnFixedUpdate() { //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0136: 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_016d: 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) //IL_009f: Unknown result type (might be due to invalid IL or missing references) if (sceneChanged) { try { if (currentScene == "Loader") { status = GameObject.Find("________________SCENE_________________/Text/Measuring/TextCanvas/Status"); init = true; } } catch { return; } if (currentScene == "Gym") { if (measurementGot || Singleton<PlayerManager>.instance.localPlayer == null || Singleton<PlayerManager>.instance.localPlayer.Data == null) { return; } playerMeasurement = Singleton<PlayerManager>.instance.localPlayer.Data.PlayerMeasurement; measurementGot = true; } if (!tPoseSet && currentScene == "Gym") { SetTPose(); tPoseSet = true; } sceneChanged = false; } if (measurementGot && (playerMeasurement.ArmSpan != Singleton<PlayerManager>.instance.localPlayer.Data.PlayerMeasurement.ArmSpan || playerMeasurement.Length != Singleton<PlayerManager>.instance.localPlayer.Data.PlayerMeasurement.Length)) { StoreTPose(); playerMeasurement = Singleton<PlayerManager>.instance.localPlayer.Data.PlayerMeasurement; } if (init && !loading && currentScene == "Loader" && ((TMP_Text)status.GetComponent<TextMeshProUGUI>()).text == "Ready to RUMBLE!") { loading = true; MelonCoroutines.Start(StartGymLoad()); } } private void Log(string msg) { MelonLogger.Msg(msg); } [IteratorStateMachine(typeof(<StartGymLoad>d__19))] public IEnumerator StartGymLoad() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <StartGymLoad>d__19(0) { <>4__this = this }; } public void SetTPose() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_009c: 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_00b2: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Expected O, but got Unknown //IL_012c: 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_0142: Expected O, but got Unknown //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) try { fileText = File.ReadAllLines(FILEPATH + "\\" + FILENAME); if (fileText.Length < 12) { MelonLogger.Msg("Override not Set, Loading Last T-Pose"); fileText = File.ReadAllLines(FILEPATHLastTPose); } else { MelonLogger.Msg("Override Found, Loading Override Measurements"); } head = new GameObject(); head.transform.position = new Vector3(float.Parse(fileText[0]), float.Parse(fileText[1]), float.Parse(fileText[2])); lController = new GameObject(); lController.transform.position = new Vector3(float.Parse(fileText[3]), float.Parse(fileText[4]), float.Parse(fileText[5])); rController = new GameObject(); rController.transform.position = new Vector3(float.Parse(fileText[6]), float.Parse(fileText[7]), float.Parse(fileText[8])); root = new GameObject(); root.transform.position = new Vector3(float.Parse(fileText[9]), float.Parse(fileText[10]), float.Parse(fileText[11])); Singleton<PlayerManager>.instance.localPlayer.Data.SetMeasurement(PlayerMeasurement.Create(head.transform, lController.transform, rController.transform, root.transform, true), true); playerMeasurement = Singleton<PlayerManager>.instance.localPlayer.Data.PlayerMeasurement; Object.Destroy((Object)(object)head); Object.Destroy((Object)(object)lController); Object.Destroy((Object)(object)rController); Object.Destroy((Object)(object)root); MelonLogger.Msg("TPose Loaded: " + ((object)(PlayerMeasurement)(ref playerMeasurement)).ToString()); } catch (Exception ex) { MelonLogger.Error("Error Setting TPose, Please T-Pose In Game: " + ex); } } public static void StoreTPose() { //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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: 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_0112: 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_012e: 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_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) try { measurements[0] = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2).GetChild(0).GetChild(0); measurements[1] = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2).GetChild(1).GetChild(0); measurements[2] = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2).GetChild(2).GetChild(0); measurements[3] = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2).GetChild(3); WriteToFile(new string[12] { measurements[0].position.x.ToString(), measurements[0].position.y.ToString(), measurements[0].position.z.ToString(), measurements[1].position.x.ToString(), measurements[1].position.y.ToString(), measurements[1].position.z.ToString(), measurements[2].position.x.ToString(), measurements[2].position.y.ToString(), measurements[2].position.z.ToString(), measurements[3].position.x.ToString(), (measurements[3].position.y - 0.06f).ToString(), measurements[3].position.z.ToString() }, FILEPATHLastTPose); } catch (Exception ex) { MelonLogger.Error((object)ex); } } public override void OnLateInitializeMelon() { MelonCoroutines.Start(CheckIfFileExists(FILEPATH, FILENAME)); } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { if (sceneName == "Loader") { loading = false; } currentScene = sceneName; sceneChanged = true; } public static void WriteToFile(string[] text, string outputFile) { if (File.Exists(outputFile)) { try { List<string> list = new List<string>(); File.WriteAllLines(outputFile, text); return; } catch (Exception ex) { MelonLogger.Error((object)ex); return; } } MelonLogger.Error("File not Found: Check Game Folder for " + outputFile); } [IteratorStateMachine(typeof(<CheckIfFileExists>d__25))] public IEnumerator CheckIfFileExists(string filePath, string fileName) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <CheckIfFileExists>d__25(0) { <>4__this = this, filePath = filePath, fileName = fileName }; } public string[] ReadFileText(string inputFile) { if (File.Exists(inputFile)) { try { List<string> list = new List<string>(); return File.ReadAllLines(inputFile); } catch (Exception ex) { MelonLogger.Error((object)ex); } } else { MelonLogger.Error("File not Found: Check Game Folder for " + inputFile); } return null; } }