Crash fix & improvements
1. Fixed crash when modloader.asi was installed but no modloader folder found 2. Code improvements
This commit is contained in:
parent
3dd96c020f
commit
7c4e7fba14
13
.github/FUNDING.yml
vendored
13
.github/FUNDING.yml
vendored
@ -1,13 +0,0 @@
|
|||||||
# These are supported funding model platforms
|
|
||||||
|
|
||||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
||||||
patreon: # Replace with a single Patreon username
|
|
||||||
open_collective: # Replace with a single Open Collective username
|
|
||||||
ko_fi: # Replace with a single Ko-fi username
|
|
||||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
|
||||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
||||||
liberapay: # Replace with a single Liberapay username
|
|
||||||
issuehunt: # Replace with a single IssueHunt username
|
|
||||||
otechie: # Replace with a single Otechie username
|
|
||||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
|
||||||
custom: ['https://paypal.me/NOTGrinch']
|
|
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Help us improve by reporting a bug
|
|
||||||
title: ''
|
|
||||||
labels: bug
|
|
||||||
assignees: user-grinch
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the bug is & steps to reproduce it. Screenshots or videos are helpful.
|
|
||||||
|
|
||||||
**Info**
|
|
||||||
Cheat Menu version (with build number):
|
|
||||||
Game Version (v1.0 required):
|
|
||||||
Windows Version (7/8/10):
|
|
||||||
Have you read the installation instructions? (Yes/No):
|
|
||||||
Have you installed the menu using modloader? (Yes/No) (Provide log if installed):
|
|
||||||
List of mods you have installed,
|
|
||||||
...
|
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
title: ''
|
|
||||||
labels: enhancement
|
|
||||||
assignees: user-grinch
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
@ -221,10 +221,10 @@ void Animation::PlayAnimation(std::string& ifp, std::string& anim, std::string&
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Animation::Animation()
|
void Animation::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
Events::processScriptsEvent += [this]
|
Events::processScriptsEvent += []
|
||||||
{
|
{
|
||||||
CPlayerPed* pPlayer = FindPlayerPed();
|
CPlayerPed* pPlayer = FindPlayerPed();
|
||||||
if (m_Cutscene::m_bRunning)
|
if (m_Cutscene::m_bRunning)
|
||||||
|
@ -57,6 +57,9 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Animation();
|
Animation() = delete;
|
||||||
|
Animation(const Animation&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
@ -1,5 +1,4 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "cheatMenu.h"
|
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
#include "updater.h"
|
#include "updater.h"
|
||||||
@ -7,6 +6,17 @@
|
|||||||
#include "../depend/imgui/imgui_internal.h"
|
#include "../depend/imgui/imgui_internal.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
#include "animation.h"
|
||||||
|
#include "cheatmenu.h"
|
||||||
|
#include "game.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "ped.h"
|
||||||
|
#include "player.h"
|
||||||
|
#include "teleport.h"
|
||||||
|
#include "vehicle.h"
|
||||||
|
#include "visual.h"
|
||||||
|
#include "weapon.h"
|
||||||
|
|
||||||
void CheatMenu::DrawWindow()
|
void CheatMenu::DrawWindow()
|
||||||
{
|
{
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
@ -24,7 +34,7 @@ void CheatMenu::DrawWindow()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bRunning = true;
|
bRunning = true;
|
||||||
if (m_bShowMenu || BY_GAME(m_Commands::m_bShowMenu, true, true))
|
if (m_bShowMenu || BY_GAME(Menu::m_Commands::m_bShowMenu, true, true))
|
||||||
{
|
{
|
||||||
if (m_bShowMenu)
|
if (m_bShowMenu)
|
||||||
{
|
{
|
||||||
@ -54,12 +64,12 @@ void CheatMenu::DrawWindow()
|
|||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DrawShortcutsWindow();
|
Menu::DrawShortcutsWindow();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DrawOverlay();
|
Menu::DrawOverlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheatMenu::ProcessPages()
|
void CheatMenu::ProcessPages()
|
||||||
@ -164,7 +174,7 @@ void CheatMenu::ProcessPages()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheatMenu::CheatMenu()
|
void CheatMenu::Init()
|
||||||
{
|
{
|
||||||
if (!D3dHook::InjectHook(DrawWindow))
|
if (!D3dHook::InjectHook(DrawWindow))
|
||||||
{
|
{
|
||||||
@ -197,6 +207,17 @@ CheatMenu::CheatMenu()
|
|||||||
{"Anniversary", &ShowAnniversaryPage, eMenuPages::ANNIVERSARY, true}
|
{"Anniversary", &ShowAnniversaryPage, eMenuPages::ANNIVERSARY, true}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Init menu parts
|
||||||
|
Animation::Init();
|
||||||
|
Game::Init();
|
||||||
|
Menu::Init();
|
||||||
|
Player::Init();
|
||||||
|
Ped::Init();
|
||||||
|
Teleport::Init();
|
||||||
|
Vehicle::Init();
|
||||||
|
Visual::Init();
|
||||||
|
Weapon::Init();
|
||||||
|
|
||||||
Events::processScriptsEvent += []()
|
Events::processScriptsEvent += []()
|
||||||
{
|
{
|
||||||
if (!BY_GAME(FrontEndMenuManager.m_bMenuActive, FrontendMenuManager.m_bMenuVisible, FrontEndMenuManager.m_bMenuActive))
|
if (!BY_GAME(FrontEndMenuManager.m_bMenuActive, FrontendMenuManager.m_bMenuVisible, FrontEndMenuManager.m_bMenuActive))
|
||||||
@ -208,12 +229,12 @@ CheatMenu::CheatMenu()
|
|||||||
|
|
||||||
if (commandWindow.Pressed())
|
if (commandWindow.Pressed())
|
||||||
{
|
{
|
||||||
if (m_Commands::m_bShowMenu)
|
if (Menu::m_Commands::m_bShowMenu)
|
||||||
{
|
{
|
||||||
ProcessCommands();
|
Menu::ProcessCommands();
|
||||||
strcpy(m_Commands::m_nInputBuffer, "");
|
strcpy(Menu::m_Commands::m_nInputBuffer, "");
|
||||||
}
|
}
|
||||||
m_Commands::m_bShowMenu = !m_Commands::m_bShowMenu;
|
Menu::m_Commands::m_bShowMenu = !Menu::m_Commands::m_bShowMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mouseState = D3dHook::GetMouseState();
|
bool mouseState = D3dHook::GetMouseState();
|
||||||
@ -230,11 +251,6 @@ CheatMenu::CheatMenu()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
CheatMenu::~CheatMenu()
|
|
||||||
{
|
|
||||||
D3dHook::RemoveHook();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* YIKES YOU AREN"T SUPPOSED TO FIND THIS YOU KNOW!!!
|
* YIKES YOU AREN"T SUPPOSED TO FIND THIS YOU KNOW!!!
|
||||||
* Probably a good easter egg for the upcoming anniversary ;)
|
* Probably a good easter egg for the upcoming anniversary ;)
|
||||||
|
@ -9,17 +9,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "animation.h"
|
#include "pch.h"
|
||||||
#include "game.h"
|
|
||||||
#include "menu.h"
|
|
||||||
#include "ped.h"
|
|
||||||
#include "player.h"
|
|
||||||
#include "teleport.h"
|
|
||||||
#include "vehicle.h"
|
|
||||||
#include "visual.h"
|
|
||||||
#include "weapon.h"
|
|
||||||
|
|
||||||
class CheatMenu : Animation, Game, Menu, Ped, Player, Teleport, Vehicle, Visual, Weapon
|
class CheatMenu
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
enum class eMenuPages
|
enum class eMenuPages
|
||||||
@ -48,8 +40,9 @@ private:
|
|||||||
static void ProcessPages();
|
static void ProcessPages();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CheatMenu();
|
CheatMenu() = delete;
|
||||||
~CheatMenu();
|
CheatMenu(const CheatMenu&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ResetMenuSize();
|
static void ResetMenuSize();
|
||||||
};
|
};
|
||||||
|
@ -71,7 +71,7 @@ void MenuThread(void* param)
|
|||||||
gLog << "Starting...\nVersion: " MENU_TITLE "\nAuthor: Grinch_\nDiscord: " DISCORD_INVITE "\nMore Info: "
|
gLog << "Starting...\nVersion: " MENU_TITLE "\nAuthor: Grinch_\nDiscord: " DISCORD_INVITE "\nMore Info: "
|
||||||
GITHUB_LINK "\n" << std::endl;
|
GITHUB_LINK "\n" << std::endl;
|
||||||
|
|
||||||
CheatMenu menu;
|
CheatMenu::Init();
|
||||||
|
|
||||||
// Checking for updates once a day
|
// Checking for updates once a day
|
||||||
SYSTEMTIME st;
|
SYSTEMTIME st;
|
||||||
|
@ -34,7 +34,7 @@ void Game::RealTimeClock()
|
|||||||
CClock::ms_nGameClockSeconds = now->tm_sec;
|
CClock::ms_nGameClockSeconds = now->tm_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game::Game()
|
void Game::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
// Generate enabled cheats vector
|
// Generate enabled cheats vector
|
||||||
|
@ -62,7 +62,9 @@ public:
|
|||||||
static inline bool m_bFreezeTime;
|
static inline bool m_bFreezeTime;
|
||||||
static inline bool m_bSyncTime;
|
static inline bool m_bSyncTime;
|
||||||
|
|
||||||
Game();
|
Game() = delete;
|
||||||
static void ShowPage();
|
Game(const Game&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
|
static void ShowPage();
|
||||||
};
|
};
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "vehicle.h"
|
#include "vehicle.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Menu::Menu()
|
void Menu::Init()
|
||||||
{
|
{
|
||||||
// TODO: use structs
|
// TODO: use structs
|
||||||
// Load config data
|
// Load config data
|
||||||
|
@ -45,7 +45,10 @@ public:
|
|||||||
static inline char m_nInputBuffer[INPUT_BUFFER_SIZE] = "";
|
static inline char m_nInputBuffer[INPUT_BUFFER_SIZE] = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
Menu();
|
Menu() = delete;
|
||||||
|
Menu(const Menu&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
static void DrawOverlay();
|
static void DrawOverlay();
|
||||||
static void DrawShortcutsWindow();
|
static void DrawShortcutsWindow();
|
||||||
|
11
src/ped.cpp
11
src/ped.cpp
@ -9,7 +9,7 @@
|
|||||||
#include <ePedBones.h>
|
#include <ePedBones.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ped::Ped()
|
void Ped::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
if (GetModuleHandle("ExGangWars.asi"))
|
if (GetModuleHandle("ExGangWars.asi"))
|
||||||
@ -52,15 +52,6 @@ Ped::Ped()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Ped::~Ped()
|
|
||||||
{
|
|
||||||
for (CPed* ped : m_SpawnPed::m_List)
|
|
||||||
{
|
|
||||||
CWorld::Remove(ped);
|
|
||||||
ped->Remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
void Ped::SpawnPed(std::string& model)
|
void Ped::SpawnPed(std::string& model)
|
||||||
#else
|
#else
|
||||||
|
@ -57,7 +57,9 @@ public:
|
|||||||
static inline ResourceStore m_PedData {"ped", eResourceType::TYPE_TEXT};
|
static inline ResourceStore m_PedData {"ped", eResourceType::TYPE_TEXT};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ped();
|
Ped() = delete;
|
||||||
~Ped();
|
Ped(const Ped&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
||||||
|
@ -82,7 +82,7 @@ void Player::TopDownCameraView()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Player::Player()
|
void Player::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
// Fix player model being broken after rebuild
|
// Fix player model being broken after rebuild
|
||||||
@ -91,27 +91,33 @@ Player::Player()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Custom skins setup
|
// Custom skins setup
|
||||||
if (GetModuleHandle("modloader.asi"))
|
std::string path = GAME_PATH((char*)"modloader/");
|
||||||
|
if (GetModuleHandle("modloader.asi") && std::filesystem::is_directory(path))
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
if (std::filesystem::is_directory(m_CustomSkins::m_Path))
|
path += "CustomSkins/";
|
||||||
|
if (std::filesystem::is_directory(path))
|
||||||
{
|
{
|
||||||
for (auto& p : std::filesystem::recursive_directory_iterator(m_CustomSkins::m_Path))
|
for (auto& p : std::filesystem::recursive_directory_iterator(path))
|
||||||
{
|
{
|
||||||
if (p.path().extension() == ".dff")
|
if (p.path().extension() == ".dff")
|
||||||
{
|
{
|
||||||
std::string file_name = p.path().stem().string();
|
std::string file_name = p.path().stem().string();
|
||||||
|
|
||||||
if (file_name.size() < 9)
|
if (file_name.size() < 9)
|
||||||
|
{
|
||||||
m_CustomSkins::m_List.push_back(file_name);
|
m_CustomSkins::m_List.push_back(file_name);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gLog << "Custom Skin longer than 8 characters " << file_name << std::endl;
|
gLog << "Custom Skin longer than 8 characters " << file_name << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::filesystem::create_directory(m_CustomSkins::m_Path);
|
std::filesystem::create_directory(path);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -805,7 +811,7 @@ void Player::ShowPage()
|
|||||||
Ui::FilterWithHint("Search", m_ClothData.m_Filter,
|
Ui::FilterWithHint("Search", m_ClothData.m_Filter,
|
||||||
std::string("Total skins: " + std::to_string(m_CustomSkins::m_List.size()))
|
std::string("Total skins: " + std::to_string(m_CustomSkins::m_List.size()))
|
||||||
.c_str());
|
.c_str());
|
||||||
Ui::ShowTooltip("Place your dff & txd files inside 'modloader/Custom Skins'");
|
Ui::ShowTooltip("Place your dff & txd files inside 'modloader/CustomSkins'");
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::TextWrapped(
|
ImGui::TextWrapped(
|
||||||
"Note: Your txd & dff names can't exceed 8 characters. Don't change names while the game is running.");
|
"Note: Your txd & dff names can't exceed 8 characters. Don't change names while the game is running.");
|
||||||
@ -827,7 +833,7 @@ void Player::ShowPage()
|
|||||||
"Custom skin allows to change player skins without replacing any existing game ped skins.\n\
|
"Custom skin allows to change player skins without replacing any existing game ped skins.\n\
|
||||||
Steps to enable 'Custom Skins',\n\n\
|
Steps to enable 'Custom Skins',\n\n\
|
||||||
1. Download & install modloader\n\
|
1. Download & install modloader\n\
|
||||||
2. Create a folder inside 'modloader' folder with the name 'Custom Skins'\n\
|
2. Create a folder inside 'modloader' folder with the name 'CustomSkins'\n\
|
||||||
3. Download ped skins online ( .dff & .txd files) and put them inside.\n\
|
3. Download ped skins online ( .dff & .txd files) and put them inside.\n\
|
||||||
4. Restart your game.\n\n\n\
|
4. Restart your game.\n\n\n\
|
||||||
Limitations:\n\
|
Limitations:\n\
|
||||||
|
@ -21,7 +21,6 @@ private:
|
|||||||
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
|
struct m_CustomSkins
|
||||||
{
|
{
|
||||||
static inline std::string m_Path = paths::GetGameDirPathA() + std::string("\\modloader\\Custom Skins\\");;
|
|
||||||
static inline ImGuiTextFilter m_Filter;
|
static inline ImGuiTextFilter m_Filter;
|
||||||
static inline std::vector<std::string> m_List;
|
static inline std::vector<std::string> m_List;
|
||||||
};
|
};
|
||||||
@ -52,6 +51,9 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Player();
|
Player() = delete;
|
||||||
|
Player(const Player&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
||||||
|
@ -40,7 +40,7 @@ void Teleport::FetchRadarSpriteData()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Teleport::Teleport()
|
void Teleport::Init()
|
||||||
{
|
{
|
||||||
m_bQuickTeleport = gConfig.GetValue("quick_teleport", false);
|
m_bQuickTeleport = gConfig.GetValue("quick_teleport", false);
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <vector>
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
class Teleport
|
class Teleport
|
||||||
@ -36,8 +35,10 @@ private:
|
|||||||
static void RemoveTeleportEntry(std::string& rootkey, std::string& key, std::string& val);
|
static void RemoveTeleportEntry(std::string& rootkey, std::string& key, std::string& val);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Teleport();
|
Teleport() = delete;
|
||||||
|
Teleport(const Teleport&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void TeleportPlayer(bool get_marker = false, CVector pos = CVector(0, 0, 0), int interior_id = 0);
|
static void TeleportPlayer(bool get_marker = false, CVector pos = CVector(0, 0, 0), int interior_id = 0);
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include "paint.h"
|
#include "paint.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Vehicle::Vehicle()
|
void Vehicle::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
FileHandler::FetchHandlingID(m_VehicleIDE);
|
FileHandler::FetchHandlingID(m_VehicleIDE);
|
||||||
@ -24,7 +24,7 @@ Vehicle::Vehicle()
|
|||||||
|
|
||||||
FileHandler::FetchColorData(m_CarcolsColorData);
|
FileHandler::FetchColorData(m_CarcolsColorData);
|
||||||
|
|
||||||
Events::processScriptsEvent += [this]
|
Events::processScriptsEvent += []
|
||||||
{
|
{
|
||||||
uint timer = CTimer::m_snTimeInMilliseconds;
|
uint timer = CTimer::m_snTimeInMilliseconds;
|
||||||
CPlayerPed* pPlayer = FindPlayerPed();
|
CPlayerPed* pPlayer = FindPlayerPed();
|
||||||
@ -192,13 +192,6 @@ Vehicle::Vehicle()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Vehicle::~Vehicle()
|
|
||||||
{
|
|
||||||
#ifdef GTASA
|
|
||||||
Neon::RemoveHooks();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
void Vehicle::AddComponent(const std::string& component, const bool display_message)
|
void Vehicle::AddComponent(const std::string& component, const bool display_message)
|
||||||
{
|
{
|
||||||
|
@ -90,13 +90,16 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Vehicle();
|
Vehicle() = delete;
|
||||||
~Vehicle();
|
Vehicle(const Vehicle&) = delete;
|
||||||
|
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
static void SpawnVehicle(std::string& name);
|
static void SpawnVehicle(std::string& name);
|
||||||
#else
|
#else
|
||||||
static void SpawnVehicle(std::string& rootkey, std::string& vehName, std::string& model);
|
static void SpawnVehicle(std::string& rootkey, std::string& vehName, std::string& model);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static std::string GetNameFromModel(int model);
|
static std::string GetNameFromModel(int model);
|
||||||
static int GetModelFromName(const char* name);
|
static int GetModelFromName(const char* name);
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#define TOTAL_WEATHERS 4
|
#define TOTAL_WEATHERS 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Visual::Visual()
|
void Visual::Init()
|
||||||
{
|
{
|
||||||
#ifdef GTASA
|
#ifdef GTASA
|
||||||
if (GetModuleHandle("timecycle24.asi"))
|
if (GetModuleHandle("timecycle24.asi"))
|
||||||
|
@ -40,6 +40,9 @@ private:
|
|||||||
static void TimecycSlider(const char* label, T* data, int min, int max);
|
static void TimecycSlider(const char* label, T* data, int min, int max);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Visual();
|
Visual() = delete;
|
||||||
|
Visual(const Visual&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
@ -4,7 +4,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "CWeaponInfo.h"
|
#include "CWeaponInfo.h"
|
||||||
|
|
||||||
Weapon::Weapon()
|
void Weapon::Init()
|
||||||
{
|
{
|
||||||
Events::processScriptsEvent += []
|
Events::processScriptsEvent += []
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,9 @@ public:
|
|||||||
static void GiveWeaponToPlayer(std::string& rootkey, std::string& model, std::string& name);
|
static void GiveWeaponToPlayer(std::string& rootkey, std::string& model, std::string& name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Weapon();
|
Weapon() = delete;
|
||||||
|
Weapon(const Weapon&) = delete;
|
||||||
|
|
||||||
|
static void Init();
|
||||||
static void ShowPage();
|
static void ShowPage();
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user