Refactor code, fixes

This commit is contained in:
Grinch_ 2022-01-07 14:18:00 +06:00
parent 6044deb156
commit 2b58d9488d
47 changed files with 7569 additions and 7495 deletions

27
.vscode/tasks.json vendored
View File

@ -246,5 +246,32 @@
}
},
},
{
"label": "Format Code",
"type": "shell",
"command": "${workspaceFolder}/tools/FormatCode.bat",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"group": {
"kind": "build",
"isDefault": true
},
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/d", "/c"
]
}
}
},
},
]
}

View File

@ -113,7 +113,7 @@ bool Animation::_LoadAnimationBlock(const char* szBlockName)
}
return false;
}
#else // GTA III
#else
void Animation::_PlayAnimation(RpClump* pClump, int animGroup, int animID, float blend)
{
@ -178,7 +178,7 @@ void Animation::PlayAnimation(std::string& ifp, std::string& anim, std::string&
Command<Commands::REMOVE_ANIMATION>(ifp.c_str());
}
#else // GTA VC & III
#else
if (pPlayer)
{
int groupID, animID;

View File

@ -34,7 +34,7 @@ void MenuThread(void* param)
Need SilentPatch since all gta games have issues with mouse input
Implementing mouse fix is a headache anyway
*/
if (!GetModuleHandle(BY_GAME("SilentPatchSA.asi" ,"SilentPatchVC.asi" ,"SilentPatchIII.asi")))
if (!GetModuleHandle(BY_GAME("SilentPatchSA.asi","SilentPatchVC.asi","SilentPatchIII.asi")))
{
gLog << "Error: SilentPatch not found. Please install it from here https://gtaforums.com/topic/669045-silentpatch/" << std::endl;
int msgID = MessageBox(RsGlobal.ps->window, "SilentPatch not found. Do you want to install Silent Patch? (Game restart required)", "CheatMenu", MB_OKCANCEL | MB_DEFBUTTON1);

View File

@ -405,7 +405,7 @@ void Game::Draw()
#elif GTAVC
patch::Nop(0x602BD8, 5);
patch::Nop(0x602BE7, 5);
#else // GTA3
#else
patch::Nop(0x5841B8, 5);
patch::Nop(0x5841C7, 5);
#endif
@ -419,7 +419,7 @@ void Game::Draw()
#elif GTAVC
patch::SetRaw(0x602BD8, (char*)"\x88\xD8\x89\xF1\x50", 5);
patch::SetRaw(0x602BE7, (char*)"\xE8\x34\x91\xEA\xFF", 5);
#else // GTA3
#else
patch::SetRaw(0x5841B8, (char*)"\x88\xD8\x89\xF1\x50", 5);
patch::SetRaw(0x5841C7, (char*)"\xE8\x84\xE2\xF0\xFF", 5);
#endif
@ -592,7 +592,8 @@ Lowers armour, health, stamina etc."))
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}
};
Ui::EditRadioButtonAddress("Themes", themes);
@ -633,7 +634,7 @@ Lowers armour, health, stamina etc."))
{
Call<0x438F50>();
}
#else // GTA3 & GTAVC
#else
if (ImGui::Button("Sunny", Ui::GetSize(3)))
{
CWeather::ForceWeatherNow(0);

View File

@ -214,7 +214,7 @@ void Hook::ShowMouse(bool state)
patch::SetRaw(0x541DD7, (char*)"\xE8\xE4\xD5\xFF\xFF", 5);
#elif GTAVC
patch::SetRaw(0x4AB6CA, (char*)"\xE8\x51\x21\x00\x00", 5);
#else // GTA3
#else
patch::SetRaw(0x49272F, (char*)"\xE8\x6C\xF5\xFF\xFF", 5);
#endif
}
@ -223,7 +223,7 @@ void Hook::ShowMouse(bool state)
CPad::NewMouseControllerState.Y = 0;
#ifdef GTA3
CPad::GetPad(0)->ClearMouseHistory();
#else // GTAVC & GTASA
#else
CPad::ClearMouseHistory();
#endif
CPad::UpdatePads();
@ -243,7 +243,7 @@ Hook::Hook()
}
else
{
// gtaRenderHook
if (init(kiero::RenderType::D3D11) == kiero::Status::Success)
{
gRenderer = Render_DirectX11;

View File

@ -277,7 +277,7 @@ void Menu::ProcessCommands()
}
}
#ifdef GTASA
#ifdef GTASA
if (command == "tp")
{
try
@ -345,7 +345,7 @@ void Menu::ProcessCommands()
else
SetHelpMessage("Invalid command", false, false, false);
}
#endif
#endif
}
void Menu::Draw()
@ -360,7 +360,6 @@ void Menu::Draw()
if (ImGui::Button("Reset size", ImVec2(Ui::GetSize(2))))
{
CheatMenu::ResetMenuSize();
SetHelpMessage("Menu size reset", false, false, false);
}
ImGui::Spacing();

View File

@ -4,7 +4,7 @@ class Menu
{
private:
enum class DisplayPos
enum DisplayPos
{
CUSTOM,
TOP_LEFT,

View File

@ -180,7 +180,8 @@ static RwTexture* LoadTextureFromMemory(char* data, unsigned int size)
void Neon::InitHooks()
{
if (m_bInit)
static bool init;
if (init)
{
return;
}
@ -231,7 +232,7 @@ void Neon::InitHooks()
}
};
m_bInit = true;
init = true;
}
void Neon::RemoveHooks()

View File

@ -30,7 +30,6 @@ private:
static inline RwTexture* m_pNeonTexture = nullptr; // pointer to the neon mask texture
static inline VehicleExtendedData<NeonData> m_VehNeon;
static inline bool m_bInit;
public:
Neon() = delete;

View File

@ -29,6 +29,13 @@
void Paint::InitHooks()
{
static bool init;
if (init)
{
return;
}
Events::vehicleRenderEvent.before += [](CVehicle* pVeh)
{
VehData& data = m_VehData.Get(pVeh);
@ -85,6 +92,7 @@ void Paint::InitHooks()
}
}
};
init = true;
}
void Paint::VehData::setMaterialColor(RpMaterial* material, RpGeometry* geometry, RwRGBA color, bool filter_mat)

View File

@ -97,7 +97,7 @@ static void SetHelpMessage(const char *message, bool b1, bool b2, bool b3)
CHud::SetHelpMessage(message, b1, b2, b3);
#elif GTAVC
CHud::SetHelpMessage(message, b1, b2);
#else // GTA3
#else
const size_t size = strlen(message)+1;
wchar_t* wc = new wchar_t[size];
mbstowcs(wc, message, size);

View File

@ -63,7 +63,7 @@ Ped::~Ped()
#ifdef GTASA
void Ped::SpawnPed(std::string& model)
#else // GTA3 & GTAVC
#else
void Ped::SpawnPed(std::string& cat, std::string& name, std::string& model)
#endif
{
@ -105,13 +105,13 @@ void Ped::SpawnPed(std::string& cat, std::string& name, std::string& model)
currentSlot = 1;
}
}
#else // GTA3 & GTAVC
#else
if (cat == "Special") // Special model
{
#ifdef GTA3
SetHelpMessage("Spawning special peds isn't implemented yet.", false, false, false);
return;
#else // GTAVC
#else
Command<Commands::LOAD_SPECIAL_CHARACTER>(currentSlot, model.c_str());
Command<Commands::LOAD_ALL_MODELS_NOW>();
@ -195,7 +195,7 @@ void Ped::Draw()
Ui::CheckboxAddress("Slut magnet", 0xA10B5F);
ImGui::NextColumn();
Ui::CheckboxAddress("Weapons for all", 0xA10AB3);
#else // GTA3
#else
// Bad idea lol
static bool pedsMayhem;
if (Ui::CheckboxWithHint("Peds mayhem", &pedsMayhem))
@ -256,7 +256,7 @@ void Ped::Draw()
CZoneInfo* zoneInfo = CTheZones::GetZoneInfo(&pos, &pZone);
int density = zoneInfo->m_nGangDensity[i];
if (ImGui::SliderInt(m_GangNames[i].c_str(), &density, 0, 127))
if (ImGui::SliderInt(m_GangList[i].c_str(), &density, 0, 127))
{
zoneInfo->m_nGangDensity[i] = static_cast<char>(density);
Command<Commands::CLEAR_SPECIFIC_ZONES_TO_TRIGGER_GANG_WAR>();
@ -285,7 +285,8 @@ void Ped::Draw()
#ifdef GTASA
if (ImGui::CollapsingHeader("Recruit anyone"))
{
static std::vector<Ui::NamedMemory> selectWeapon{
static std::vector<Ui::NamedMemory> selectWeapon
{
{"9mm", 0x96917C}, {"AK47", 0x96917D}, {"Rockets", 0x96917E}
};
Ui::RadioButtonAddress("Select weapon", selectWeapon);
@ -296,14 +297,15 @@ void Ped::Draw()
if (ImGui::CollapsingHeader("Remove peds in radius"))
{
ImGui::InputInt("Radius", &m_nPedRemoveRadius);
static int removeRadius = 5;
ImGui::InputInt("Radius", &removeRadius);
ImGui::Spacing();
if (ImGui::Button("Remove peds", Ui::GetSize(1)))
{
CPlayerPed* player = FindPlayerPed();
for (CPed* ped : CPools::ms_pPedPool)
{
if (DistanceBetweenPoints(ped->GetPosition(), player->GetPosition()) < m_nPedRemoveRadius
if (DistanceBetweenPoints(ped->GetPosition(), player->GetPosition()) < removeRadius
&& ped->m_pVehicle == nullptr && ped != player)
{
Command<Commands::DELETE_CHAR>(CPools::GetPedRef(ped));
@ -338,8 +340,11 @@ void Ped::Draw()
ImGui::Spacing();
#ifdef GTASA
Ui::DrawImages(m_PedData, SpawnPed, nullptr,
[](std::string str) { return m_PedData.m_pJson->m_Data[str].get<std::string>(); });
#else // GTA3 & GTAVC
[](std::string str)
{
return m_PedData.m_pJson->m_Data[str].get<std::string>();
});
#else
Ui::DrawJSON(m_PedData, SpawnPed, nullptr);
#endif
ImGui::EndTabItem();
@ -375,16 +380,22 @@ void Ped::Draw()
ImGui::Spacing();
#ifdef GTASA
Ui::DrawImages(Weapon::m_WeaponData,
[](std::string str) { m_SpawnPed::m_nWeaponId = std::stoi(str); },
[](std::string str)
{
m_SpawnPed::m_nWeaponId = std::stoi(str);
},
nullptr,
[](std::string str)
{
m_SpawnPed::m_nWeaponName = Weapon::m_WeaponData.m_pJson->m_Data[str].get<std::string>();
return m_SpawnPed::m_nWeaponName;
},
[](std::string str) { return str != "-1"; /*Jetpack*/ }
[](std::string str)
{
return str != "-1"; /*Jetpack*/
}
);
#else // GTA3 & GTAVC
#else
Ui::DrawJSON(Weapon::m_WeaponData,
[](std::string& root, std::string& key, std::string& id)
{

View File

@ -5,21 +5,16 @@ class Ped
{
private:
#ifdef GTASA
static inline bool m_bExGangWarsInstalled;
static inline bool m_bBigHead;
static inline bool m_bThinBody;
static inline CJson m_SpecialPedJson = CJson("ped special");
static inline ResourceStore m_PedData{"ped", eResourceType::TYPE_BOTH, ImVec2(65, 110)};
static inline std::vector<std::string> m_GangNames =
static inline std::vector<std::string> m_GangList =
{
"Ballas", "Grove street families", "Los santos vagos", "San fierro rifa",
"Da nang boys", "Mafia", "Mountain cloud triad", "Varrio los aztecas", "Gang9", "Gang10"
};
#else // GTA3 & GTAVC
static inline ResourceStore m_PedData{"ped", eResourceType::TYPE_TEXT};
#endif
static inline bool m_bExGangWarsInstalled;
static inline int m_nPedRemoveRadius = 5;
struct m_SpawnPed
{
static inline std::vector<CPed*> m_List;
@ -40,19 +35,21 @@ private:
"Civ Male", "Civ Female", "Cop (crash)", "Cubans", "Haitians", "Streetwannabe's", "Diaz' Gang",
"Security Guards", "Biker Gang", "Vercetti Gang", "Golfers", "Gang 9", "Emergency",
"Fireman", "Criminal", "Unused", "Prostitute", "Special"
#else // GTA3
#else
"Civ Male", "Civ Female", "Cop", "Leones", "Triads", "Diablos", "Yakuza", "Yardies", "Colombians",
"Hoods", "unused", "unused", "Emergency", "Fireman", "Criminal", "unused", "Prostitute", "Special"
#endif
};
};
public:
friend class Player;
#ifdef GTASA
friend class Weapon;
static inline CJson m_SpecialPedJson = CJson("ped special");
static inline ResourceStore m_PedData{"ped", eResourceType::TYPE_BOTH, ImVec2(65, 110)};
#else
static inline ResourceStore m_PedData {"ped", eResourceType::TYPE_TEXT};
#endif
public:
Ped();
~Ped();
static void Draw();
@ -60,7 +57,7 @@ public:
#ifdef GTASA
static void SpawnPed(std::string& model);
static void BigHeadEffect(CPed *ped);
#else // GTA3 & GTAVC
#else
static void SpawnPed(std::string& cat, std::string& name, std::string& model);
#endif
};

View File

@ -3,6 +3,7 @@
#include "menu.h"
#include "ui.h"
#include "util.h"
#ifdef GTASA
#include "ped.h"
@ -205,7 +206,7 @@ Player::Player()
player->m_nFlags.bExplosionProof = 1;
player->m_nFlags.bFireProof = 1;
player->m_nFlags.bMeleeProof = 1;
#else // GTA3
#else
player->m_nEntityFlags.bBulletProof = m_bGodMode;
player->m_nEntityFlags.bCollisionProof = m_bGodMode;
player->m_nEntityFlags.bExplosionProof = m_bGodMode;
@ -254,7 +255,7 @@ Player::Player()
player->m_nFlags.bExplosionProof = 0;
player->m_nFlags.bFireProof = 0;
player->m_nFlags.bMeleeProof = 0;
#else // GTA3
#else
player->m_nEntityFlags.bBulletProof = m_bGodMode;
player->m_nEntityFlags.bCollisionProof = m_bGodMode;
player->m_nEntityFlags.bExplosionProof = m_bGodMode;
@ -351,7 +352,7 @@ void Player::ChangePlayerModel(std::string& model)
Util::ClearCharTasksVehCheck(player);
}
}
#else // GTA3 & GTAVC
#else
void Player::ChangePlayerModel(std::string& cat, std::string& key, std::string& val)
{
CPlayerPed* player = FindPlayerPed();
@ -360,7 +361,7 @@ void Player::ChangePlayerModel(std::string& cat, std::string& key, std::string&
player->Undress(val.c_str());
CStreaming::LoadAllRequestedModels(false);
player->Dress();
#else // GTA3
#else
if (cat == "Special")
{
// CStreaming::RequestSpecialChar(109, val.c_str(), PRIORITY_REQUEST);
@ -460,7 +461,7 @@ void Player::Draw()
pPlayer->m_nFlags.bExplosionProof = m_bGodMode;
pPlayer->m_nFlags.bFireProof = m_bGodMode;
pPlayer->m_nFlags.bMeleeProof = m_bGodMode;
#else // GTA3
#else
pPlayer->m_nEntityFlags.bBulletProof = m_bGodMode;
pPlayer->m_nEntityFlags.bCollisionProof = m_bGodMode;
pPlayer->m_nEntityFlags.bExplosionProof = m_bGodMode;
@ -476,7 +477,7 @@ void Player::Draw()
pPlayer->m_nPedFlags.bDontRender = (pPlayer->m_nPedFlags.bDontRender == 1) ? 0 : 1;
}
Ui::CheckboxAddress("Infinite sprint", 0xB7CEE4);
#else // GTA3 & GTAVC
#else
Ui::CheckboxAddress("Infinite sprint", BY_GAME(NULL, (int)&pInfo->m_bNeverGetsTired, (int)&pInfo->m_bInfiniteSprint));
#endif
@ -497,7 +498,7 @@ void Player::Draw()
{
CCheat::NotWantedCheat();
}
#else // GTA3 & GTAVC
#else
static bool neverWanted = false;
if (Ui::CheckboxWithHint("Never wanted", &neverWanted))
{
@ -632,7 +633,7 @@ void Player::Draw()
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);
#else // GTA3 & GTAVC
#else
int money = pInfo->m_nMoney;
Ui::EditAddress<int>("Money", (int)&money, -9999999, 0, 99999999);
pInfo->m_nMoney = money;
@ -662,7 +663,7 @@ void Player::Draw()
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;
#else // GTA3 & GTAVC
#else
int val = pPlayer->m_pWanted->m_nWantedLevel;
int max_wl = 6;
#endif
@ -683,7 +684,7 @@ void Player::Draw()
pPlayer->CheatWantedLevel(val);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(val);
#else // GTA3
#else
pPlayer->m_pWanted->SetWantedLevel(val);
#endif
}
@ -695,7 +696,7 @@ void Player::Draw()
pPlayer->CheatWantedLevel(0);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(0);
#else // GTA3
#else
pPlayer->m_pWanted->SetWantedLevel(0);
#endif
}
@ -708,7 +709,7 @@ void Player::Draw()
pPlayer->CheatWantedLevel(0);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(0);
#else // GTA3
#else
pPlayer->m_pWanted->SetWantedLevel(0);
#endif
}
@ -721,7 +722,7 @@ void Player::Draw()
pPlayer->CheatWantedLevel(max_wl);
#elif GTAVC
pPlayer->m_pWanted->CheatWantedLevel(max_wl);
#else // GTA3
#else
pPlayer->m_pWanted->SetWantedLevel(max_wl);
#endif
}
@ -746,15 +747,7 @@ void Player::Draw()
{
if (ImGui::BeginTabItem("Clothes"))
{
static int bClothOption = 0;
ImGui::RadioButton("Add", &bClothOption, 0);
ImGui::SameLine();
ImGui::RadioButton("Remove", &bClothOption, 1);
ImGui::Spacing();
if (pPlayer->m_nModelIndex == 0)
{
if (bClothOption == 0)
{
Ui::DrawImages(m_ClothData, ChangePlayerCloth, nullptr,
[](std::string str)
@ -770,8 +763,25 @@ void Player::Draw()
}
else
{
size_t count = 0;
ImGui::TextWrapped("You need to be in CJ skin.");
ImGui::Spacing();
if (ImGui::Button("Change to CJ skin", ImVec2(Ui::GetSize(1))))
{
pPlayer->SetModelIndex(0);
Util::ClearCharTasksVehCheck(pPlayer);
}
}
ImGui::EndTabItem();
}
if (pPlayer->m_nModelIndex == 0
&& ImGui::BeginTabItem("Remove Clothes"))
{
ImGui::TextWrapped("If CJ is wearing a full suit, click 'Extras' or 'Remove all' to remove it.");
ImGui::Spacing();
ImGui::BeginChild("ClothesRemove");
size_t count = 0;
if (ImGui::Button("Remove all", ImVec2(Ui::GetSize(2))))
{
CPlayerPed* player = FindPlayerPed();
@ -797,28 +807,16 @@ void Player::Draw()
}
++count;
}
ImGui::Spacing();
ImGui::TextWrapped("If CJ is wearing a full suit, click 'Extras/ Remove all' to remove it.");
}
}
else
{
ImGui::TextWrapped("You need to be in CJ skin.");
ImGui::Spacing();
if (ImGui::Button("Change to CJ skin", ImVec2(Ui::GetSize(1))))
{
pPlayer->SetModelIndex(0);
Util::ClearCharTasksVehCheck(pPlayer);
}
}
ImGui::EndChild();
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Ped skins"))
{
Ui::DrawImages(Ped::m_PedData, ChangePlayerModel, nullptr,
[](std::string str) { return Ped::m_PedData.m_pJson->m_Data[str].get<std::string>(); });
[](std::string str)
{
return Ped::m_PedData.m_pJson->m_Data[str].get<std::string>();
});
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Custom skins"))
@ -870,7 +868,7 @@ Limitations:\n\
}
ImGui::EndTabItem();
}
#else // GTA3 & GTA
#else
if (ImGui::BeginTabItem("Skins"))
{
ImGui::Spacing();

View File

@ -18,7 +18,7 @@ private:
static inline bool m_bDrunkEffect;
static inline bool m_bFastSprint;
static inline int m_nUiBodyState;
static inline ResourceStore m_ClothData { "clothes" , eResourceType::TYPE_IMAGE, ImVec2(70, 100)};
static inline ResourceStore m_ClothData { "clothes", eResourceType::TYPE_IMAGE, ImVec2(70, 100)};
struct m_CustomSkins
{
static inline std::string m_Path = paths::GetGameDirPathA() + std::string("\\modloader\\Custom Skins\\");;
@ -31,8 +31,8 @@ private:
static inline bool m_bEnabled = false;
static inline float m_fOffset = 40.0f;
};
#else // GTA3 & GTAVC
static inline ResourceStore skinData{ BY_GAME(NULL, "skin", "ped"), eResourceType::TYPE_TEXT };
#else
static inline ResourceStore skinData { BY_GAME(NULL, "skin", "ped"), eResourceType::TYPE_TEXT };
#endif
public:
@ -43,7 +43,7 @@ public:
static void ChangePlayerModel(std::string& model);
static void ChangePlayerCloth(std::string& model);
static void TopDownCameraView();
#else // GTA3 & GTAVC
#else
static void ChangePlayerModel(std::string& cat, std::string& name, std::string& id);
#endif
};

View File

@ -3,7 +3,7 @@
#include "extensions/Paths.h"
ResourceStore::ResourceStore(const char* text, eResourceType type, ImVec2 imageSize)
: m_ImageSize(imageSize)
: m_ImageSize(imageSize)
{
if (type == eResourceType::TYPE_TEXT
|| type == eResourceType::TYPE_BOTH)

View File

@ -55,7 +55,7 @@ Teleport::Teleport()
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;
#else // GTA3 & GTAVC
#else
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) + 1.0f;
#endif
@ -139,7 +139,7 @@ void Teleport::TeleportPlayer(bool get_marker, CVector pos, int interior_id)
{
pPlayer->Teleport(pos, false);
}
#else // GTA3 & GTAVC
#else
if (pVeh && pPlayer->m_pVehicle)
{
#ifndef GTA3

View File

@ -25,10 +25,10 @@ private:
#ifdef GTASA
/*
/*
Generates radar sprite coordinates on the fly.
Shouldn't get saved in 'teleport.json', needs to be cleared at game shutdown.
*/
*/
static void FetchRadarSpriteData();
#endif

View File

@ -130,7 +130,7 @@ uchar *m_nBlurRed = (uchar *)0x94B790;
uchar *m_nBlurGreen = (uchar *)0x8621A0;
uchar *m_nBlurBlue = (uchar *)0x945728;
#else // GTA3
#else
int *m_nAmbientRed = (int *)0x86AF78;
int *m_nAmbientGreen = (int *)0x665308;

View File

@ -101,7 +101,7 @@ int Util::GetLargestGangInZone()
// https://github.com/cleolibrary/CLEO4/blob/916d400f4a731ba1dd0ff16e52bdb056f42b7038/source/CCustomOpcodeSystem.cpp#L1671
CVehicle* Util::GetClosestVehicle()
{
CPlayerPed* player = FindPlayerPed();
CPlayerPed* player = FindPlayerPed();
#ifdef GTASA
CPedIntelligence* pedintel;
@ -119,7 +119,7 @@ CPlayerPed* player = FindPlayerPed();
return veh;
}
return nullptr;
#else // GTAVC & GTA3
#else
CVehicle *pClosestVeh = nullptr;
float distance = 999.0f;
@ -143,7 +143,7 @@ CPlayerPed* player = FindPlayerPed();
CPed* Util::GetClosestPed()
{
CPlayerPed* player = FindPlayerPed();
CPlayerPed* player = FindPlayerPed();
#ifdef GTASA
CPedIntelligence* pedintel;
if (player && (pedintel = player->m_pIntelligence))
@ -161,7 +161,7 @@ CPlayerPed* player = FindPlayerPed();
return ped;
}
return nullptr;
#else // GTA3 & GTAVC
#else
return player->m_apNearPeds[0];
#endif
}

View File

@ -16,7 +16,7 @@ void Vehicle::FixVehicle(CVehicle *pVeh)
{
#ifdef GTASA
pVeh->Fix();
#else // GTA3 & GTAVC
#else
switch (pVeh->m_nVehicleClass)
{
case VEHICLE_AUTOMOBILE:
@ -58,7 +58,7 @@ void FlipVehicle()
y += 135.0f;
pPlayer->m_pVehicle->m_placement.SetOrientation(x, y, z);
}
#else // GTA3
#else
if (pPlayer->m_bInVehicle)
{
float x,y,z;
@ -302,7 +302,8 @@ void Vehicle::RemoveComponent(const std::string& component, const bool display_m
// hardcoded for now
int Vehicle::GetRandomTrainIdForModel(int model)
{
static int train_ids[] = {
static int train_ids[] =
{
8, 9, // model 449
0, 3, 6, 10, 12, 13, // model 537
1, 5, 15 // model 538
@ -369,7 +370,7 @@ void WarpPlayerIntoVehicle(CVehicle *pVeh, int seatId)
#ifdef GTASA
void Vehicle::SpawnVehicle(std::string& smodel)
#else // GTA3 & GTAVC
#else
void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::string& smodel)
#endif
{
@ -404,7 +405,7 @@ void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::stri
{
Command<Commands::DELETE_CAR>(hveh);
}
#else // GTA3 & GTAVC
#else
Command<Commands::DELETE_CAR>(hveh);
#endif
}
@ -489,7 +490,7 @@ void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::stri
float x,y,z;
player->m_placement.GetOrientation(x, y, z);
veh->m_placement.SetOrientation(x, y, z);
#else // GTA3
#else
float x,y,z;
player->GetOrientation(x, y, z);
veh->SetOrientation(x, y, z);
@ -504,7 +505,7 @@ void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::stri
{
#ifdef GTASA
player->TransformFromObjectSpace(pos, CVector(0, 10, 0));
#else // GTA3 & GTAVC
#else
player->TransformFromObjectSpace(pos);
#endif
Command<Commands::CREATE_CAR>(imodel, pos.x, pos.y, pos.z + 3.0f, &hveh);
@ -515,7 +516,7 @@ void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::stri
float x,y,z;
player->m_placement.GetOrientation(x, y, z);
veh->m_placement.SetOrientation(x, y, z);
#else // GTA3
#else
float x,y,z;
player->GetOrientation(x, y, z);
veh->SetOrientation(x, y, z);
@ -530,7 +531,7 @@ void Vehicle::SpawnVehicle(std::string& rootkey, std::string& vehName, std::stri
#ifdef GTASA
}
veh->m_nVehicleFlags.bHasBeenOwnedByPlayer = true;
#else // GTA3 & GTAVC
#else
Command<Commands::RESTORE_CAMERA_JUMPCUT>();
#endif
}
@ -636,7 +637,7 @@ void Vehicle::Draw()
pVeh->m_nFlags.bFireProof = false;
pVeh->m_nFlags.bCollisionProof = false;
pVeh->m_nFlags.bMeleeProof = false;
#else // GTA3
#else
pVeh->m_nEntityFlags.bBulletProof = false;
pVeh->m_nEntityFlags.bExplosionProof = false;
pVeh->m_nEntityFlags.bFireProof = false;
@ -923,7 +924,8 @@ void Vehicle::Draw()
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}
};
Ui::RadioButtonAddress("Type", type);
@ -1057,7 +1059,7 @@ void Vehicle::Draw()
{
return GetNameFromModel(std::stoi(str));
});
#else // GTA3 & GTAVC
#else
Ui::DrawJSON(m_Spawner::m_VehData, SpawnVehicle, nullptr);
#endif
ImGui::EndTabItem();
@ -1102,7 +1104,7 @@ void Vehicle::Draw()
ImGui::NewLine();
ImGui::RadioButton("Tertiary", &m_Paint::m_nRadioButton, 3);
ImGui::RadioButton("Quaternary", &m_Paint::m_nRadioButton, 4);
#else // GTA3 & GTAVC
#else
ImGui::RadioButton("Primary", &m_Color::m_nRadioButton, 1);
ImGui::NextColumn();
ImGui::RadioButton("Secondary", &m_Color::m_nRadioButton, 2);
@ -1259,9 +1261,18 @@ void Vehicle::Draw()
{
ImGui::Spacing();
Ui::DrawImages(m_TuneData,
[](std::string& str) { AddComponent(str); },
[](std::string& str) { RemoveComponent(str); },
[](std::string& str) { return str; },
[](std::string& str)
{
AddComponent(str);
},
[](std::string& str)
{
RemoveComponent(str);
},
[](std::string& str)
{
return str;
},
[pPlayer](std::string& str)
{
return ((bool(*)(int, CVehicle*))0x49B010)(std::stoi(str), pPlayer->m_pVehicle);
@ -1316,7 +1327,8 @@ void Vehicle::Draw()
Ui::EditFloat("Damping level", pHandling + 0xB0, -10.0f, -10.0f, 10.0f); // test later
Ui::EditFloat("Drag mult", pHandling + 0x10, 0.0f, 0.0f, 30.0f);
static std::vector<Ui::NamedValue> drive_type{
static std::vector<Ui::NamedValue> drive_type
{
{"Front wheel drive", 70}, {"Rear wheel drive", 82}, {"Four wheel drive", 52}
};
Ui::EditRadioButtonAddressEx("Drive type", pHandling + 0x74, drive_type);

View File

@ -20,7 +20,7 @@ private:
{
static inline bool m_bMatFilter = true;
static inline int m_nRadioButton = 1;
static inline float m_fColorPicker[3]{ 0, 0, 0 };
static inline float m_fColorPicker[3] { 0, 0, 0 };
static inline std::vector<std::string> m_vecNames{"Default"};
static inline std::string m_Selected = "Default";
};
@ -30,7 +30,7 @@ private:
static inline std::map<int, std::string> m_VehicleIDE;
struct m_Neon
{
static inline float m_fColorPicker[3]{ 0, 0, 0 };
static inline float m_fColorPicker[3] { 0, 0, 0 };
static inline bool m_bRainbowEffect;
static inline uint m_nRainbowTimer;
static inline bool m_bApplyOnTraffic;
@ -43,8 +43,8 @@ private:
{
#ifdef GTASA
static inline ResourceStore m_VehData { "vehicles", eResourceType::TYPE_IMAGE, ImVec2(100, 75)};
#else // GTA3 & GTAVC
static inline ResourceStore m_VehData{"vehicle", eResourceType::TYPE_TEXT};
#else
static inline ResourceStore m_VehData {"vehicle", eResourceType::TYPE_TEXT};
#endif
static inline bool m_bSpawnInside = true;
static inline bool m_bSpawnInAir = true;
@ -93,7 +93,7 @@ private:
public:
#ifdef GTASA
static void SpawnVehicle(std::string& name);
#else // GTA3 & GTAVC
#else
static void SpawnVehicle(std::string& rootkey, std::string& vehName, std::string& model);
#endif
static std::string GetNameFromModel(int model);

View File

@ -13,7 +13,7 @@
#define TOTAL_WEATHERS 23
#elif GTAVC
#define TOTAL_WEATHERS 7
#else // GTA3
#else
#define TOTAL_WEATHERS 4
#endif
@ -47,7 +47,7 @@ int GetTCVal(T* addr, int index)
{
#ifdef GTASA
T* arr = static_cast<T*>(patch::GetPointer(int(addr)));
#else // GTA3 & GTAVC
#else
T* arr = static_cast<T*>(addr);
#endif
return static_cast<int>(arr[index]);
@ -120,7 +120,7 @@ void Visual::GenerateTimecycFile()
file << buffer << std::endl;
}
}
#else // GTA3 & GTAVC
#else
std::ofstream file = std::ofstream("timecyc.dat");
for (uint i = 0; i < TOTAL_WEATHERS; ++i)
@ -151,7 +151,7 @@ void Visual::GenerateTimecycFile()
#ifdef GTA3
buffer += "// Amb Dir Sky top Sky bot SunCore SunCorona SunSz SprSz SprBght Shdw LightShd TreeShd FarClp FogSt LightOnGround LowCloudsRGB TopCloudRGB BottomCloudRGB PostFx";
#else // GTAVC
#else
buffer += "// Amb Amb_Obj Amb_bl Amb_Obj_bl Dir Sky top Sky bot SunCore SunCorona SunSz SprSz SprBght Shdw LightShd PoleShd FarClp FogSt LightOnGround LowCloudsRGB TopCloudRGB BottomCloudRGB BlurRGB WaterRGBA";
#endif
file << buffer << std::endl;
@ -164,7 +164,8 @@ void Visual::GenerateTimecycFile()
{
buffer = "// Extra Color " + std::to_string(j);
static std::string intNames[] = {
static std::string intNames[] =
{
"Maibu Club", "Strip Club", "Hotel", "Bank", "Police HQ", "Mall", "Rifle Range", "Mansion", "Dirtring", "Blood ring",
"Hotring", "Concert Hall", "Auntie Poulets", "Intro at Docks", "Biker Bar", "Intro Cafe Dark Room", "Studio"
};
@ -278,13 +279,13 @@ bool Visual::TimeCycColorEdit3(const char* label, T* r, T* g, T* b, ImGuiColorEd
auto red = static_cast<T*>(patch::GetPointer(int(r)));
auto green = static_cast<T*>(patch::GetPointer(int(g)));
auto blue = static_cast<T*>(patch::GetPointer(int(b)));
#else // GTA3 & GTAVC
#else
auto red = static_cast<T*>(r);
auto green = static_cast<T*>(g);
auto blue = static_cast<T*>(b);
#endif
float col[3]{ red[val] / 255.0f, green[val] / 255.0f, blue[val] / 255.0f };
float col[3] { red[val] / 255.0f, green[val] / 255.0f, blue[val] / 255.0f };
if (ImGui::ColorEdit3(label, col, flags))
{
@ -304,7 +305,7 @@ void Visual::TimecycSlider(const char* label, T* ptr, int min, int max)
#ifdef GTASA
// Compatable with 24h TimeCyc
T* arr = static_cast<T*>(patch::GetPointer(int(ptr)));
#else // GTA3 & GTAVC
#else
T* arr = static_cast<T*>(ptr);
#endif
int a = arr[val];
@ -324,14 +325,14 @@ bool Visual::TimeCycColorEdit4(const char* label, T* r, T* g, T* b, T* a, ImGuiC
auto green = static_cast<T*>(patch::GetPointer(int(g)));
auto blue = static_cast<T*>(patch::GetPointer(int(b)));
auto alpha = static_cast<T*>(patch::GetPointer(int(a)));
#else // GTA3 & GTAVC
#else
auto red = static_cast<T*>(r);
auto green = static_cast<T*>(g);
auto blue = static_cast<T*>(b);
auto alpha = static_cast<T*>(a);
#endif
float col[4]{ red[val] / 255.0f, green[val] / 255.0f, blue[val] / 255.0f, alpha[val] / 255.0f };
float col[4] { red[val] / 255.0f, green[val] / 255.0f, blue[val] / 255.0f, alpha[val] / 255.0f };
if (ImGui::ColorEdit4(label, col, flags))
{
@ -446,7 +447,7 @@ void Visual::Draw()
Ui::CheckboxAddress("Green scanlines", 0xA10B69);
Ui::CheckboxAddress("White scanlines", 0xA10B68);
#else // GTA3
#else
static bool hideHud, hideRadar;
if (Ui::CheckboxWithHint("Hide hud", &hideHud))
{
@ -567,7 +568,8 @@ void Visual::Draw()
Ui::ColorPickerAddress("Money color", 0xBAB230, ImVec4(54, 104, 44, 255));
Ui::EditAddress<float>("Money posX", *(int*)0x58F5FC, -999, 32, 999);
Ui::EditAddress<float>("Money posY", 0x866C88, -999, 89, 999);
static std::vector<Ui::NamedValue> font_outline{
static std::vector<Ui::NamedValue> font_outline
{
{"No outline", 0}, {"Thin outline", 1}, {"Default outline", 2}
};
Ui::EditRadioButtonAddressEx("Money font outline", 0x58F58D, font_outline);
@ -601,7 +603,7 @@ void Visual::Draw()
#ifdef GTASA
if (m_nTimecycHour == 8 ? ImGui::BeginTabItem("Timecyc") : ImGui::BeginTabItem("Timecyc 24h"))
#else // GTA3 & GTAVC
#else
if (ImGui::BeginTabItem("Timecyc"))
#endif
{

View File

@ -2,7 +2,6 @@
#include "weapon.h"
#include "ui.h"
#include "util.h"
#include "ped.h"
#include "CWeaponInfo.h"
Weapon::Weapon()
@ -41,7 +40,7 @@ Weapon::Weapon()
#ifdef GTASA
CWeaponInfo* pWeaponInfo = CWeaponInfo::GetWeaponInfo(weaponType, player->GetWeaponSkill(weaponType));
#else // GTA3 & GTAVC
#else
CWeaponInfo* pWeaponInfo = CWeaponInfo::GetWeaponInfo(weaponType);
if(m_bInfiniteAmmo)
@ -62,7 +61,7 @@ Weapon::Weapon()
pWeaponInfo->m_fWeaponRange = 1000.0f;
pWeaponInfo->m_fAccuracy = 1.0f;
pWeaponInfo->m_nFlags.bReload2Start = true;
#else // GTA3 & GTAVC
#else
pWeaponInfo->m_fRange = 1000.0f;
#endif
}
@ -101,7 +100,7 @@ void Weapon::SetGangWeapon(std::string& weapon_type)
CGangs::SetGangWeapons(m_nSelectedGang, m_nGangWeaponList[m_nSelectedGang][0], m_nGangWeaponList[m_nSelectedGang][1],
m_nGangWeaponList[m_nSelectedGang][2]);
}
#else // GTA3 & GTAVC
#else
// Implementation of SA opcode 0x555
static void ClearPlayerWeapon(eWeaponType weaponType)
{
@ -208,7 +207,7 @@ void Weapon::GiveWeaponToPlayer(std::string& weapon_type)
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(model);
}
}
#else // GTA3 & GTAVC
#else
void Weapon::GiveWeaponToPlayer(std::string& rootkey, std::string& name, std::string& model)
{
CPlayerPed* player = FindPlayerPed();
@ -248,14 +247,14 @@ void Weapon::Draw()
int model = 0, pickup = 0;
#ifdef GTASA
Command<Commands::GET_WEAPONTYPE_MODEL>(weaponType, &model);
#else // GTA3 & GTAVC
#else
model = CallAndReturn<int, BY_GAME(NULL, 0x4418B0, 0x430690)>(weaponType); // int __cdecl CPickups::ModelForWeapon(int a1)
#endif
Command<Commands::CREATE_PICKUP_WITH_AMMO>(model, 3, 999, x, y, z, &pickup);
#ifdef GTASA
Command<Commands::REMOVE_WEAPON_FROM_CHAR>(hplayer, weaponType);
#else // GTA3 & GTAVC
#else
ClearPlayerWeapon(weaponType);
#endif
}
@ -273,7 +272,7 @@ void Weapon::Draw()
Command<Commands::REMOVE_WEAPON_FROM_CHAR>(hplayer, pPlayer->m_aWeapons[pPlayer->m_nActiveWeaponSlot].m_nType);
#elif GTAVC
ClearPlayerWeapon(pPlayer->m_aWeapons[pPlayer->m_nActiveWeaponSlot].m_nType);
#else // GTA3
#else
ClearPlayerWeapon(pPlayer->m_aWeapons[pPlayer->m_nCurrentWeapon].m_eWeaponType);
#endif
}
@ -364,10 +363,16 @@ void Weapon::Draw()
}
#ifdef GTASA
Ui::DrawImages(m_WeaponData, GiveWeaponToPlayer, nullptr,
[](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 m_WeaponData.m_pJson->m_Data[str].get<std::string>();
},
[](std::string str)
{
return str != "0"; /*Unarmed*/
}
);
#else // GTA3 & GTAVC
#else
Ui::DrawJSON(m_WeaponData, GiveWeaponToPlayer, nullptr);
#endif
ImGui::EndTabItem();
@ -376,7 +381,7 @@ void Weapon::Draw()
if (ImGui::BeginTabItem("Gang weapon editor"))
{
ImGui::Spacing();
Ui::ListBox("Select gang", Ped::m_GangNames, m_nSelectedGang);
Ui::ListBox("Select gang", m_GangList, m_nSelectedGang);
ImGui::Columns(3, 0, false);
ImGui::RadioButton("Weap 1", &m_nSelectedWeapon, 0);
@ -392,8 +397,14 @@ void Weapon::Draw()
std::string>().c_str());
ImGui::Spacing();
Ui::DrawImages(m_WeaponData, SetGangWeapon, nullptr,
[](std::string str) { return m_WeaponData.m_pJson->m_Data[str].get<std::string>(); },
[](std::string str) { return str != "-1"; /*Jetpack*/ }
[](std::string str)
{
return m_WeaponData.m_pJson->m_Data[str].get<std::string>();
},
[](std::string str)
{
return str != "-1"; /*Jetpack*/
}
);
ImGui::EndTabItem();
}

View File

@ -1,11 +1,11 @@
#pragma once
#include "CWeapon.h"
#include "pch.h"
class Weapon
{
public:
#ifdef GTASA
static inline ResourceStore m_WeaponData{ "weapon", eResourceType::TYPE_BOTH, ImVec2(65, 65) };
static inline ResourceStore m_WeaponData { "weapon", eResourceType::TYPE_BOTH, ImVec2(65, 65) };
static inline bool m_bAutoAim;
static inline bool m_bRapidFire;
@ -26,8 +26,14 @@ public:
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 9
{WEAPON_UNARMED, WEAPON_UNARMED, WEAPON_UNARMED}, // Gang 10
};
#else // GTA3 & GTAVC
static inline ResourceStore m_WeaponData{ "weapon", eResourceType::TYPE_TEXT };
static inline std::vector<std::string> m_GangList =
{
"Ballas", "Grove street families", "Los santos vagos", "San fierro rifa",
"Da nang boys", "Mafia", "Mountain cloud triad", "Varrio los aztecas", "Gang9", "Gang10"
};
#else
static inline ResourceStore m_WeaponData { "weapon", eResourceType::TYPE_TEXT };
static inline bool m_bInfiniteAmmo;
#endif
static inline bool m_bFastReload;
@ -43,7 +49,7 @@ public:
#ifdef GTASA
static void GiveWeaponToPlayer(std::string& weapon_type);
static void SetGangWeapon(std::string& weapon_type);
#else // GTA3 & GTAVC
#else
static void GiveWeaponToPlayer(std::string& rootkey, std::string& model, std::string& name);
#endif
};

BIN
tools/AStyle.exe Normal file

Binary file not shown.

2
tools/FormatCode.bat Normal file
View File

@ -0,0 +1,2 @@
start tools/AStyle.exe --style=allman -n --recursive src/*.cpp src/*.h