diff --git a/README.md b/README.md index eb7481e..09748d8 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ As well as setting up **`cheat-library`** as startup project. #### Player - Invincible - Attack Modifier -- No Cooldown Skill/Ultimate/Sprint +- No Cooldown Skill/Ultimate/Sprint/Bow - Unlimited Stamina - No Clip @@ -66,6 +66,7 @@ As well as setting up **`cheat-library`** as startup project. - Auto Seelie - Vacuum Loot - Dumb Enemies +- Freeze Enemies - Auto Destroy Objects - Auto Loot - Pickup Range @@ -92,7 +93,7 @@ As well as setting up **`cheat-library`** as startup project. - Chest Indicator - Hide UI - In-game Embedded Browser -- Enable Peaking +- Enable Peeking - Profile Changer - Free Camera - Texture Changer @@ -135,9 +136,9 @@ As well as setting up **`cheat-library`** as startup project.

Bugs

Welcome to the short explanation for bug reporting -1. You Found a bug. -1. write down what happened, as well as your first thoughts on what you think caused it. -1. can it be reproduced? Yes or no. If yes: Explain in as much clear as possible. i.e what happens when the bug occurs and why it occurs. +1. You found a bug. +1. Write down what happened, as well as your first thoughts on what you think caused it. +1. Can it be reproduced? Yes or no. If yes: Explain in as much clear as possible. i.e what happens when the bug occurs and why it occurs. 1. Tell us which version you are using. copy the `SHA`/ Version Number of the latest commit when you built the mod. For example: `bd17a00ec388f3b93624280cde9e1c66e740edf9` / Release 0.7 ## Bug reporting template diff --git a/cheat-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj index d84be75..af6ba65 100644 --- a/cheat-library/cheat-library.vcxproj +++ b/cheat-library/cheat-library.vcxproj @@ -24,6 +24,7 @@ + false @@ -34,7 +35,7 @@ - + @@ -95,6 +96,7 @@ + @@ -114,6 +116,7 @@ + false @@ -124,7 +127,7 @@ - + @@ -182,6 +185,7 @@ + diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters index 494df5e..7392f94 100644 --- a/cheat-library/cheat-library.vcxproj.filters +++ b/cheat-library/cheat-library.vcxproj.filters @@ -213,7 +213,7 @@ Header Files - + Header Files @@ -246,6 +246,12 @@ Header Files + + Header Files + + + Header Files + @@ -417,7 +423,7 @@ Source Files - + Source Files @@ -450,6 +456,12 @@ Source Files + + Source Files + + + Source Files + diff --git a/cheat-library/res/icons/CloudleisureSteps.png b/cheat-library/res/icons/CloudleisureSteps.png new file mode 100644 index 0000000..f4c1c1f Binary files /dev/null and b/cheat-library/res/icons/CloudleisureSteps.png differ diff --git a/cheat-library/res/icons/DreamForm.png b/cheat-library/res/icons/DreamForm.png new file mode 100644 index 0000000..3383c73 Binary files /dev/null and b/cheat-library/res/icons/DreamForm.png differ diff --git a/cheat-library/res/icons/MelodicBloom.png b/cheat-library/res/icons/MelodicBloom.png new file mode 100644 index 0000000..6a01fbd Binary files /dev/null and b/cheat-library/res/icons/MelodicBloom.png differ diff --git a/cheat-library/res/icons/StarlightCoalescence.png b/cheat-library/res/icons/StarlightCoalescence.png new file mode 100644 index 0000000..a80948f Binary files /dev/null and b/cheat-library/res/icons/StarlightCoalescence.png differ diff --git a/cheat-library/res/icons/TheRavenForum.png b/cheat-library/res/icons/TheRavenForum.png new file mode 100644 index 0000000..b59af6a Binary files /dev/null and b/cheat-library/res/icons/TheRavenForum.png differ diff --git a/cheat-library/res/iconsHD/CloudleisureSteps.png b/cheat-library/res/iconsHD/CloudleisureSteps.png new file mode 100644 index 0000000..f6bd9f7 Binary files /dev/null and b/cheat-library/res/iconsHD/CloudleisureSteps.png differ diff --git a/cheat-library/res/iconsHD/DreamForm.png b/cheat-library/res/iconsHD/DreamForm.png new file mode 100644 index 0000000..4484519 Binary files /dev/null and b/cheat-library/res/iconsHD/DreamForm.png differ diff --git a/cheat-library/res/iconsHD/MelodicBloom.png b/cheat-library/res/iconsHD/MelodicBloom.png new file mode 100644 index 0000000..e9cadeb Binary files /dev/null and b/cheat-library/res/iconsHD/MelodicBloom.png differ diff --git a/cheat-library/res/iconsHD/StarlightCoalescence.png b/cheat-library/res/iconsHD/StarlightCoalescence.png new file mode 100644 index 0000000..b17a5f5 Binary files /dev/null and b/cheat-library/res/iconsHD/StarlightCoalescence.png differ diff --git a/cheat-library/res/iconsHD/TheRavenForum.png b/cheat-library/res/iconsHD/TheRavenForum.png new file mode 100644 index 0000000..ec9b5c2 Binary files /dev/null and b/cheat-library/res/iconsHD/TheRavenForum.png differ diff --git a/cheat-library/res/res.rc b/cheat-library/res/res.rc index 5de49e3..3b9e066 100644 --- a/cheat-library/res/res.rc +++ b/cheat-library/res/res.rc @@ -768,6 +768,16 @@ HDYUMEMIRUWOOD PNG "iconsHD\\YumemiruWood.png" HDZAYTUNPEACH PNG "iconsHD\\ZaytunPeach.png" +HDMELODICBLOOM PNG "iconsHD\\MelodicBloom.png" + +HDCLOUDLEISURESTEPS PNG "iconsHD\\CloudleisureSteps.png" + +HDDREAMFORM PNG "iconsHD\\DreamForm.png" + +HDSTARLIGHTCOALESCENCE PNG "iconsHD\\StarlightCoalescence.png" + +HDTHERAVENFORUM PNG "iconsHD\\TheRavenForum.png" + ABIDINGANGELFISH PNG "icons\\AbidingAngelfish.png" ABYSSMAGE PNG "icons\\AbyssMage.png" @@ -1470,6 +1480,15 @@ YUMEMIRUWOOD PNG "icons\\YumemiruWood.png" ZAYTUNPEACH PNG "icons\\ZaytunPeach.png" +MELODICBLOOM PNG "icons\\MelodicBloom.png" + +CLOUDLEISURESTEPS PNG "icons\\CloudleisureSteps.png" + +DREAMFORM PNG "icons\\DreamForm.png" + +STARLIGHTCOALESCENCE PNG "icons\\StarlightCoalescence.png" + +THERAVENFORUM PNG "icons\\TheRavenForum.png" #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/cheat-library/src/appdata/il2cpp-functions.h b/cheat-library/src/appdata/il2cpp-functions.h index e7a94dc..f9ceaba 100644 --- a/cheat-library/src/appdata/il2cpp-functions.h +++ b/cheat-library/src/appdata/il2cpp-functions.h @@ -51,9 +51,8 @@ DO_APP_FUNC(0x026F0820, bool, MoleMole_LCAvatarCombat_IsEnergyMax, (void* __this DO_APP_FUNC(0x026F0500, void, MoleMole_LCAvatarCombat_ChangeEnergy_1, (LCAvatarCombat* __this, ElementType__Enum type, float value, DataPropOp__Enum state, MethodInfo* method)); DO_APP_FUNC(0x026F13C0, bool, MoleMole_LCAvatarCombat_OnSkillStart, (LCAvatarCombat* __this, uint32_t skillID, float cdMultipler, MethodInfo* method)); DO_APP_FUNC(0x026F54A0, bool, MoleMole_LCAvatarCombat_IsSkillInCD_1, (LCAvatarCombat* __this, LCAvatarCombat_LCAvatarCombat_SkillInfo* skillInfo, MethodInfo* method)); - -DO_APP_FUNC(0x02DB4680, void, MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, (void* __this, String* key, float value, float min, float max, bool forceDoAtRemote, MethodInfo* method)); - +DO_APP_FUNC(0x02DB4680, void, MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, (MoleMole_ActorAbilityPlugin* __this, String* key, float value, float min, float max, bool forceDoAtRemote, MethodInfo* method)); + // Rapid fire DO_APP_FUNC(0x017B1D50, void, MoleMole_LCBaseCombat_DoHitEntity, (LCBaseCombat* __this, uint32_t targetID, AttackResult* attackResult, bool ignoreCheckCanBeHitInMP, MethodInfo* method)); DO_APP_FUNC(0x019DDF40, void, MoleMole_Formula_CalcAttackResult, (CombatProperty* attackCombatProperty, CombatProperty* defenseCombatProperty, AttackResult* attackResult, BaseEntity* attackerEntity, BaseEntity* attackeeEntity, MethodInfo* method)); @@ -155,6 +154,11 @@ DO_APP_FUNC(0x012BC260, void, CookingQtePageContext_CloseItemGotPanel, (CookingQ DO_APP_FUNC(0x02A37D50, Button_1*, ProfilePage, (MonoInLevelPlayerProfilePage* __this, MethodInfo* method)); // MonoInLevelPlayerProfilePage_get_logoutButton DO_APP_FUNC(0x01B101B0, void, ProfileEditPage, (MonoFriendInformationDialog* __this, Sprite* value, MethodInfo* method)); // MonoFriendInformationDialog_set_icon +// Custom Weather | RyujinZX#6666 +DO_APP_FUNC(0x027774F0, bool, EnviroSky_ChangeWeather, (void* /*app::EnviroSky*/ __this, String* weatherPath, float transTime, float ratio, MethodInfo* method)); +DO_APP_FUNC(0x014EDB10, void* /*app::EnviroSky*/, EnviroSky_get_Instance, (MethodInfo* method)); + + // Free Camera DO_APP_FUNC(0x057E9C00, float, Camera_get_fieldOfView, (Camera* __this, MethodInfo* method)); DO_APP_FUNC(0x057EA060, void, Camera_set_fieldOfView, (Camera* __this, float value, MethodInfo* method)); @@ -245,6 +249,7 @@ DO_APP_FUNC(0x0596AFF0, LCBaseCombat*, MoleMole_BaseEntity_GetLogicCombatCompone DO_APP_FUNC_METHODINFO(0x099D4410, MoleMole_BaseEntity_GetLogicCombatComponent_1__MethodInfo); DO_APP_FUNC(0x031ACE30, String*, MoleMole_BaseEntity_ToStringRelease, (BaseEntity* __this, MethodInfo* method)); + DO_APP_FUNC(0x03180C10, void, MoleMole_BaseEntity_SetRelativePosition, (BaseEntity* __this, Vector3 position, bool forceSyncToRigidbody, MethodInfo* method)); DO_APP_FUNC(0x0319D8B0, void, MoleMole_BaseEntity_SetAbsolutePosition, (BaseEntity* __this, Vector3 abpos, bool forceSyncToRigidbody, MethodInfo* method)); DO_APP_FUNC(0x031AA160, Vector3, MoleMole_BaseEntity_GetAbsolutePosition, (BaseEntity* __this, MethodInfo* method)); @@ -255,6 +260,7 @@ DO_APP_FUNC(0x03187C30, Vector3, MoleMole_BaseEntity_GetRight, (BaseEntity* __th DO_APP_FUNC(0x03185DC0, Vector3, MoleMole_BaseEntity_GetUp, (BaseEntity* __this, MethodInfo* method)); DO_APP_FUNC(0x031A5120, bool, MoleMole_BaseEntity_IsActive, (BaseEntity* __this, MethodInfo* method)); DO_APP_FUNC(0x031AFEE0, Rigidbody*, MoleMole_BaseEntity_GetRigidbody, (BaseEntity* __this, MethodInfo* method)); +DO_APP_FUNC(0x0318DB20, Animator*, MoleMole_BaseEntity_get_animator, (BaseEntity* __this, MethodInfo* method)); // type should be 'MoleMole_VCCharacterCombat' not 'MoleMole_VCBaseMove' // function name should be 'GetVisualCombatComponent' not 'GetMoveComponent' @@ -318,6 +324,9 @@ DO_APP_FUNC(0x057E4470, void, Cursor_set_visible, (bool value, MethodInfo* metho DO_APP_FUNC(0x057E4460, void, Cursor_set_lockState, (CursorLockMode__Enum value, MethodInfo* method)); DO_APP_FUNC(0x057E4450, bool, Cursor_get_visible, (MethodInfo* method)); +DO_APP_FUNC(0x0571E7C0, RigidbodyConstraints__Enum, Rigidbody_get_constraints, (Rigidbody* __this, MethodInfo* method)); +DO_APP_FUNC(0x0571E990, void, Rigidbody_set_constraints, (Rigidbody* __this, RigidbodyConstraints__Enum value, MethodInfo* method)); +DO_APP_FUNC(0x0571E980, void, Rigidbody_set_collisionDetectionMode, (Rigidbody* __this, CollisionDetectionMode__Enum value, MethodInfo* method)); DO_APP_FUNC(0x0571E9A0, void, Rigidbody_set_detectCollisions, (Rigidbody* __this, bool value, MethodInfo* method)); DO_APP_FUNC(0x0571E9E0, void, Rigidbody_set_isKinematic, (Rigidbody* __this, bool value, MethodInfo* method)); DO_APP_FUNC(0x0571E8F0, Vector3, Rigidbody_get_velocity, (Rigidbody* __this, MethodInfo* method)); @@ -335,6 +344,8 @@ DO_APP_FUNC(0x057E9D10, int32_t, Camera_get_pixelHeight, (Camera* __this, Method DO_APP_FUNC(0x0579EB70, int32_t, Screen_get_width, (MethodInfo* method)); DO_APP_FUNC(0x0579EB00, int32_t, Screen_get_height, (MethodInfo* method)); +DO_APP_FUNC(0x058236F0, void, Animator_set_speed, (Animator* __this, float value, MethodInfo* method)); + DO_APP_FUNC(0x058AE2D0, bool, Behaviour_get_isActiveAndEnabled, (Behaviour* __this, MethodInfo* method)); DO_APP_FUNC(0x05891610, Vector3, Quaternion_ToEulerAngles, (Quaternion rotation, MethodInfo* method)); diff --git a/cheat-library/src/appdata/il2cpp-types.h b/cheat-library/src/appdata/il2cpp-types.h index 4988724..5fb7cd1 100644 --- a/cheat-library/src/appdata/il2cpp-types.h +++ b/cheat-library/src/appdata/il2cpp-types.h @@ -11975,6 +11975,29 @@ namespace app { struct Avatar__Fields fields; }; + struct MoleMole_ActorAbilityPlugin__Fields { + struct BaseComponentPlugin__Fields _; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_AddGlobalValue_MoleMole_ActorAbility_* _addGlobalValueHandlerClosureDelegate; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_SetGlobalValue_MoleMole_ActorAbility_* _setGlobalValueHandlerClosureDelegate; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_MultiplyGlobalValue_MoleMole_ActorAbility_* _multiplyGlobalValueHandlerClosureDelegate; + struct Action_4_MoleMole_BaseEntity_MoleMole_Config_MultiplyGlobalValue_MoleMole_ActorAbility_Single_* MEEAPCINNBE; + struct Action_4_MoleMole_BaseEntity_String_Single_CPKJHKOJDIF_* LLAIOCNHNPM; + struct List_1_MoleMole_MonoEffectProxyHandle_* _effectProxyListCache; + struct List_1_MoleMole_MonoEffectProxyHandle_* _effectProxyListCacheForChangFollowDampTime; + struct List_1_UnityEngine_Vector3_* _pushedPosList; + struct MoleMole_LCAbility* _owner; + struct List_1_MoleMole_ActorAbility_* _appliedAbilities; + struct Dictionary_2_System_UInt32_System_Int32_* _appliedAbilitiesIndex; + struct Dictionary_2_System_String_MoleMole_ActorAbility_* CKDBIBGCPOB; + uint32_t nextValidAbilityID; + }; + + struct MoleMole_ActorAbilityPlugin { + struct MoleMole_ActorAbilityPlugin__Class* klass; + MonitorData* monitor; + struct MoleMole_ActorAbilityPlugin__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 249b63a..5093d7f 100644 --- a/cheat-library/src/user/cheat/cheat.cpp +++ b/cheat-library/src/user/cheat/cheat.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,7 @@ #include #include +#include #include #include @@ -50,7 +52,7 @@ #include #include #include -#include +#include #include #include @@ -91,6 +93,7 @@ namespace cheat FEAT_INST(VacuumLoot), FEAT_INST(DialogSkip), FEAT_INST(DumbEnemies), + FEAT_INST(FreezeEnemies), FEAT_INST(ElementalSight), FEAT_INST(KillAura), FEAT_INST(MobVacuum), @@ -107,6 +110,8 @@ namespace cheat FEAT_INST(AutoFish), FEAT_INST(AutoCook), + FEAT_INST(CustomWeather), + FEAT_INST(NoFog), FEAT_INST(FPSUnlock), FEAT_INST(CameraZoom), @@ -115,7 +120,7 @@ namespace cheat FEAT_INST(PaimonFollow), FEAT_INST(HideUI), FEAT_INST(Browser), - FEAT_INST(EnablePeaking), + FEAT_INST(EnablePeeking), FEAT_INST(TextureChanger), FEAT_INST(FreeCamera) diff --git a/cheat-library/src/user/cheat/esp/ESP.cpp b/cheat-library/src/user/cheat/esp/ESP.cpp index 7edd9f5..98a8d30 100644 --- a/cheat-library/src/user/cheat/esp/ESP.cpp +++ b/cheat-library/src/user/cheat/esp/ESP.cpp @@ -822,6 +822,11 @@ namespace cheat::feature ADD_FILTER_FIELD(puzzle, UniqueRocks); ADD_FILTER_FIELD(puzzle, WarmingSeelie); ADD_FILTER_FIELD(puzzle, WindmillMechanism); + ADD_FILTER_FIELD(puzzle, MelodicBloom); + ADD_FILTER_FIELD(puzzle, CloudleisureSteps); + ADD_FILTER_FIELD(puzzle, DreamForm); + ADD_FILTER_FIELD(puzzle, StarlightCoalescence); + ADD_FILTER_FIELD(puzzle, TheRavenForum); } #undef ADD_FILTER_FIELD } diff --git a/cheat-library/src/user/cheat/game/Entity.cpp b/cheat-library/src/user/cheat/game/Entity.cpp index 71f564d..37c3747 100644 --- a/cheat-library/src/user/cheat/game/Entity.cpp +++ b/cheat-library/src/user/cheat/game/Entity.cpp @@ -205,6 +205,18 @@ namespace cheat::game SAFE_END(); } + app::Animator* Entity::animator() + { + if (!isLoaded()) + return nullptr; + + SAFE_BEGIN(); + return app::MoleMole_BaseEntity_get_animator(m_RawEntity, nullptr); + SAFE_ERROR(); + return nullptr; + SAFE_END(); + } + app::GameObject* Entity::gameObject() { if (!isLoaded()) diff --git a/cheat-library/src/user/cheat/game/Entity.h b/cheat-library/src/user/cheat/game/Entity.h index 65126ab..6a4e9b2 100644 --- a/cheat-library/src/user/cheat/game/Entity.h +++ b/cheat-library/src/user/cheat/game/Entity.h @@ -37,7 +37,8 @@ namespace cheat::game app::GameObject* gameObject(); app::Rigidbody* rigidbody(); - + app::Animator* animator(); + app::Vector3 forward(); app::Vector3 back(); app::Vector3 right(); diff --git a/cheat-library/src/user/cheat/game/filters.cpp b/cheat-library/src/user/cheat/game/filters.cpp index 8f9523a..0827961 100644 --- a/cheat-library/src/user/cheat/game/filters.cpp +++ b/cheat-library/src/user/cheat/game/filters.cpp @@ -221,7 +221,8 @@ namespace cheat::game::filters SimpleFilter JadeplumeTerrorshroom = { EntityType__Enum_1::Monster, "Fungus_Raptor" }; SimpleFilter RishbolandTiger = { EntityType__Enum_1::Monster, "_Megamoth_" }; SimpleFilter ShaggySumpterBeast = { EntityType__Enum_1::Monster, "_Panther" }; - SimpleFilter Spincrocodile = { EntityType__Enum_1::Monster, "_Gator" }; + SimpleFilter Spincrocodile = { EntityType__Enum_1::Monster, "_Gator" }; + SimpleFilter SentryTurrets = { EntityType__Enum_1::Field, "SentryTurrets_" }; } namespace plant @@ -313,6 +314,12 @@ namespace cheat::game::filters SimpleFilter UniqueRocks = { EntityType__Enum_1::Gadget, "_Chalcedony" }; SimpleFilter WarmingSeelie = { EntityType__Enum_1::Platform, "_FireSeelie" }; SimpleFilter WindmillMechanism = { EntityType__Enum_1::Gear, "Gear_Windmill" }; + WhitelistFilter MelodicBloom = { {EntityType__Enum_1::Worktop, EntityType__Enum_1::Gadget }, {"_TransferFlowerSmall", "_NotePlant" } }; + SimpleFilter CloudleisureSteps = { EntityType__Enum_1::Field, "_CloudPlatform" }; + WhitelistFilter DreamForm = { {EntityType__Enum_1::Field, EntityType__Enum_1::Platform }, "_AnimalSeelie" }; + SimpleFilter StarlightCoalescence = { EntityType__Enum_1::Field, "_PaperStar" }; + SimpleFilter TheRavenForum = { EntityType__Enum_1::Gadget, "_NightCrowStatue" }; + } namespace combined @@ -523,5 +530,7 @@ namespace cheat::game::filters SimpleFilter OrganicTargets = { Monsters, Animals }; // Solael: Please don't mess around with this filter. //m0nkrel: We can choose the entities we need ourselves so as not to magnetize cats, dogs, etc. //AdvancedFilter Animals = { {EntityType__Enum_1::EnvAnimal, EntityType__Enum_1::Monster }, {"Crane", "Tit", "Boar", "Squirrel", "Fox", "Pigeon", "Wigeon", "Falcon" ,"Marten" } }; + + SimpleFilter Lightning = { EntityType__Enum_1::Lightning }; } } diff --git a/cheat-library/src/user/cheat/game/filters.h b/cheat-library/src/user/cheat/game/filters.h index 39f6949..8a9f2a2 100644 --- a/cheat-library/src/user/cheat/game/filters.h +++ b/cheat-library/src/user/cheat/game/filters.h @@ -220,7 +220,8 @@ namespace cheat::game::filters extern SimpleFilter Beisht; extern SimpleFilter RishbolandTiger; extern SimpleFilter ShaggySumpterBeast; - extern SimpleFilter Spincrocodile; + extern SimpleFilter Spincrocodile; + extern SimpleFilter SentryTurrets; } namespace plant @@ -284,7 +285,6 @@ namespace cheat::game::filters extern SimpleFilter BakeDanuki; extern SimpleFilter BloattyFloatty; extern WhitelistFilter CubeDevices; - extern SimpleFilter EightStoneTablets; extern SimpleFilter ElectricConduction; extern SimpleFilter RelayStone; @@ -313,6 +313,11 @@ namespace cheat::game::filters extern SimpleFilter UniqueRocks; extern SimpleFilter WarmingSeelie; extern SimpleFilter WindmillMechanism; + extern WhitelistFilter MelodicBloom; + extern SimpleFilter CloudleisureSteps; + extern WhitelistFilter DreamForm; + extern SimpleFilter StarlightCoalescence; + extern SimpleFilter TheRavenForum; } namespace combined @@ -333,5 +338,6 @@ namespace cheat::game::filters extern SimpleFilter MonsterEquips; extern BlacklistFilter Living; extern SimpleFilter OrganicTargets; + extern SimpleFilter Lightning; } } \ No newline at end of file diff --git a/cheat-library/src/user/cheat/imap/InteractiveMap.cpp b/cheat-library/src/user/cheat/imap/InteractiveMap.cpp index 83c1ba8..0c6a973 100644 --- a/cheat-library/src/user/cheat/imap/InteractiveMap.cpp +++ b/cheat-library/src/user/cheat/imap/InteractiveMap.cpp @@ -1366,6 +1366,12 @@ namespace cheat::feature if (_monoMiniMap == nullptr) return false; + // Fix Exception in Console, when loading ptr null | RyujinZX#7832 + if (_monoMiniMap->fields._._._._.m_CachedPtr == 0) { + _monoMiniMap = nullptr; + return false; + } + SAFE_BEGIN(); return app::Behaviour_get_isActiveAndEnabled(reinterpret_cast(_monoMiniMap), nullptr); SAFE_ERROR(); diff --git a/cheat-library/src/user/cheat/player/NoCD.cpp b/cheat-library/src/user/cheat/player/NoCD.cpp index eec629a..d6dc429 100644 --- a/cheat-library/src/user/cheat/player/NoCD.cpp +++ b/cheat-library/src/user/cheat/player/NoCD.cpp @@ -11,14 +11,14 @@ namespace cheat::feature static bool LCAvatarCombat_OnSkillStart(app::LCAvatarCombat* __this, uint32_t skillID, float cdMultipler, MethodInfo* method); static bool LCAvatarCombat_IsSkillInCD_1(app::LCAvatarCombat* __this, app::LCAvatarCombat_LCAvatarCombat_SkillInfo* skillInfo, MethodInfo* method); - static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(void* __this, app::String* key, float value, float minValue, float maxValue, + static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(app::MoleMole_ActorAbilityPlugin* __this, app::String* key, float value, float minValue, float maxValue, bool forceDoAtRemote, MethodInfo* method); static std::list abilityLog; NoCD::NoCD() : Feature(), NF(f_AbilityReduce, "Reduce Skill/Burst Cooldown", "NoCD", false), - NF(f_TimerReduce, "Reduce Timer", "NoCD", 1.f), + NF(f_TimerReduce, "Reduce Timer", "NoCD", 1.f), NF(f_UtimateMaxEnergy, "Burst max energy", "NoCD", false), NF(f_Sprint, "No Sprint Cooldown", "NoCD", false), NF(f_InstantBow, "Instant bow", "NoCD", false) @@ -28,6 +28,7 @@ namespace cheat::feature HookManager::install(app::MoleMole_HumanoidMoveFSM_CheckSprintCooldown, HumanoidMoveFSM_CheckSprintCooldown_Hook); HookManager::install(app::MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, ActorAbilityPlugin_AddDynamicFloatWithRange_Hook); + } const FeatureGUIInfo& NoCD::GetGUIInfo() const @@ -153,21 +154,26 @@ namespace cheat::feature // value - increase value // min and max - bounds of charge. // So, to charge make full charge m_Instantly, just replace value to maxValue. - static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(void* __this, app::String* key, float value, float minValue, float maxValue, + static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(app::MoleMole_ActorAbilityPlugin* __this, app::String* key, float value, float minValue, float maxValue, bool forceDoAtRemote, MethodInfo* method) { std::time_t t = std::time(nullptr); - auto logEntry = fmt::format("{:%H:%M:%S} | Key: {} value {}.", fmt::localtime(t), il2cppi_to_string(key), value); + auto logEntry = fmt::format("{:%H:%M:%S} | Key: {} value: {} | min: {} | max: {}.", fmt::localtime(t), il2cppi_to_string(key), value, minValue, maxValue); abilityLog.push_front(logEntry); if (abilityLog.size() > 50) abilityLog.pop_back(); - + NoCD& noCD = NoCD::GetInstance(); // This function is calling not only for bows, so if don't put key filter it cause various game mechanic bugs. // For now only "_Enchanted_Time" found for bow charging, maybe there are more. Need to continue research. if (noCD.f_InstantBow && il2cppi_to_string(key) == "_Enchanted_Time") + { value = maxValue; + __this->fields.nextValidAbilityID = 36; // HotFix Yelan, Fishl | It's essentially a game bug. | RyujinZX#7832 + } + CALL_ORIGIN(ActorAbilityPlugin_AddDynamicFloatWithRange_Hook, __this, key, value, minValue, maxValue, forceDoAtRemote, method); } + } diff --git a/cheat-library/src/user/cheat/player/NoClip.cpp b/cheat-library/src/user/cheat/player/NoClip.cpp index 6982c45..9a97c26 100644 --- a/cheat-library/src/user/cheat/player/NoClip.cpp +++ b/cheat-library/src/user/cheat/player/NoClip.cpp @@ -139,8 +139,12 @@ namespace cheat::feature auto rigidBody = avatarEntity->rigidbody(); if (rigidBody == nullptr) return; + if (!f_FreeflightMode) + { + app::Rigidbody_set_collisionDetectionMode(rigidBody, app::CollisionDetectionMode__Enum::Continuous, nullptr); app::Rigidbody_set_detectCollisions(rigidBody, false, nullptr); + } if (!f_VelocityMode) app::Rigidbody_set_velocity(rigidBody, zero, nullptr); diff --git a/cheat-library/src/user/cheat/player/RapidFire.cpp b/cheat-library/src/user/cheat/player/RapidFire.cpp index 4d5dcd2..bcad5ee 100644 --- a/cheat-library/src/user/cheat/player/RapidFire.cpp +++ b/cheat-library/src/user/cheat/player/RapidFire.cpp @@ -186,12 +186,13 @@ namespace cheat::feature bool IsValidByFilter(game::Entity* entity) { if (game::filters::combined::OrganicTargets.IsValid(entity) || + game::filters::monster::SentryTurrets.IsValid(entity) || game::filters::combined::Ores.IsValid(entity) || game::filters::puzzle::Geogranum.IsValid(entity) || game::filters::puzzle::LargeRockPile.IsValid(entity) || game::filters::puzzle::SmallRockPile.IsValid(entity)) return true; - return false; + return false; } // Raises when any entity do hit event. @@ -207,6 +208,7 @@ namespace cheat::feature auto& manager = game::EntityManager::instance(); auto originalTarget = manager.entity(targetID); + if (!IsValidByFilter(originalTarget)) return CALL_ORIGIN(LCBaseCombat_DoHitEntity_Hook, __this, targetID, attackResult, ignoreCheckCanBeHitInMP, method); @@ -236,6 +238,7 @@ namespace cheat::feature } for (const auto& entity : validEntities) { + if (rapidFire.f_MultiHit) { int attackCount = rapidFire.GetAttackCount(__this, entity->runtimeID(), attackResult); for (int i = 0; i < attackCount; i++) diff --git a/cheat-library/src/user/cheat/visuals/EnablePeaking.cpp b/cheat-library/src/user/cheat/visuals/EnablePeeking.cpp similarity index 59% rename from cheat-library/src/user/cheat/visuals/EnablePeaking.cpp rename to cheat-library/src/user/cheat/visuals/EnablePeeking.cpp index edf40bd..3d9a72d 100644 --- a/cheat-library/src/user/cheat/visuals/EnablePeaking.cpp +++ b/cheat-library/src/user/cheat/visuals/EnablePeeking.cpp @@ -1,5 +1,5 @@ #include "pch-il2cpp.h" -#include "EnablePeaking.h" +#include "EnablePeeking.h" #include @@ -7,43 +7,43 @@ namespace cheat::feature { static void MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook(app::MoleMole_VCBaseSetDitherValue* __this, float value, MethodInfo* method); - EnablePeaking::EnablePeaking() : Feature(), - NF(f_Enabled, "Enable Peaking", "Visuals::EnablePeaking", false) + EnablePeeking::EnablePeeking() : Feature(), + NF(f_Enabled, "Enable Peeking", "Visuals::EnablePeeking", false) { HookManager::install(app::MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue, MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook); } - const FeatureGUIInfo& EnablePeaking::GetGUIInfo() const + const FeatureGUIInfo& EnablePeeking::GetGUIInfo() const { - static const FeatureGUIInfo info{ "EnablePeaking", "Visuals", false }; + static const FeatureGUIInfo info{ "EnablePeeking", "Visuals", false }; return info; } - void EnablePeaking::DrawMain() + void EnablePeeking::DrawMain() { ConfigWidget(f_Enabled, ";)"); } - bool EnablePeaking::NeedStatusDraw() const + bool EnablePeeking::NeedStatusDraw() const { return f_Enabled; } - void EnablePeaking::DrawStatus() + void EnablePeeking::DrawStatus() { - ImGui::Text("Enable Peaking"); + ImGui::Text("Enable Peeking"); } - EnablePeaking& EnablePeaking::GetInstance() + EnablePeeking& EnablePeeking::GetInstance() { - static EnablePeaking instance; + static EnablePeeking instance; return instance; - } + } static void MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook(app::MoleMole_VCBaseSetDitherValue* __this, float value, MethodInfo* method) { - EnablePeaking& EnablePeaking = EnablePeaking::GetInstance(); - if (EnablePeaking.f_Enabled) + EnablePeeking& EnablePeeking = EnablePeeking::GetInstance(); + if (EnablePeeking.f_Enabled) value = 1; CALL_ORIGIN(MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook, __this, value, method); diff --git a/cheat-library/src/user/cheat/visuals/EnablePeeking.h b/cheat-library/src/user/cheat/visuals/EnablePeeking.h new file mode 100644 index 0000000..50b414f --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/EnablePeeking.h @@ -0,0 +1,25 @@ +#pragma once +#include +#include + +namespace cheat::feature +{ + + class EnablePeeking : public Feature + { + public: + config::Field> f_Enabled; + + static EnablePeeking& GetInstance(); + + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + + virtual bool NeedStatusDraw() const override; + void DrawStatus() override; + + private: + EnablePeeking(); + }; +} + diff --git a/cheat-library/src/user/cheat/visuals/FreeCamera.cpp b/cheat-library/src/user/cheat/visuals/FreeCamera.cpp index eaa297f..b39819f 100644 --- a/cheat-library/src/user/cheat/visuals/FreeCamera.cpp +++ b/cheat-library/src/user/cheat/visuals/FreeCamera.cpp @@ -3,6 +3,7 @@ #include #include +#include namespace cheat::feature { @@ -20,6 +21,7 @@ namespace cheat::feature FreeCamera::FreeCamera() : Feature(), NF(f_Enabled, "Free Camera", "Visuals::FreeCamera", false), + NF(f_FreezeAnimation, "Freeze Character Animation", "Visuals::FreeCamera", false), NF(f_Speed, "Speed", "Visuals::FreeCamera", 1.0f), NF(f_LookSens, "Look Sensitivity", "Visuals::FreeCamera", 1.0f), NF(f_RollSpeed, "Roll Speed", "Visuals::FreeCamera", 1.0f), @@ -50,6 +52,7 @@ namespace cheat::feature void FreeCamera::DrawMain() { ConfigWidget("Enable", f_Enabled); + ConfigWidget("Freeze Character Animation", f_FreezeAnimation, "Freezes the active character's animation.\nAfter disabling, jump to un-freeze your character."); if (ImGui::BeginTable("FreeCameraDrawTable", 1, ImGuiTableFlags_NoBordersInBody)) { ImGui::TableNextRow(); @@ -245,5 +248,25 @@ namespace cheat::feature } else DisableFreeCam(); + + // Taiga#5555: There's probably be a better way of implementing this. But for now, this is just what I came up with. + auto& manager = game::EntityManager::instance(); + auto animator = manager.avatar()->animator(); + auto rigidBody = manager.avatar()->rigidbody(); + if (animator == nullptr && rigidBody == nullptr) + return; + + if (f_FreezeAnimation) + { + //auto constraints = app::Rigidbody_get_constraints(rigidBody, nullptr); + //LOG_DEBUG("%s", magic_enum::enum_name(constraints).data()); + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezePosition, nullptr); + app::Animator_set_speed(animator, 0.f, nullptr); + } + else + { + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeRotation, nullptr); + app::Animator_set_speed(animator, 1.f, nullptr); + } } } \ No newline at end of file diff --git a/cheat-library/src/user/cheat/visuals/FreeCamera.h b/cheat-library/src/user/cheat/visuals/FreeCamera.h index 9f0ea7e..1084b4a 100644 --- a/cheat-library/src/user/cheat/visuals/FreeCamera.h +++ b/cheat-library/src/user/cheat/visuals/FreeCamera.h @@ -8,6 +8,7 @@ namespace cheat::feature { public: config::Field> f_Enabled; + config::Field> f_FreezeAnimation; config::Field f_Speed; config::Field f_LookSens; config::Field f_RollSpeed; diff --git a/cheat-library/src/user/cheat/world/CustomWeather.cpp b/cheat-library/src/user/cheat/world/CustomWeather.cpp new file mode 100644 index 0000000..960a873 --- /dev/null +++ b/cheat-library/src/user/cheat/world/CustomWeather.cpp @@ -0,0 +1,114 @@ +#include "pch-il2cpp.h" +#include "CustomWeather.h" +#include +#include +#include +#include +#include + +namespace cheat::feature +{ + const char* WeatherType[]{ "ClearSky", "Cloudy", "Foggy", "Storm", "RainHeavy", "FountainRain", "SnowLight", "EastCoast" }; + std::string CustomWeather::GetWeather() { + switch (current_weather) + { + case 0: + return "Data/Environment/Weather/BigWorld/Weather_ClearSky"; + + case 1: + return "Data/Environment/Weather/BigWorld/Weather_Cloudy"; + + case 2: + return "Data/Environment/Weather/BigWorld/Weather_Foggy"; + + case 3: + return "Data/Environment/Weather/BigWorld/Weather_Storm"; + + case 4: + return "Data/Environment/Weather/BigWorld/Weather_Dq_Tabeisha_Rain_Heavy"; + + case 5: + return "Data/Environment/Weather/BigWorld/Weather_LY_Fountain_Rain"; + + case 6: + return "Data/Environment/Weather/BigWorld/Weather_Snowmountain_Snow_Light"; + + case 7: + return "Data/Environment/Weather/BigWorld/Weather_Snowmountain_EastCoast"; + + default: + return "Data/Environment/Weather/BigWorld/Weather_ClearSky"; + } + } + + CustomWeather::CustomWeather() : Feature(), + NF(f_Enabled, "Custom Weather", "World", false), + NF(f_Lightning, "Lightning", "World", false), + toBeUpdate(), nextUpdate(0) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(CustomWeather::OnGameUpdate); + } + + const FeatureGUIInfo& CustomWeather::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "CustomWeather", "Visuals", true }; + return info; + } + + void CustomWeather::DrawMain() + { + ConfigWidget(f_Enabled, "Custom Weather."); + if (f_Enabled) { + ImGui::Combo(("Weather Type"), ¤t_weather, WeatherType, ARRAYSIZE(WeatherType)); + } + ConfigWidget(f_Lightning, "Lightning target enemy, works with RainHeavy weather."); + } + + bool CustomWeather::NeedStatusDraw() const + { + return f_Enabled; + } + + void CustomWeather::DrawStatus() + { + ImGui::Text("Custom Weather"); + if (f_Lightning) + ImGui::Text("Lightning"); + } + + CustomWeather& CustomWeather::GetInstance() + { + static CustomWeather instance; + return instance; + } + + void CustomWeather::OnGameUpdate() + { + if (!f_Enabled) + return; + + auto currentTime = util::GetCurrentTimeMillisec(); + if (currentTime < nextUpdate) + return; + + auto Enviro = app::EnviroSky_get_Instance(nullptr); + if (Enviro != nullptr) { + app::EnviroSky_ChangeWeather(Enviro, string_to_il2cppi(GetWeather()), 1, 1, nullptr); + + if (f_Lightning && current_weather == 4) { + auto& manager = game::EntityManager::instance(); + + for (auto& Monsters : manager.entities(game::filters::combined::Monsters)) { + if (manager.avatar()->distance(Monsters) >= 30) + continue; + + for (auto& entity : manager.entities(game::filters::combined::Lightning)) { + entity->setRelativePosition(Monsters->relativePosition()); + } + } + } + } + + nextUpdate = currentTime + (int)f_DelayUpdate; + } +} \ No newline at end of file diff --git a/cheat-library/src/user/cheat/world/CustomWeather.h b/cheat-library/src/user/cheat/world/CustomWeather.h new file mode 100644 index 0000000..738b38a --- /dev/null +++ b/cheat-library/src/user/cheat/world/CustomWeather.h @@ -0,0 +1,28 @@ +#pragma once +#include +#include +#include + +namespace cheat::feature +{ + class CustomWeather : public Feature + { + public: + config::Field> f_Enabled; + config::Field> f_Lightning; + + static CustomWeather& GetInstance(); + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + bool NeedStatusDraw() const override; + void DrawStatus() override; + private: + int current_weather; + std::string GetWeather(); + SafeQueue toBeUpdate; + SafeValue nextUpdate; + int f_DelayUpdate = 1; + void OnGameUpdate(); + CustomWeather(); + }; +} \ No newline at end of file diff --git a/cheat-library/src/user/cheat/world/DialogSkip.cpp b/cheat-library/src/user/cheat/world/DialogSkip.cpp index 0d4814a..4e937a3 100644 --- a/cheat-library/src/user/cheat/world/DialogSkip.cpp +++ b/cheat-library/src/user/cheat/world/DialogSkip.cpp @@ -85,6 +85,8 @@ namespace cheat::feature if (f_FastDialog) app::Time_set_timeScale(f_TimeSpeedup, nullptr); + else + app::Time_set_timeScale(1.0f, nullptr); bool isImportant = false; if (f_ExcludeImportant) diff --git a/cheat-library/src/user/cheat/world/FreezeEnemies.cpp b/cheat-library/src/user/cheat/world/FreezeEnemies.cpp new file mode 100644 index 0000000..a9d8bed --- /dev/null +++ b/cheat-library/src/user/cheat/world/FreezeEnemies.cpp @@ -0,0 +1,73 @@ +#include "pch-il2cpp.h" +#include "FreezeEnemies.h" + +#include + +#include +#include +#include + +namespace cheat::feature +{ + + FreezeEnemies::FreezeEnemies() : Feature(), + NF(f_Enabled, "Freeze Enemies", "FreezeEnemies", false) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(FreezeEnemies::OnGameUpdate); + } + + const FeatureGUIInfo& FreezeEnemies::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "", "World", false }; + return info; + } + + void FreezeEnemies::DrawMain() + { + ConfigWidget(f_Enabled, "Freezes all enemies' animation speed."); + } + + bool FreezeEnemies::NeedStatusDraw() const + { + return f_Enabled; + } + + void FreezeEnemies::DrawStatus() + { + ImGui::Text("Freeze Enemies"); + } + + FreezeEnemies& FreezeEnemies::GetInstance() + { + static FreezeEnemies instance; + return instance; + } + + // Taiga#5555: There's probably be a better way of implementing this. But for now, this is just what I came up with. + void FreezeEnemies::OnGameUpdate() + { + auto& manager = game::EntityManager::instance(); + + for (const auto& monster : manager.entities(game::filters::combined::Monsters)) + { + auto animator = monster->animator(); + auto rigidBody = monster->rigidbody(); + if (animator == nullptr && rigidBody == nullptr) + return; + + if (f_Enabled) + { + //auto constraints = app::Rigidbody_get_constraints(rigidBody, nullptr); + //LOG_DEBUG("%s", magic_enum::enum_name(constraints).data()); + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeAll, nullptr); + app::Animator_set_speed(animator, 0.f, nullptr); + } + else + { + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeRotation, nullptr); + app::Animator_set_speed(animator, 1.f, nullptr); + } + } + } +} + diff --git a/cheat-library/src/user/cheat/visuals/EnablePeaking.h b/cheat-library/src/user/cheat/world/FreezeEnemies.h similarity index 68% rename from cheat-library/src/user/cheat/visuals/EnablePeaking.h rename to cheat-library/src/user/cheat/world/FreezeEnemies.h index 62604db..91741c4 100644 --- a/cheat-library/src/user/cheat/visuals/EnablePeaking.h +++ b/cheat-library/src/user/cheat/world/FreezeEnemies.h @@ -2,24 +2,26 @@ #include #include -namespace cheat::feature +namespace cheat::feature { - class EnablePeaking : public Feature - { + class FreezeEnemies : public Feature + { public: config::Field> f_Enabled; - static EnablePeaking& GetInstance(); + static FreezeEnemies& GetInstance(); + void OnGameUpdate(); + const FeatureGUIInfo& GetGUIInfo() const override; void DrawMain() override; virtual bool NeedStatusDraw() const override; void DrawStatus() override; - + private: - EnablePeaking(); + FreezeEnemies(); }; }