New stuff & fixes
1. Improved project structure #46 2. Refactored internal json code 3. Fixed command console not working 4. Added veh command in command console 5. Added options to remove ped and car in certain radius 6. Added teleport fade effect 7. Fixed getting buried when teleporting 8. Fixed an issue with bomb remote
This commit is contained in:
parent
39c61520a1
commit
233fcd244f
@ -281,5 +281,6 @@ endfunction()
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Sub-projects
|
# Sub-projects
|
||||||
################################################################################
|
################################################################################
|
||||||
|
add_subdirectory(src/vendor)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Animation.h"
|
#include "Animation.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Animation::loop = false;
|
bool Animation::loop = false;
|
||||||
bool Animation::secondary = false;
|
bool Animation::secondary = false;
|
||||||
|
@ -1,23 +1,13 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Source groups
|
# Source groups
|
||||||
################################################################################
|
################################################################################
|
||||||
set(no_group_source_files
|
set(src_files
|
||||||
"Animation.cpp"
|
"Animation.cpp"
|
||||||
"Animation.h"
|
"Animation.h"
|
||||||
"CheatMenu.cpp"
|
"CheatMenu.cpp"
|
||||||
"CheatMenu.h"
|
"CheatMenu.h"
|
||||||
"Events.cpp"
|
"Events.cpp"
|
||||||
"Events.h"
|
"Events.h"
|
||||||
"external/imgui/imgui_impl_dx11.cpp"
|
|
||||||
"external/imgui/imgui_impl_dx11.h"
|
|
||||||
"external/imgui/stb_image.h"
|
|
||||||
"external/json.hpp"
|
|
||||||
"external/kiero/kiero.cpp"
|
|
||||||
"external/kiero/kiero.h"
|
|
||||||
"external/kiero/minhook/include/MinHook.h"
|
|
||||||
"external/moon/pool_object_extender.h"
|
|
||||||
"external/moon/vehicle_renderer.h"
|
|
||||||
"external/moon/vehicle_renderer.cpp"
|
|
||||||
"Game.cpp"
|
"Game.cpp"
|
||||||
"Game.h"
|
"Game.h"
|
||||||
"Hook.cpp"
|
"Hook.cpp"
|
||||||
@ -26,6 +16,7 @@ set(no_group_source_files
|
|||||||
"Json.h"
|
"Json.h"
|
||||||
"Menu.cpp"
|
"Menu.cpp"
|
||||||
"Menu.h"
|
"Menu.h"
|
||||||
|
"MenuInfo.h"
|
||||||
"NeonAPI.cpp"
|
"NeonAPI.cpp"
|
||||||
"NeonAPI.h"
|
"NeonAPI.h"
|
||||||
"Paint.cpp"
|
"Paint.cpp"
|
||||||
@ -50,35 +41,11 @@ set(no_group_source_files
|
|||||||
"Weapon.cpp"
|
"Weapon.cpp"
|
||||||
"Weapon.h"
|
"Weapon.h"
|
||||||
)
|
)
|
||||||
source_group("" FILES ${no_group_source_files})
|
|
||||||
|
|
||||||
set(external
|
|
||||||
"external/imgui/imconfig.h"
|
|
||||||
"external/imgui/imgui.cpp"
|
|
||||||
"external/imgui/imgui.h"
|
|
||||||
"external/imgui/imgui_demo.cpp"
|
|
||||||
"external/imgui/imgui_draw.cpp"
|
|
||||||
"external/imgui/imgui_impl_dx9.cpp"
|
|
||||||
"external/imgui/imgui_impl_dx9.h"
|
|
||||||
"external/imgui/imgui_impl_win32.cpp"
|
|
||||||
"external/imgui/imgui_impl_win32.h"
|
|
||||||
"external/imgui/imgui_internal.h"
|
|
||||||
"external/imgui/imgui_widgets.cpp"
|
|
||||||
"external/imgui/imstb_rectpack.h"
|
|
||||||
"external/imgui/imstb_textedit.h"
|
|
||||||
"external/imgui/imstb_truetype.h"
|
|
||||||
)
|
|
||||||
source_group("external" FILES ${external})
|
|
||||||
|
|
||||||
set(ALL_FILES
|
|
||||||
${no_group_source_files}
|
|
||||||
${external}
|
|
||||||
)
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Target
|
# Target
|
||||||
################################################################################
|
################################################################################
|
||||||
add_library(${PROJECT_NAME} SHARED ${ALL_FILES})
|
add_library(${PROJECT_NAME} SHARED ${src_files})
|
||||||
|
|
||||||
add_precompiled_header(${PROJECT_NAME} "pch.h" "pch.cpp")
|
add_precompiled_header(${PROJECT_NAME} "pch.h" "pch.cpp")
|
||||||
|
|
||||||
@ -155,48 +122,15 @@ if(MSVC)
|
|||||||
string(CONCAT FILE_CL_OPTIONS
|
string(CONCAT FILE_CL_OPTIONS
|
||||||
"/Y-"
|
"/Y-"
|
||||||
)
|
)
|
||||||
source_file_compile_options(external/imgui/imgui_impl_dx11.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/kiero/kiero.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/moon/vehicle_renderer.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui_demo.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui_draw.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui_impl_dx9.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui_impl_win32.cpp ${FILE_CL_OPTIONS})
|
|
||||||
string(CONCAT FILE_CL_OPTIONS
|
|
||||||
"/Y-"
|
|
||||||
)
|
|
||||||
source_file_compile_options(external/imgui/imgui_widgets.cpp ${FILE_CL_OPTIONS})
|
|
||||||
target_link_options(${PROJECT_NAME} PRIVATE
|
target_link_options(${PROJECT_NAME} PRIVATE
|
||||||
$<$<CONFIG:Release>:
|
$<$<CONFIG:Release>:
|
||||||
/SAFESEH:NO;
|
|
||||||
/OPT:REF;
|
/OPT:REF;
|
||||||
/LTCG;
|
/LTCG;
|
||||||
/OPT:ICF
|
/OPT:ICF;
|
||||||
>
|
>
|
||||||
$<$<CONFIG:Debug>:
|
$<$<CONFIG:Debug>:
|
||||||
/DEBUG:FULL;
|
/DEBUG:FULL;
|
||||||
|
/SAFESEH:NO;
|
||||||
>
|
>
|
||||||
/SUBSYSTEM:WINDOWS
|
/SUBSYSTEM:WINDOWS
|
||||||
)
|
)
|
||||||
@ -218,21 +152,23 @@ add_custom_command_if(
|
|||||||
################################################################################
|
################################################################################
|
||||||
target_link_libraries(${PROJECT_NAME} PUBLIC
|
target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||||
optimized plugin
|
optimized plugin
|
||||||
optimized libMinHook-x86-v140-mt
|
|
||||||
optimized libMinHook-x86-v140-md
|
|
||||||
debug plugin_d
|
debug plugin_d
|
||||||
debug libMinHook-x86-v140-mtd
|
|
||||||
debug libMinHook-x86-v140-mdd
|
|
||||||
d3d9
|
d3d9
|
||||||
d3dx9
|
d3dx9
|
||||||
d3d11
|
d3d11
|
||||||
d3dx11
|
d3dx11
|
||||||
XInput9_1_0
|
XInput9_1_0
|
||||||
|
Vendor
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_directories(${PROJECT_NAME} PUBLIC
|
target_link_directories(${PROJECT_NAME} PUBLIC
|
||||||
"${PLUGIN_SDK_DIR}/output/lib/"
|
"${PLUGIN_SDK_DIR}/output/lib/"
|
||||||
"$ENV{DIRECTX9_SDK_DIR}/lib/x86/"
|
"${DX9_DIR}/lib/x86/"
|
||||||
"external/kiero/minhook/lib/"
|
"$<$<CONFIG:Release>:"
|
||||||
|
"vendor/Release/"
|
||||||
|
">"
|
||||||
|
"$<$<CONFIG:Debug>:"
|
||||||
|
"vendor/Debug/"
|
||||||
|
">"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "CheatMenu.h"
|
#include "CheatMenu.h"
|
||||||
|
#include "MenuInfo.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
|
||||||
unsortedMap CheatMenu::header{
|
unsortedMap CheatMenu::header{
|
||||||
{ "Teleport", &Teleport::Main },{ "Player", &Player::Main },{ "Ped", &Ped::Main },
|
{ "Teleport", &Teleport::Main },{ "Player", &Player::Main },{ "Ped", &Ped::Main },
|
||||||
@ -10,7 +12,7 @@ unsortedMap CheatMenu::header{
|
|||||||
void CheatMenu::ProcessMenu()
|
void CheatMenu::ProcessMenu()
|
||||||
{
|
{
|
||||||
ImGui::SetNextWindowSize(Globals::menu_size);
|
ImGui::SetNextWindowSize(Globals::menu_size);
|
||||||
if (ImGui::Begin(Globals::menu_title.c_str(), &Globals::show_menu, ImGuiWindowFlags_NoCollapse))
|
if (ImGui::Begin(MENU_TITLE, &Globals::show_menu, ImGuiWindowFlags_NoCollapse))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, ImVec2(250, 350));
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, ImVec2(250, 350));
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(ImGui::GetWindowWidth() / 85, ImGui::GetWindowHeight() / 200));
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(ImGui::GetWindowWidth() / 85, ImGui::GetWindowHeight() / 200));
|
||||||
@ -49,7 +51,7 @@ CheatMenu::CheatMenu()
|
|||||||
Events::initRwEvent += []()
|
Events::initRwEvent += []()
|
||||||
{
|
{
|
||||||
// Load menu settings
|
// Load menu settings
|
||||||
Globals::header_id = config.GetValueStr("window.id","");
|
Globals::header_id = config.GetValue("window.id",std::string(""));
|
||||||
Globals::menu_size.x = config.GetValue("window.sizeX", screen::GetScreenWidth() / 4.0f);
|
Globals::menu_size.x = config.GetValue("window.sizeX", screen::GetScreenWidth() / 4.0f);
|
||||||
Globals::menu_size.y = config.GetValue("window.sizeY", screen::GetScreenHeight() / 1.2f);
|
Globals::menu_size.y = config.GetValue("window.sizeY", screen::GetScreenHeight() / 1.2f);
|
||||||
srand(CTimer::m_snTimeInMilliseconds);
|
srand(CTimer::m_snTimeInMilliseconds);
|
||||||
@ -68,7 +70,13 @@ CheatMenu::CheatMenu()
|
|||||||
|
|
||||||
if (Ui::HotKeyPressed(hotkey::command_window))
|
if (Ui::HotKeyPressed(hotkey::command_window))
|
||||||
{
|
{
|
||||||
|
if (Menu::commands::show_menu)
|
||||||
|
{
|
||||||
|
Menu::ProcessCommands();
|
||||||
|
strcpy(commands::input_buffer,"");
|
||||||
|
}
|
||||||
Menu::commands::show_menu = !Menu::commands::show_menu;
|
Menu::commands::show_menu = !Menu::commands::show_menu;
|
||||||
|
|
||||||
Globals::last_key_timer = CTimer::m_snTimeInMilliseconds;
|
Globals::last_key_timer = CTimer::m_snTimeInMilliseconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
25
src/Game.cpp
25
src/Game.cpp
@ -1,6 +1,8 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
ImGuiTextFilter Game::filter = "";
|
ImGuiTextFilter Game::filter = "";
|
||||||
std::vector<std::string> Game::search_categories;
|
std::vector<std::string> Game::search_categories;
|
||||||
@ -43,6 +45,8 @@ uint Game::solid_water_object = 0;
|
|||||||
|
|
||||||
CJson Game::random_cheats::name_json = CJson("cheat name");
|
CJson Game::random_cheats::name_json = CJson("cheat name");
|
||||||
|
|
||||||
|
static bool mission_warning_shown = false;
|
||||||
|
|
||||||
// Thanks to aap
|
// Thanks to aap
|
||||||
void RealTimeClock(void)
|
void RealTimeClock(void)
|
||||||
{
|
{
|
||||||
@ -431,15 +435,26 @@ of LS without completing missions"))
|
|||||||
{
|
{
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
if (ImGui::Button("Fail current mission", ImVec2(Ui::GetSize())))
|
if (!mission_warning_shown)
|
||||||
{
|
{
|
||||||
if (!CCutsceneMgr::ms_running)
|
ImGui::TextWrapped("Mission selector might cause unintended changes to your game. \
|
||||||
Command<Commands::FAIL_CURRENT_MISSION>();
|
It's recommanded not to save your game after using this. Use it at your own risk!");
|
||||||
|
ImGui::Spacing();
|
||||||
|
if (ImGui::Button("Show mission selector", ImVec2(Ui::GetSize())))\
|
||||||
|
mission_warning_shown = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ImGui::Button("Fail current mission", ImVec2(Ui::GetSize())))
|
||||||
|
{
|
||||||
|
if (!CCutsceneMgr::ms_running)
|
||||||
|
Command<Commands::FAIL_CURRENT_MISSION>();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
|
|
||||||
Ui::DrawJSON(json, search_categories, selected_item, filter, SetPlayerMission, nullptr);
|
Ui::DrawJSON(json, search_categories, selected_item, filter, SetPlayerMission, nullptr);
|
||||||
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("Stats"))
|
if (ImGui::BeginTabItem("Stats"))
|
||||||
|
14
src/Hook.cpp
14
src/Hook.cpp
@ -1,7 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Hook.h"
|
#include "Hook.h"
|
||||||
#include "external/kiero/kiero.h"
|
#include "vendor/kiero/kiero.h"
|
||||||
#include "external/kiero/minhook/include/MinHook.h"
|
#include "vendor/kiero/minhook/include/MinHook.h"
|
||||||
|
|
||||||
WNDPROC Hook::oWndProc = NULL;
|
WNDPROC Hook::oWndProc = NULL;
|
||||||
f_Reset Hook::oReset9 = NULL;
|
f_Reset Hook::oReset9 = NULL;
|
||||||
@ -15,7 +15,6 @@ std::function<void()> Hook::window_func = NULL;
|
|||||||
|
|
||||||
LRESULT Hook::InputProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
LRESULT Hook::InputProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
|
||||||
ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam);
|
ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam);
|
||||||
|
|
||||||
if (ImGui::GetIO().WantTextInput)
|
if (ImGui::GetIO().WantTextInput)
|
||||||
@ -60,14 +59,6 @@ HRESULT Hook::PresentDx9(IDirect3DDevice9 *pDevice, RECT* pSourceRect, RECT* pDe
|
|||||||
Globals::font_screen_size = ImVec2(screen::GetScreenWidth(), screen::GetScreenHeight());
|
Globals::font_screen_size = ImVec2(screen::GetScreenWidth(), screen::GetScreenHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
static RwBool fullscreen = RsGlobal.ps->fullScreen;
|
|
||||||
if (fullscreen != RsGlobal.ps->fullScreen)
|
|
||||||
{
|
|
||||||
flog << "LETS GO" << std::endl;
|
|
||||||
fullscreen = RsGlobal.ps->fullScreen;
|
|
||||||
ImGui_ImplDX9_InvalidateDeviceObjects();
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui_ImplDX9_NewFrame();
|
ImGui_ImplDX9_NewFrame();
|
||||||
ImGui_ImplWin32_NewFrame();
|
ImGui_ImplWin32_NewFrame();
|
||||||
ImGui::NewFrame();
|
ImGui::NewFrame();
|
||||||
@ -164,6 +155,7 @@ HRESULT Hook::PresentDx11(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Fl
|
|||||||
return oPresent11(pSwapChain, SyncInterval, Flags);
|
return oPresent11(pSwapChain, SyncInterval, Flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Thanks imring
|
||||||
void Hook::ShowMouse(bool state)
|
void Hook::ShowMouse(bool state)
|
||||||
{
|
{
|
||||||
if (state)
|
if (state)
|
||||||
|
31
src/Json.cpp
31
src/Json.cpp
@ -39,37 +39,6 @@ void CJson::LoadData(std::vector<std::string>& vec, std::string& selected) // Te
|
|||||||
vec.push_back(element.key());
|
vec.push_back(element.key());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CJson::GetValueStr(std::string&& key, std::string&& default_val)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
std::stringstream ss(key);
|
|
||||||
std::string line;
|
|
||||||
|
|
||||||
nlohmann::json *json = &data;
|
|
||||||
|
|
||||||
while (getline(ss, line, '.'))
|
|
||||||
json = &((*json)[line]);
|
|
||||||
|
|
||||||
return json->get<std::string>();
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
return default_val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CJson::SetValueStr(std::string&& key, std::string& val)
|
|
||||||
{
|
|
||||||
std::stringstream ss(key);
|
|
||||||
std::string line;
|
|
||||||
|
|
||||||
nlohmann::json *json = &data;
|
|
||||||
|
|
||||||
while (getline(ss, line, '.'))
|
|
||||||
json = &((*json)[line]);
|
|
||||||
|
|
||||||
*json = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
CJson::~CJson()
|
CJson::~CJson()
|
||||||
{
|
{
|
||||||
// Saving here won't work on crash
|
// Saving here won't work on crash
|
||||||
|
40
src/Json.h
40
src/Json.h
@ -1,5 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "external\json.hpp"
|
#include "vendor\json.hpp"
|
||||||
|
|
||||||
class CJson
|
class CJson
|
||||||
{
|
{
|
||||||
@ -13,8 +13,7 @@ public:
|
|||||||
Returns a value from json structure hierarchy using '.'
|
Returns a value from json structure hierarchy using '.'
|
||||||
Example: "Menu.Window.X"
|
Example: "Menu.Window.X"
|
||||||
*/
|
*/
|
||||||
// overload since typeid(std::string) doesn't work
|
// specialize since typeid(std::string) doesn't work
|
||||||
std::string GetValueStr(std::string&& key, std::string&& default_val);
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T GetValue(std::string&& key, T&& default_val)
|
T GetValue(std::string&& key, T&& default_val)
|
||||||
@ -40,6 +39,25 @@ public:
|
|||||||
return default_val;
|
return default_val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
std::string GetValue(std::string&& key, std::string&& default_val)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
std::stringstream ss(key);
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
nlohmann::json *json = &data;
|
||||||
|
|
||||||
|
while (getline(ss, line, '.'))
|
||||||
|
json = &((*json)[line]);
|
||||||
|
|
||||||
|
return json->get<std::string>();
|
||||||
|
}
|
||||||
|
catch (...) {
|
||||||
|
return default_val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Allows to save values in json hierarchy using '.'
|
Allows to save values in json hierarchy using '.'
|
||||||
@ -47,7 +65,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void SetValue(std::string&& key, T&& val)
|
void SetValue(std::string&& key, T& val)
|
||||||
{
|
{
|
||||||
std::stringstream ss(key);
|
std::stringstream ss(key);
|
||||||
std::string line;
|
std::string line;
|
||||||
@ -64,7 +82,19 @@ public:
|
|||||||
*json = val;
|
*json = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetValueStr(std::string&& key, std::string& val);
|
template<>
|
||||||
|
void SetValue(std::string&& key, std::string& val)
|
||||||
|
{
|
||||||
|
std::stringstream ss(key);
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
nlohmann::json *json = &data;
|
||||||
|
|
||||||
|
while (getline(ss, line, '.'))
|
||||||
|
json = &((*json)[line]);
|
||||||
|
|
||||||
|
*json = val;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Loads the section names into a category vector.
|
Loads the section names into a category vector.
|
||||||
Used to create drop down category menus
|
Used to create drop down category menus
|
||||||
|
27
src/Menu.cpp
27
src/Menu.cpp
@ -1,7 +1,11 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
#include "MenuInfo.h"
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
#include "Teleport.h"
|
#include "Teleport.h"
|
||||||
#include "Weapon.h"
|
#include "Weapon.h"
|
||||||
|
#include "Vehicle.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Menu::overlay::coord = false;
|
bool Menu::overlay::coord = false;
|
||||||
bool Menu::overlay::fps = false;
|
bool Menu::overlay::fps = false;
|
||||||
@ -150,7 +154,12 @@ void Menu::ProcessShortcutsWindow()
|
|||||||
ImGui::SetNextItemWidth(resX);
|
ImGui::SetNextItemWidth(resX);
|
||||||
ImGui::SetKeyboardFocusHere(-1);
|
ImGui::SetKeyboardFocusHere(-1);
|
||||||
|
|
||||||
ImGui::InputTextWithHint("##TEXTFIELD", "Enter command", commands::input_buffer, INPUT_BUFFER_SIZE);
|
if (ImGui::InputTextWithHint("##TEXTFIELD", "Enter command", commands::input_buffer, INPUT_BUFFER_SIZE, ImGuiInputTextFlags_EnterReturnsTrue))
|
||||||
|
{
|
||||||
|
ProcessCommands();
|
||||||
|
commands::show_menu = false;
|
||||||
|
strcpy(commands::input_buffer,"");
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::PopStyleVar(2);
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
@ -239,6 +248,22 @@ void Menu::ProcessCommands()
|
|||||||
CHud::SetHelpMessage("Invalid command", false, false, false);
|
CHud::SetHelpMessage("Invalid command", false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (command == "veh")
|
||||||
|
{
|
||||||
|
std::string veh_name;
|
||||||
|
ss >> veh_name;
|
||||||
|
|
||||||
|
int model = Vehicle::GetModelFromName(veh_name.c_str());
|
||||||
|
if (model != 0)
|
||||||
|
{
|
||||||
|
Vehicle::SpawnVehicle(std::to_string(model));
|
||||||
|
CHud::SetHelpMessage("Vehicle spawned", false, false, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CHud::SetHelpMessage("Invalid command", false, false, false);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
5
src/MenuInfo.h
Normal file
5
src/MenuInfo.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#define MENU_NAME "Cheat Menu"
|
||||||
|
#define MENU_VERSION "2.5-beta"
|
||||||
|
#define BUILD_NUMBER "20210103"
|
||||||
|
#define MENU_TITLE MENU_NAME " v" MENU_VERSION "(" BUILD_NUMBER ")"
|
@ -1,5 +1,6 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "NeonAPI.h"
|
#include "NeonAPI.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
VehicleExtendedData<NeonAPI::NeonData> NeonAPI::VehNeon;
|
VehicleExtendedData<NeonAPI::NeonData> NeonAPI::VehNeon;
|
||||||
RwTexture* NeonAPI::neon_texture = nullptr;
|
RwTexture* NeonAPI::neon_texture = nullptr;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Paint.h"
|
#include "Paint.h"
|
||||||
#include "NodeName.h"
|
#include "NodeName.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
std::vector<std::string> Paint::veh_nodes::names_vec{ "Default" };
|
std::vector<std::string> Paint::veh_nodes::names_vec{ "Default" };
|
||||||
std::string Paint::veh_nodes::selected = "Default";
|
std::string Paint::veh_nodes::selected = "Default";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "external/moon/vehicle_renderer.h"
|
#include "vendor/moon/vehicle_renderer.h"
|
||||||
|
|
||||||
class Paint : VehicleRenderer
|
class Paint : VehicleRenderer
|
||||||
{
|
{
|
||||||
|
29
src/Ped.cpp
29
src/Ped.cpp
@ -1,5 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
ImGuiTextFilter Ped::filter = "";
|
ImGuiTextFilter Ped::filter = "";
|
||||||
std::string Ped::selected_item = "All";
|
std::string Ped::selected_item = "All";
|
||||||
@ -13,6 +15,7 @@ std::vector<std::string> Ped::gang_names = { "Ballas", "Grove street families",
|
|||||||
"Da nang boys", "Mafia", "Mountain cloud triad", "Varrio los aztecas", "Gang9", "Gang10" };
|
"Da nang boys", "Mafia", "Mountain cloud triad", "Varrio los aztecas", "Gang9", "Gang10" };
|
||||||
|
|
||||||
bool Ped::exgangwars_installed = false;
|
bool Ped::exgangwars_installed = false;
|
||||||
|
int Ped::ped_remove_radius = 5;
|
||||||
|
|
||||||
std::vector<CPed*> Ped::spawn_ped::list;
|
std::vector<CPed*> Ped::spawn_ped::list;
|
||||||
int Ped::spawn_ped::accuracy = 50;
|
int Ped::spawn_ped::accuracy = 50;
|
||||||
@ -25,14 +28,11 @@ int Ped::spawn_ped::weapon_id = 0;
|
|||||||
std::vector<std::string> Ped::spawn_ped::ped_type = {"Civ male","Civ female","Cop","Ballas","Grove Street Families","Los Santos Vagos",
|
std::vector<std::string> Ped::spawn_ped::ped_type = {"Civ male","Civ female","Cop","Ballas","Grove Street Families","Los Santos Vagos",
|
||||||
"San Fierro Rifa","Da Nang Boys","Mafia","Mountain Cloud Triads","Varrio Los Aztecas",
|
"San Fierro Rifa","Da Nang Boys","Mafia","Mountain Cloud Triads","Varrio Los Aztecas",
|
||||||
"Gang 9","Medic","Dealer","Criminal","Fireman","Prostitute"};
|
"Gang 9","Medic","Dealer","Criminal","Fireman","Prostitute"};
|
||||||
|
|
||||||
|
|
||||||
Ped::Ped()
|
Ped::Ped()
|
||||||
{
|
{
|
||||||
Events::initGameEvent += []
|
Events::initGameEvent += []
|
||||||
{
|
{
|
||||||
std::string dir_path = Globals::menu_path +"\\CheatMenu\\peds\\";
|
Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\peds\\"), ".jpg", search_categories, peds_vec);
|
||||||
Util::LoadTexturesInDirRecursive(dir_path.c_str(), ".jpg", search_categories, peds_vec);
|
|
||||||
|
|
||||||
if (LoadLibraryW(L"ExGangWars.asi"))
|
if (LoadLibraryW(L"ExGangWars.asi"))
|
||||||
exgangwars_installed = true;
|
exgangwars_installed = true;
|
||||||
@ -200,11 +200,28 @@ void Ped::Main()
|
|||||||
|
|
||||||
if (ImGui::CollapsingHeader("Recruit anyone"))
|
if (ImGui::CollapsingHeader("Recruit anyone"))
|
||||||
{
|
{
|
||||||
Ui::RadioButtonAddress("Select weapon", std::vector<Ui::NamedMemory>{ {"9mm", 0x96917C}, { "AK47", 0x96917D }, { "Rockets", 0x96917E }});
|
static std::vector<Ui::NamedMemory> select_weapon{ {"9mm", 0x96917C}, { "AK47", 0x96917D }, { "Rockets", 0x96917E }};
|
||||||
|
Ui::RadioButtonAddress("Select weapon", select_weapon);
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::Separator();
|
||||||
|
}
|
||||||
|
if (ImGui::CollapsingHeader("Remove peds in radius"))
|
||||||
|
{
|
||||||
|
ImGui::InputInt("Radius", &ped_remove_radius);
|
||||||
|
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()) < ped_remove_radius
|
||||||
|
&& ped->m_pVehicle == nullptr && ped != player)
|
||||||
|
Command<Commands::DELETE_CHAR>(CPools::GetPedRef(ped));
|
||||||
|
}
|
||||||
|
}
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ private:
|
|||||||
static std::vector<std::string> gang_names;
|
static std::vector<std::string> gang_names;
|
||||||
static bool exgangwars_installed;
|
static bool exgangwars_installed;
|
||||||
|
|
||||||
|
static int ped_remove_radius;
|
||||||
|
|
||||||
struct spawn_ped {
|
struct spawn_ped {
|
||||||
static std::vector<CPed*> list;
|
static std::vector<CPed*> list;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
#include "CCheat.h"
|
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Player::keep_position::state = false;
|
bool Player::keep_position::state = false;
|
||||||
CVector Player::keep_position::pos = CVector();
|
CVector Player::keep_position::pos = CVector();
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Teleport.h"
|
#include "Teleport.h"
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Teleport::insert_coord = false;
|
bool Teleport::insert_coord = false;
|
||||||
bool Teleport::quick_teleport = false;
|
bool Teleport::quick_teleport = false;
|
||||||
@ -75,6 +77,7 @@ Teleport::Teleport()
|
|||||||
STeleport::_bool = false;
|
STeleport::_bool = false;
|
||||||
Command<Commands::FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION>(CPools::GetPedRef(player), false);
|
Command<Commands::FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION>(CPools::GetPedRef(player), false);
|
||||||
Command<Commands::SET_CAMERA_BEHIND_PLAYER>();
|
Command<Commands::SET_CAMERA_BEHIND_PLAYER>();
|
||||||
|
TheCamera.Fade(0,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quick_teleport)
|
if (quick_teleport)
|
||||||
@ -111,7 +114,7 @@ void Teleport::TeleportPlayer(bool get_marker, CVector* pos, short interior_id)
|
|||||||
Teleport::STeleport::pos = *pos;
|
Teleport::STeleport::pos = *pos;
|
||||||
Teleport::STeleport::timer = CTimer::m_snTimeInMilliseconds;
|
Teleport::STeleport::timer = CTimer::m_snTimeInMilliseconds;
|
||||||
Teleport::STeleport::_bool = true;
|
Teleport::STeleport::_bool = true;
|
||||||
|
TheCamera.Fade(0,0);
|
||||||
Command<Commands::FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION>(CPools::GetPedRef(player), true);
|
Command<Commands::FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION>(CPools::GetPedRef(player), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +224,7 @@ void Teleport::Main()
|
|||||||
pos.y = std::stof(temp);
|
pos.y = std::stof(temp);
|
||||||
|
|
||||||
getline(ss, temp, ',');
|
getline(ss, temp, ',');
|
||||||
pos.z = std::stof(temp);
|
pos.z = std::stof(temp) + 1.0f;
|
||||||
|
|
||||||
Teleport::TeleportPlayer(false,&pos);
|
Teleport::TeleportPlayer(false,&pos);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ void Ui::DrawHeaders(unsortedMap& data)
|
|||||||
if (ImGui::Button(btn_text, GetSize(3, false)))
|
if (ImGui::Button(btn_text, GetSize(3, false)))
|
||||||
{
|
{
|
||||||
Globals::header_id = btn_text;
|
Globals::header_id = btn_text;
|
||||||
config.SetValueStr("window.id", Globals::header_id);
|
config.SetValue("window.id", Globals::header_id);
|
||||||
func = it->second;
|
func = it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,8 +117,7 @@ void Ui::DrawHeaders(unsortedMap& data)
|
|||||||
// Show Welcome page
|
// Show Welcome page
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
std::string title = "Welcome to " + Globals::menu_title;
|
Ui::CenterdText("Welcome to Cheat Menu");
|
||||||
Ui::CenterdText(title.c_str());
|
|
||||||
Ui::CenterdText("Author: Grinch_");
|
Ui::CenterdText("Author: Grinch_");
|
||||||
|
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
28
src/Util.cpp
28
src/Util.cpp
@ -1,6 +1,6 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "external/imgui/stb_image.h"
|
#include "vendor/imgui/stb_image.h"
|
||||||
|
|
||||||
void Util::ClearCharTasksVehCheck(CPed* ped)
|
void Util::ClearCharTasksVehCheck(CPed* ped)
|
||||||
{
|
{
|
||||||
@ -166,10 +166,11 @@ int Util::GetLargestGangInZone()
|
|||||||
return gang_id;
|
return gang_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
// partial implemention of opcode 0AB5 (STORE_CLOSEST_ENTITIES)
|
// implemention of opcode 0AB5 (STORE_CLOSEST_ENTITIES)
|
||||||
// https://github.com/cleolibrary/CLEO4/blob/916d400f4a731ba1dd0ff16e52bdb056f42b7038/source/CCustomOpcodeSystem.cpp#L1671
|
// https://github.com/cleolibrary/CLEO4/blob/916d400f4a731ba1dd0ff16e52bdb056f42b7038/source/CCustomOpcodeSystem.cpp#L1671
|
||||||
CVehicle* Util::GetClosestVehicle(CPlayerPed* player)
|
CVehicle* Util::GetClosestVehicle()
|
||||||
{
|
{
|
||||||
|
CPlayerPed *player = FindPlayerPed();
|
||||||
CPedIntelligence *pedintel;
|
CPedIntelligence *pedintel;
|
||||||
if (player && (pedintel = player->m_pIntelligence))
|
if (player && (pedintel = player->m_pIntelligence))
|
||||||
{
|
{
|
||||||
@ -187,6 +188,27 @@ CVehicle* Util::GetClosestVehicle(CPlayerPed* player)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPed* Util::GetClosestPed()
|
||||||
|
{
|
||||||
|
CPlayerPed *player = FindPlayerPed();
|
||||||
|
CPedIntelligence * pedintel;
|
||||||
|
if (player && (pedintel = player->m_pIntelligence))
|
||||||
|
{
|
||||||
|
CPed *ped = nullptr;
|
||||||
|
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
ped = (CPed*)pedintel->m_pedScanner.m_apEntities[i];
|
||||||
|
if (ped && ped != player && (ped->m_nCreatedBy & 0xFF) == 1 && !ped->m_nPedFlags.bFadeOut)
|
||||||
|
break;
|
||||||
|
ped = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ped;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void Util::RainbowValues(int &r, int&g, int &b, float speed)
|
void Util::RainbowValues(int &r, int&g, int &b, float speed)
|
||||||
{
|
{
|
||||||
int timer = CTimer::m_snTimeInMilliseconds/150;
|
int timer = CTimer::m_snTimeInMilliseconds/150;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class Util
|
class Util
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -6,7 +7,8 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static void ClearCharTasksVehCheck(CPed* ped);
|
static void ClearCharTasksVehCheck(CPed* ped);
|
||||||
static CVehicle *GetClosestVehicle(CPlayerPed* player);
|
static CPed *GetClosestPed();
|
||||||
|
static CVehicle *GetClosestVehicle();
|
||||||
static int GetLargestGangInZone();
|
static int GetLargestGangInZone();
|
||||||
static void LoadTexturesInDirRecursive(const char * path, const char * file_ext, std::vector<std::string>& category_vec, std::vector<std::unique_ptr<TextureStructure>> &store_vec);
|
static void LoadTexturesInDirRecursive(const char * path, const char * file_ext, std::vector<std::string>& category_vec, std::vector<std::unique_ptr<TextureStructure>> &store_vec);
|
||||||
static bool IsOnMission();
|
static bool IsOnMission();
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Vehicle::bike_fly = false;
|
bool Vehicle::bike_fly = false;
|
||||||
bool Vehicle::dont_fall_bike = false;
|
bool Vehicle::dont_fall_bike = false;
|
||||||
bool Vehicle::veh_heavy = false;
|
bool Vehicle::veh_heavy = false;
|
||||||
bool Vehicle::veh_watertight = false;
|
bool Vehicle::veh_watertight = false;
|
||||||
bool Vehicle::veh_nodmg = false;
|
bool Vehicle::veh_nodmg = false;
|
||||||
|
int Vehicle::veh_remove_radius = 5;
|
||||||
bool Vehicle::lock_speed = false;
|
bool Vehicle::lock_speed = false;
|
||||||
float Vehicle::lock_speed_val = 0;
|
float Vehicle::lock_speed_val = 0;
|
||||||
|
|
||||||
@ -517,6 +519,17 @@ std::string Vehicle::GetNameFromModel(int model)
|
|||||||
return (const char*)info + 0x32;
|
return (const char*)info + 0x32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Vehicle::GetModelFromName(const char* name)
|
||||||
|
{
|
||||||
|
int model = 0;
|
||||||
|
CBaseModelInfo* model_info = CModelInfo::GetModelInfo((char*)name,&model);
|
||||||
|
|
||||||
|
if (model > 0 && model < 1000000 && GetNameFromModel(model) != "")
|
||||||
|
return model;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Vehicle::~Vehicle()
|
Vehicle::~Vehicle()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -753,7 +766,7 @@ void Vehicle::Main()
|
|||||||
{
|
{
|
||||||
CPlayerPed *player = FindPlayerPed();
|
CPlayerPed *player = FindPlayerPed();
|
||||||
int hplayer = CPools::GetPedRef(player);
|
int hplayer = CPools::GetPedRef(player);
|
||||||
CVehicle *veh = Util::GetClosestVehicle(player);
|
CVehicle *veh = Util::GetClosestVehicle();
|
||||||
|
|
||||||
if (veh)
|
if (veh)
|
||||||
{
|
{
|
||||||
@ -786,7 +799,23 @@ void Vehicle::Main()
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
if (ImGui::CollapsingHeader("Remove vehicles in radius"))
|
||||||
|
{
|
||||||
|
ImGui::InputInt("Radius", &veh_remove_radius);
|
||||||
|
ImGui::Spacing();
|
||||||
|
if (ImGui::Button("Remove vehicles",Ui::GetSize(1)))
|
||||||
|
{
|
||||||
|
CPlayerPed *player = FindPlayerPed();
|
||||||
|
for (CVehicle *veh : CPools::ms_pVehiclePool)
|
||||||
|
{
|
||||||
|
if (DistanceBetweenPoints(veh->GetPosition(),player->GetPosition()) < veh_remove_radius
|
||||||
|
&& player->m_pVehicle != veh)
|
||||||
|
Command<Commands::DELETE_CAR>(CPools::GetVehicleRef(veh));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::Separator();
|
||||||
|
}
|
||||||
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", 0x969151}, { "Pink",0x969150 } };
|
||||||
|
@ -12,6 +12,7 @@ private:
|
|||||||
static bool veh_nodmg;
|
static bool veh_nodmg;
|
||||||
static int door_menu_button;
|
static int door_menu_button;
|
||||||
static std::string door_names[6];
|
static std::string door_names[6];
|
||||||
|
static int veh_remove_radius;
|
||||||
|
|
||||||
static bool lock_speed;
|
static bool lock_speed;
|
||||||
static float lock_speed_val;
|
static float lock_speed_val;
|
||||||
@ -69,17 +70,16 @@ private:
|
|||||||
static bool enabled;
|
static bool enabled;
|
||||||
static bool comp_added;
|
static bool comp_added;
|
||||||
};
|
};
|
||||||
|
public:
|
||||||
static void AddComponent(const std::string& component, const bool display_message = true);
|
static void AddComponent(const std::string& component, const bool display_message = true);
|
||||||
static void RemoveComponent(const std::string& component, const bool display_message = true);
|
static void RemoveComponent(const std::string& component, const bool display_message = true);
|
||||||
static std::string GetNameFromModel(int model);
|
static std::string GetNameFromModel(int model);
|
||||||
|
static int Vehicle::GetModelFromName(const char* name);
|
||||||
static void SpawnVehicle(std::string &name);
|
static void SpawnVehicle(std::string &name);
|
||||||
static int GetRandomTrainIdForModel(int model);
|
static int GetRandomTrainIdForModel(int model);
|
||||||
static void ParseVehiclesIDE();
|
static void ParseVehiclesIDE();
|
||||||
static void ParseCarcolsDAT();
|
static void ParseCarcolsDAT();
|
||||||
static void GenerateHandlingDataFile(int phandling);
|
static void GenerateHandlingDataFile(int phandling);
|
||||||
|
|
||||||
public:
|
|
||||||
Vehicle();
|
Vehicle();
|
||||||
~Vehicle();
|
~Vehicle();
|
||||||
static void Main();
|
static void Main();
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Visual.h"
|
#include "Visual.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
bool Visual::lock_weather = false;
|
bool Visual::lock_weather = false;
|
||||||
int Visual::weather_type_backup = 0;
|
int Visual::weather_type_backup = 0;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Weapon.h"
|
#include "Weapon.h"
|
||||||
|
#include "Ui.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
ImGuiTextFilter Weapon::filter = "";
|
ImGuiTextFilter Weapon::filter = "";
|
||||||
std::string Weapon::selected_item = "All";
|
std::string Weapon::selected_item = "All";
|
||||||
@ -117,9 +119,17 @@ void Weapon::GiveWeaponToPlayer(std::string& weapon_type)
|
|||||||
Command<Commands::GET_WEAPONTYPE_MODEL>(iweapon_type, &model);
|
Command<Commands::GET_WEAPONTYPE_MODEL>(iweapon_type, &model);
|
||||||
|
|
||||||
CStreaming::RequestModel(model,PRIORITY_REQUEST);
|
CStreaming::RequestModel(model,PRIORITY_REQUEST);
|
||||||
|
|
||||||
|
if (model == 363) // remote bomb
|
||||||
|
CStreaming::RequestModel(364,PRIORITY_REQUEST); // detonator
|
||||||
|
|
||||||
CStreaming::LoadAllRequestedModels(false);
|
CStreaming::LoadAllRequestedModels(false);
|
||||||
|
|
||||||
Command<Commands::GIVE_WEAPON_TO_CHAR>(hplayer, iweapon_type, ammo_count);
|
Command<Commands::GIVE_WEAPON_TO_CHAR>(hplayer, iweapon_type, ammo_count);
|
||||||
|
|
||||||
|
if (model == 363) // remote bomb
|
||||||
|
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(364); // detonator
|
||||||
|
|
||||||
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(model);
|
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,11 @@
|
|||||||
std::string Globals::header_id = "";
|
std::string Globals::header_id = "";
|
||||||
int Globals::last_key_timer = 0;
|
int Globals::last_key_timer = 0;
|
||||||
ImVec2 Globals::menu_size = ImVec2(screen::GetScreenWidth()/4, screen::GetScreenHeight()/1.2);
|
ImVec2 Globals::menu_size = ImVec2(screen::GetScreenWidth()/4, screen::GetScreenHeight()/1.2);
|
||||||
std::string Globals::menu_title = std::string("Cheat Menu v") + std::string(MENU_VERSION) + " (" BUILD_NUMBER + ")";
|
|
||||||
ImVec2 Globals::font_screen_size = ImVec2(-1, -1);
|
ImVec2 Globals::font_screen_size = ImVec2(-1, -1);
|
||||||
bool Globals::show_menu = false;
|
bool Globals::show_menu = false;
|
||||||
bool Globals::init_done = false;
|
bool Globals::init_done = false;
|
||||||
Renderer Globals::renderer = Render_Unknown;
|
Renderer Globals::renderer = Render_Unknown;
|
||||||
ID3D11Device *Globals::device11 = nullptr;
|
ID3D11Device *Globals::device11 = nullptr;
|
||||||
std::string Globals::menu_path = paths::GetPluginDirPathA();
|
|
||||||
bool Globals::gsync_time = false;
|
bool Globals::gsync_time = false;
|
||||||
|
|
||||||
std::ofstream flog = std::ofstream("CheatMenu.log");
|
std::ofstream flog = std::ofstream("CheatMenu.log");
|
||||||
|
19
src/pch.h
19
src/pch.h
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
#define INPUT_BUFFER_SIZE 64
|
#define INPUT_BUFFER_SIZE 64
|
||||||
#define SPAWN_PED_LIMIT 20
|
#define SPAWN_PED_LIMIT 20
|
||||||
#define MENU_VERSION "2.5-beta"
|
|
||||||
#define BUILD_NUMBER "20201227"
|
|
||||||
#define STB_IMAGE_IMPLEMENTATION
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
#define DISCORD_INVITE "https://discord.gg/ZzW7kmf"
|
#define DISCORD_INVITE "https://discord.gg/ZzW7kmf"
|
||||||
#define GITHUB_LINK "https://github.com/user-grinch/Cheat-Menu"
|
#define GITHUB_LINK "https://github.com/user-grinch/Cheat-Menu"
|
||||||
@ -53,11 +51,11 @@
|
|||||||
#include "eVehicleClass.h"
|
#include "eVehicleClass.h"
|
||||||
#include "extensions\Paths.h"
|
#include "extensions\Paths.h"
|
||||||
|
|
||||||
#include "external/imgui/imgui.h"
|
#include "vendor/imgui/imgui.h"
|
||||||
#include "external/imgui/imgui_internal.h"
|
#include "vendor/imgui/imgui_internal.h"
|
||||||
#include "external/imgui/imgui_impl_dx9.h"
|
#include "vendor/imgui/imgui_impl_dx9.h"
|
||||||
#include "external/imgui/imgui_impl_dx11.h"
|
#include "vendor/imgui/imgui_impl_dx11.h"
|
||||||
#include "external/imgui/imgui_impl_win32.h"
|
#include "vendor/imgui/imgui_impl_win32.h"
|
||||||
|
|
||||||
#include "Events.h"
|
#include "Events.h"
|
||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
@ -84,13 +82,11 @@ struct Globals
|
|||||||
static std::string header_id;
|
static std::string header_id;
|
||||||
static int last_key_timer;
|
static int last_key_timer;
|
||||||
static ImVec2 menu_size;
|
static ImVec2 menu_size;
|
||||||
static std::string menu_title;
|
|
||||||
static ImVec2 font_screen_size;
|
static ImVec2 font_screen_size;
|
||||||
static bool show_menu;
|
static bool show_menu;
|
||||||
static bool init_done;
|
static bool init_done;
|
||||||
static Renderer renderer;
|
static Renderer renderer;
|
||||||
static ID3D11Device* device11;
|
static ID3D11Device* device11;
|
||||||
static std::string menu_path;
|
|
||||||
static bool gsync_time;
|
static bool gsync_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -103,7 +99,4 @@ struct TextureStructure
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern CJson config;
|
extern CJson config;
|
||||||
extern std::ofstream flog;
|
extern std::ofstream flog;
|
||||||
|
|
||||||
#include "Ui.h"
|
|
||||||
#include "Util.h"
|
|
112
src/vendor/CMakeLists.txt
vendored
Normal file
112
src/vendor/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
################################################################################
|
||||||
|
# Build Vendor.lib
|
||||||
|
# All the external libraries that shouldn't need to be compiled often
|
||||||
|
################################################################################
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
project(Vendor)
|
||||||
|
|
||||||
|
set(vendor_files
|
||||||
|
"imgui/imconfig.h"
|
||||||
|
"imgui/imgui.cpp"
|
||||||
|
"imgui/imgui.h"
|
||||||
|
"imgui/imgui_demo.cpp"
|
||||||
|
"imgui/imgui_draw.cpp"
|
||||||
|
"imgui/imgui_impl_dx9.cpp"
|
||||||
|
"imgui/imgui_impl_dx9.h"
|
||||||
|
"imgui/imgui_impl_dx11.cpp"
|
||||||
|
"imgui/imgui_impl_dx11.h"
|
||||||
|
"imgui/imgui_impl_win32.cpp"
|
||||||
|
"imgui/imgui_impl_win32.h"
|
||||||
|
"imgui/imgui_internal.h"
|
||||||
|
"imgui/imgui_widgets.cpp"
|
||||||
|
"imgui/imstb_rectpack.h"
|
||||||
|
"imgui/imstb_textedit.h"
|
||||||
|
"imgui/imstb_truetype.h"
|
||||||
|
"imgui/stb_image.h"
|
||||||
|
"json.hpp"
|
||||||
|
"kiero/kiero.cpp"
|
||||||
|
"kiero/kiero.h"
|
||||||
|
"kiero/minhook/include/MinHook.h"
|
||||||
|
"moon/pool_object_extender.h"
|
||||||
|
"moon/vehicle_renderer.h"
|
||||||
|
"moon/vehicle_renderer.cpp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${vendor_files})
|
||||||
|
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||||
|
"$<$<CONFIG:Release>:"
|
||||||
|
"_NDEBUG"
|
||||||
|
">"
|
||||||
|
"$<$<CONFIG:Debug>:"
|
||||||
|
"_DEBUG"
|
||||||
|
">"
|
||||||
|
"_CRT_SECURE_NO_WARNINGS;"
|
||||||
|
"_CRT_NON_CONFORMING_SWPRINTFS;"
|
||||||
|
"GTASA;"
|
||||||
|
"GTAGAME_NAME=\"San Andreas\";"
|
||||||
|
"GTAGAME_ABBR=\"SA\";"
|
||||||
|
"GTAGAME_ABBRLOW=\"sa\";"
|
||||||
|
"GTAGAME_PROTAGONISTNAME=\"CJ\";"
|
||||||
|
"GTAGAME_CITYNAME=\"San Andreas\";"
|
||||||
|
"_LA_SUPPORT;"
|
||||||
|
"_DX9_SDK_INSTALLED;"
|
||||||
|
"PLUGIN_SGV_10US;"
|
||||||
|
"_MBCS"
|
||||||
|
)
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
"$ENV{PLUGIN_SDK_DIR}/plugin_sa"
|
||||||
|
"$ENV{PLUGIN_SDK_DIR}/plugin_sa/game_sa"
|
||||||
|
"$ENV{PLUGIN_SDK_DIR}/shared"
|
||||||
|
"$ENV{PLUGIN_SDK_DIR}/shared/game"
|
||||||
|
"$ENV{DIRECTX9_SDK_DIR}/include"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||||
|
$<$<CONFIG:Release>:
|
||||||
|
/O2;
|
||||||
|
/Oi;
|
||||||
|
/Gy
|
||||||
|
>
|
||||||
|
$<$<CONFIG:Debug>:
|
||||||
|
/Od
|
||||||
|
>
|
||||||
|
/std:c++latest;
|
||||||
|
/sdl-;
|
||||||
|
/W3;
|
||||||
|
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
|
||||||
|
${DEFAULT_CXX_EXCEPTION_HANDLING}
|
||||||
|
/w44005
|
||||||
|
)
|
||||||
|
|
||||||
|
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||||
|
$<$<CONFIG:Release>:
|
||||||
|
MultiThreaded
|
||||||
|
>
|
||||||
|
$<$<CONFIG:Debug>:
|
||||||
|
MultiThreadedDebug
|
||||||
|
>
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_directories(${PROJECT_NAME} PUBLIC
|
||||||
|
${CMAKE_SOURCE_DIR}"/src/vendor/kiero/minhook/lib/"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||||
|
optimized plugin
|
||||||
|
debug plugin_d
|
||||||
|
d3d9
|
||||||
|
d3dx9
|
||||||
|
d3d11
|
||||||
|
d3dx11
|
||||||
|
XInput9_1_0
|
||||||
|
optimized libMinHook-x86-v140-mt
|
||||||
|
optimized libMinHook-x86-v140-md
|
||||||
|
debug libMinHook-x86-v140-mtd
|
||||||
|
debug libMinHook-x86-v140-mdd
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user