diff --git a/cheat-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj
index 51c3fc4..ac597a6 100644
--- a/cheat-library/cheat-library.vcxproj
+++ b/cheat-library/cheat-library.vcxproj
@@ -122,6 +122,7 @@
+
@@ -233,6 +234,7 @@
+
@@ -925,8 +927,7 @@
- "$(OutDir)injector.exe"
-powershell -nop -c "& {sleep 15}"
+ "$(OutDir)injector.exe" powershell -nop -c "& {sleep 15}"
$(OutDir)_noexist.nope;%(Outputs)
$(TargetPath);%(Inputs)
diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters
index 20245a6..4f5e111 100644
--- a/cheat-library/cheat-library.vcxproj.filters
+++ b/cheat-library/cheat-library.vcxproj.filters
@@ -237,6 +237,9 @@
Header Files
+
+ Header Files
+
@@ -432,6 +435,9 @@
Source Files
+
+ Source Files
+
diff --git a/cheat-library/src/appdata/il2cpp-functions.h b/cheat-library/src/appdata/il2cpp-functions.h
index 077f93b..5327faa 100644
--- a/cheat-library/src/appdata/il2cpp-functions.h
+++ b/cheat-library/src/appdata/il2cpp-functions.h
@@ -164,6 +164,15 @@ DO_APP_FUNC(0x065546E0, Transform*, Transform_GetChild, (Transform* __this, int3
DO_APP_FUNC(0x0652EA10, Component_1*, Component_1_GetComponent_1, (Component_1* __this, String* type, MethodInfo* method));
DO_APP_FUNC(0x0662F520, void, GameObject_SetActive, (GameObject* __this, bool value, MethodInfo* method));
+DO_APP_FUNC(0x0418FEB0, Camera*, Component_1_GetComponent_17, (Component_1* __this, MethodInfo* method));
+DO_APP_FUNC(0x041A7D40, Camera*, GameObject_AddComponent_24, (GameObject* __this, MethodInfo* method));
+DO_APP_FUNC(0x041A8080, CinemachineBrain*, GameObject_GetComponent_189, (GameObject* __this, MethodInfo* method));
+DO_APP_FUNC(0x041A8080, CinemachineExternalCamera*, GameObject_GetComponent_741, (GameObject* __this, MethodInfo* method));
+
+DO_APP_FUNC(0x06550C00, Object_1*, Object_1_Instantiate_2, (Object_1* original, MethodInfo* method));
+DO_APP_FUNC(0x041B0BB0, Object*, Object_1_Instantiate_5, (Object* original, MethodInfo* method));
+DO_APP_FUNC(0x041B0BB0, GameObject*, Object_1_Instantiate_11, (GameObject* original, MethodInfo* method));
+
// Browser
DO_APP_FUNC(0x0662F100, GameObject*, GameObject_CreatePrimitive, (PrimitiveType__Enum type, MethodInfo* method));
DO_APP_FUNC(0x0662F700, Transform*, GameObject_get_transform, (GameObject* __this, MethodInfo* method));
@@ -184,6 +193,20 @@ DO_APP_FUNC(0x06550910, void, Object_1_Destroy_1, (Object_1* obj, MethodInfo* me
DO_APP_FUNC(0x0662F0A0, Component_1*, GameObject_AddComponent, (GameObject* __this, Type* componentType, MethodInfo* method));
DO_APP_FUNC(0x065508C0, void, Object_1_DestroyImmediate_1, (Object_1* obj, MethodInfo* method));
+
+// Music game event
+DO_APP_FUNC(0x00FFE490, void, MusicGamePlayComponent_OnPlayerUpdate, (MusicGamePlayComponent* __this, MethodInfo* method));
+DO_APP_FUNC(0x00FFE600, void, MusicGamePlayComponent_OnStart, (MusicGamePlayComponent* __this, BeatMapData* beatMapData, MusicMetaInfo* musicMetaInfo, MethodInfo* method));
+DO_APP_FUNC(0x00FFE310, void, MusicGamePlayComponent_OnMiss, (MusicGamePlayComponent* __this, MethodInfo* method));
+DO_APP_FUNC(0x00FFEE40, void, MusicGamePlayComponent_set_combo, (MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method));
+DO_APP_FUNC(0x00FFF050, void, MusicGamePlayComponent_set_score, (MusicGamePlayComponent* __this, float value, MethodInfo* method));
+DO_APP_FUNC(0x01B5AEB0, void, MusicGamePlayComponent_set_maxCombo, (MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method));
+DO_APP_FUNC(0x02C749E0, void, MusicGamePlayComponent_set_perfectCnt, (MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method));
+DO_APP_FUNC(0x035C4E50, void, MusicGamePlayComponent_set_greatCnt, (MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method));
+DO_APP_FUNC(0x017A31C0, void, MusicGamePlayComponent_set_missCnt, (MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method));
+DO_APP_FUNC(0x00FFDE90, void, MusicGamePlayComponent_OnHit, (MusicGamePlayComponent* __this, float score, MethodInfo* method));
+
+
// Utility
DO_APP_FUNC(0x03551B60, String*, Text_get_text, (Text* __this, MethodInfo* method));
DO_APP_FUNC(0x06568060, void, Text_set_text, (Text* __this, String* value, MethodInfo* method));
diff --git a/cheat-library/src/appdata/il2cpp-types.h b/cheat-library/src/appdata/il2cpp-types.h
index ae47281..e76cd0b 100644
--- a/cheat-library/src/appdata/il2cpp-types.h
+++ b/cheat-library/src/appdata/il2cpp-types.h
@@ -11651,6 +11651,169 @@ namespace app {
struct Browser__Fields fields;
};
+ enum class CinemachineBrain_UpdateMethod__Enum : int32_t {
+ FixedUpdate = 0x00000000,
+ LateUpdate = 0x00000001,
+ SmartUpdate = 0x00000002,
+ };
+
+ struct CameraState_CustomBlendable {
+ struct Object_1* m_Custom;
+ float m_Weight;
+ };
+
+ struct CinemachineBlenderSettings__Fields {
+ void* _;
+ struct CinemachineBlenderSettings_CustomBlend__Array* m_CustomBlends;
+ };
+
+ struct CinemachineBlenderSettings {
+ struct CinemachineBlenderSettings__Class* klass;
+ MonitorData* monitor;
+ struct CinemachineBlenderSettings__Fields fields;
+ };
+
+ struct LensSettings {
+ float FieldOfView;
+ float OrthographicSize;
+ float NearClipPlane;
+ float FarClipPlane;
+ float Dutch;
+ bool _Orthographic_k__BackingField;
+ float _Aspect_k__BackingField;
+ };
+
+ struct CameraState {
+ struct LensSettings _Lens_k__BackingField;
+ struct Vector3 _ReferenceUp_k__BackingField;
+ struct Vector3 _ReferenceLookAt_k__BackingField;
+ struct Vector3 _RawPosition_k__BackingField;
+ struct Quaternion _RawOrientation_k__BackingField;
+ struct Vector3 _PositionDampingBypass_k__BackingField;
+ float _ShotQuality_k__BackingField;
+ struct Vector3 _PositionCorrection_k__BackingField;
+ struct Quaternion _OrientationCorrection_k__BackingField;
+ struct CameraState_CustomBlendable mCustom0;
+ struct CameraState_CustomBlendable mCustom1;
+ struct CameraState_CustomBlendable mCustom2;
+ struct CameraState_CustomBlendable mCustom3;
+ struct List_1_Cinemachine_CameraState_CustomBlendable_* m_CustomOverflow;
+ int32_t _NumCustomBlendables_k__BackingField;
+ };
+
+ enum class CinemachineBlendDefinition_Style__Enum : int32_t {
+ Cut = 0x00000000,
+ EaseInOut = 0x00000001,
+ EaseIn = 0x00000002,
+ EaseOut = 0x00000003,
+ HardIn = 0x00000004,
+ HardOut = 0x00000005,
+ Linear = 0x00000006,
+ Spherical_Linear = 0x00000007,
+ };
+
+ struct CinemachineBlendDefinition {
+ CinemachineBlendDefinition_Style__Enum m_Style;
+ float m_Time;
+ struct AnimationCurve* m_BlendCurve;
+ };
+
+ struct CinemachineBrain__Fields {
+ struct MonoBehaviour__Fields _;
+ bool m_SelfUpdate;
+ bool m_ShowDebugText;
+ bool m_ShowCameraFrustum;
+ bool m_IgnoreTimeScale;
+ struct Transform* m_WorldUpOverride;
+ CinemachineBrain_UpdateMethod__Enum m_UpdateMethod;
+ struct CinemachineBlendDefinition m_DefaultBlend;
+ struct CinemachineBlenderSettings* m_CustomBlends;
+ struct Camera* m_OutputCamera;
+ float mFieldOfView;
+ float mNearClipPlane;
+ float mDutch;
+ float mOrthographicSize;
+ struct Vector3 mFinalPosition;
+ struct Quaternion mOrientationWithoutDutch;
+ struct Quaternion mFinalOrientation;
+ struct CinemachineBrain_BrainEvent* m_CameraCutEvent;
+ struct CinemachineBrain_VcamEvent* m_CameraActivatedEvent;
+ struct CinemachineBrain_BlendEvent* m_CameraBlendCompeleteEvent;
+ struct Component_1* _PostProcessingComponent_k__BackingField;
+ struct ICinemachineCamera* mActiveCameraPreviousFrame;
+ struct ICinemachineCamera* mOutgoingCameraPreviousFrame;
+ struct CinemachineBlend* mActiveBlend;
+ bool mPreviousFrameWasOverride;
+ struct List_1_Cinemachine_CinemachineBrain_OverrideStackFrame_* mOverrideStack;
+ int32_t mNextOverrideId;
+ struct CinemachineBrain_OverrideStackFrame* mOverrideBlendFromNothing;
+ struct WaitForFixedUpdate* mWaitForFixedUpdate;
+ struct CameraState _CurrentCameraState_k__BackingField;
+ };
+
+ struct CinemachineBrain {
+ struct CinemachineBrain__Class* klass;
+ MonitorData* monitor;
+ struct CinemachineBrain__Fields fields;
+ };
+
+ struct CinemachineExternalCamera__Fields {
+ void* _;
+ struct Transform* m_LookAt;
+ struct Camera* m_Camera;
+ struct CameraState m_State;
+ struct Transform* _Follow_k__BackingField;
+ };
+
+ struct CinemachineExternalCamera {
+ struct CinemachineExternalCamera__Class* klass;
+ MonitorData* monitor;
+ struct CinemachineExternalCamera__Fields fields;
+ };
+
+ struct MusicGamePlayComponent__Fields {
+ void* _;
+ uint32_t _combo;
+ float _score_k__BackingField;
+ uint32_t _maxCombo_k__BackingField;
+ uint32_t _perfectCnt_k__BackingField;
+ uint32_t _greatCnt_k__BackingField;
+ uint32_t _missCnt_k__BackingField;
+ };
+
+ struct MusicGamePlayComponent {
+ struct MusicGamePlayComponent__Class* klass;
+ MonitorData* monitor;
+ struct MusicGamePlayComponent__Fields fields;
+ };
+
+ struct __declspec(align(8)) BeatMapData__Fields {
+ struct List_1_MoleMole_MusicGame_TrackData_* trackDatas;
+ struct POLBDGNBFKM* config;
+ };
+
+ struct BeatMapData {
+ struct BeatMapData__Class* klass;
+ MonitorData* monitor;
+ struct BeatMapData__Fields fields;
+ };
+
+ struct __declspec(align(8)) MusicMetaInfo__Fields {
+ struct BpmInfo* bpmInfo;
+ struct List_1_System_Single_* simpleBeatHintTimeMsList;
+ struct List_1_System_Single_* complexBeatHintTimeMsList;
+ struct CGDACGGKKNJ* musicConfig;
+ struct PMIELLLMJKA* musicInfoConfig;
+ struct POLBDGNBFKM* beatMapConfig;
+ struct JNEKHDKOKGL* musicInstrumentConfig;
+ };
+
+ struct MusicMetaInfo {
+ struct MusicMetaInfo__Class* klass;
+ MonitorData* monitor;
+ struct MusicMetaInfo__Fields fields;
+ };
+
#if !defined(_GHIDRA_) && !defined(_IDA_)
}
#endif
diff --git a/cheat-library/src/user/cheat/cheat.cpp b/cheat-library/src/user/cheat/cheat.cpp
index 3c5b76b..17da61a 100644
--- a/cheat-library/src/user/cheat/cheat.cpp
+++ b/cheat-library/src/user/cheat/cheat.cpp
@@ -37,6 +37,7 @@
#include
#include
+#include
#include
#include
@@ -95,6 +96,7 @@ namespace cheat
FEAT_INST(AutoFish),
FEAT_INST(AutoCook),
+ FEAT_INST(MusicEvent),
FEAT_INST(NoFog),
FEAT_INST(FPSUnlock),
diff --git a/cheat-library/src/user/cheat/world/MusicEvent.cpp b/cheat-library/src/user/cheat/world/MusicEvent.cpp
new file mode 100644
index 0000000..9a7cf92
--- /dev/null
+++ b/cheat-library/src/user/cheat/world/MusicEvent.cpp
@@ -0,0 +1,152 @@
+#include "pch-il2cpp.h"
+#include "MusicEvent.h"
+
+#include
+#include
+
+namespace cheat::feature
+{
+
+ static void MusicGamePlayComponent_OnStart_Hook(app::MusicGamePlayComponent* __this, app::BeatMapData* beatMapData, app::MusicMetaInfo* musicMetaInfo, MethodInfo* method);
+ static void MusicGamePlayComponent_OnMiss_Hook(app::MusicGamePlayComponent* __this, MethodInfo* method);
+ static void MusicGamePlayComponent_set_combo_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method);
+ static void MusicGamePlayComponent_set_score_Hook(app::MusicGamePlayComponent* __this, float value, MethodInfo* method);
+ static void MusicGamePlayComponent_set_maxCombo_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method);
+ static void MusicGamePlayComponent_set_perfectCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method);
+ static void MusicGamePlayComponent_set_greatCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method);
+ static void MusicGamePlayComponent_set_missCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method);
+ static void MusicGamePlayComponent_OnHit_Hook(app::MusicGamePlayComponent* __this, float score, MethodInfo* method);
+
+ MusicEvent::MusicEvent() : Feature(),
+ NF(f_Enabled, "Music Event", "MusicEvent", false)
+ {
+ //HookManager::install(app::MusicGamePlayComponent_OnStart, MusicGamePlayComponent_OnStart_Hook);
+ HookManager::install(app::MusicGamePlayComponent_OnMiss, MusicGamePlayComponent_OnMiss_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_combo, MusicGamePlayComponent_set_combo_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_score, MusicGamePlayComponent_set_score_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_maxCombo, MusicGamePlayComponent_set_maxCombo_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_perfectCnt, MusicGamePlayComponent_set_perfectCnt_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_greatCnt, MusicGamePlayComponent_set_greatCnt_Hook);
+ HookManager::install(app::MusicGamePlayComponent_set_missCnt, MusicGamePlayComponent_set_missCnt_Hook);
+ HookManager::install(app::MusicGamePlayComponent_OnHit, MusicGamePlayComponent_OnHit_Hook);
+ }
+
+ const FeatureGUIInfo& MusicEvent::GetGUIInfo() const
+ {
+ static const FeatureGUIInfo info{ "", "World", false };
+ return info;
+ }
+
+ void MusicEvent::DrawMain()
+ {
+ ConfigWidget(f_Enabled, "Enemies don't attack or use abilities against player. \n"
+ "May not work with some enemies or enemy abilites.");
+ }
+
+ bool MusicEvent::NeedStatusDraw() const
+ {
+ return f_Enabled;
+ }
+
+ void MusicEvent::DrawStatus()
+ {
+ ImGui::Text("Music Event");
+ }
+
+ MusicEvent& MusicEvent::GetInstance()
+ {
+ static MusicEvent instance;
+ return instance;
+ }
+
+ static void MusicGamePlayComponent_OnStart_Hook(app::MusicGamePlayComponent * __this, app::BeatMapData* beatMapData, app::MusicMetaInfo* musicMetaInfo, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ __this->fields._combo = 9999999;
+ __this->fields._score_k__BackingField = 9999999;
+ __this->fields._maxCombo_k__BackingField = 9999999;
+ __this->fields._perfectCnt_k__BackingField = 9999999;
+ __this->fields._greatCnt_k__BackingField = 9999999;
+ __this->fields._missCnt_k__BackingField = 0;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_OnStart_Hook, __this, beatMapData, musicMetaInfo, method);
+ }
+
+ static void MusicGamePlayComponent_OnMiss_Hook(app::MusicGamePlayComponent* __this, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ return;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_OnMiss_Hook, __this, method);
+ }
+
+ static void MusicGamePlayComponent_set_combo_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_combo_Hook, __this, value, method);
+ }
+
+ static void MusicGamePlayComponent_set_score_Hook(app::MusicGamePlayComponent* __this, float value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_score_Hook, __this, value, method);
+ }
+ static void MusicGamePlayComponent_set_maxCombo_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_maxCombo_Hook, __this, value, method);
+ }
+ static void MusicGamePlayComponent_set_perfectCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_perfectCnt_Hook, __this, value, method);
+ }
+ static void MusicGamePlayComponent_set_greatCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_greatCnt_Hook, __this, value, method);
+ }
+ static void MusicGamePlayComponent_set_missCnt_Hook(app::MusicGamePlayComponent* __this, uint32_t value, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ value = 0;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_set_missCnt_Hook, __this, value, method);
+ }
+ static void MusicGamePlayComponent_OnHit_Hook(app::MusicGamePlayComponent* __this, float score, MethodInfo* method)
+ {
+ MusicEvent& MusicEvent = MusicEvent::GetInstance();
+ if (MusicEvent.f_Enabled)
+ {
+ score = 999999999;
+ }
+ CALL_ORIGIN(MusicGamePlayComponent_OnHit_Hook, __this, score, method);
+ }
+}
+
diff --git a/cheat-library/src/user/cheat/world/MusicEvent.h b/cheat-library/src/user/cheat/world/MusicEvent.h
new file mode 100644
index 0000000..336b059
--- /dev/null
+++ b/cheat-library/src/user/cheat/world/MusicEvent.h
@@ -0,0 +1,25 @@
+#pragma once
+#include
+#include
+
+namespace cheat::feature
+{
+
+ class MusicEvent : public Feature
+ {
+ public:
+ config::Field> f_Enabled;
+
+ static MusicEvent& GetInstance();
+
+ const FeatureGUIInfo& GetGUIInfo() const override;
+ void DrawMain() override;
+
+ virtual bool NeedStatusDraw() const override;
+ void DrawStatus() override;
+
+ private:
+ MusicEvent();
+ };
+}
+