Files
Akebi-GC3_0/cheat-library/src/user/cheat/cheat.cpp

180 lines
4.5 KiB
C++
Raw Normal View History

2022-05-17 03:13:41 +03:00
#include <pch-il2cpp.h>
#include "cheat.h"
#include <helpers.h>
#include <cheat/events.h>
#include <cheat-base/cheat/misc/Settings.h>
#include <cheat/misc/ProtectionBypass.h>
#include <cheat/misc/Hotkeys.h>
#include <cheat/misc/Debug.h>
#include <cheat/misc/sniffer/PacketSniffer.h>
#include <cheat/player/GodMode.h>
#include <cheat/player/InfiniteStamina.h>
#include <cheat/player/NoCD.h>
#include <cheat/player/NoClip.h>
#include <cheat/player/RapidFire.h>
#include <cheat/world/AutoLoot.h>
#include <cheat/world/DialogSkip.h>
#include <cheat/world/DumbEnemies.h>
#include <cheat/world/ElementalSight.h>
#include <cheat/world/KillAura.h>
#include <cheat/world/MobVacuum.h>
#include <cheat/world/AutoTreeFarm.h>
#include <cheat/world/AutoDestroy.h>
2022-06-04 16:33:28 +08:00
#include <cheat/world/FakeTime.h>
2022-05-17 03:13:41 +03:00
#include <cheat/teleport/ChestTeleport.h>
#include <cheat/teleport/MapTeleport.h>
#include <cheat/teleport/OculiTeleport.h>
#include <cheat/teleport/CustomTeleports.h>
#include <cheat/esp/ESP.h>
#include <cheat/imap/InteractiveMap.h>
#include <cheat/world/AutoFish.h>
#include <cheat/world/AutoCook.h>
2022-06-18 18:08:33 -06:00
#include <cheat/world/MusicEvent.h>
2022-05-17 03:13:41 +03:00
#include <cheat/visuals/NoFog.h>
#include <cheat/visuals/FPSUnlock.h>
#include <cheat/visuals/CameraZoom.h>
#include <cheat/visuals/ShowChestIndicator.h>
#include <cheat/visuals/ProfileChanger.h>
2022-06-10 15:36:14 +03:00
#include <cheat/visuals/PaimonFollow.h>
2022-06-11 23:14:23 -06:00
#include <cheat/visuals/HideUI.h>
2022-06-12 00:46:44 -06:00
#include <cheat/visuals/Browser.h>
2022-06-18 19:41:42 -06:00
#include <cheat/visuals/EnablePeaking.h>
2022-05-17 03:13:41 +03:00
#include "GenshinCM.h"
namespace cheat
{
static void InstallEventHooks();
void Init()
{
config::SetupUpdate(&events::GameUpdateEvent);
auto& protectionBypass = feature::ProtectionBypass::GetInstance();
protectionBypass.Init();
GenshinCM& manager = GenshinCM::instance();
#define FEAT_INST(name) &feature::##name##::GetInstance()
manager.AddFeatures({
&protectionBypass,
FEAT_INST(Settings),
FEAT_INST(Hotkeys),
FEAT_INST(Debug),
FEAT_INST(PacketSniffer),
FEAT_INST(GodMode),
FEAT_INST(InfiniteStamina),
FEAT_INST(NoCD),
FEAT_INST(NoClip),
FEAT_INST(RapidFire),
FEAT_INST(AutoLoot),
FEAT_INST(AutoTreeFarm),
FEAT_INST(AutoDestroy),
FEAT_INST(DialogSkip),
FEAT_INST(DumbEnemies),
FEAT_INST(ElementalSight),
FEAT_INST(KillAura),
FEAT_INST(MobVacuum),
2022-06-04 16:33:28 +08:00
FEAT_INST(FakeTime),
2022-05-17 03:13:41 +03:00
FEAT_INST(ChestTeleport),
FEAT_INST(OculiTeleport),
FEAT_INST(MapTeleport),
FEAT_INST(CustomTeleports),
FEAT_INST(ESP),
FEAT_INST(InteractiveMap),
FEAT_INST(AutoFish),
FEAT_INST(AutoCook),
2022-06-18 18:08:33 -06:00
FEAT_INST(MusicEvent),
2022-05-17 03:13:41 +03:00
FEAT_INST(NoFog),
FEAT_INST(FPSUnlock),
FEAT_INST(CameraZoom),
FEAT_INST(ChestIndicator),
2022-06-10 15:36:14 +03:00
FEAT_INST(ProfileChanger),
2022-06-11 23:14:23 -06:00
FEAT_INST(PaimonFollow),
2022-06-12 00:46:44 -06:00
FEAT_INST(HideUI),
2022-06-18 19:41:42 -06:00
FEAT_INST(Browser),
FEAT_INST(EnablePeaking)
2022-06-10 15:36:14 +03:00
2022-05-17 03:13:41 +03:00
});
#undef FEAT_INST
manager.SetModuleOrder({
"Player",
"World",
"Teleport",
"ESP",
"Visuals",
"Hotkeys",
"Settings",
"Debug"
});
LPBYTE pFontData = nullptr;
DWORD dFontSize = 0;
if (!ResourceLoader::LoadEx("ImGui_Font", RT_RCDATA, pFontData, dFontSize))
LOG_WARNING("Failed to get font from resources.");
manager.Init(pFontData, dFontSize);
InstallEventHooks();
}
static void CheckAccountChanged()
{
UPDATE_DELAY(2000U);
static uint32_t _lastUserID = 0;
auto playerModule = GET_SINGLETON(MoleMole_PlayerModule);
2022-05-17 03:13:41 +03:00
if (playerModule == nullptr || playerModule->fields._accountData_k__BackingField == nullptr)
return;
auto& accountData = playerModule->fields._accountData_k__BackingField->fields;
if (_lastUserID != accountData.userId)
events::AccountChangedEvent(accountData.userId);
_lastUserID = accountData.userId;
}
static void GameManager_Update_Hook(app::GameManager* __this, MethodInfo* method)
{
SAFE_BEGIN();
events::GameUpdateEvent();
CheckAccountChanged();
SAFE_EEND();
CALL_ORIGIN(GameManager_Update_Hook, __this, method);
}
static void LevelSyncCombatPlugin_RequestSceneEntityMoveReq_Hook(app::LevelSyncCombatPlugin* __this, uint32_t entityId, app::MotionInfo* syncInfo,
2022-05-17 03:13:41 +03:00
bool isReliable, uint32_t relseq, MethodInfo* method)
{
events::MoveSyncEvent(entityId, syncInfo);
CALL_ORIGIN(LevelSyncCombatPlugin_RequestSceneEntityMoveReq_Hook, __this, entityId, syncInfo, isReliable, relseq, method);
}
static void InstallEventHooks()
{
HookManager::install(app::GameManager_Update, GameManager_Update_Hook);
HookManager::install(app::MoleMole_LevelSyncCombatPlugin_RequestSceneEntityMoveReq, LevelSyncCombatPlugin_RequestSceneEntityMoveReq_Hook);
2022-05-17 03:13:41 +03:00
}
}