Add vc ped spawning
This commit is contained in:
parent
0a15765771
commit
ba1da25c31
209
resource/VC/CheatMenu/json/ped.json
Normal file
209
resource/VC/CheatMenu/json/ped.json
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
{
|
||||||
|
"Common":
|
||||||
|
{
|
||||||
|
"Tommy" : "0",
|
||||||
|
"Swat" : "2",
|
||||||
|
"FBI" : "3",
|
||||||
|
"Army" : "4",
|
||||||
|
"Medic" : "5",
|
||||||
|
"Fireman" : "6",
|
||||||
|
"Male 1" : "7"
|
||||||
|
},
|
||||||
|
"Misc" :
|
||||||
|
{
|
||||||
|
"HFYST" : "9",
|
||||||
|
"Bum 1" : "10",
|
||||||
|
"Greaser" : "11",
|
||||||
|
"HMOST" : "12",
|
||||||
|
"HFYRI" : "13",
|
||||||
|
"HFORI" : "14",
|
||||||
|
"HMYRI" : "15",
|
||||||
|
"HMORI" : "16",
|
||||||
|
"HFYBU" : "21",
|
||||||
|
"HFYMD" : "22",
|
||||||
|
"HFYCG" : "23",
|
||||||
|
"Bum 2" : "25",
|
||||||
|
"Bum 3" : "26",
|
||||||
|
"HMYAP" : "27",
|
||||||
|
"BMODK" : "29",
|
||||||
|
"Criminal 1" : "30",
|
||||||
|
"BFYST" : "31",
|
||||||
|
"BFOST" : "32",
|
||||||
|
"BMYST" : "33",
|
||||||
|
"BMOST" : "34",
|
||||||
|
"BFYRI" : "35",
|
||||||
|
"BFORI" : "36",
|
||||||
|
"BMYRI" : "37",
|
||||||
|
"BMYBU" : "42",
|
||||||
|
"Bum 4" : "44",
|
||||||
|
"Bum 5" : "45",
|
||||||
|
"BMYPI" : "46",
|
||||||
|
"BMYBB" : "47",
|
||||||
|
"Punk 1" : "48",
|
||||||
|
"WFOST" : "50",
|
||||||
|
"Punk 2" : "51",
|
||||||
|
"WMOST" : "52",
|
||||||
|
"WFYRI" : "53",
|
||||||
|
"WFORI" : "54",
|
||||||
|
"WMYRI" : "55",
|
||||||
|
"WMORI" : "56",
|
||||||
|
"Construction Worker" : "61",
|
||||||
|
"WFYBU" : "67",
|
||||||
|
"WMYBU" : "68",
|
||||||
|
"WMOBU" : "69",
|
||||||
|
"WFOTR" : "71",
|
||||||
|
"WMOTR" : "72",
|
||||||
|
"WMYPI" : "73",
|
||||||
|
"WMOCA" : "74",
|
||||||
|
"WFYJG" : "75",
|
||||||
|
"Skater Guy 1" : "76",
|
||||||
|
"Skater Guy 2" : "78",
|
||||||
|
"Young Woman Shopper" : "79",
|
||||||
|
"Old Woman Shopper" : "80",
|
||||||
|
"Tourist 1" : "81",
|
||||||
|
"Tourist 2" : "82"
|
||||||
|
},
|
||||||
|
"Gangs" :
|
||||||
|
{
|
||||||
|
"Cuban 1" : "83",
|
||||||
|
"Cuban 2" : "84",
|
||||||
|
"Haitian 1" : "85",
|
||||||
|
"Haitian 2" : "86",
|
||||||
|
"Sharks 1" : "87",
|
||||||
|
"Sharks 2" : "88",
|
||||||
|
"Diaz 1" : "89",
|
||||||
|
"Patrol Invest Group 1" : "91",
|
||||||
|
"Patrol Invest Group 2" : "92",
|
||||||
|
"Biker 1" : "93",
|
||||||
|
"Biker 2" : "94",
|
||||||
|
"Vercetti 1" : "95",
|
||||||
|
"Vercetti 2" : "96"
|
||||||
|
},
|
||||||
|
"Prostitute" :
|
||||||
|
{
|
||||||
|
"Prostitute 1" : "24",
|
||||||
|
"Prostitute 2" : "43",
|
||||||
|
"Prostitute 3" : "49",
|
||||||
|
"Prostitute 4" : "70",
|
||||||
|
"Prostitute 5" : "105",
|
||||||
|
"Prostitute 6" : "106"
|
||||||
|
},
|
||||||
|
"Golfer" :
|
||||||
|
{
|
||||||
|
"Golfer 1" : "62",
|
||||||
|
"Golfer 2" : "63",
|
||||||
|
"Golfer 3" : "64"
|
||||||
|
},
|
||||||
|
"Cop" :
|
||||||
|
{
|
||||||
|
"Default Cop" : "1",
|
||||||
|
"Undercover Cop 1" : "97",
|
||||||
|
"Undercover Cop 2" : "98",
|
||||||
|
"Undercover Cop 3" : "99",
|
||||||
|
"Undercover Cop 4" : "100",
|
||||||
|
"Undercover Cop 5" : "101",
|
||||||
|
"Undercover Cop 6" : "102",
|
||||||
|
"Undercover Cop 7" : "103",
|
||||||
|
"Undercover Cop 8" : "104"
|
||||||
|
},
|
||||||
|
"Beach" :
|
||||||
|
{
|
||||||
|
"Beach Lady 1" : "17",
|
||||||
|
"Fat Beach Lady" : "18",
|
||||||
|
"Beach Guy 1" : "19",
|
||||||
|
"Fat Beach Guy" : "20",
|
||||||
|
"Beach Lady 2" : "38",
|
||||||
|
"Beach Guy 2" : "39",
|
||||||
|
"Beach Lady 3" : "40",
|
||||||
|
"Beach Guy 3" : "41",
|
||||||
|
"Beach Lady 4" : "57",
|
||||||
|
"Beach Guy 4" : "58",
|
||||||
|
"Beach Lady 5" : "59",
|
||||||
|
"Beach Guy 5" : "60",
|
||||||
|
"Beach Lady 6" : "65",
|
||||||
|
"Beach Guy 6" : "66",
|
||||||
|
"Beach Lady 7" : "77"
|
||||||
|
},
|
||||||
|
"Driver" :
|
||||||
|
{
|
||||||
|
"Taxi Driver 1" : "28",
|
||||||
|
"Taxi Driver 2" : "74"
|
||||||
|
},
|
||||||
|
"Special" :
|
||||||
|
{
|
||||||
|
"Bodyguard 1" : "BGA",
|
||||||
|
"Bodyguard 2" : "BGB",
|
||||||
|
"Malibu Club Bouncer" : "BOUNCA",
|
||||||
|
"Food Store Worker" : "BURGER",
|
||||||
|
"Cortez's Goon 1" : "CGONA",
|
||||||
|
"Cortez's Goon 2" : "CGONB",
|
||||||
|
"Cortez's Goon 3" : "CGONC",
|
||||||
|
"Chef" : "CHEF",
|
||||||
|
"Porn Cameraman" : "CMRAMAN",
|
||||||
|
"French courier" : "COURIER",
|
||||||
|
"Film Studio Worker 1" : "CREWA",
|
||||||
|
"Film Studio Worker 2" : "CREWB",
|
||||||
|
"Female porn actor" : "CSJUGGZ",
|
||||||
|
"Diaz's Goon 1" : "DGOONA",
|
||||||
|
"Diaz's Goon 2" : "DGOONB",
|
||||||
|
"Diaz's Goon 3" : "DGOONC",
|
||||||
|
"Floozy 1" : "FLOOZYA",
|
||||||
|
"Floozy 2" : "FLOOZYB",
|
||||||
|
"Floozy 3" : "FLOOZYC",
|
||||||
|
"French SWAT" : "FSFA",
|
||||||
|
"Alex Shrub" : "IGALSCB",
|
||||||
|
"Lance" : "IGBUDDY",
|
||||||
|
"Lance Cop" : "IGBUDY2",
|
||||||
|
"Lance Beaten" : "IGBUDY3",
|
||||||
|
"Candy Suxxx" : "IGCANDY",
|
||||||
|
"Colonel Juan Garcia Cortez" : "IGCOLON",
|
||||||
|
"Ricardo Diaz" : "IGDIAZ",
|
||||||
|
"Dick (Love Fist)" : "IGDICK",
|
||||||
|
"Gonzales" : "IGGONZ",
|
||||||
|
"Hilary King" : "IGHLARY",
|
||||||
|
"Hilary King Bank" : "IGHLRY2",
|
||||||
|
"Jezz Torrent (Love Fist)" : "IGJEZZ",
|
||||||
|
"Ken Rosenburg" : "IGKEN",
|
||||||
|
"Mercedes Cortez" : "IGMERC",
|
||||||
|
"Cam Jones" : "IGMIKE",
|
||||||
|
"Cam Jones Bank" : "IGMIKE2",
|
||||||
|
"Percy (Love Fist)" : "IGPERCY",
|
||||||
|
"Phil Cassidy" : "IGPHIL",
|
||||||
|
"Phil Cassidy (one armed)" : "IGPHIL2",
|
||||||
|
"Phil Cassidy Bank" : "IGPHIL3",
|
||||||
|
"Sonny Forelli" : "IGSONNY",
|
||||||
|
"Mercedes Cortez (dressed)" : "IGMERC2",
|
||||||
|
"Forelli Gang member 1" : "MBA",
|
||||||
|
"Forelli Gang member 2" : "MBB",
|
||||||
|
"Male Porn Actor" : "MPORNA",
|
||||||
|
"Mitch Baker's Goon 1" : "MGOONA",
|
||||||
|
"Mitch Baker's Goon 2" : "MSERVER",
|
||||||
|
"Tommy Tracksuit (black)" : "PLAY10",
|
||||||
|
"Tommy Tracksuit (red)" : "PLAY11",
|
||||||
|
"Tommy Frankie" : "PLAY12",
|
||||||
|
"Tommy Soiree" : "PLAYER2",
|
||||||
|
"Tommy Coveralls" : "PLAYER3",
|
||||||
|
"Tommy Country Club" : "PLAYER4",
|
||||||
|
"Tommy Havana" : "PLAYER5",
|
||||||
|
"Tommy Cop" : "PLAYER6",
|
||||||
|
"Tommy Bank Job" : "PLAYER7",
|
||||||
|
"Tommy Casual" : "PLAYER8",
|
||||||
|
"Tommy Buisness Suit" : "PLAYER9",
|
||||||
|
"Print Works Worker 1" : "PRINTRA",
|
||||||
|
"Print Works Worker 2" : "PRINTRB",
|
||||||
|
"Print Works Worker 3" : "PRINTRC",
|
||||||
|
"Psycho" : "PSYCHO",
|
||||||
|
"Hardware store Worker" : "S_KEEP",
|
||||||
|
"Ammu-Nation Worker" : "SAM",
|
||||||
|
"Street Wannabee thief" : "SGC",
|
||||||
|
"Sonny's Goon 1" : "SGOONA",
|
||||||
|
"Sonny's Goon 2" : "SGOONB",
|
||||||
|
"Shooting Range Ped 1" : "SHOOTRA",
|
||||||
|
"Shooting Range Ped 2" : "SHOOTRB",
|
||||||
|
"Spand Express Worker 1" : "SPANDXA",
|
||||||
|
"Spand Express Worker 2" : "SPANDXB",
|
||||||
|
"Stripper 1" : "STRIPA",
|
||||||
|
"Stripper 2" : "STRIPB",
|
||||||
|
"Stripper 3" : "STRIPC"
|
||||||
|
}
|
||||||
|
}
|
@ -84,8 +84,7 @@ void Animation::Draw()
|
|||||||
if (ImGui::BeginChild("Anims Child"))
|
if (ImGui::BeginChild("Anims Child"))
|
||||||
{
|
{
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
Ui::DrawJSON(m_AnimData.m_Json, m_AnimData.m_Categories, m_AnimData.m_Selected, m_AnimData.m_Filter, &PlayAnimation,
|
Ui::DrawJSON(m_AnimData, PlayAnimation, RemoveAnimation);
|
||||||
&RemoveAnimation);
|
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
}
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
@ -153,8 +152,7 @@ void Animation::Draw()
|
|||||||
if (ImGui::BeginChild("Cutscene Child"))
|
if (ImGui::BeginChild("Cutscene Child"))
|
||||||
{
|
{
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
Ui::DrawJSON(m_Cutscene::m_Data.m_Json, m_Cutscene::m_Data.m_Categories, m_Cutscene::m_Data.m_Selected,
|
Ui::DrawJSON(m_Cutscene::m_Data, PlayCutscene, nullptr);
|
||||||
m_Cutscene::m_Data.m_Filter, &PlayCutscene, nullptr);
|
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
}
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
|
@ -9,11 +9,7 @@ void CheatMenu::DrawWindow()
|
|||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
static bool bRunning = true;
|
static bool bRunning = true;
|
||||||
|
|
||||||
#ifdef GTASA
|
if (BY_GAME(FrontEndMenuManager.m_bMenuActive, FrontendMenuManager.m_bMenuVisible))
|
||||||
if (FrontEndMenuManager.m_bMenuActive)
|
|
||||||
#elif GTAVC
|
|
||||||
if (FrontendMenuManager.m_bMenuVisible)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (bRunning)
|
if (bRunning)
|
||||||
{
|
{
|
||||||
@ -25,11 +21,7 @@ void CheatMenu::DrawWindow()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bRunning = true;
|
bRunning = true;
|
||||||
#ifdef GTASA
|
if (Globals::m_bShowMenu || BY_GAME(m_Commands::m_bShowMenu, true))
|
||||||
if (Globals::m_bShowMenu || m_Commands::m_bShowMenu)
|
|
||||||
#elif GTAVC
|
|
||||||
if (Globals::m_bShowMenu)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (Globals::m_bShowMenu)
|
if (Globals::m_bShowMenu)
|
||||||
{
|
{
|
||||||
|
@ -13,17 +13,17 @@
|
|||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
#include "Teleport.h"
|
#include "Teleport.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "Ped.h"
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
#include "Animation.h"
|
#include "Animation.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "Ped.h"
|
|
||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include "Visual.h"
|
#include "Visual.h"
|
||||||
#include "Weapon.h"
|
#include "Weapon.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 defined(GTAVC)
|
#elif defined(GTAVC)
|
||||||
class CheatMenu : Hook, Menu, Player, Teleport
|
class CheatMenu : Hook, Menu, Player, Ped, Teleport
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -38,7 +38,8 @@ private:
|
|||||||
#elif GTAVC
|
#elif GTAVC
|
||||||
inline static CallbackTable header
|
inline static CallbackTable header
|
||||||
{
|
{
|
||||||
{"Teleport", &Teleport::Draw}, {"Player", &Player::Draw}, {"Menu", &Menu::Draw}
|
{"Teleport", &Teleport::Draw}, {"Player", &Player::Draw}, {"Ped", &Ped::Draw},
|
||||||
|
{"Menu", &Menu::Draw}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -587,8 +587,7 @@ It's recommanded not to save after using the mission loader. Use it at your own
|
|||||||
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
Ui::DrawJSON(m_MissionData.m_Json, m_MissionData.m_Categories, m_MissionData.m_Selected, m_MissionData.m_Filter,
|
Ui::DrawJSON(m_MissionData, SetPlayerMission, nullptr);
|
||||||
SetPlayerMission, nullptr);
|
|
||||||
}
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
61
src/Ped.cpp
61
src/Ped.cpp
@ -2,11 +2,15 @@
|
|||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
#include "Ui.h"
|
#include "Ui.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
#include <CPopulation.h>
|
||||||
|
|
||||||
Ped::Ped()
|
Ped::Ped()
|
||||||
{
|
{
|
||||||
|
#ifdef GTASA
|
||||||
if (GetModuleHandle("ExGangWars.asi"))
|
if (GetModuleHandle("ExGangWars.asi"))
|
||||||
|
{
|
||||||
m_bExGangWarsInstalled = true;
|
m_bExGangWarsInstalled = true;
|
||||||
|
}
|
||||||
|
|
||||||
Events::processScriptsEvent += []
|
Events::processScriptsEvent += []
|
||||||
{
|
{
|
||||||
@ -16,6 +20,9 @@ Ped::Ped()
|
|||||||
m_bImagesLoaded = true;
|
m_bImagesLoaded = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#elif GTAVC
|
||||||
|
m_PedData.m_Json.LoadData(m_PedData.m_Categories, m_PedData.m_Selected);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Ped::~Ped()
|
Ped::~Ped()
|
||||||
@ -27,7 +34,11 @@ Ped::~Ped()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
void Ped::SpawnPed(std::string& model)
|
void Ped::SpawnPed(std::string& model)
|
||||||
|
#elif GTAVC
|
||||||
|
void Ped::SpawnPed(std::string& cat, std::string& name, std::string& model)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (m_SpawnPed::m_List.size() == SPAWN_PED_LIMIT)
|
if (m_SpawnPed::m_List.size() == SPAWN_PED_LIMIT)
|
||||||
{
|
{
|
||||||
@ -35,7 +46,7 @@ void Ped::SpawnPed(std::string& model)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_PedData.m_Json.m_Data.contains(model))
|
if (BY_GAME(m_PedData.m_Json.m_Data.contains(model), true))
|
||||||
{
|
{
|
||||||
CPlayerPed* player = FindPlayerPed();
|
CPlayerPed* player = FindPlayerPed();
|
||||||
CVector pos = player->GetPosition();
|
CVector pos = player->GetPosition();
|
||||||
@ -44,6 +55,7 @@ void Ped::SpawnPed(std::string& model)
|
|||||||
CPed* ped;
|
CPed* ped;
|
||||||
int hplayer;
|
int hplayer;
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (m_SpecialPedJson.m_Data.contains(model))
|
if (m_SpecialPedJson.m_Data.contains(model))
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
@ -58,6 +70,25 @@ void Ped::SpawnPed(std::string& model)
|
|||||||
Command<Commands::CREATE_CHAR>(m_SpawnPed::m_nSelectedPedType + 4, 291, pos.x, pos.y, pos.z + 1, &hplayer);
|
Command<Commands::CREATE_CHAR>(m_SpawnPed::m_nSelectedPedType + 4, 291, pos.x, pos.y, pos.z + 1, &hplayer);
|
||||||
CStreaming::SetSpecialCharIsDeletable(291);
|
CStreaming::SetSpecialCharIsDeletable(291);
|
||||||
}
|
}
|
||||||
|
#elif GTAVC
|
||||||
|
|
||||||
|
if (cat == "Special") // Special model
|
||||||
|
{
|
||||||
|
static size_t currentSlot = 1;
|
||||||
|
|
||||||
|
Command<Commands::LOAD_SPECIAL_CHARACTER>(currentSlot, model.c_str());
|
||||||
|
Command<Commands::LOAD_ALL_MODELS_NOW>();
|
||||||
|
|
||||||
|
Command<Commands::CREATE_CHAR>(4, 108+currentSlot, pos.x, pos.y, pos.z + 1, &hplayer);
|
||||||
|
Command<Commands::UNLOAD_SPECIAL_CHARACTER>(currentSlot);
|
||||||
|
|
||||||
|
++currentSlot;
|
||||||
|
if (currentSlot > 21)
|
||||||
|
{
|
||||||
|
currentSlot = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int iModel = std::stoi(model);
|
int iModel = std::stoi(model);
|
||||||
@ -80,6 +111,7 @@ void Ped::SpawnPed(std::string& model)
|
|||||||
ped->m_nWeaponAccuracy = m_SpawnPed::m_nAccuracy;
|
ped->m_nWeaponAccuracy = m_SpawnPed::m_nAccuracy;
|
||||||
ped->m_fHealth = m_SpawnPed::m_nPedHealth;
|
ped->m_fHealth = m_SpawnPed::m_nPedHealth;
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (m_SpawnPed::m_nWeaponId != 0)
|
if (m_SpawnPed::m_nWeaponId != 0)
|
||||||
{
|
{
|
||||||
int model = 0;
|
int model = 0;
|
||||||
@ -88,9 +120,11 @@ void Ped::SpawnPed(std::string& model)
|
|||||||
CStreaming::LoadAllRequestedModels(false);
|
CStreaming::LoadAllRequestedModels(false);
|
||||||
Command<Commands::GIVE_WEAPON_TO_CHAR>(hplayer, m_SpawnPed::m_nWeaponId, 999);
|
Command<Commands::GIVE_WEAPON_TO_CHAR>(hplayer, m_SpawnPed::m_nWeaponId, 999);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ped::Draw()
|
void Ped::Draw()
|
||||||
{
|
{
|
||||||
if (ImGui::BeginTabBar("Ped", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll))
|
if (ImGui::BeginTabBar("Ped", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll))
|
||||||
@ -100,7 +134,7 @@ void Ped::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::BeginChild("CheckboxesChild");
|
ImGui::BeginChild("CheckboxesChild");
|
||||||
ImGui::Columns(2, 0, false);
|
ImGui::Columns(2, 0, false);
|
||||||
|
#ifdef GTASA
|
||||||
Ui::CheckboxAddress("Elvis everywhere", 0x969157);
|
Ui::CheckboxAddress("Elvis everywhere", 0x969157);
|
||||||
Ui::CheckboxAddress("Everyone is armed", 0x969140);
|
Ui::CheckboxAddress("Everyone is armed", 0x969140);
|
||||||
Ui::CheckboxAddress("Gangs control streets", 0x96915B);
|
Ui::CheckboxAddress("Gangs control streets", 0x96915B);
|
||||||
@ -113,7 +147,7 @@ void Ped::Draw()
|
|||||||
Ui::CheckboxAddress("Peds attack with rockets", 0x969158);
|
Ui::CheckboxAddress("Peds attack with rockets", 0x969158);
|
||||||
Ui::CheckboxAddress("Peds riot", 0x969175);
|
Ui::CheckboxAddress("Peds riot", 0x969175);
|
||||||
Ui::CheckboxAddress("Slut magnet", 0x96915D);
|
Ui::CheckboxAddress("Slut magnet", 0x96915D);
|
||||||
|
#endif
|
||||||
ImGui::Columns(1);
|
ImGui::Columns(1);
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
|
|
||||||
@ -124,6 +158,7 @@ void Ped::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::BeginChild("MenusChild");
|
ImGui::BeginChild("MenusChild");
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::CollapsingHeader("Gang wars"))
|
if (ImGui::CollapsingHeader("Gang wars"))
|
||||||
{
|
{
|
||||||
if (ImGui::Button("Start gang war", ImVec2(Ui::GetSize(2))))
|
if (ImGui::Button("Start gang war", ImVec2(Ui::GetSize(2))))
|
||||||
@ -175,9 +210,9 @@ void Ped::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Ui::EditAddress<float>("Pedestrian density multiplier", 0x8D2530, 0, 1, 10);
|
Ui::EditReference<float>("Pedestrian density multiplier", CPopulation::PedDensityMultiplier, 0, 1, 10);
|
||||||
|
#ifdef GTASA
|
||||||
if (ImGui::CollapsingHeader("Recruit anyone"))
|
if (ImGui::CollapsingHeader("Recruit anyone"))
|
||||||
{
|
{
|
||||||
static std::vector<Ui::NamedMemory> selectWeapon{
|
static std::vector<Ui::NamedMemory> selectWeapon{
|
||||||
@ -187,6 +222,8 @@ void Ped::Draw()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Remove peds in radius"))
|
if (ImGui::CollapsingHeader("Remove peds in radius"))
|
||||||
{
|
{
|
||||||
ImGui::InputInt("Radius", &m_nPedRemoveRadius);
|
ImGui::InputInt("Radius", &m_nPedRemoveRadius);
|
||||||
@ -198,7 +235,9 @@ void Ped::Draw()
|
|||||||
{
|
{
|
||||||
if (DistanceBetweenPoints(ped->GetPosition(), player->GetPosition()) < m_nPedRemoveRadius
|
if (DistanceBetweenPoints(ped->GetPosition(), player->GetPosition()) < m_nPedRemoveRadius
|
||||||
&& ped->m_pVehicle == nullptr && ped != player)
|
&& ped->m_pVehicle == nullptr && ped != player)
|
||||||
|
{
|
||||||
Command<Commands::DELETE_CHAR>(CPools::GetPedRef(ped));
|
Command<Commands::DELETE_CHAR>(CPools::GetPedRef(ped));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
@ -227,10 +266,13 @@ void Ped::Draw()
|
|||||||
if (ImGui::BeginTabItem("Spawner"))
|
if (ImGui::BeginTabItem("Spawner"))
|
||||||
{
|
{
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
#ifdef GTASA
|
||||||
Ui::DrawImages(m_PedData.m_ImagesList, ImVec2(65, 110), m_PedData.m_Categories, m_PedData.m_Selected,
|
Ui::DrawImages(m_PedData.m_ImagesList, ImVec2(65, 110), m_PedData.m_Categories, m_PedData.m_Selected,
|
||||||
m_PedData.m_Filter, SpawnPed, nullptr,
|
m_PedData.m_Filter, SpawnPed, nullptr,
|
||||||
[](std::string str) { return m_PedData.m_Json.m_Data[str].get<std::string>(); });
|
[](std::string str) { return m_PedData.m_Json.m_Data[str].get<std::string>(); });
|
||||||
|
#elif GTAVC
|
||||||
|
Ui::DrawJSON(m_PedData, SpawnPed, nullptr);
|
||||||
|
#endif
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("Config"))
|
if (ImGui::BeginTabItem("Config"))
|
||||||
@ -254,11 +296,12 @@ void Ped::Draw()
|
|||||||
m_SpawnPed::m_nPedHealth = 0;
|
m_SpawnPed::m_nPedHealth = 0;
|
||||||
}
|
}
|
||||||
Ui::ListBox("Ped type", m_SpawnPed::m_PedTypeList, m_SpawnPed::m_nSelectedPedType);
|
Ui::ListBox("Ped type", m_SpawnPed::m_PedTypeList, m_SpawnPed::m_nSelectedPedType);
|
||||||
|
#ifdef GTASA
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Text("Selected weapon: %s",
|
ImGui::Text("Selected weapon: %s",
|
||||||
Weapon::m_WeaponData.m_Json.m_Data[std::to_string(m_SpawnPed::m_nWeaponId)].get<std::string>().c_str());
|
Weapon::m_WeaponData.m_Json.m_Data[std::to_string(m_SpawnPed::m_nWeaponId)].get<std::string>().c_str());
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
Ui::DrawImages(Weapon::m_WeaponData.m_ImagesList, ImVec2(65, 65), Weapon::m_WeaponData.m_Categories,
|
Ui::DrawImages(Weapon::m_WeaponData.m_ImagesList, ImVec2(65, 65), Weapon::m_WeaponData.m_Categories,
|
||||||
Weapon::m_WeaponData.m_Selected, Weapon::m_WeaponData.m_Filter,
|
Weapon::m_WeaponData.m_Selected, Weapon::m_WeaponData.m_Filter,
|
||||||
[](std::string str) { m_SpawnPed::m_nWeaponId = std::stoi(str); },
|
[](std::string str) { m_SpawnPed::m_nWeaponId = std::stoi(str); },
|
||||||
@ -269,7 +312,7 @@ void Ped::Draw()
|
|||||||
},
|
},
|
||||||
[](std::string str) { return str != "-1"; /*Jetpack*/ }
|
[](std::string str) { return str != "-1"; /*Jetpack*/ }
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
|
15
src/Ped.h
15
src/Ped.h
@ -1,12 +1,16 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#ifdef GTASA
|
||||||
#include "Weapon.h"
|
#include "Weapon.h"
|
||||||
|
#endif
|
||||||
class Ped
|
class Ped
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
inline static SSearchData m_PedData{"ped"};
|
#ifdef GTASA
|
||||||
inline static CJson m_SpecialPedJson = CJson("ped special");
|
inline static CJson m_SpecialPedJson = CJson("ped special");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline static SSearchData m_PedData{"ped"};
|
||||||
inline static bool m_bImagesLoaded;
|
inline static bool m_bImagesLoaded;
|
||||||
inline static bool m_bExGangWarsInstalled;
|
inline static bool m_bExGangWarsInstalled;
|
||||||
inline static int m_nPedRemoveRadius = 5;
|
inline static int m_nPedRemoveRadius = 5;
|
||||||
@ -33,10 +37,17 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
friend class Player;
|
friend class Player;
|
||||||
|
#ifdef GTASA
|
||||||
friend class Weapon;
|
friend class Weapon;
|
||||||
|
#endif
|
||||||
public:
|
public:
|
||||||
Ped();
|
Ped();
|
||||||
~Ped();
|
~Ped();
|
||||||
static void Draw();
|
static void Draw();
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
static void SpawnPed(std::string& model);
|
static void SpawnPed(std::string& model);
|
||||||
|
#elif GTAVC
|
||||||
|
static void SpawnPed(std::string& cat, std::string& name, std::string& model);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -37,8 +37,6 @@ inline static void PlayerModelBrokenFix()
|
|||||||
if (pPlayer->m_nModelIndex == 0)
|
if (pPlayer->m_nModelIndex == 0)
|
||||||
Call<0x5A81E0>(0, pPlayer->m_pPlayerData->m_pPedClothesDesc, 0xBC1C78, false);
|
Call<0x5A81E0>(0, pPlayer->m_pPlayerData->m_pPedClothesDesc, 0xBC1C78, false);
|
||||||
}
|
}
|
||||||
#elif GTAVC
|
|
||||||
inline static SSearchData tempPedData{ "peds" };
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Player::Player()
|
Player::Player()
|
||||||
@ -46,9 +44,8 @@ Player::Player()
|
|||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
// Fix player model being broken after rebuild
|
// Fix player model being broken after rebuild
|
||||||
patch::RedirectCall(0x5A834D, &PlayerModelBrokenFix);
|
patch::RedirectCall(0x5A834D, &PlayerModelBrokenFix);
|
||||||
#endif
|
|
||||||
|
|
||||||
m_bAimSkinChanger = config.GetValue("aim_skin_changer", false);
|
m_bAimSkinChanger = config.GetValue("aim_skin_changer", false);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Custom skins setup
|
// Custom skins setup
|
||||||
if (GetModuleHandle("modloader.asi"))
|
if (GetModuleHandle("modloader.asi"))
|
||||||
@ -90,7 +87,7 @@ Player::Player()
|
|||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
Util::LoadTextureDirectory(m_ClothData, PLUGIN_PATH((char*)"CheatMenu\\clothes.txd"), true);
|
Util::LoadTextureDirectory(m_ClothData, PLUGIN_PATH((char*)"CheatMenu\\clothes.txd"), true);
|
||||||
#elif GTAVC
|
#elif GTAVC
|
||||||
tempPedData.m_Json.LoadData(tempPedData.m_Categories, tempPedData.m_Selected);
|
skinData.m_Json.LoadData(skinData.m_Categories, skinData.m_Selected);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_bImagesLoaded = true;
|
m_bImagesLoaded = true;
|
||||||
@ -672,7 +669,7 @@ Limitations:\n\
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Text("Info");
|
ImGui::Text("Info");
|
||||||
Ui::ShowTooltip("Not all ped skins work. I've added the ones that works!");
|
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);
|
Ui::DrawJSON(skinData, ChangePlayerModel, nullptr);
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
15
src/Player.h
15
src/Player.h
@ -5,7 +5,6 @@ class Player
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
inline static bool m_bGodMode;
|
inline static bool m_bGodMode;
|
||||||
inline static bool m_bAimSkinChanger;
|
|
||||||
inline static bool m_bImagesLoaded;
|
inline static bool m_bImagesLoaded;
|
||||||
inline static bool m_bModloaderInstalled;
|
inline static bool m_bModloaderInstalled;
|
||||||
struct m_KeepPosition
|
struct m_KeepPosition
|
||||||
@ -14,7 +13,8 @@ private:
|
|||||||
inline static CVector m_fPos;
|
inline static CVector m_fPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
|
inline static bool m_bAimSkinChanger;
|
||||||
inline static int m_nUiBodyState;
|
inline static int m_nUiBodyState;
|
||||||
inline static SSearchData m_ClothData;
|
inline static SSearchData m_ClothData;
|
||||||
struct m_CustomSkins
|
struct m_CustomSkins
|
||||||
@ -23,19 +23,18 @@ private:
|
|||||||
inline static ImGuiTextFilter m_Filter;
|
inline static ImGuiTextFilter m_Filter;
|
||||||
inline static std::vector<std::string> m_List;
|
inline static std::vector<std::string> m_List;
|
||||||
};
|
};
|
||||||
#endif
|
#elif GTAVC
|
||||||
|
inline static SSearchData skinData{ "skin" };
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Player();
|
Player();
|
||||||
|
static void Draw();
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
static void ChangePlayerModel(std::string& model);
|
static void ChangePlayerModel(std::string& model);
|
||||||
|
static void ChangePlayerCloth(std::string& model);
|
||||||
#elif GTAVC
|
#elif GTAVC
|
||||||
static void ChangePlayerModel(std::string& cat, std::string& name, std::string& id);
|
static void ChangePlayerModel(std::string& cat, std::string& name, std::string& id);
|
||||||
#endif
|
#endif
|
||||||
static void Draw();
|
|
||||||
|
|
||||||
#ifdef GTASA
|
|
||||||
static void ChangePlayerCloth(std::string& model);
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
@ -271,8 +271,7 @@ void Teleport::Draw()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
Ui::DrawJSON(tp_data.m_Json, tp_data.m_Categories, tp_data.m_Selected, tp_data.m_Filter, &TeleportToLocation,
|
Ui::DrawJSON(tp_data, TeleportToLocation,RemoveTeleportEntry);
|
||||||
&RemoveTeleportEntry);
|
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
src/Ui.cpp
15
src/Ui.cpp
@ -347,17 +347,16 @@ bool Ui::CheckboxBitFlag(const char* label, uint flag, const char* hint)
|
|||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ui::DrawJSON(CJson& json, std::vector<std::string>& combo_items, std::string& selected_item,
|
void Ui::DrawJSON(SSearchData& data,
|
||||||
ImGuiTextFilter& filter,
|
|
||||||
std::function<void(std::string&, std::string&, std::string&)> func_left_click,
|
std::function<void(std::string&, std::string&, std::string&)> func_left_click,
|
||||||
std::function<void(std::string&, std::string&, std::string&)> func_right_click)
|
std::function<void(std::string&, std::string&, std::string&)> func_right_click)
|
||||||
{
|
{
|
||||||
ImGui::PushItemWidth(ImGui::GetContentRegionAvailWidth() / 2 - 5);
|
ImGui::PushItemWidth(ImGui::GetContentRegionAvailWidth() / 2 - 5);
|
||||||
ListBoxStr("##Categories", combo_items, selected_item);
|
ListBoxStr("##Categories", data.m_Categories, data.m_Selected);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
filter.Draw("##Filter");
|
data.m_Filter.Draw("##Filter");
|
||||||
if (strlen(filter.InputBuf) == 0)
|
if (strlen(data.m_Filter.InputBuf) == 0)
|
||||||
{
|
{
|
||||||
ImDrawList* drawlist = ImGui::GetWindowDrawList();
|
ImDrawList* drawlist = ImGui::GetWindowDrawList();
|
||||||
|
|
||||||
@ -377,14 +376,14 @@ void Ui::DrawJSON(CJson& json, std::vector<std::string>& combo_items, std::strin
|
|||||||
|
|
||||||
|
|
||||||
ImGui::BeginChild(1);
|
ImGui::BeginChild(1);
|
||||||
for (auto root : json.m_Data.items())
|
for (auto root : data.m_Json.m_Data.items())
|
||||||
{
|
{
|
||||||
if (root.key() == selected_item || selected_item == "All")
|
if (root.key() == data.m_Selected || data.m_Selected == "All")
|
||||||
{
|
{
|
||||||
for (auto _data : root.value().items())
|
for (auto _data : root.value().items())
|
||||||
{
|
{
|
||||||
std::string name = _data.key();
|
std::string name = _data.key();
|
||||||
if (filter.PassFilter(name.c_str()))
|
if (data.m_Filter.PassFilter(name.c_str()))
|
||||||
{
|
{
|
||||||
if (ImGui::MenuItem(name.c_str()) && func_left_click != nullptr)
|
if (ImGui::MenuItem(name.c_str()) && func_left_click != nullptr)
|
||||||
{
|
{
|
||||||
|
3
src/Ui.h
3
src/Ui.h
@ -48,8 +48,7 @@ public:
|
|||||||
static bool CheckboxWithHint(const char* label, bool* state, const char* hint = nullptr, bool is_disabled = false);
|
static bool CheckboxWithHint(const char* label, bool* state, const char* hint = nullptr, bool is_disabled = false);
|
||||||
static void DrawHeaders(CallbackTable& data);
|
static void DrawHeaders(CallbackTable& data);
|
||||||
|
|
||||||
static void DrawJSON(CJson& json, std::vector<std::string>& combo_items, std::string& selected_item,
|
static void DrawJSON(SSearchData& data,
|
||||||
ImGuiTextFilter& filter,
|
|
||||||
std::function<void(std::string&, std::string&, std::string&)> func_left_click,
|
std::function<void(std::string&, std::string&, std::string&)> func_left_click,
|
||||||
std::function<void(std::string&, std::string&, std::string&)> func_right_click);
|
std::function<void(std::string&, std::string&, std::string&)> func_right_click);
|
||||||
static void DrawImages(std::vector<std::unique_ptr<STextureStructure>>& img_vec, ImVec2 image_size,
|
static void DrawImages(std::vector<std::unique_ptr<STextureStructure>>& img_vec, ImVec2 image_size,
|
||||||
|
@ -17,6 +17,8 @@ public:
|
|||||||
inline static uchar m_nCurrentWeaponSlot = -1;
|
inline static uchar m_nCurrentWeaponSlot = -1;
|
||||||
inline static int m_nSelectedGang;
|
inline static int m_nSelectedGang;
|
||||||
inline static int m_nSelectedWeapon;
|
inline static int m_nSelectedWeapon;
|
||||||
|
|
||||||
|
#ifdef GTASA
|
||||||
inline static int m_nGangWeaponList[10][3] =
|
inline static int m_nGangWeaponList[10][3] =
|
||||||
{
|
{
|
||||||
{WEAPON_PISTOL, WEAPON_MICRO_UZI, WEAPON_UNARMED}, // Ballas
|
{WEAPON_PISTOL, WEAPON_MICRO_UZI, WEAPON_UNARMED}, // Ballas
|
||||||
@ -30,6 +32,7 @@ public:
|
|||||||
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 9
|
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 9
|
||||||
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 10
|
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 10
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
Weapon();
|
Weapon();
|
||||||
|
|
||||||
|
@ -67,6 +67,8 @@ project "CheatMenuVC"
|
|||||||
"../src/Teleport.cpp",
|
"../src/Teleport.cpp",
|
||||||
"../src/Player.h",
|
"../src/Player.h",
|
||||||
"../src/Player.cpp",
|
"../src/Player.cpp",
|
||||||
|
"../src/Ped.h",
|
||||||
|
"../src/Ped.cpp",
|
||||||
"../src/Ui.h",
|
"../src/Ui.h",
|
||||||
"../src/Ui.cpp",
|
"../src/Ui.cpp",
|
||||||
"../src/Util.h",
|
"../src/Util.h",
|
||||||
|
Loading…
Reference in New Issue
Block a user