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();
+ };
+}
+