mirror of
https://github.com/360NENZ/Taiga74164-Akebi-GC.git
synced 2025-09-19 04:06:12 +08:00
Merge branch 'Akebi-Group:master' into master
This commit is contained in:
@ -16,8 +16,9 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\user\cheat\debugger.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WS|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WS|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\user\cheat\misc\sniffer\MessageManager.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
@ -125,8 +126,9 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\user\cheat\debugger.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WS|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WS|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\user\cheat\misc\sniffer\MessageManager.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
|
@ -2,12 +2,12 @@
|
||||
"game_version": "2.7",
|
||||
"modules": {
|
||||
"UnityPlayer.dll": {
|
||||
"checksum": 0,
|
||||
"timestamp": 0
|
||||
"checksum": 17900298344514688789,
|
||||
"timestamp": 132967628640000000
|
||||
},
|
||||
"UserAssembly.dll": {
|
||||
"checksum": 0,
|
||||
"timestamp": 0
|
||||
"checksum": 7306786341503590701,
|
||||
"timestamp": 132967628640000000
|
||||
}
|
||||
}
|
||||
}
|
@ -101,7 +101,7 @@ DO_APP_FUNC(0x023D4A90, bool, MoleMole_ActorAbilityPlugin_OnEvent, (void* __this
|
||||
|
||||
|
||||
// Kill aura
|
||||
DO_APP_FUNC(0x00B8EB30, void, MoleMole_EvtCrash_Init, (EvtCrash* __this, uint32_t targetID, MethodInfo* method)); // Manual offset
|
||||
DO_APP_FUNC(0x03A52200, void, MoleMole_EvtCrash_Init, (EvtCrash* __this, uint32_t targetID, MethodInfo* method)); // Manual offset
|
||||
DO_APP_FUNC(0x00941E80, void, MoleMole_EventManager_FireEvent, (MoleMole_EventManager* __this, BaseEvent* e, bool immediately, MethodInfo* method));
|
||||
DO_APP_FUNC(0x0167B1A0, bool, MoleMole_FixedBoolStack_get_value, (FixedBoolStack* __this, MethodInfo* method));
|
||||
|
||||
@ -239,11 +239,11 @@ DO_APP_FUNC(0x00A8D650, float, MoleMole_InLevelMainPageContext_get_miniMapScale,
|
||||
|
||||
|
||||
// UnityEngine
|
||||
DO_APP_FUNC(0x065ECB70, void, RenderSettings_set_fog, (void* __this, bool value, MethodInfo* method));
|
||||
DO_APP_FUNC(0x06621FF0, void, Application_set_targetFrameRate, (void* __this, int32_t value, MethodInfo* method));
|
||||
DO_APP_FUNC(0x06621D80, int32_t, Application_get_targetFrameRate, (void* __this, MethodInfo* method));
|
||||
DO_APP_FUNC(0x065ECB70, void, RenderSettings_set_fog, (bool value, MethodInfo* method));
|
||||
DO_APP_FUNC(0x06621FF0, void, Application_set_targetFrameRate, (int32_t value, MethodInfo* method));
|
||||
DO_APP_FUNC(0x06621D80, int32_t, Application_get_targetFrameRate, (MethodInfo* method));
|
||||
|
||||
DO_APP_FUNC(0x06678780, bool, RectTransformUtility_ScreenPointToLocalPointInRectangle, (void* __this, void* rect, Vector2 screenPoint, void* cam, Vector2* localPoint, MethodInfo* method));
|
||||
DO_APP_FUNC(0x06678780, bool, RectTransformUtility_ScreenPointToLocalPointInRectangle, (void* rect, Vector2 screenPoint, void* cam, Vector2* localPoint, MethodInfo* method));
|
||||
|
||||
DO_APP_FUNC(0x06555BA0, Vector3, Transform_get_position, (Transform* __this, MethodInfo* method));
|
||||
DO_APP_FUNC(0x065548F0, void, Transform_set_position, (Transform* __this, Vector3 value, MethodInfo* method));
|
||||
|
@ -8145,6 +8145,7 @@ namespace app {
|
||||
struct LCBaseCombat_AttackTarget {
|
||||
uint32_t runtimeID;
|
||||
struct String* lockedPoint;
|
||||
int32_t MBCDNGIFGDD;
|
||||
};
|
||||
|
||||
struct LCBaseCombat__Fields {
|
||||
|
@ -112,49 +112,52 @@ struct UniList
|
||||
}
|
||||
};
|
||||
|
||||
template<typename KeyT, typename ValT>
|
||||
struct UniDictEntry
|
||||
{
|
||||
int32_t hashCode;
|
||||
int32_t next;
|
||||
KeyT key;
|
||||
ValT value;
|
||||
};
|
||||
|
||||
template<typename KeyT, typename ValT>
|
||||
struct __declspec(align(8)) UniDict {
|
||||
void* klass;
|
||||
MonitorData* monitor;
|
||||
struct app::Int32__Array* table;
|
||||
struct app::Link__Array* linkSlots;
|
||||
struct UniArray<KeyT>* keySlots;
|
||||
struct UniArray<ValT>* valueSlots;
|
||||
int32_t touchedSlots;
|
||||
int32_t emptySlot;
|
||||
void* buckets;
|
||||
UniArray<UniDictEntry<KeyT, ValT>>* entries;
|
||||
int32_t count;
|
||||
int32_t threshold;
|
||||
void* hcp;
|
||||
void* serialization_info;
|
||||
int32_t generation;
|
||||
int32_t version;
|
||||
int32_t freeList;
|
||||
int32_t freeCount;
|
||||
void* comparer;
|
||||
void* keys;
|
||||
void* values;
|
||||
|
||||
std::vector<std::pair<KeyT, ValT>> pairs()
|
||||
{
|
||||
auto pairs = std::vector<std::pair<KeyT, ValT>>();
|
||||
|
||||
#define DictCheckNull(field, msg) if (field == nullptr) { LOG_WARNING("Failed to get dict pairs: %s", msg); return pairs; }
|
||||
#define DictCheckNull(field, msg) if (field == nullptr) { /*LOG_WARNING("Failed to get dict pairs: %s", msg);*/ return pairs; }
|
||||
|
||||
DictCheckNull(linkSlots, "LinkSlots pointer is null.");
|
||||
DictCheckNull(keySlots, "Key slots is null.");
|
||||
DictCheckNull(valueSlots, "ValueSlots pointer is null.");
|
||||
DictCheckNull(buckets, "Buckets is null.");
|
||||
DictCheckNull(entries, "Entries is null.");
|
||||
|
||||
#undef DictCheckNull
|
||||
|
||||
int32_t next = 0;
|
||||
const int HASH_FLAG = 0x80000000;
|
||||
while (next < touchedSlots)
|
||||
int32_t index = 0;
|
||||
for (auto& entry : *entries)
|
||||
{
|
||||
int32_t cur = next++;
|
||||
if ((linkSlots->vector[cur].HashCode & HASH_FLAG) != 0)
|
||||
{
|
||||
pairs.push_back(
|
||||
std::make_pair(
|
||||
keySlots->vector[cur],
|
||||
valueSlots->vector[cur]
|
||||
)
|
||||
);
|
||||
}
|
||||
if (index >= count)
|
||||
break;
|
||||
|
||||
if (entry.hashCode > 0)
|
||||
pairs.push_back({ entry.key, entry.value });
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
return pairs;
|
||||
}
|
||||
};
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
void DebuggerBypassPre()
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
LOG_INFO("You have no implementation for anti-debugger bypass.\n\tSo if you try to attach VS debugger to process - game will crash.");
|
||||
#endif
|
||||
|
||||
// Sry, implementation is private for now
|
||||
}
|
||||
|
||||
|
@ -44,9 +44,9 @@ namespace cheat::feature
|
||||
"(Energy bubble may appear incomplete but still usable.)");
|
||||
|
||||
ConfigWidget("## AbilityReduce", f_AbilityReduce); ImGui::SameLine();
|
||||
ConfigWidget("Reduce Skill/Burst Cooldown", f_TimerReduce, 0.05f, 0.0f, 1.0f,
|
||||
ConfigWidget("Reduce Skill/Burst Cooldown", f_TimerReduce, 1.f, 1.f, 6.0f,
|
||||
"Reduce cooldowns of elemental skills and bursts.\n"\
|
||||
"0.0 - no CD, 1.0 - default CD.");
|
||||
"1.0 - no CD, 2.0 and higher - increases the timer value.");
|
||||
|
||||
ConfigWidget(f_Sprint, "Removes delay in-between sprints.");
|
||||
|
||||
@ -128,11 +128,11 @@ namespace cheat::feature
|
||||
NoCD& noCD = NoCD::GetInstance();
|
||||
if (noCD.f_AbilityReduce)
|
||||
{
|
||||
auto cdTimer = app::MoleMole_SafeFloat_get_Value(skillInfo->fields.cdTimer, nullptr);
|
||||
auto cdTimer = app::MoleMole_SafeFloat_get_Value(skillInfo->fields.cdTimer, nullptr); // Timer start value in the game
|
||||
|
||||
if (cdTimer > noCD.f_TimerReduce * 5.0f)
|
||||
if (cdTimer > noCD.f_TimerReduce)
|
||||
{
|
||||
struct app::SafeFloat MyValueProtect = app::MoleMole_SafeFloat_set_Value(noCD.f_TimerReduce * 5.0f, nullptr);
|
||||
struct app::SafeFloat MyValueProtect = app::MoleMole_SafeFloat_set_Value(noCD.f_TimerReduce - 1.0f, nullptr); // Subtract -1 from the current timer value
|
||||
skillInfo->fields.cdTimer = MyValueProtect;
|
||||
}
|
||||
}
|
||||
|
@ -8,14 +8,6 @@
|
||||
|
||||
namespace cheat::feature
|
||||
{
|
||||
static void InLevelMapPageContext_OnMapClicked_Hook(app::InLevelMapPageContext* __this, app::Vector2 screenPos, MethodInfo* method);
|
||||
static void InLevelMapPageContext_OnMarkClicked_Hook(app::InLevelMapPageContext* __this, app::MonoMapMark* mark, MethodInfo* method);
|
||||
static app::Vector3 LocalEntityInfoData_get_initPos_Hook(app::LocalEntityInfoData* __this, MethodInfo* method);
|
||||
|
||||
static bool LoadingManager_NeedTransByServer_Hook(app::MoleMole_LoadingManager* __this, uint32_t sceneId, app::Vector3 position, MethodInfo* method);
|
||||
static void LoadingManager_PerformPlayerTransmit_Hook(app::MoleMole_LoadingManager* __this, app::Vector3 position, app::EnterType__Enum someEnum,
|
||||
uint32_t someUint1, app::EvtTransmitAvatar_EvtTransmitAvatar_TransmitType__Enum teleportType, uint32_t someUint2, MethodInfo* method);
|
||||
static void Entity_SetRelativePosition_Hook(app::BaseEntity* __this, app::Vector3 position, bool someBool, MethodInfo* method);
|
||||
|
||||
MapTeleport::MapTeleport() : Feature(),
|
||||
NF(f_Enabled, "Map teleport", "MapTeleport", false),
|
||||
@ -28,14 +20,13 @@ namespace cheat::feature
|
||||
HookManager::install(app::MoleMole_InLevelMapPageContext_OnMapClicked, InLevelMapPageContext_OnMapClicked_Hook);
|
||||
|
||||
// Stage 1
|
||||
HookManager::install(app::MoleMole_LocalEntityInfoData_get_initPos, LocalEntityInfoData_get_initPos_Hook);
|
||||
HookManager::install(app::MoleMole_LoadingManager_NeedTransByServer, LoadingManager_NeedTransByServer_Hook);
|
||||
|
||||
// Stage 2
|
||||
HookManager::install(app::MoleMole_LoadingManager_PerformPlayerTransmit, LoadingManager_PerformPlayerTransmit_Hook);
|
||||
|
||||
// Stage 3
|
||||
HookManager::install(app::MoleMole_BaseEntity_SetRelativePosition, Entity_SetRelativePosition_Hook);
|
||||
HookManager::install(app::MoleMole_BaseEntity_SetAbsolutePosition, MoleMole_BaseEntity_SetAbsolutePosition_Hook);
|
||||
|
||||
events::GameUpdateEvent += MY_METHOD_HANDLER(MapTeleport::OnGameUpdate);
|
||||
}
|
||||
@ -130,7 +121,7 @@ namespace cheat::feature
|
||||
if (screenCamera == nullptr)
|
||||
return false;
|
||||
|
||||
bool result = app::RectTransformUtility_ScreenPointToLocalPointInRectangle(nullptr, mapBackground, screenPos, screenCamera, outMapPos, nullptr);
|
||||
bool result = app::RectTransformUtility_ScreenPointToLocalPointInRectangle(mapBackground, screenPos, screenCamera, outMapPos, nullptr);
|
||||
if (!result)
|
||||
return false;
|
||||
|
||||
@ -160,9 +151,9 @@ namespace cheat::feature
|
||||
// Calling teleport if map clicked.
|
||||
// This event invokes only when free space of map clicked,
|
||||
// if clicked mark, invokes InLevelMapPageContext_OnMarkClicked_Hook.
|
||||
static void InLevelMapPageContext_OnMapClicked_Hook(app::InLevelMapPageContext* __this, app::Vector2 screenPos, MethodInfo* method)
|
||||
void MapTeleport::InLevelMapPageContext_OnMapClicked_Hook(app::InLevelMapPageContext* __this, app::Vector2 screenPos, MethodInfo* method)
|
||||
{
|
||||
MapTeleport& mapTeleport = MapTeleport::GetInstance();
|
||||
MapTeleport& mapTeleport = GetInstance();
|
||||
|
||||
if (!mapTeleport.f_Enabled || !mapTeleport.f_Key.value().IsPressed())
|
||||
return CALL_ORIGIN(InLevelMapPageContext_OnMapClicked_Hook, __this, screenPos, method);
|
||||
@ -176,36 +167,30 @@ namespace cheat::feature
|
||||
}
|
||||
|
||||
// Calling teleport if map marks clicked.
|
||||
static void InLevelMapPageContext_OnMarkClicked_Hook(app::InLevelMapPageContext* __this, app::MonoMapMark* mark, MethodInfo* method)
|
||||
void MapTeleport::InLevelMapPageContext_OnMarkClicked_Hook(app::InLevelMapPageContext* __this, app::MonoMapMark* mark, MethodInfo* method)
|
||||
{
|
||||
MapTeleport& mapTeleport = MapTeleport::GetInstance();
|
||||
MapTeleport& mapTeleport = GetInstance();
|
||||
if (!mapTeleport.f_Enabled || !mapTeleport.f_Key.value().IsPressed())
|
||||
return CALL_ORIGIN(InLevelMapPageContext_OnMarkClicked_Hook, __this, mark, method);
|
||||
|
||||
mapTeleport.TeleportTo(mark->fields._levelMapPos);
|
||||
}
|
||||
|
||||
// Before call, game checked if distance is near (<60) to cast near teleport.
|
||||
// But it check distance to waypoint location, given by this function.
|
||||
// So, we need to replace target position to do correct check.
|
||||
void MapTeleport::OnGetTargetPos(app::Vector3& position)
|
||||
{
|
||||
if (taskInfo.currentStage == 3)
|
||||
{
|
||||
position = taskInfo.targetPosition;
|
||||
taskInfo.currentStage--;
|
||||
LOG_DEBUG("Stage 1. Replace waypoint tp position.");
|
||||
}
|
||||
}
|
||||
|
||||
// Checking is teleport is far (>60m), if it isn't we clear stage.
|
||||
void MapTeleport::OnCheckTeleportDistance(bool needTransByServer)
|
||||
{
|
||||
if (!needTransByServer && taskInfo.currentStage == 2)
|
||||
bool MapTeleport::IsNeedTransByServer(bool originResult, app::Vector3& position)
|
||||
{
|
||||
if (taskInfo.currentStage != 3)
|
||||
return originResult;
|
||||
|
||||
auto& entityManager = game::EntityManager::instance();
|
||||
bool needServerTrans = entityManager.avatar()->distance(taskInfo.targetPosition) > 60.0f;
|
||||
if (needServerTrans)
|
||||
LOG_DEBUG("Stage 1. Distance is more than 60m. Performing server tp.");
|
||||
else
|
||||
LOG_DEBUG("Stage 1. Distance is less than 60m. Performing fast tp.");
|
||||
taskInfo.currentStage = 0;
|
||||
}
|
||||
|
||||
taskInfo.currentStage--;
|
||||
return needServerTrans;
|
||||
}
|
||||
|
||||
// After server responded, it will give us the waypoint target location to load.
|
||||
@ -257,28 +242,16 @@ namespace cheat::feature
|
||||
}
|
||||
}
|
||||
|
||||
static app::Vector3 LocalEntityInfoData_get_initPos_Hook(app::LocalEntityInfoData* __this, MethodInfo* method)
|
||||
{
|
||||
auto result = CALL_ORIGIN(LocalEntityInfoData_get_initPos_Hook, __this, method);
|
||||
|
||||
MapTeleport& mapTeleport = MapTeleport::GetInstance();
|
||||
mapTeleport.OnGetTargetPos(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool LoadingManager_NeedTransByServer_Hook(app::MoleMole_LoadingManager* __this, uint32_t sceneId, app::Vector3 position, MethodInfo* method)
|
||||
bool MapTeleport::LoadingManager_NeedTransByServer_Hook(app::MoleMole_LoadingManager* __this, uint32_t sceneId, app::Vector3 position, MethodInfo* method)
|
||||
{
|
||||
auto result = CALL_ORIGIN(LoadingManager_NeedTransByServer_Hook, __this, sceneId, position, method);
|
||||
|
||||
MapTeleport& mapTeleport = MapTeleport::GetInstance();
|
||||
mapTeleport.OnCheckTeleportDistance(result);
|
||||
|
||||
return result;
|
||||
auto& mapTeleport = GetInstance();
|
||||
return mapTeleport.IsNeedTransByServer(result, position);
|
||||
}
|
||||
|
||||
|
||||
static void LoadingManager_PerformPlayerTransmit_Hook(app::MoleMole_LoadingManager* __this, app::Vector3 position, app::EnterType__Enum someEnum,
|
||||
void MapTeleport::LoadingManager_PerformPlayerTransmit_Hook(app::MoleMole_LoadingManager* __this, app::Vector3 position, app::EnterType__Enum someEnum,
|
||||
uint32_t someUint1, app::EvtTransmitAvatar_EvtTransmitAvatar_TransmitType__Enum teleportType, uint32_t someUint2, MethodInfo* method)
|
||||
{
|
||||
MapTeleport& mapTeleport = MapTeleport::GetInstance();
|
||||
@ -288,7 +261,7 @@ namespace cheat::feature
|
||||
}
|
||||
|
||||
|
||||
static void Entity_SetRelativePosition_Hook(app::BaseEntity* __this, app::Vector3 position, bool someBool, MethodInfo* method)
|
||||
void MapTeleport::MoleMole_BaseEntity_SetAbsolutePosition_Hook(app::BaseEntity* __this, app::Vector3 position, bool someBool, MethodInfo* method)
|
||||
{
|
||||
auto& manager = game::EntityManager::instance();
|
||||
if (manager.avatar()->raw() == __this)
|
||||
@ -297,7 +270,7 @@ namespace cheat::feature
|
||||
mapTeleport.OnSetAvatarPosition(position);
|
||||
}
|
||||
|
||||
CALL_ORIGIN(Entity_SetRelativePosition_Hook, __this, position, someBool, method);
|
||||
CALL_ORIGIN(MoleMole_BaseEntity_SetAbsolutePosition_Hook, __this, position, someBool, method);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,16 +22,6 @@ namespace cheat::feature
|
||||
|
||||
void TeleportTo(app::Vector2 mapPosition);
|
||||
|
||||
void OnGetTargetPos(app::Vector3& position);
|
||||
|
||||
void OnCheckTeleportDistance(bool needTransByServer);
|
||||
|
||||
void OnPerformPlayerTransmit(app::Vector3& position);
|
||||
|
||||
void OnSetAvatarPosition(app::Vector3& position);
|
||||
|
||||
void OnGameUpdate();
|
||||
|
||||
const FeatureGUIInfo& GetGUIInfo() const override;
|
||||
void DrawMain() override;
|
||||
|
||||
@ -47,6 +37,22 @@ namespace cheat::feature
|
||||
};
|
||||
TeleportTaskInfo taskInfo;
|
||||
|
||||
void OnGetTargetPos(app::Vector3& position);
|
||||
bool IsNeedTransByServer(bool originResult, app::Vector3& position);
|
||||
void OnPerformPlayerTransmit(app::Vector3& position);
|
||||
void OnSetAvatarPosition(app::Vector3& position);
|
||||
void OnGameUpdate();
|
||||
|
||||
// Map client interactions
|
||||
static void InLevelMapPageContext_OnMapClicked_Hook(app::InLevelMapPageContext* __this, app::Vector2 screenPos, MethodInfo* method);
|
||||
static void InLevelMapPageContext_OnMarkClicked_Hook(app::InLevelMapPageContext* __this, app::MonoMapMark* mark, MethodInfo* method);
|
||||
|
||||
// Teleporting
|
||||
static bool LoadingManager_NeedTransByServer_Hook(app::MoleMole_LoadingManager* __this, uint32_t sceneId, app::Vector3 position, MethodInfo* method);
|
||||
static void LoadingManager_PerformPlayerTransmit_Hook(app::MoleMole_LoadingManager* __this, app::Vector3 position, app::EnterType__Enum someEnum,
|
||||
uint32_t someUint1, app::EvtTransmitAvatar_EvtTransmitAvatar_TransmitType__Enum teleportType, uint32_t someUint2, MethodInfo* method);
|
||||
static void MoleMole_BaseEntity_SetAbsolutePosition_Hook(app::BaseEntity* __this, app::Vector3 position, bool someBool, MethodInfo* method);
|
||||
|
||||
MapTeleport();
|
||||
};
|
||||
}
|
||||
|
@ -47,15 +47,15 @@ namespace cheat::feature
|
||||
static int _originFPS = 30;
|
||||
if (_lastEnabledStatus && !f_Enabled)
|
||||
{
|
||||
app::Application_set_targetFrameRate(nullptr, _originFPS, nullptr);
|
||||
app::Application_set_targetFrameRate(_originFPS, nullptr);
|
||||
}
|
||||
else if (!_lastEnabledStatus && f_Enabled)
|
||||
{
|
||||
_originFPS = app::Application_get_targetFrameRate(nullptr, nullptr);
|
||||
_originFPS = app::Application_get_targetFrameRate(nullptr);
|
||||
}
|
||||
_lastEnabledStatus = f_Enabled;
|
||||
|
||||
if (f_Enabled)
|
||||
app::Application_set_targetFrameRate(nullptr, f_Fps, nullptr);
|
||||
app::Application_set_targetFrameRate(f_Fps, nullptr);
|
||||
}
|
||||
}
|
@ -44,7 +44,7 @@ namespace cheat::feature
|
||||
{
|
||||
if (_prevEnabledState != f_Enabled)
|
||||
{
|
||||
app::RenderSettings_set_fog(nullptr, !f_Enabled, nullptr);
|
||||
app::RenderSettings_set_fog(!f_Enabled, nullptr);
|
||||
_prevEnabledState = f_Enabled;
|
||||
}
|
||||
}
|
||||
|
@ -9,10 +9,7 @@
|
||||
#include <tlhelp32.h>
|
||||
#include <cheat/ILPatternScanner.h>
|
||||
#include <resource.h>
|
||||
|
||||
#ifdef _DEBUG
|
||||
#include <cheat/debugger.h>
|
||||
#endif
|
||||
|
||||
void Run(HMODULE* phModule)
|
||||
{
|
||||
@ -36,13 +33,11 @@ void Run(HMODULE* phModule)
|
||||
il2cppi_new_console();
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
DebuggerBypassPre();
|
||||
|
||||
#ifdef _DEBUG
|
||||
LOG_DEBUG("Waiting 10sec for loading game library.");
|
||||
Sleep(10000);
|
||||
|
||||
DebuggerBypassPost();
|
||||
#else
|
||||
while (GetModuleHandle("UserAssembly.dll") == nullptr)
|
||||
{
|
||||
@ -53,6 +48,8 @@ void Run(HMODULE* phModule)
|
||||
Sleep(15000);
|
||||
#endif
|
||||
|
||||
DebuggerBypassPost();
|
||||
|
||||
init_il2cpp();
|
||||
|
||||
cheat::Init();
|
||||
|
Reference in New Issue
Block a user