Push teleport, menu & player (vc)

This commit is contained in:
Grinch_ 2021-08-06 21:53:18 +06:00
parent 880ceba2c4
commit 0a15765771
26 changed files with 516 additions and 296 deletions

View File

@ -0,0 +1,48 @@
{
"Special" :
{
"Alex Shrub" : "IGalscb",
"Lance 1" : "IGbuddy",
"Lance Cop" : "IGBudy2",
"Lance Beaten Up" : "IGBudy3",
"Candy Suxxx" : "IGCandy",
"Colonel Cortez" : "IGColon",
"Ricardo Diaz" : "IGDiaz",
"Dick (Lovefist)" : "IGDick",
"Gonzalez" : "IGGonz",
"Hilary" : "IGHlary",
"Hilary (Bank Mission)" : "IGHlry2",
"Jezz Torrent" : "IGJezz",
"Ken Rosenberg" : "IGKen",
"Mercedes" : "IGMerc",
"Mercedes (purple dress)" : "IGMerc2",
"Cam Jones" : "IGmike",
"Cam Jones (Bank Mission)" : "IGMike2",
"Percy (Lovefist)" : "IGPercy",
"Phil Cassidy" : "IGPhil",
"Phil (Injured)" : "IGphil2",
"Phil (Bank Mission)" : "IGPhil3",
"Sonny Forelli" : "IGSonny"
},
"Misc" :
{
"Fsfa" : "FSFA",
"Courier" : "COURIER",
"Chef" : "CHEF",
"Sgc" : "SGC",
"Psycho" : "PSYCHO",
"Striper" : "STRIPA"
},
"Player" :
{
"Tommy Default" : "Player",
"Tommy Suit Plain" : "Player2",
"Tommy Worker" : "Player3",
"Tommy Golfer" : "Player4",
"Tommy Cuban" : "Player5",
"Tommy Cop" : "Player6",
"Tommy Bank" : "Player7",
"Tommy Simple" : "Player8",
"Tommy Suit Stripe" : "Player9"
}
}

View File

@ -12,18 +12,18 @@
#include "Hook.h"
#include "Menu.h"
#include "Teleport.h"
#include "Player.h"
#ifdef GTASA
#include "Animation.h"
#include "Game.h"
#include "Ped.h"
#include "Player.h"
#include "Vehicle.h"
#include "Visual.h"
#include "Weapon.h"
class CheatMenu : Hook, Animation, Game, Menu, Ped, Player, Teleport, Vehicle, Visual, Weapon
#elif defined(GTAVC)
class CheatMenu : Hook, Menu, Teleport
class CheatMenu : Hook, Menu, Player, Teleport
#endif
{
@ -38,7 +38,7 @@ private:
#elif GTAVC
inline static CallbackTable header
{
{"Teleport", &Teleport::Draw}, {"Menu", &Menu::Draw}
{"Teleport", &Teleport::Draw}, {"Player", &Player::Draw}, {"Menu", &Menu::Draw}
};
#endif

View File

@ -1,6 +1,6 @@
#pragma once
#define MENU_NAME "Cheat Menu"
#define MENU_VERSION_NUMBER "2.8"
#define MENU_VERSION_NUMBER "2.9"
#define MENU_VERSION MENU_VERSION_NUMBER"-beta"
#define BUILD_NUMBER "20210801"
#define BUILD_NUMBER "20210806"
#define MENU_TITLE MENU_NAME " v" MENU_VERSION "(" BUILD_NUMBER ")"

View File

@ -1,10 +1,12 @@
#include "pch.h"
#include "Player.h"
#include "Ped.h"
#include "Menu.h"
#include "Ui.h"
#include "Util.h"
#ifdef GTASA
#include "Ped.h"
// hardcoded cloth category names
const char* cloth_category[18] =
{
@ -35,17 +37,23 @@ inline static void PlayerModelBrokenFix()
if (pPlayer->m_nModelIndex == 0)
Call<0x5A81E0>(0, pPlayer->m_pPlayerData->m_pPedClothesDesc, 0xBC1C78, false);
}
#elif GTAVC
inline static SSearchData tempPedData{ "peds" };
#endif
Player::Player()
{
#ifdef GTASA
// Fix player model being broken after rebuild
patch::RedirectCall(0x5A834D, &PlayerModelBrokenFix);
#endif
m_bAimSkinChanger = config.GetValue("aim_skin_changer", false);
// Custom skins setup
if (GetModuleHandle("modloader.asi"))
{
#ifdef GTASA
if (fs::is_directory(m_CustomSkins::m_Path))
{
for (auto& p : fs::recursive_directory_iterator(m_CustomSkins::m_Path))
@ -61,7 +69,11 @@ Player::Player()
}
}
}
else fs::create_directory(m_CustomSkins::m_Path);
else
{
fs::create_directory(m_CustomSkins::m_Path);
}
#endif
m_bModloaderInstalled = true;
}
@ -69,17 +81,25 @@ Player::Player()
Events::processScriptsEvent += []
{
uint timer = CTimer::m_snTimeInMilliseconds;
static CPlayerPed* player = FindPlayerPed();
CPlayerPed* player = FindPlayerPed();
int hplayer = CPools::GetPedRef(player);
if (!m_bImagesLoaded)
{
#ifdef GTASA
Util::LoadTextureDirectory(m_ClothData, PLUGIN_PATH((char*)"CheatMenu\\clothes.txd"), true);
#elif GTAVC
tempPedData.m_Json.LoadData(tempPedData.m_Categories, tempPedData.m_Selected);
#endif
m_bImagesLoaded = true;
}
if (m_KeepPosition::m_bEnabled)
{
if (!player->IsAlive())
if (Command<Commands::IS_CHAR_DEAD>(hplayer))
{
m_KeepPosition::m_fPos = player->GetPosition();
}
@ -90,7 +110,8 @@ Player::Player()
if (m_KeepPosition::m_fPos.x != 0 && m_KeepPosition::m_fPos.x != cur_pos.x
&& m_KeepPosition::m_fPos.y != 0 && m_KeepPosition::m_fPos.y != cur_pos.y)
{
player->Teleport(m_KeepPosition::m_fPos, false);
BY_GAME(player->Teleport(m_KeepPosition::m_fPos, false)
, player->Teleport(m_KeepPosition::m_fPos));
m_KeepPosition::m_fPos = CVector(0, 0, 0);
}
}
@ -98,36 +119,53 @@ Player::Player()
if (m_bGodMode)
{
#ifdef GTASA
patch::Set<bool>(0x96916D, 1, false);
player->m_nPhysicalFlags.bBulletProof = 1;
player->m_nPhysicalFlags.bCollisionProof = 1;
player->m_nPhysicalFlags.bExplosionProof = 1;
player->m_nPhysicalFlags.bFireProof = 1;
player->m_nPhysicalFlags.bMeeleProof = 1;
#elif GTAVC
player->m_nFlags.bBulletProof = 1;
player->m_nFlags.bCollisionProof = 1;
player->m_nFlags.bExplosionProof = 1;
player->m_nFlags.bFireProof = 1;
player->m_nFlags.bMeleeProof = 1;
#endif
}
#ifdef GTASA
if (m_bAimSkinChanger && Ui::HotKeyPressed(Menu::m_HotKeys::aimSkinChanger))
{
CPed* target_ped = player->m_pPlayerTargettedPed;
if (target_ped)
CPed* targetPed = player->m_pPlayerTargettedPed;
if (targetPed)
{
player->SetModelIndex(target_ped->m_nModelIndex);
player->SetModelIndex(targetPed->m_nModelIndex);
Util::ClearCharTasksVehCheck(player);
}
}
#endif
if (Ui::HotKeyPressed(Menu::m_HotKeys::godMode))
{
if (m_bGodMode)
{
SetHelpMessage("God mode disabled", false, false, false);
#ifdef GTASA
patch::Set<bool>(0x96916D, m_bGodMode, false);
player->m_nPhysicalFlags.bBulletProof = false;
player->m_nPhysicalFlags.bCollisionProof = false;
player->m_nPhysicalFlags.bExplosionProof = false;
player->m_nPhysicalFlags.bFireProof = false;
player->m_nPhysicalFlags.bMeeleProof = false;
player->m_nPhysicalFlags.bBulletProof = 0;
player->m_nPhysicalFlags.bCollisionProof = 0;
player->m_nPhysicalFlags.bExplosionProof = 0;
player->m_nPhysicalFlags.bFireProof = 0;
player->m_nPhysicalFlags.bMeeleProof = 0;
#elif GTAVC
player->m_nFlags.bBulletProof = 0;
player->m_nFlags.bCollisionProof = 0;
player->m_nFlags.bExplosionProof = 0;
player->m_nFlags.bFireProof = 0;
player->m_nFlags.bMeleeProof = 0;
#endif
m_bGodMode = false;
}
else
@ -139,6 +177,7 @@ Player::Player()
};
}
#ifdef GTASA
void Player::ChangePlayerCloth(std::string& name)
{
std::stringstream ss(name);
@ -176,11 +215,14 @@ void Player::ChangePlayerCloth(std::string& name)
}
CClothes::RebuildPlayer(player, false);
}
#endif
#ifdef GTASA
void Player::ChangePlayerModel(std::string& model)
{
bool custom_skin = std::find(m_CustomSkins::m_List.begin(), m_CustomSkins::m_List.end(), model) !=
m_CustomSkins::m_List.end();
if (Ped::m_PedData.m_Json.m_Data.contains(model) || custom_skin)
{
CPlayerPed* player = FindPlayerPed();
@ -210,12 +252,24 @@ void Player::ChangePlayerModel(std::string& model)
}
}
}
#elif GTAVC
void Player::ChangePlayerModel(std::string& cat, std::string& name, std::string& id)
{
CPlayerPed* player = FindPlayerPed();
player->Undress(id.c_str());
CStreaming::LoadAllRequestedModels(false);
player->Dress();
}
#endif
void Player::Draw()
{
CPlayerPed* pPlayer = FindPlayerPed();
int hplayer = CPools::GetPedRef(pPlayer);
#ifdef GTASA
CPad* pad = pPlayer->GetPadFromPlayer();
#endif
CPlayerInfo *pInfo = &CWorld::Players[CWorld::PlayerInFocus];
if (ImGui::Button("Copy coordinates", ImVec2(Ui::GetSize(2))))
{
@ -227,7 +281,9 @@ void Player::Draw()
}
ImGui::SameLine();
if (ImGui::Button("Suicide", ImVec2(Ui::GetSize(2))))
{
pPlayer->m_fHealth = 0.0;
}
ImGui::Spacing();
@ -241,36 +297,60 @@ void Player::Draw()
ImGui::Columns(2, 0, false);
#ifdef GTASA
Ui::CheckboxAddress("Bounty on yourself", 0x96913F);
#endif
Ui::CheckboxAddress("Free healthcare", (int)&pInfo->m_bFreeHealthCare);
if (Ui::CheckboxWithHint("God mode", &m_bGodMode))
{
#ifdef GTASA
patch::Set<bool>(0x96916D, m_bGodMode, false);
pPlayer->m_nPhysicalFlags.bBulletProof = m_bGodMode;
pPlayer->m_nPhysicalFlags.bCollisionProof = m_bGodMode;
pPlayer->m_nPhysicalFlags.bExplosionProof = m_bGodMode;
pPlayer->m_nPhysicalFlags.bFireProof = m_bGodMode;
pPlayer->m_nPhysicalFlags.bMeeleProof = m_bGodMode;
#elif GTAVC
pPlayer->m_nFlags.bBulletProof = m_bGodMode;
pPlayer->m_nFlags.bCollisionProof = m_bGodMode;
pPlayer->m_nFlags.bExplosionProof = m_bGodMode;
pPlayer->m_nFlags.bFireProof = m_bGodMode;
pPlayer->m_nFlags.bMeleeProof = m_bGodMode;
#endif
}
#ifdef GTASA
Ui::CheckboxAddress("Higher cycle jumps", 0x969161);
Ui::CheckboxAddress("Infinite oxygen", 0x96916E);
Ui::CheckboxAddress("Infinite run", 0xB7CEE4);
if (Ui::CheckboxBitFlag("Invisible player", pPlayer->m_nPedFlags.bDontRender))
{
pPlayer->m_nPedFlags.bDontRender = (pPlayer->m_nPedFlags.bDontRender == 1) ? 0 : 1;
}
#elif GTAVC
Ui::CheckboxAddress("Infinite run", (int)&pInfo->m_bNeverGetsTired);
#endif
ImGui::NextColumn();
Ui::CheckboxWithHint("Keep position", &m_KeepPosition::m_bEnabled, "Teleport to the position you died from");
#ifdef GTASA
if (Ui::CheckboxBitFlag("Lock control", pad->bPlayerSafe))
{
pad->bPlayerSafe = (pad->bPlayerSafe == 1) ? 0 : 1;
}
Ui::CheckboxAddress("Mega jump", 0x96916C);
Ui::CheckboxAddress("Mega punch", 0x969173);
Ui::CheckboxAddress("Never get hungry", 0x969174);
bool never_wanted = patch::Get<bool>(0x969171, false);
if (Ui::CheckboxWithHint("Never wanted", &never_wanted))
{
CCheat::NotWantedCheat();
}
#endif
Ui::CheckboxAddress("No arrest fee", (int)&pInfo->m_bGetOutOfJailFree);
ImGui::Columns(1);
@ -279,27 +359,37 @@ void Player::Draw()
ImGui::Columns(2, 0, false);
bool state = pPlayer->m_nPhysicalFlags.bBulletProof;
bool state = BY_GAME(pPlayer->m_nPhysicalFlags.bBulletProof, pPlayer->m_nFlags.bBulletProof);
if (Ui::CheckboxWithHint("Bullet proof", &state, nullptr, m_bGodMode))
pPlayer->m_nPhysicalFlags.bBulletProof = state;
{
BY_GAME(pPlayer->m_nPhysicalFlags.bBulletProof, pPlayer->m_nFlags.bBulletProof) = state;
}
state = pPlayer->m_nPhysicalFlags.bCollisionProof;
state = BY_GAME(pPlayer->m_nPhysicalFlags.bCollisionProof, pPlayer->m_nFlags.bCollisionProof);
if (Ui::CheckboxWithHint("Collision proof", &state, nullptr, m_bGodMode))
pPlayer->m_nPhysicalFlags.bCollisionProof = state;
{
BY_GAME(pPlayer->m_nPhysicalFlags.bCollisionProof, pPlayer->m_nFlags.bCollisionProof) = state;
}
state = pPlayer->m_nPhysicalFlags.bExplosionProof;
state = BY_GAME(pPlayer->m_nPhysicalFlags.bExplosionProof, pPlayer->m_nFlags.bExplosionProof);
if (Ui::CheckboxWithHint("Explosion proof", &state, nullptr, m_bGodMode))
pPlayer->m_nPhysicalFlags.bExplosionProof = state;
{
BY_GAME(pPlayer->m_nPhysicalFlags.bExplosionProof, pPlayer->m_nFlags.bExplosionProof) = state;
}
ImGui::NextColumn();
state = pPlayer->m_nPhysicalFlags.bFireProof;
state = BY_GAME(pPlayer->m_nPhysicalFlags.bFireProof, pPlayer->m_nFlags.bFireProof);
if (Ui::CheckboxWithHint("Fire proof", &state, nullptr, m_bGodMode))
pPlayer->m_nPhysicalFlags.bFireProof = state;
{
BY_GAME(pPlayer->m_nPhysicalFlags.bFireProof, pPlayer->m_nFlags.bFireProof) = state;
}
state = pPlayer->m_nPhysicalFlags.bMeeleProof;
state = BY_GAME(pPlayer->m_nPhysicalFlags.bMeeleProof, pPlayer->m_nFlags.bMeleeProof);
if (Ui::CheckboxWithHint("Meele proof", &state, nullptr, m_bGodMode))
pPlayer->m_nPhysicalFlags.bMeeleProof = state;
{
BY_GAME(pPlayer->m_nPhysicalFlags.bMeeleProof, pPlayer->m_nFlags.bMeleeProof) = state;
}
ImGui::EndChild();
ImGui::EndTabItem();
@ -310,6 +400,7 @@ void Player::Draw()
ImGui::BeginChild("PlayerMenus");
Ui::EditReference("Armour", pPlayer->m_fArmour, 0, 100, 150);
#ifdef GTASA
if (ImGui::CollapsingHeader("Body"))
{
if (pPlayer->m_nModelIndex == 0)
@ -347,18 +438,35 @@ void Player::Draw()
Ui::EditStat("Energy", STAT_ENERGY);
Ui::EditStat("Fat", STAT_FAT);
Ui::EditReference("Health", pPlayer->m_fHealth, 0, 100, static_cast<int>(pPlayer->m_fMaxHealth));
#endif
Ui::EditReference("Health", pPlayer->m_fHealth, 0, 100, BY_GAME(static_cast<int>(pPlayer->m_fMaxHealth), 100));
#ifdef GTASA
Ui::EditStat("Lung capacity", STAT_LUNG_CAPACITY);
Ui::EditStat("Max health", STAT_MAX_HEALTH, 0, 569, 1450);
Ui::EditAddress<int>("Money", 0xB7CE50, -99999999, 0, 99999999);
#elif GTAVC
int money = pInfo->m_nMoney;
Ui::EditAddress<int>("Money", (int)&money, -9999999, 0, 99999999);
pInfo->m_nMoney = money;
pInfo->m_nDisplayMoney = money;
#endif
#ifdef GTASA
Ui::EditStat("Muscle", STAT_MUSCLE);
Ui::EditStat("Respect", STAT_RESPECT);
Ui::EditStat("Stamina", STAT_STAMINA);
#endif
if (ImGui::CollapsingHeader("Wanted level"))
{
#ifdef GTASA
int val = pPlayer->m_pPlayerData->m_pWanted->m_nWantedLevel;
int max_wl = pPlayer->m_pPlayerData->m_pWanted->MaximumWantedLevel;
max_wl = max_wl < 6 ? 6 : max_wl;
#elif GTAVC
int val = pPlayer->m_pWanted->m_nWantedLevel;
int max_wl = 6;
#endif
ImGui::Columns(3, 0, false);
ImGui::Text("Min: 0");
@ -371,21 +479,45 @@ void Player::Draw()
ImGui::Spacing();
if (ImGui::InputInt("Set value##Wanted level", &val))
{
#ifdef GTASA
pPlayer->CheatWantedLevel(val);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(val);
#endif
}
ImGui::Spacing();
if (ImGui::Button("Minimum##Wanted level", Ui::GetSize(3)))
{
#ifdef GTASA
pPlayer->CheatWantedLevel(0);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(0);
#endif
}
ImGui::SameLine();
if (ImGui::Button("Default##Wanted level", Ui::GetSize(3)))
{
#ifdef GTASA
pPlayer->CheatWantedLevel(0);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(0);
#endif
}
ImGui::SameLine();
if (ImGui::Button("Maximum##Wanted level", Ui::GetSize(3)))
{
#ifdef GTASA
pPlayer->CheatWantedLevel(max_wl);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(max_wl);
#endif
}
ImGui::Spacing();
ImGui::Separator();
@ -395,14 +527,15 @@ void Player::Draw()
ImGui::EndTabItem();
}
#ifdef GTASA
if (ImGui::BeginTabItem("Appearance"))
{
ImGui::Spacing();
if (Ui::CheckboxWithHint("Aim skin changer", &m_bAimSkinChanger,
(("Changes to the ped, player is targeting with a weapon.\nTo use aim a ped with a weapon and press ")
+ Ui::GetHotKeyNameString(Menu::m_HotKeys::aimSkinChanger)).c_str()))
config.SetValue("aim_skin_changer", m_bAimSkinChanger);
if (ImGui::BeginTabBar("AppearanceTabBar"))
{
if (ImGui::BeginTabItem("Clothes"))
@ -533,7 +666,16 @@ Limitations:\n\
}
ImGui::EndTabItem();
}
#elif GTAVC
if (ImGui::BeginTabItem("Skins"))
{
ImGui::Spacing();
ImGui::Text("Info");
Ui::ShowTooltip("Not all ped skins work. I've added the ones that works!");
Ui::DrawJSON(tempPedData.m_Json, tempPedData.m_Categories, tempPedData.m_Selected, tempPedData.m_Filter, ChangePlayerModel, nullptr);
ImGui::EndTabItem();
}
#endif
ImGui::EndTabBar();
}
}

View File

@ -1,11 +1,11 @@
#pragma once
#include "pch.h"
class Player
{
private:
inline static bool m_bGodMode;
inline static int m_nUiBodyState;
inline static bool m_bAimSkinChanger;
inline static SSearchData m_ClothData;
inline static bool m_bImagesLoaded;
inline static bool m_bModloaderInstalled;
struct m_KeepPosition
@ -13,16 +13,29 @@ private:
inline static bool m_bEnabled = false;
inline static CVector m_fPos;
};
#ifdef GTASA
inline static int m_nUiBodyState;
inline static SSearchData m_ClothData;
struct m_CustomSkins
{
inline static std::string m_Path = paths::GetGameDirPathA() + std::string("\\modloader\\Custom Skins\\");;
inline static ImGuiTextFilter m_Filter;
inline static std::vector<std::string> m_List;
};
#endif
public:
Player();
static void ChangePlayerCloth(std::string& model);
#ifdef GTASA
static void ChangePlayerModel(std::string& model);
#elif GTAVC
static void ChangePlayerModel(std::string& cat, std::string& name, std::string& id);
#endif
static void Draw();
#ifdef GTASA
static void ChangePlayerCloth(std::string& model);
#endif
};

View File

@ -51,7 +51,7 @@ Teleport::Teleport()
CPlayerPed* player = FindPlayerPed();
#ifdef GTASA
CEntity* player_entity = FindPlayerEntity();
CEntity* player_entity = FindPlayerEntity(-1);
m_Teleport::m_fPos.z = CWorld::FindGroundZFor3DCoord(m_Teleport::m_fPos.x, m_Teleport::m_fPos.y,
m_Teleport::m_fPos.z + 100.0f, nullptr, &player_entity) + 1.0f;
#elif GTAVC

View File

@ -540,8 +540,7 @@ void Ui::DrawImages(std::vector<std::unique_ptr<STextureStructure>>& img_vec, Im
}
else
{
IDirect3DTexture9* texture = (IDirect3DTexture9*)Util::GetTextureFromRaster(img_vec[i]->m_pRwTexture);
if (ImGui::ImageButton(texture, image_size, ImVec2(0, 0), ImVec2(1, 1), 1, ImVec4(1, 1, 1, 1),ImVec4(1, 1, 1, 1)))
if (ImGui::ImageButton(img_vec[i]->m_pTexture, image_size, ImVec2(0, 0), ImVec2(1, 1), 1, ImVec4(1, 1, 1, 1), ImVec4(1, 1, 1, 1)))
{
on_left_click(text);
}

View File

@ -7,6 +7,7 @@ void Util::LoadTextureDirectory(SSearchData& data, char *path, bool pass_full_na
{
RwTexDictionary* pRwTexDictionary = &data.txd;
// allow SA textures for VC
pRwTexDictionary = CFileLoader::LoadTexDictionary(path);
if (pRwTexDictionary)
@ -19,6 +20,7 @@ void Util::LoadTextureDirectory(SSearchData& data, char *path, bool pass_full_na
SSearchData* sdata = reinterpret_cast<SSearchData*>(data);
sdata->m_ImagesList.push_back(std::make_unique<STextureStructure>());
sdata->m_ImagesList.back().get()->m_pRwTexture = tex;
sdata->m_ImagesList.back().get()->m_pTexture = Util::GetTextureFromRaster(tex);
std::stringstream ss(tex->name);
std::string str;
@ -41,6 +43,7 @@ void Util::LoadTextureDirectory(SSearchData& data, char *path, bool pass_full_na
SSearchData* sdata = reinterpret_cast<SSearchData*>(data);
sdata->m_ImagesList.push_back(std::make_unique<STextureStructure>());
sdata->m_ImagesList.back().get()->m_pRwTexture = tex;
sdata->m_ImagesList.back().get()->m_pTexture = Util::GetTextureFromRaster(tex);
std::stringstream ss(tex->name);
std::string str;
@ -60,6 +63,7 @@ void Util::LoadTextureDirectory(SSearchData& data, char *path, bool pass_full_na
}
}
void* Util::GetTextureFromRaster(RwTexture* pTexture)
{
RwRasterEx* raster = (RwRasterEx*)(&pTexture->raster->parent);

View File

@ -400,6 +400,17 @@ void Visual::Draw()
Ui::ShowTooltip("Sync system time is enabled.\n(Game/Sync system time)");
}
if (ImGui::Checkbox("Freeze game time", &Game::m_bFreezeTime))
{
if (Game::m_bFreezeTime)
{
patch::SetRaw(0x52CF10, (char*)"\xEB\xEF", 2);
}
else
{
patch::SetRaw(0x52CF10, (char*)"\x56\x8B", 2);
}
}
ImGui::Spacing();
if (ImGui::BeginTabBar("Timecyc subtab", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll))
{

View File

@ -131,6 +131,7 @@ struct STextureStructure
std::string m_FileName;
std::string m_CategoryName;
RwTexture *m_pRwTexture = nullptr;
void *m_pTexture = nullptr;
};
struct SSearchData

View File

@ -65,6 +65,8 @@ project "CheatMenuVC"
"../src/Json.cpp",
"../src/Teleport.h",
"../src/Teleport.cpp",
"../src/Player.h",
"../src/Player.cpp",
"../src/Ui.h",
"../src/Ui.cpp",
"../src/Util.h",