Skip to content

Commit

Permalink
misc: Reusable Entity Check function
Browse files Browse the repository at this point in the history
  • Loading branch information
Taiga74164 committed Apr 7, 2024
1 parent 7706c51 commit 1be1ed1
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 16 deletions.
4 changes: 4 additions & 0 deletions src/game/Render/Gui/gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ void Gui::Render()
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(2, 2));
ImGui::BeginGroup();

//ImGui::CheckboxFill("Animation Speed", &vars.PlayerSpeed.value());
//if (vars.PlayerSpeed.value())
// ImGui::SliderFloat("Speed", &vars.PlayerSpeedValue.value(), 1.0f, 20.0f, "%.1f");

ImGui::CheckboxFill("No Cooldown", &vars.NoCooldown.value());

ImGui::CheckboxFill("No Cooldown Shadow", &vars.NoCooldownShadow.value()); HELPMAKER("Enable only if you have shadow feature available");
Expand Down
1 change: 1 addition & 0 deletions src/game/appdata/il2cpp-functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ DO_APP_FUNC(0x0308E5B0, Scene, SceneManager_GetActiveScene, (MethodInfo* method)
DO_APP_FUNC(0x0308FBE0, String*, Scene_GetNameInternal, (int32_t sceneHandle, MethodInfo* method));
DO_APP_FUNC(0x030651F0, void, Object_1_Destroy_1, (Object_1* obj, MethodInfo* method));
DO_APP_FUNC(0x03067140, String*, Object_1_get_name, (Object_1* __this, MethodInfo* method));
DO_APP_FUNC(0x0300C190, float, Animator_get_speed, (Animator* __this, MethodInfo* method));
DO_APP_FUNC(0x0300CBF0, void, Animator_set_speed, (Animator* __this, float value, MethodInfo* method));
DO_APP_FUNC(0x03076A50, Vector3, Transform_get_position, (Transform* __this, MethodInfo* method));
DO_APP_FUNC(0x030772C0, void, Transform_set_position, (Transform* __this, Vector3 value, MethodInfo* method));
Expand Down
24 changes: 24 additions & 0 deletions src/game/appdata/il2cpp-types.h
Original file line number Diff line number Diff line change
Expand Up @@ -5440,6 +5440,30 @@ namespace app
struct ENHPKNIEKMI__Fields fields;
};

struct ModelContainer__Fields
{
struct MonoBehaviour__Fields _;
struct CachedComponent_1_UnityEngine_Transform_* CGMBGKPEHDL;
struct CachedComponent_1_UnityEngine_Transform_* CKIAKFKBKFI;
struct CachedComponent_1_UnityEngine_Transform_* AOOKBIBLNPF;
struct CachedComponent_1_UnityEngine_Collider_* BOIKMOCLICI;
struct CachedComponent_1_UnityEngine_Animator_* EMKPLCDDJAF;
struct CachedComponent_1_UnityEngine_Transform_* JFIPHCCEKFE;
struct CachedComponent_1_UnityEngine_Transform_* IMFMNGPHIAH;
struct CachedComponent_1_UnityEngine_SkinnedMeshRenderer_* GPFCIAOIAMO;
struct CachedComponent_1_UnityEngine_SkinnedMeshRenderer_* CMGFGABAECP;
struct CachedComponent_1_UnityEngine_Transform_* DDEKGOLFLIF;
struct CachedComponent_1_UnityEngine_Transform_* KPNKKCDGHHD;
struct CachedComponent_1_UnityEngine_Transform_* FBJGBNNGELP;
};

struct ModelContainer
{
struct ModelContainer__Class* klass;
MonitorData* monitor;
struct ModelContainer__Fields fields;
};

#if !defined(_GHIDRA_) && !defined(_IDA_)
}
#endif
15 changes: 10 additions & 5 deletions src/game/cheat/features/EntityManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ namespace Cheat::Features
if (m_pPlayer == nullptr)
return;

if (!app::PCILGJOEPJM_PPAKPBOJLIP(m_pPlayer, nullptr))
if (!IsCharacterAlive(m_pPlayer))
{
LOG("PCILGJOEPJM_PPAKPBOJLIP failed, Player is probably not in battle");
LOG("IsCharacterAlive returned false, Player is probably not in battle");
m_pPlayer = nullptr;
m_pPlayerGO = nullptr;
m_pEnemiesVec.clear();
Expand All @@ -32,7 +32,7 @@ namespace Cheat::Features

void EntityManager::OnEnemyUpdate()
{
if (m_pEnemiesVec.empty())
if (m_pPlayer && m_pEnemiesVec.empty())
return;

for (auto& enemy : m_pEnemiesVec)
Expand All @@ -44,15 +44,20 @@ namespace Cheat::Features
if (name == nullptr)
continue;

if (!app::PCILGJOEPJM_PPAKPBOJLIP(enemy, nullptr))
if (!IsCharacterAlive(enemy))
{
LOG("PCILGJOEPJM_PPAKPBOJLIP failed, Enemy: %s probably died or some shit", il2cppi_to_string(name).c_str());
LOG("IsCharacterAlive returned false, Enemy: %s probably died or some shit", il2cppi_to_string(name).c_str());
m_pEnemiesVec.erase(std::remove(m_pEnemiesVec.begin(), m_pEnemiesVec.end(), enemy), m_pEnemiesVec.end());
continue;
}
}
}

bool EntityManager::IsCharacterAlive(app::ENNEJEPMJLJ* character)
{
return app::PCILGJOEPJM_PPAKPBOJLIP(character, nullptr);
}

void EntityManager::ENHPKNIEKMI_MIFDFEHDDDD_Hook(app::ENHPKNIEKMI* __this, MethodInfo* method)
{
LOG("ENHPKNIEKMI_MIFDFEHDDDD_Hook");
Expand Down
2 changes: 2 additions & 0 deletions src/game/cheat/features/EntityManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ namespace Cheat::Features
void OnPlayerUpdate();
void OnEnemyUpdate();

bool IsCharacterAlive(app::ENNEJEPMJLJ* character);

app::ENNEJEPMJLJ* GetPlayer() const;
app::GameObject* GetPlayerGO() const;
std::vector<app::ENNEJEPMJLJ*> GetEnemies() const;
Expand Down
86 changes: 76 additions & 10 deletions src/game/cheat/features/PlayerSpeed.cpp
Original file line number Diff line number Diff line change
@@ -1,25 +1,91 @@
#include "PlayerSpeed.h"

#include "EntityManager.h"
#include "HookManager.h"
#include "Utils.h"
#include "game-utils.hpp"
#include "events.h"

namespace Cheat::Features
{
PlayerSpeed::PlayerSpeed()
PlayerSpeed::PlayerSpeed() : m_pAnimator(nullptr), m_InitialSpeed(-1.0f), m_DidSpeed(false)
{
//events::GameUpdateEvent += MY_METHOD_HANDLER(PlayerSpeed::OnGameUpdate);


events::GameUpdateEvent += MY_METHOD_HANDLER(PlayerSpeed::OnGameUpdate);
}

void PlayerSpeed::OnGameUpdate()
{
// auto instance = GET_SINGLETON_1(JIBDAHKJHOG);
// if (instance == nullptr)
// {
// LOG("Instance JIBDAHKJHOG is null");
// return;
// }
//auto& em = EntityManager::GetInstance();
//auto& vars = Vars::GetInstance();

//auto player = em.GetPlayer();
//if (player == nullptr)
//{
// m_pAnimator = nullptr;
// m_DidSpeed = false;
// return;
//}

//auto resourceData = player->fields.PEFKKKBMDKN;
//if (resourceData == nullptr)
// return;

//auto battleInfoData = player->fields.KFIFBINFDPB->fields.m_pCharBattleInfo;
//if (battleInfoData == nullptr)
// return;

//auto modelContainer = player->fields.NKONPDBOBAG->fields.JOJBJOHCOAI; //player->fields.NKONPDBOBAG->fields.BLHAMCDGFPB->fields.m_pkAnimator;
//if (modelContainer == nullptr)
//{
// LOG("PlayerSpeed::OnGameUpdate: modelContainer is null");
// return;
//}

//auto animator = app::ModelContainer_get_animator(modelContainer, nullptr);
//if (animator == nullptr)
//{
// LOG("PlayerSpeed::OnGameUpdate: animator is null");
// return;
//}

//if (m_InitialSpeed == -1.0f)
// m_InitialSpeed = app::Animator_get_speed(animator, nullptr);

//m_pAnimator = animator;

//if (vars.PlayerSpeed.value())
//{
//app::Animator_set_speed(animator, vars.PlayerSpeedValue.value(), nullptr);
//m_DidSpeed = true;
//resourceData->fields.m_WalkSpeed = vars.PlayerSpeedValue.value();
//resourceData->fields.m_MoveSpd = vars.PlayerSpeedValue.value();
//resourceData->fields.m_SidewalkSpeed = vars.PlayerSpeedValue.value();
//resourceData->fields.m_BackwalkSpeed = vars.PlayerSpeedValue.value();

//battleInfoData->fields.m_SidewalkMinTime = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_SidewalkMaxTime = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_BackwalkMinTime = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_BackwalkMaxTime = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_DetectingRange = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_BattleDistance = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_WalkDistance = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_CloseRangeJudgment = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityCloseRangeAttack = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityCloseRangeWander = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityCloseRangeBackWalk = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ImpossibleWanderCloseRange = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityLongRangeAttack = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityLongRangeWander = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ProbabilityLongRangeBackWalk = vars.PlayerSpeedValue.value();
//battleInfoData->fields.m_ImpossibleWanderLongRange = vars.PlayerSpeedValue.value();
//}
//else
//{
//if (m_DidSpeed)
//{
// app::Animator_set_speed(animator, m_InitialSpeed, nullptr);
// m_DidSpeed = false;
//}
//}
}
}
3 changes: 3 additions & 0 deletions src/game/cheat/features/PlayerSpeed.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,8 @@ namespace Cheat::Features
void OnGameUpdate();

private:
app::Animator* m_pAnimator;
float m_InitialSpeed;
bool m_DidSpeed;
};
}
2 changes: 1 addition & 1 deletion src/game/cheat/vars.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class Vars final : public Singleton<Vars>

// Features
CONFIG_ENTRY(bool, PlayerSpeed, true);
CONFIG_ENTRY(float, PlayerSpeedValue, 5.0f);
CONFIG_ENTRY(bool, NoCooldown, true);
CONFIG_ENTRY(bool, NoCooldownShadow, false);
CONFIG_ENTRY(bool, GodMode, true);
Expand All @@ -26,7 +27,6 @@ class Vars final : public Singleton<Vars>
CONFIG_ENTRY(bool, TimeScale, false);
CONFIG_ENTRY(float, TimeScaleSpeed, 2.0f);


// Misc
CONFIG_ENTRY(bool, FPSUnlock, true);
CONFIG_ENTRY(int, FPSValue, 240);
Expand Down

0 comments on commit 1be1ed1

Please sign in to comment.