Add Game menu and more stuff
This commit is contained in:
parent
f145447417
commit
2488d190d7
162
resource/VC/CheatMenu/json/mission.json
Normal file
162
resource/VC/CheatMenu/json/mission.json
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
{
|
||||||
|
"Arrival to Vice City" :
|
||||||
|
{
|
||||||
|
"Initial" : "0 ",
|
||||||
|
"Intro" : "1 ",
|
||||||
|
"An Old Friend" : "2 "
|
||||||
|
},
|
||||||
|
"Ken Rosenberg" :
|
||||||
|
{
|
||||||
|
"The Party" : "3 ",
|
||||||
|
"Back Alley Brawl" : "4 ",
|
||||||
|
"Jury Fury" : "5 ",
|
||||||
|
"Riot" : "6 "
|
||||||
|
},
|
||||||
|
"Mr. Black" :
|
||||||
|
{
|
||||||
|
"Road Kill" : "67",
|
||||||
|
"Waste the Wife" : "68",
|
||||||
|
"Autocide" : "69",
|
||||||
|
"Check Out at the Check In" : "70",
|
||||||
|
"Loose Ends" : "71"
|
||||||
|
},
|
||||||
|
"Avery Carrington" :
|
||||||
|
{
|
||||||
|
"Four Iron" : "18",
|
||||||
|
"Demolition Man" : "19",
|
||||||
|
"Two Bit Hit" : "20"
|
||||||
|
},
|
||||||
|
"Juan Cortez" :
|
||||||
|
{
|
||||||
|
"Treacherous Swine" : "7 ",
|
||||||
|
"Mall Shootout" : "8 ",
|
||||||
|
"Guardian Angels" : "9 ",
|
||||||
|
"Sir, Yes Sir!" : "10",
|
||||||
|
"All Hands On Deck!" : "11"
|
||||||
|
},
|
||||||
|
"Ricardo Diaz" :
|
||||||
|
{
|
||||||
|
"The Chase" : "12",
|
||||||
|
"Phnom Penh '86" : "13",
|
||||||
|
"The Fastest Boat" : "14",
|
||||||
|
"Supply & Demand" : "15",
|
||||||
|
"Rub Out" : "16"
|
||||||
|
},
|
||||||
|
"Umberto Robina" :
|
||||||
|
{
|
||||||
|
"Stunt Boat Challenge" : "56",
|
||||||
|
"Cannon Fodder" : "57",
|
||||||
|
"Naval Engagement" : "58",
|
||||||
|
"Trojan Voodoo" : "59"
|
||||||
|
},
|
||||||
|
"Auntie Poulet" :
|
||||||
|
{
|
||||||
|
"Juju Scramble" : "60",
|
||||||
|
"Bombs Away!" : "61",
|
||||||
|
"Dirty Lickin's" : "62"
|
||||||
|
},
|
||||||
|
"Kent Paul" :
|
||||||
|
{
|
||||||
|
"Death Row" : "17"
|
||||||
|
},
|
||||||
|
"Tommy Vercetti" :
|
||||||
|
{
|
||||||
|
"Shakedown" : "31",
|
||||||
|
"Bar Brawl" : "32",
|
||||||
|
"Cop Land" : "33",
|
||||||
|
"Cap the Collector" : "51",
|
||||||
|
"Keep your Friends Close..." : "52"
|
||||||
|
},
|
||||||
|
"Love Fist" :
|
||||||
|
{
|
||||||
|
"Love Juice" : "63",
|
||||||
|
"Psycho Killer" : "64"
|
||||||
|
},
|
||||||
|
"Mitch Baker" :
|
||||||
|
{
|
||||||
|
"Alloy Wheels of Steel" : "53",
|
||||||
|
"Messing with the Man" : "54",
|
||||||
|
"Hog Tied" : "55",
|
||||||
|
"Publicity Tour" : "65"
|
||||||
|
},
|
||||||
|
"Malibu Club" :
|
||||||
|
{
|
||||||
|
"No Escape?" : "21",
|
||||||
|
"The Shootist" : "22",
|
||||||
|
"The Driver" : "23",
|
||||||
|
"The Job" : "24"
|
||||||
|
},
|
||||||
|
"InterGlobal Studios" :
|
||||||
|
{
|
||||||
|
"Recruitment Drive" : "27",
|
||||||
|
"Dildo Dodo" : "28",
|
||||||
|
"Martha's Mug Shot" : "29",
|
||||||
|
"G-spotlight" : "30"
|
||||||
|
},
|
||||||
|
"Kaufman Cabs" :
|
||||||
|
{
|
||||||
|
"V.I.P." : "72",
|
||||||
|
"Friendly Rivalry" : "73",
|
||||||
|
"Cabmaggedon" : "74"
|
||||||
|
},
|
||||||
|
"Print Works" :
|
||||||
|
{
|
||||||
|
"Spilling the Beans" : "34",
|
||||||
|
"Hit the Courier" : "35"
|
||||||
|
},
|
||||||
|
"Misc" :
|
||||||
|
{
|
||||||
|
"Cherry Popper Distribution" : "83",
|
||||||
|
"Sunshine Autos" : "37",
|
||||||
|
"Checkpoint Charlie" : "96",
|
||||||
|
"Printworks Buy" : "36",
|
||||||
|
"Interglobal Films Buy" : "38",
|
||||||
|
"Cherry Popper Icecreams Buy" : "39",
|
||||||
|
"Kaufman Cabs Buy" : "40",
|
||||||
|
"Malibu Club Buy" : "41",
|
||||||
|
"The Boatyard Buy" : "42",
|
||||||
|
"Pole Position Club Buy" : "43",
|
||||||
|
"El Swanko Casa Buy" : "44",
|
||||||
|
"Links View Apartment Buy" : "45",
|
||||||
|
"Hyman Condo Buy" : "46",
|
||||||
|
"Ocean Heighs Aprt. Buy" : "47",
|
||||||
|
"1102 Washington Street Buy" : "48",
|
||||||
|
"Vice Point Buy" : "49",
|
||||||
|
"Skumole Shack Buy" : "50",
|
||||||
|
"Weapon Range" : "66",
|
||||||
|
"TAXI DRIVER" : "75",
|
||||||
|
"PARAMEDIC" : "76",
|
||||||
|
"FIREFIGHTER" : "77",
|
||||||
|
"VIGILANTE" : "78",
|
||||||
|
"HOTRING" : "79",
|
||||||
|
"BLOODRING" : "80",
|
||||||
|
"DIRTRING" : "81",
|
||||||
|
"PIZZA BOY" : "92"
|
||||||
|
},
|
||||||
|
"Phil Cassidy" :
|
||||||
|
{
|
||||||
|
"Gun Runner" : "25",
|
||||||
|
"Boomshine Saigon" : "26"
|
||||||
|
},
|
||||||
|
"Offroad races" :
|
||||||
|
{
|
||||||
|
"Trial by Dirt" : "88",
|
||||||
|
"Test Track" : "89",
|
||||||
|
"PCJ Playground" : "90",
|
||||||
|
"Cone Crazy" : "91"
|
||||||
|
},
|
||||||
|
"RC Missions" :
|
||||||
|
{
|
||||||
|
"RC Raider Pickup" : "93",
|
||||||
|
"RC Bandit Race" : "94",
|
||||||
|
"RC Baron Race" : "95"
|
||||||
|
},
|
||||||
|
"Sparrow missions" :
|
||||||
|
{
|
||||||
|
"Sunshine Autos Races" : "82",
|
||||||
|
"Downtown Chopper Checkpoint" : "84",
|
||||||
|
"Ocean Beach Chopper Checkpoint" : "85",
|
||||||
|
"Vice Point Chopper Checkpoint" : "86",
|
||||||
|
"Little Haiti Chopper Checkpoint" : "87"
|
||||||
|
}
|
||||||
|
}
|
@ -17,13 +17,13 @@
|
|||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include "Weapon.h"
|
#include "Weapon.h"
|
||||||
|
#include "Game.h"
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
#include "Game.h"
|
|
||||||
#include "Visual.h"
|
#include "Visual.h"
|
||||||
class CheatMenu : Hook, Animation, Game, Menu, Ped, Player, Teleport, Vehicle, Visual, Weapon
|
class CheatMenu : Hook, Animation, Game, Menu, Ped, Player, Teleport, Vehicle, Visual, Weapon
|
||||||
#elif GTAVC
|
#elif GTAVC
|
||||||
class CheatMenu : Hook, Animation, Menu, Player, Ped, Teleport, Vehicle, Weapon
|
class CheatMenu : Hook, Animation, Game, Menu, Player, Ped, Teleport, Vehicle, Weapon
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -39,7 +39,8 @@ private:
|
|||||||
inline static CallbackTable header
|
inline static CallbackTable header
|
||||||
{
|
{
|
||||||
{"Teleport", &Teleport::Draw}, {"Player", &Player::Draw}, {"Ped", &Ped::Draw},
|
{"Teleport", &Teleport::Draw}, {"Player", &Player::Draw}, {"Ped", &Ped::Draw},
|
||||||
{"Vehicle", &Vehicle::Draw}, {"Weapon", &Weapon::Draw}, {"Menu", &Menu::Draw}
|
{"Dummy", nullptr}, {"Vehicle", &Vehicle::Draw}, {"Weapon", &Weapon::Draw},
|
||||||
|
{"Game", &Game::Draw}, {"Menu", &Menu::Draw}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
163
src/Game.cpp
163
src/Game.cpp
@ -3,24 +3,31 @@
|
|||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "Ui.h"
|
#include "Ui.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
#ifdef GTASA
|
||||||
#include "CIplStore.h"
|
#include "CIplStore.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool bSaveGameFlag = false;
|
static bool bSaveGameFlag = false;
|
||||||
|
|
||||||
// Thanks to aap
|
// Thanks to aap
|
||||||
void Game::RealTimeClock()
|
void Game::RealTimeClock()
|
||||||
{
|
{
|
||||||
static int lastday;
|
|
||||||
time_t tmp = time(nullptr);
|
time_t tmp = time(nullptr);
|
||||||
struct tm* now = localtime(&tmp);
|
struct tm* now = localtime(&tmp);
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
|
static int lastday;
|
||||||
if (now->tm_yday != lastday)
|
if (now->tm_yday != lastday)
|
||||||
|
{
|
||||||
CStats::SetStatValue(0x86, CStats::GetStatValue(0x86) + 1.0f);
|
CStats::SetStatValue(0x86, CStats::GetStatValue(0x86) + 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
lastday = now->tm_yday;
|
lastday = now->tm_yday;
|
||||||
CClock::ms_nGameClockMonth = now->tm_mon + 1;
|
CClock::ms_nGameClockMonth = now->tm_mon + 1;
|
||||||
CClock::ms_nGameClockDays = now->tm_mday;
|
CClock::ms_nGameClockDays = now->tm_mday;
|
||||||
CClock::CurrentDay = now->tm_wday + 1;
|
CClock::CurrentDay = now->tm_wday + 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
CClock::ms_nGameClockHours = now->tm_hour;
|
CClock::ms_nGameClockHours = now->tm_hour;
|
||||||
CClock::ms_nGameClockMinutes = now->tm_min;
|
CClock::ms_nGameClockMinutes = now->tm_min;
|
||||||
CClock::ms_nGameClockSeconds = now->tm_sec;
|
CClock::ms_nGameClockSeconds = now->tm_sec;
|
||||||
@ -28,6 +35,7 @@ void Game::RealTimeClock()
|
|||||||
|
|
||||||
Game::Game()
|
Game::Game()
|
||||||
{
|
{
|
||||||
|
#ifdef GTASA
|
||||||
// Generate enabled cheats vector
|
// Generate enabled cheats vector
|
||||||
for (auto element : m_RandomCheats::m_Json.m_Data.items())
|
for (auto element : m_RandomCheats::m_Json.m_Data.items())
|
||||||
{
|
{
|
||||||
@ -48,12 +56,15 @@ Game::Game()
|
|||||||
bSaveGameFlag = false;
|
bSaveGameFlag = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
Events::processScriptsEvent += []
|
Events::processScriptsEvent += []
|
||||||
{
|
{
|
||||||
uint timer = CTimer::m_snTimeInMilliseconds;
|
uint timer = CTimer::m_snTimeInMilliseconds;
|
||||||
CPlayerPed* pPlayer = FindPlayerPed();
|
CPlayerPed* pPlayer = FindPlayerPed();
|
||||||
int hplayer = CPools::GetPedRef(pPlayer);
|
int hplayer = CPools::GetPedRef(pPlayer);
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (m_bScreenShot)
|
if (m_bScreenShot)
|
||||||
{
|
{
|
||||||
if (Ui::HotKeyPressed(Menu::m_HotKeys::quickSceenShot))
|
if (Ui::HotKeyPressed(Menu::m_HotKeys::quickSceenShot))
|
||||||
@ -106,6 +117,25 @@ Game::Game()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Ui::HotKeyPressed(Menu::m_HotKeys::freeCam))
|
||||||
|
{
|
||||||
|
if (m_Freecam::m_bEnabled)
|
||||||
|
{
|
||||||
|
m_Freecam::m_bEnabled = false;
|
||||||
|
ClearFreecamStuff();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_Freecam::m_bEnabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_Freecam::m_bEnabled)
|
||||||
|
{
|
||||||
|
FreeCam();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// improve this later
|
// improve this later
|
||||||
if (m_bSyncTime && timer - m_nSyncTimer > 50)
|
if (m_bSyncTime && timer - m_nSyncTimer > 50)
|
||||||
{
|
{
|
||||||
@ -118,6 +148,7 @@ Game::Game()
|
|||||||
m_nSyncTimer = timer;
|
m_nSyncTimer = timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (m_RandomCheats::m_bEnabled
|
if (m_RandomCheats::m_bEnabled
|
||||||
&& (timer - m_RandomCheats::m_nTimer) > (static_cast<uint>(m_RandomCheats::m_nInterval) * 1000))
|
&& (timer - m_RandomCheats::m_nTimer) > (static_cast<uint>(m_RandomCheats::m_nInterval) * 1000))
|
||||||
{
|
{
|
||||||
@ -137,24 +168,7 @@ Game::Game()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (Ui::HotKeyPressed(Menu::m_HotKeys::freeCam))
|
|
||||||
{
|
|
||||||
if (m_Freecam::m_bEnabled)
|
|
||||||
{
|
|
||||||
m_Freecam::m_bEnabled = false;
|
|
||||||
ClearFreecamStuff();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_Freecam::m_bEnabled = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_Freecam::m_bEnabled)
|
|
||||||
{
|
|
||||||
FreeCam();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +180,7 @@ void SetPlayerMission(std::string& rootkey, std::string& name, std::string& id)
|
|||||||
|
|
||||||
Command<0x09E8>(hplayer, &interior);
|
Command<0x09E8>(hplayer, &interior);
|
||||||
|
|
||||||
if (Util::IsOnMission() && interior == 0)
|
if (BY_GAME(Util::IsOnMission(), true) && interior == 0)
|
||||||
{
|
{
|
||||||
player->SetWantedLevel(0);
|
player->SetWantedLevel(0);
|
||||||
Command<Commands::LOAD_AND_LAUNCH_MISSION_INTERNAL>(std::stoi(id));
|
Command<Commands::LOAD_AND_LAUNCH_MISSION_INTERNAL>(std::stoi(id));
|
||||||
@ -174,6 +188,7 @@ void SetPlayerMission(std::string& rootkey, std::string& name, std::string& id)
|
|||||||
else SetHelpMessage("Can't start mission now", false, false, false);
|
else SetHelpMessage("Can't start mission now", false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
void Game::FreeCam()
|
void Game::FreeCam()
|
||||||
{
|
{
|
||||||
int deltaSpeed = m_Freecam::m_fSpeed * (CTimer::m_snTimeInMillisecondsNonClipped -
|
int deltaSpeed = m_Freecam::m_fSpeed * (CTimer::m_snTimeInMillisecondsNonClipped -
|
||||||
@ -183,10 +198,12 @@ void Game::FreeCam()
|
|||||||
{
|
{
|
||||||
CPlayerPed* player = FindPlayerPed(-1);
|
CPlayerPed* player = FindPlayerPed(-1);
|
||||||
Command<Commands::SET_EVERYONE_IGNORE_PLAYER>(0, true);
|
Command<Commands::SET_EVERYONE_IGNORE_PLAYER>(0, true);
|
||||||
|
|
||||||
m_Freecam::m_bHudState = patch::Get<BYTE>(0xBA6769); // hud
|
m_Freecam::m_bHudState = patch::Get<BYTE>(0xBA6769); // hud
|
||||||
m_Freecam::m_bRadarState = patch::Get<BYTE>(0xBA676C); // radar
|
m_Freecam::m_bRadarState = patch::Get<BYTE>(0xBA676C); // radar
|
||||||
patch::Set<BYTE>(0xBA6769, 0); // hud
|
patch::Set<BYTE>(0xBA6769, 0); // hud
|
||||||
patch::Set<BYTE>(0xBA676C, 2); // radar
|
patch::Set<BYTE>(0xBA676C, 2); // radar
|
||||||
|
|
||||||
CVector player_pos = player->GetPosition();
|
CVector player_pos = player->GetPosition();
|
||||||
CPad::GetPad(0)->DisablePlayerControls = true;
|
CPad::GetPad(0)->DisablePlayerControls = true;
|
||||||
|
|
||||||
@ -310,7 +327,7 @@ void Game::ClearFreecamStuff()
|
|||||||
{
|
{
|
||||||
m_Freecam::m_bInitDone = false;
|
m_Freecam::m_bInitDone = false;
|
||||||
Command<Commands::SET_EVERYONE_IGNORE_PLAYER>(0, false);
|
Command<Commands::SET_EVERYONE_IGNORE_PLAYER>(0, false);
|
||||||
patch::Set<BYTE>(0xBA6769, m_Freecam::m_bHudState); // hud
|
patch::Set<BYTE>(BY_GAME(0xBA6769, 0x86963A), m_Freecam::m_bHudState); // hud
|
||||||
patch::Set<BYTE>(0xBA676C, m_Freecam::m_bRadarState); // radar
|
patch::Set<BYTE>(0xBA676C, m_Freecam::m_bRadarState); // radar
|
||||||
CPad::GetPad(0)->DisablePlayerControls = false;
|
CPad::GetPad(0)->DisablePlayerControls = false;
|
||||||
|
|
||||||
@ -319,6 +336,7 @@ void Game::ClearFreecamStuff()
|
|||||||
Command<Commands::CAMERA_PERSIST_FOV>(false);
|
Command<Commands::CAMERA_PERSIST_FOV>(false);
|
||||||
Command<Commands::RESTORE_CAMERA_JUMPCUT>();
|
Command<Commands::RESTORE_CAMERA_JUMPCUT>();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void Game::Draw()
|
void Game::Draw()
|
||||||
{
|
{
|
||||||
@ -326,12 +344,14 @@ void Game::Draw()
|
|||||||
CPlayerPed* pPlayer = FindPlayerPed();
|
CPlayerPed* pPlayer = FindPlayerPed();
|
||||||
int hplayer = CPools::GetPedRef(pPlayer);
|
int hplayer = CPools::GetPedRef(pPlayer);
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::Button("Save game (might cause game bugs)", Ui::GetSize()))
|
if (ImGui::Button("Save game (might cause game bugs)", Ui::GetSize()))
|
||||||
{
|
{
|
||||||
FrontEndMenuManager.m_bActivateMenuNextFrame = true;
|
FrontEndMenuManager.m_bActivateMenuNextFrame = true;
|
||||||
bSaveGameFlag = true;
|
bSaveGameFlag = true;
|
||||||
}
|
}
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (ImGui::BeginTabBar("Game", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll))
|
if (ImGui::BeginTabBar("Game", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll))
|
||||||
{
|
{
|
||||||
@ -343,31 +363,41 @@ void Game::Draw()
|
|||||||
{
|
{
|
||||||
if (m_bDisableCheats)
|
if (m_bDisableCheats)
|
||||||
{
|
{
|
||||||
|
#ifdef GTASA
|
||||||
patch::Set<BYTE>(0x4384D0, 0xE9, false);
|
patch::Set<BYTE>(0x4384D0, 0xE9, false);
|
||||||
patch::SetInt(0x4384D1, 0xD0, false);
|
patch::SetInt(0x4384D1, 0xD0, false);
|
||||||
patch::Nop(0x4384D5, 4, false);
|
patch::Nop(0x4384D5, 4, false);
|
||||||
|
#elif GTAVC
|
||||||
|
patch::Nop(0x602BD8, 5);
|
||||||
|
patch::Nop(0x602BE7, 5);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#ifdef GTASA
|
||||||
patch::Set<BYTE>(0x4384D0, 0x83, false);
|
patch::Set<BYTE>(0x4384D0, 0x83, false);
|
||||||
patch::SetInt(0x4384D1, -0x7DF0F908, false);
|
patch::SetInt(0x4384D1, -0x7DF0F908, false); // correct?
|
||||||
patch::SetInt(0x4384D5, 0xCC, false);
|
patch::SetInt(0x4384D5, 0xCC, false);
|
||||||
|
#elif GTAVC
|
||||||
|
patch::SetRaw(0x602BD8, (char*)"\x88\xD8\x89\xF1\x50", 5);
|
||||||
|
patch::SetRaw(0x602BE7, (char*)"\xE8\x34\x91\xEA\xFF", 5);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ImGui::Checkbox("Disable F1 & F3 replay", &m_bDisableReplay))
|
if (ImGui::Checkbox("Disable F1 & F3 replay", &m_bDisableReplay))
|
||||||
{
|
{
|
||||||
if (m_bDisableReplay)
|
if (m_bDisableReplay)
|
||||||
{
|
{
|
||||||
patch::SetInt(0x460500, 0xC3, false);
|
patch::SetChar(BY_GAME(0x460500, 0x624EC0), 0xC3);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
patch::SetInt(0x460500, 0xBD844BB, false);
|
patch::SetChar(BY_GAME(0x460500, 0x624EC0), 0x80);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ui::CheckboxAddress("Faster clock", 0x96913B);
|
Ui::CheckboxAddress("Faster clock", BY_GAME(0x96913B, 0xA10B87));
|
||||||
|
#ifdef GTASA
|
||||||
if (Ui::CheckboxWithHint("Forbidden area wl", &m_bForbiddenArea, "Wanted levels that appears outside \
|
if (Ui::CheckboxWithHint("Forbidden area wl", &m_bForbiddenArea, "Wanted levels that appears outside \
|
||||||
of LS without completing missions"))
|
of LS without completing missions"))
|
||||||
{
|
{
|
||||||
@ -380,28 +410,33 @@ of LS without completing missions"))
|
|||||||
patch::Set<BYTE>(0x441770, 0xC3, false);
|
patch::Set<BYTE>(0x441770, 0xC3, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Ui::CheckboxAddress("Free pay n spray", 0x96C009);
|
Ui::CheckboxAddress("Free pay n spray", 0x96C009);
|
||||||
|
|
||||||
|
#ifdef GTAVC
|
||||||
|
ImGui::NextColumn();
|
||||||
|
#endif
|
||||||
|
Ui::CheckboxAddress("Freeze game", 0xA10B48);
|
||||||
if (ImGui::Checkbox("Freeze game time", &m_bFreezeTime))
|
if (ImGui::Checkbox("Freeze game time", &m_bFreezeTime))
|
||||||
{
|
{
|
||||||
if (m_bFreezeTime)
|
if (m_bFreezeTime)
|
||||||
{
|
{
|
||||||
patch::SetRaw(0x52CF10, (char*)"\xEB\xEF", 2);
|
patch::SetRaw(BY_GAME(0x52CF10, 0x487010), (char*)"\xEB\xEF", 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
patch::SetRaw(0x52CF10, (char*)"\x56\x8B", 2);
|
patch::SetRaw(BY_GAME(0x52CF10, 0x487010), (char*)BY_GAME("\x56\x8B","\x6A\x01"), 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
|
#endif
|
||||||
if (ImGui::Checkbox("Freeze misson timer", &m_bMissionTimer))
|
if (ImGui::Checkbox("Freeze misson timer", &m_bMissionTimer))
|
||||||
{
|
{
|
||||||
Command<Commands::FREEZE_ONSCREEN_TIMER>(m_bMissionTimer);
|
Command<Commands::FREEZE_ONSCREEN_TIMER>(m_bMissionTimer);
|
||||||
}
|
}
|
||||||
|
#ifdef GTASA
|
||||||
if (Ui::CheckboxWithHint("Hard mode", &m_HardMode::m_bEnabled, "Makes the game more challanging to play. \n\
|
if (Ui::CheckboxWithHint("Hard mode", &m_HardMode::m_bEnabled, "Makes the game more challanging to play. \n\
|
||||||
Lowers armour, health, stamina etc."))
|
Lowers armour, health, stamina etc."))
|
||||||
{
|
{
|
||||||
@ -424,7 +459,6 @@ Lowers armour, health, stamina etc."))
|
|||||||
CWeaponInfo::LoadWeaponData();
|
CWeaponInfo::LoadWeaponData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Ui::CheckboxWithHint("Keep stuff", &m_bKeepStuff, "Keep stuff after arrest/death"))
|
if (Ui::CheckboxWithHint("Keep stuff", &m_bKeepStuff, "Keep stuff after arrest/death"))
|
||||||
{
|
{
|
||||||
Command<Commands::SWITCH_ARREST_PENALTIES>(m_bKeepStuff);
|
Command<Commands::SWITCH_ARREST_PENALTIES>(m_bKeepStuff);
|
||||||
@ -442,12 +476,17 @@ Lowers armour, health, stamina etc."))
|
|||||||
m_nSolidWaterObj = 0;
|
m_nSolidWaterObj = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (ImGui::Checkbox("Sync system time", &m_bSyncTime))
|
if (ImGui::Checkbox("Sync system time", &m_bSyncTime))
|
||||||
{
|
{
|
||||||
if (m_bSyncTime)
|
if (m_bSyncTime)
|
||||||
patch::RedirectCall(0x53BFBD, &RealTimeClock);
|
{
|
||||||
|
patch::RedirectCall(BY_GAME(0x53BFBD, 0x4A44F7), &RealTimeClock);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
patch::RedirectCall(0x53BFBD, &CClock::Update);
|
{
|
||||||
|
patch::RedirectCall(BY_GAME(0x53BFBD, 0x4A44F7), &CClock::Update);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Columns(1);
|
ImGui::Columns(1);
|
||||||
@ -455,6 +494,7 @@ Lowers armour, health, stamina etc."))
|
|||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("Menus"))
|
if (ImGui::BeginTabItem("Menus"))
|
||||||
{
|
{
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::CollapsingHeader("Current day"))
|
if (ImGui::CollapsingHeader("Current day"))
|
||||||
{
|
{
|
||||||
int day = CClock::CurrentDay - 1;
|
int day = CClock::CurrentDay - 1;
|
||||||
@ -466,16 +506,20 @@ Lowers armour, health, stamina etc."))
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
Ui::EditAddress<int>("Days passed", 0xB79038, 0, 9999);
|
#endif
|
||||||
Ui::EditReference("FPS limit", RsGlobal.frameLimit, 1, 30, 60);
|
Ui::EditAddress<int>("Days passed", BY_GAME(0xB79038,0x97F1F4), 0, 9999);
|
||||||
|
Ui::EditReference("FPS limit", BY_GAME(RsGlobal.frameLimit, RsGlobal.maxFPS), 1, 30, 60);
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::CollapsingHeader("Free cam"))
|
if (ImGui::CollapsingHeader("Free cam"))
|
||||||
{
|
{
|
||||||
if (Ui::CheckboxWithHint("Enable", &m_Freecam::m_bEnabled, "Forward: I\tBackward: K\
|
if (Ui::CheckboxWithHint("Enable", &m_Freecam::m_bEnabled, "Forward: I\tBackward: K\
|
||||||
\nLeft: J\t\t Right: L\n\nSlower: RCtrl\tFaster: RShift\n\nZoom: Mouse wheel"))
|
\nLeft: J\t\t Right: L\n\nSlower: RCtrl\tFaster: RShift\n\nZoom: Mouse wheel"))
|
||||||
{
|
{
|
||||||
if (!m_Freecam::m_bEnabled)
|
if (!m_Freecam::m_bEnabled)
|
||||||
|
{
|
||||||
ClearFreecamStuff();
|
ClearFreecamStuff();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
ImGui::SliderFloat("Field of view", &m_Freecam::m_fFOV, 5.0f, 120.0f);
|
ImGui::SliderFloat("Field of view", &m_Freecam::m_fFOV, 5.0f, 120.0f);
|
||||||
@ -485,8 +529,9 @@ Lowers armour, health, stamina etc."))
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Ui::EditReference("Game speed", CTimer::ms_fTimeScale, 1, 1, 10);
|
Ui::EditReference("Game speed", CTimer::ms_fTimeScale, 1, 1, 10);
|
||||||
Ui::EditFloat("Gravity", 0x863984, -1.0f, 0.008f, 1.0f, 1.0f, 0.01f);
|
Ui::EditFloat("Gravity", BY_GAME(0x863984,0x68F5F0), -1.0f, 0.008f, 1.0f, 1.0f, 0.01f);
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Set time"))
|
if (ImGui::CollapsingHeader("Set time"))
|
||||||
{
|
{
|
||||||
@ -510,49 +555,69 @@ Lowers armour, health, stamina etc."))
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
#ifdef GTASA
|
||||||
static std::vector<Ui::NamedMemory> themes{
|
static std::vector<Ui::NamedMemory> themes{
|
||||||
{"Beach", 0x969159}, {"Country", 0x96917D}, {"Fun house", 0x969176}, {"Ninja", 0x96915C}
|
{"Beach", 0x969159}, {"Country", 0x96917D}, {"Fun house", 0x969176}, {"Ninja", 0x96915C}
|
||||||
};
|
};
|
||||||
Ui::EditRadioButtonAddress("Themes", themes);
|
Ui::EditRadioButtonAddress("Themes", themes);
|
||||||
|
#endif
|
||||||
if (ImGui::CollapsingHeader("Weather"))
|
if (ImGui::CollapsingHeader("Weather"))
|
||||||
{
|
{
|
||||||
using func = void(void);
|
#ifdef GTASA
|
||||||
if (ImGui::Button("Foggy", Ui::GetSize(3)))
|
if (ImGui::Button("Foggy", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x438F80)();
|
Call<0x438F80>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Overcast", Ui::GetSize(3)))
|
if (ImGui::Button("Overcast", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x438F60)();
|
Call<0x438F60>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Rainy", Ui::GetSize(3)))
|
if (ImGui::Button("Rainy", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x438F70)();
|
Call<0x438F70>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::Button("Sandstorm", Ui::GetSize(3)))
|
if (ImGui::Button("Sandstorm", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x439590)();
|
Call<0x439590>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Thunderstorm", Ui::GetSize(3)))
|
if (ImGui::Button("Thunderstorm", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x439570)();
|
Call<0x439570>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Very sunny", Ui::GetSize(3)))
|
if (ImGui::Button("Very sunny", Ui::GetSize(3)))
|
||||||
{
|
{
|
||||||
((func*)0x438F50)();
|
Call<0x438F50>();
|
||||||
|
}
|
||||||
|
#elif GTAVC
|
||||||
|
if (ImGui::Button("Sunny", Ui::GetSize(3)))
|
||||||
|
{
|
||||||
|
CWeather::ForceWeatherNow(0);
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Cloudy", Ui::GetSize(3)))
|
||||||
|
{
|
||||||
|
CWeather::ForceWeatherNow(1);
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Rainy", Ui::GetSize(3)))
|
||||||
|
{
|
||||||
|
CWeather::ForceWeatherNow(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::Button("Foggy", Ui::GetSize(3)))
|
||||||
|
{
|
||||||
|
CWeather::ForceWeatherNow(3);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
@ -578,9 +643,11 @@ It's recommanded not to save after using the mission loader. Use it at your own
|
|||||||
{
|
{
|
||||||
if (ImGui::Button("Fail current mission", ImVec2(Ui::GetSize())))
|
if (ImGui::Button("Fail current mission", ImVec2(Ui::GetSize())))
|
||||||
{
|
{
|
||||||
if (!CCutsceneMgr::ms_running)
|
if (!Util::IsOnCutscene())
|
||||||
|
{
|
||||||
Command<Commands::FAIL_CURRENT_MISSION>();
|
Command<Commands::FAIL_CURRENT_MISSION>();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
@ -588,6 +655,7 @@ It's recommanded not to save after using the mission loader. Use it at your own
|
|||||||
}
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::BeginTabItem("Stats"))
|
if (ImGui::BeginTabItem("Stats"))
|
||||||
{
|
{
|
||||||
// similar to Ui::DrawJSON()
|
// similar to Ui::DrawJSON()
|
||||||
@ -649,6 +717,7 @@ It's recommanded not to save after using the mission loader. Use it at your own
|
|||||||
}
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
ImGui::EndTabBar();
|
ImGui::EndTabBar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
24
src/Game.h
24
src/Game.h
@ -4,10 +4,20 @@ class Game
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline static ResourceStore m_MissionData{ "mission", eResourceType::TYPE_TEXT };
|
inline static ResourceStore m_MissionData{ "mission", eResourceType::TYPE_TEXT };
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
|
inline static bool m_bForbiddenArea = true;
|
||||||
|
inline static bool m_bSolidWater;
|
||||||
|
inline static bool m_bScreenShot;
|
||||||
|
inline static uint m_nSolidWaterObj;
|
||||||
|
inline static bool m_bKeepStuff;
|
||||||
|
inline static ResourceStore m_StatData{ "stat", eResourceType::TYPE_TEXT };
|
||||||
|
|
||||||
inline static std::vector<std::string> m_DayNames =
|
inline static std::vector<std::string> m_DayNames =
|
||||||
{
|
{
|
||||||
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
||||||
};
|
};
|
||||||
|
|
||||||
struct m_RandomCheats
|
struct m_RandomCheats
|
||||||
{
|
{
|
||||||
inline static bool m_bEnabled;
|
inline static bool m_bEnabled;
|
||||||
@ -37,24 +47,22 @@ public:
|
|||||||
inline static float m_fBacArmour = 0.0f;
|
inline static float m_fBacArmour = 0.0f;
|
||||||
inline static float m_fBacStamina = 0.0f;
|
inline static float m_fBacStamina = 0.0f;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
inline static bool m_bDisableCheats;
|
inline static bool m_bDisableCheats;
|
||||||
inline static bool m_bDisableReplay;
|
inline static bool m_bDisableReplay;
|
||||||
inline static bool m_bForbiddenArea = true;
|
|
||||||
inline static bool m_bMissionTimer;
|
inline static bool m_bMissionTimer;
|
||||||
inline static bool m_bFreezeTime;
|
inline static bool m_bFreezeTime;
|
||||||
inline static bool m_bKeepStuff;
|
|
||||||
inline static bool m_bSolidWater;
|
|
||||||
inline static bool m_bScreenShot;
|
|
||||||
inline static bool m_bSyncTime;
|
inline static bool m_bSyncTime;
|
||||||
inline static uint m_nSyncTimer;
|
inline static uint m_nSyncTimer;
|
||||||
inline static uint m_nSolidWaterObj;
|
|
||||||
inline static bool m_bMissionLoaderWarningShown;
|
inline static bool m_bMissionLoaderWarningShown;
|
||||||
|
|
||||||
inline static ResourceStore m_StatData{ "stat", eResourceType::TYPE_TEXT };
|
|
||||||
|
|
||||||
Game();
|
Game();
|
||||||
static void Draw();
|
static void Draw();
|
||||||
|
static void RealTimeClock();
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
static void FreeCam();
|
static void FreeCam();
|
||||||
static void ClearFreecamStuff();
|
static void ClearFreecamStuff();
|
||||||
static void RealTimeClock();
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
#define MENU_NAME "Cheat Menu"
|
#define MENU_NAME "Cheat Menu"
|
||||||
#define MENU_VERSION_NUMBER "2.9"
|
#define MENU_VERSION_NUMBER "2.9"
|
||||||
#define MENU_VERSION MENU_VERSION_NUMBER"-beta"
|
#define MENU_VERSION MENU_VERSION_NUMBER"-beta"
|
||||||
#define BUILD_NUMBER "20210813"
|
#define BUILD_NUMBER "20210815"
|
||||||
#define MENU_TITLE MENU_NAME " v" MENU_VERSION "(" BUILD_NUMBER ")"
|
#define MENU_TITLE MENU_NAME " v" MENU_VERSION "(" BUILD_NUMBER ")"
|
||||||
|
@ -137,6 +137,7 @@ void Ped::Draw()
|
|||||||
Ui::CheckboxAddress("Peds riot", 0x969175);
|
Ui::CheckboxAddress("Peds riot", 0x969175);
|
||||||
Ui::CheckboxAddress("Slut magnet", 0x96915D);
|
Ui::CheckboxAddress("Slut magnet", 0x96915D);
|
||||||
#elif GTAVC
|
#elif GTAVC
|
||||||
|
Ui::CheckboxAddress("No prostitutes", 0xA10B99);
|
||||||
Ui::CheckboxAddress("Slut magnet", 0xA10B5F);
|
Ui::CheckboxAddress("Slut magnet", 0xA10B5F);
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
Ui::CheckboxAddress("Weapons for all", 0xA10AB3);
|
Ui::CheckboxAddress("Weapons for all", 0xA10AB3);
|
||||||
|
@ -716,8 +716,8 @@ void Vehicle::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::BeginChild("CheckboxesChild");
|
ImGui::BeginChild("CheckboxesChild");
|
||||||
ImGui::Columns(2, 0, false);
|
ImGui::Columns(2, 0, false);
|
||||||
|
Ui::CheckboxAddress("Aggressive drivers", BY_GAME(0x96914F,0xA10B47));
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
Ui::CheckboxAddress("Aggressive drivers", 0x96914F);
|
|
||||||
Ui::CheckboxAddress("Aim while driving", 0x969179);
|
Ui::CheckboxAddress("Aim while driving", 0x969179);
|
||||||
Ui::CheckboxAddress("All cars have nitro", 0x969165);
|
Ui::CheckboxAddress("All cars have nitro", 0x969165);
|
||||||
#endif
|
#endif
|
||||||
@ -761,6 +761,7 @@ void Vehicle::Draw()
|
|||||||
Ui::CheckboxAddress("Float away when hit", 0x969166);
|
Ui::CheckboxAddress("Float away when hit", 0x969166);
|
||||||
#endif
|
#endif
|
||||||
Ui::CheckboxAddress("Green traffic lights", BY_GAME(0x96914E,0xA10ADC));
|
Ui::CheckboxAddress("Green traffic lights", BY_GAME(0x96914E,0xA10ADC));
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
Ui::CheckboxAddress("Perfect handling", 0x96914C);
|
Ui::CheckboxAddress("Perfect handling", 0x96914C);
|
||||||
Ui::CheckboxAddress("Tank mode", 0x969164);
|
Ui::CheckboxAddress("Tank mode", 0x969164);
|
||||||
@ -967,21 +968,26 @@ void Vehicle::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
#ifdef GTASA
|
|
||||||
if (ImGui::CollapsingHeader("Traffic options"))
|
if (ImGui::CollapsingHeader("Traffic options"))
|
||||||
{
|
{
|
||||||
static std::vector<Ui::NamedMemory> color{ {"Black", 0x969151}, {"Pink", 0x969150} };
|
|
||||||
|
static std::vector<Ui::NamedMemory> color
|
||||||
|
{
|
||||||
|
{"Black", BY_GAME(0x969151, 0xA10B82)},
|
||||||
|
{"Pink", BY_GAME(0x969150, 0xA10B26)}
|
||||||
|
};
|
||||||
|
Ui::RadioButtonAddress("Color", color);
|
||||||
|
ImGui::Spacing();
|
||||||
|
#ifdef GTASA
|
||||||
static std::vector<Ui::NamedMemory> type{
|
static std::vector<Ui::NamedMemory> type{
|
||||||
{"Cheap", 0x96915E}, {"Country", 0x96917B}, {"Fast", 0x96915F}
|
{"Cheap", 0x96915E}, {"Country", 0x96917B}, {"Fast", 0x96915F}
|
||||||
};
|
};
|
||||||
|
|
||||||
Ui::RadioButtonAddress("Color", color);
|
|
||||||
ImGui::Spacing();
|
|
||||||
Ui::RadioButtonAddress("Type", type);
|
Ui::RadioButtonAddress("Type", type);
|
||||||
|
#endif
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (pPlayer && pPlayer->m_pVehicle)
|
if (pPlayer && pPlayer->m_pVehicle)
|
||||||
{
|
{
|
||||||
CVehicle* pVeh = pPlayer->m_pVehicle;
|
CVehicle* pVeh = pPlayer->m_pVehicle;
|
||||||
|
@ -318,7 +318,7 @@ void Weapon::Draw()
|
|||||||
m_nAmmoCount = (m_nAmmoCount > 99999) ? 99999 : m_nAmmoCount;
|
m_nAmmoCount = (m_nAmmoCount > 99999) ? 99999 : m_nAmmoCount;
|
||||||
}
|
}
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
Ui::DrawImages(m_WesaponData, GiveWeaponToPlayer, nullptr,
|
Ui::DrawImages(m_WeaponData, GiveWeaponToPlayer, nullptr,
|
||||||
[](std::string str) { return m_WeaponData.m_pJson->m_Data[str].get<std::string>(); },
|
[](std::string str) { return m_WeaponData.m_pJson->m_Data[str].get<std::string>(); },
|
||||||
[](std::string str) { return str != "0"; /*Unarmed*/ }
|
[](std::string str) { return str != "0"; /*Unarmed*/ }
|
||||||
);
|
);
|
||||||
|
@ -81,6 +81,8 @@ project "CheatMenuVC"
|
|||||||
"../src/Menu.cpp",
|
"../src/Menu.cpp",
|
||||||
"../src/Weapon.h",
|
"../src/Weapon.h",
|
||||||
"../src/Weapon.cpp",
|
"../src/Weapon.cpp",
|
||||||
|
"../src/Game.h",
|
||||||
|
"../src/Game.cpp",
|
||||||
"../src/ResourceStore.h",
|
"../src/ResourceStore.h",
|
||||||
"../src/ResourceStore.cpp"
|
"../src/ResourceStore.cpp"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user