From 2f433fd4e95f2fe491592ded5426b018510ae503 Mon Sep 17 00:00:00 2001 From: Joaquin <67109235+Taiga74164@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:21:02 -0600 Subject: [PATCH] [WIP] Animation Changer --- cheat-library/cheat-library.vcxproj | 4 + cheat-library/cheat-library.vcxproj.filters | 12 + cheat-library/src/appdata/il2cpp-functions.h | 2 + cheat-library/src/user/cheat/cheat.cpp | 4 +- .../user/cheat/visuals/AnimationChanger.cpp | 292 ++++++++++++++++++ .../src/user/cheat/visuals/AnimationChanger.h | 26 ++ 6 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 cheat-library/src/user/cheat/visuals/AnimationChanger.cpp create mode 100644 cheat-library/src/user/cheat/visuals/AnimationChanger.h diff --git a/cheat-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj index af6ba65..04f14df 100644 --- a/cheat-library/cheat-library.vcxproj +++ b/cheat-library/cheat-library.vcxproj @@ -21,6 +21,7 @@ + @@ -113,6 +114,7 @@ + @@ -219,6 +221,7 @@ + @@ -557,6 +560,7 @@ + diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters index 7392f94..c949b36 100644 --- a/cheat-library/cheat-library.vcxproj.filters +++ b/cheat-library/cheat-library.vcxproj.filters @@ -252,6 +252,9 @@ Header Files + + Header Files + @@ -462,6 +465,9 @@ Source Files + + Source Files + @@ -2508,5 +2514,11 @@ Resource Files + + Resource Files + + + Resource Files + \ No newline at end of file diff --git a/cheat-library/src/appdata/il2cpp-functions.h b/cheat-library/src/appdata/il2cpp-functions.h index f9ceaba..d3f5a9a 100644 --- a/cheat-library/src/appdata/il2cpp-functions.h +++ b/cheat-library/src/appdata/il2cpp-functions.h @@ -344,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(0x05822EE0, void, Animator_Play, (Animator* __this, String* stateName, int32_t layer, float normalizedTime, MethodInfo* method)); +DO_APP_FUNC(0x05823060, void, Animator_Rebind, (Animator* __this, 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)); diff --git a/cheat-library/src/user/cheat/cheat.cpp b/cheat-library/src/user/cheat/cheat.cpp index 5093d7f..1dbdcae 100644 --- a/cheat-library/src/user/cheat/cheat.cpp +++ b/cheat-library/src/user/cheat/cheat.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include "GenshinCM.h" @@ -122,7 +123,8 @@ namespace cheat FEAT_INST(Browser), FEAT_INST(EnablePeeking), FEAT_INST(TextureChanger), - FEAT_INST(FreeCamera) + FEAT_INST(FreeCamera), + FEAT_INST(AnimationChanger) }); #undef FEAT_INST diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp new file mode 100644 index 0000000..bca2fd5 --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp @@ -0,0 +1,292 @@ +#include "pch-il2cpp.h" +#include "AnimationChanger.h" + +#include +#include +#include +#include + +namespace cheat::feature +{ + static std::string f_Animation; + + AnimationChanger::AnimationChanger() : Feature(), + NFEX(f_Enabled, "Animation Changer", "AnimationChanger", "Visuals", false, false) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(AnimationChanger::OnGameUpdate); + } + + const FeatureGUIInfo& AnimationChanger::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "AnimationChanger", "Visuals", false }; + return info; + } + + void AnimationChanger::DrawMain() + { + ConfigWidget(f_Enabled, "Changes active character's animation."); + ImGui::InputText("Animation", &f_Animation); + } + + bool AnimationChanger::NeedStatusDraw() const + { + return f_Enabled; + } + + void AnimationChanger::DrawStatus() + { + ImGui::Text("AnimationChanger"); + } + + AnimationChanger& AnimationChanger::GetInstance() + { + static AnimationChanger instance; + return instance; + } + + void AnimationChanger::OnGameUpdate() + { + auto& manager = game::EntityManager::instance(); + auto avatar = manager.avatar(); + if (avatar->animator() == nullptr) + return; + + static bool changed = false; + + if (f_Enabled) + { + auto avatarObj = avatar->gameObject(); + auto rootObj = app::MoleMole_BaseEntity_get_rootGameObject(avatar->raw(), nullptr); // (Clone) + auto path = app::Object_1_get_name(reinterpret_cast(avatarObj), nullptr); + auto pathavatarObj = app::Object_1_get_name(reinterpret_cast(rootObj), nullptr); // (Clone) + + if (!changed) + { + app::Animator_Play(avatar->animator(), string_to_il2cppi(f_Animation.c_str()), 0, 0, nullptr); + changed = true; + } + + } + else + { + if (changed) + { + app::Animator_Rebind(avatar->animator(), nullptr); + changed = false; + } + } + } +} + +/* +//------Animations------\\ +SlipFaceWall +SlipBackWall +DropDown +JumpOffWall +Jump +JumpForRun +JumpForWalk +Fly +FlyStart +JumpForSprint +SwimIdle +SwimMove +SwimDash +ClimbMove1 +ClimbIdle +ClimbJump +ClimbMove0 +FallToGroundRun +FallOnGroundLit +FallOnGround +FallToGroundRunHard +FallToGroundSprint +Walk +Run +Standby +RunToIdle +RunToWalk +WalkToIdle +WalkToRun +Sprint +SprintToIdle +SprintToRun +ClimbDownToGround +SprintBS +ShowUp +CrouchToStandby +CrouchIdle +CrouchRoll +CrouchMove +SkiffNormal +Upstairs +JumpUpWallForStandby +JumpUpWallReady +Standby2ClimbA +SwimJump +SwimJumpDrop +SwimJumpToWater +Standby2ClimbB +CrouchDrop +TurnDir +StandbyWeapon +StandbyPutaway +StandbyPutawayOver +Icespine_Out +Icespine +LiquidStrike_MoveStandby +LiquidStrike_AS +LiquidStrike_BS +LiquidStrike_BS1 +LiquidStrike_Move +LiquidStrike_Strike +LiquidStrike_FatalStandby +LiquidStrike_FatalMove +LiquidStrike_AS_OnWater +LiquidStrike_BS_0 +FrozenWindmill +FrozenWindmill_AS +Attack03 +Attack04 +Attack05 +Attack01 +Attack02 +ExtraAttack +ExtraAttack_AS +FallingAnthem_Loop +FallingAnthem_AS_2 +FallingAnthem_BS_1 +FallingAnthem_BS_2 +FallingAnthem_AS_1 +FallingAnthem_Loop_Low +SitBDown +SitBLoop +SitBUp +SitDown +SitLoop +SitUp +StandbyShow_01 +StandbyShow_02 +StandbyVoice +Think01BS +Think01Loop +Think01AS +Akimbo02BS +Akimbo02Loop +Akimbo02AS +ChannelBS +ChannelLoop +ChannelAS +PlayMusic_Lyre_AS +PlayMusic_Lyre_BS +PlayMusic_Lyre_Loop +PlayMusic_Qin_BS +PlayMusic_Qin_AS +PlayMusic_Qin_Loop +ActivitySkill_ElectricCoreFly +Hit_H +Hit_L +Hit_Throw +Hit_Throw_Ground +Hit_ThrowAir +Struggle +NormalDie +SwimDie +HitGroundDie +FallDie_AS +FallDie + +//------Main Character------\\ +UziExplode_AS +UziExplode_BS +UziExplode_Charge_01 +UziExplode_Strike_02 +UziExplode_Charge_02 +UziExplode_Strike_01 +UziExplode_BS_1 +WindBreathe_AS +WindBreathe +Hogyoku_AS +Hogyoku_BS +Hogyoku +Hogyoku_Charge +Hogyoku_Charge_AS +Hogyoku_Charge_2 +RockTide_AS +RockTide +CrouchThrowBS +CrouchThrowLoop +CrouchThrowAS +FindCatThrowBS +FindCatThrowLoop +FindCatThrowAS +Player_Electric_ElementalArt +Player_Electric_ElementalArt_AS +Player_Electric_ElementalBurst +Player_Electric_ElementalBurst_AS +PutHand01BS +PutHand01Loop +PutHand01AS +Akimbo01BS +Backrake01BS +Forerake01BS +StrikeChest01BS +Akimbo01Loop +Akimbo01AS +Backrake01Loop +Backrake01AS +Forerake01Loop +Forerake01AS +StrikeChest01Loop +StrikeChest01AS +HoldHead01BS +HoldHead01Loop +HoldHead01AS +Clap01 +Turn01_90LBS +Turn01_90RBS +Turn01_90LAS +Turn01_90RAS +Alert01BS +Alert01Loop +Alert01AS +Fishing01_BS +Fishing01Loop +Fishing01AS +Think01_BS +Think01_Loop +Think01_AS +Channel01BS +Channel01Loop +Channel01AS +Fishing_Battle_BS +Fishing_Cast_AS +Fishing_Cast_BS +Fishing_Cast_Loop +Fishing_Choose +Fishing_Choose_Loop +Fishing_End +Fishing_Pull_01 +Fishing_Pull_02 +Fishing_Wait +Fishing_Pull_Fail +Bartender_MixingStandby +Bartender_MixingStart +Bartender_MixingToPour +Bartender_Pour +Bartender_PourFinish +Bartender_PourStandby +Bartender_AddLoop +Bartender_PrepareStart +Bartender_Standby +Bartender_AddStandby +Bartender_PrepareToStandby +Bartender_StandbyFinish +Blocking_BS +Blocking_Loop +Blocking_Back +Blocking_Bounce +Blocking_Hit +Blocking_AS +*/ \ No newline at end of file diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.h b/cheat-library/src/user/cheat/visuals/AnimationChanger.h new file mode 100644 index 0000000..309bdf9 --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.h @@ -0,0 +1,26 @@ +#pragma once +#include +#include + +namespace cheat::feature +{ + + class AnimationChanger : public Feature + { + public: + config::Field> f_Enabled; + + static AnimationChanger& GetInstance(); + + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + + virtual bool NeedStatusDraw() const override; + void DrawStatus() override; + void OnGameUpdate(); + + private: + AnimationChanger(); + }; +} +