From 3e8679792a826bb178495273a0954bf76f2469c4 Mon Sep 17 00:00:00 2001 From: Yimura Date: Sun, 30 Jan 2022 00:23:26 +0100 Subject: [PATCH] feat(vendor): Updated GTAV-Classes --- BigBaseV2/src/api/api.hpp | 2 +- .../backend/looped/vehicle/vehicle_god.cpp | 5 +- BigBaseV2/src/common.hpp | 1 + BigBaseV2/src/core/data/player_struct.hpp | 2 +- BigBaseV2/src/gta/VehicleValues.h | 2 +- BigBaseV2/src/gta/enums.hpp | 11 --- BigBaseV2/src/gta/player.hpp | 85 ------------------- BigBaseV2/src/gta/replay.hpp | 34 -------- BigBaseV2/src/gta/script_thread.hpp | 3 +- BigBaseV2/src/gta/tls_context.hpp | 1 - BigBaseV2/src/gta/vector.hpp | 7 -- .../src/gui/window/player/player_info.cpp | 9 +- BigBaseV2/src/hooking.hpp | 2 +- BigBaseV2/src/hooks/increment_stat_event.cpp | 2 +- BigBaseV2/src/hooks/player_join.cpp | 2 +- BigBaseV2/src/hooks/player_left.cpp | 2 +- BigBaseV2/src/hooks/received_event.cpp | 4 +- .../src/hooks/send_net_info_to_lobby.cpp | 2 +- vendor/GTAV-Classes | 2 +- 19 files changed, 21 insertions(+), 157 deletions(-) diff --git a/BigBaseV2/src/api/api.hpp b/BigBaseV2/src/api/api.hpp index 78c15624..474bb252 100644 --- a/BigBaseV2/src/api/api.hpp +++ b/BigBaseV2/src/api/api.hpp @@ -51,7 +51,7 @@ namespace big::api http::Request request(domain + path); CPlayerInfo* player_info = g_local_player->m_player_info; - netPlayerData& netData = player_info->m_net_player_data; + rage::netPlayerData& netData = player_info->m_net_player_data; nlohmann::json body = { { "username", std::string(netData.m_name) }, diff --git a/BigBaseV2/src/backend/looped/vehicle/vehicle_god.cpp b/BigBaseV2/src/backend/looped/vehicle/vehicle_god.cpp index f2f171d2..f3e8b07f 100644 --- a/BigBaseV2/src/backend/looped/vehicle/vehicle_god.cpp +++ b/BigBaseV2/src/backend/looped/vehicle/vehicle_god.cpp @@ -1,4 +1,5 @@ #include "backend/looped/looped.hpp" +#include "util/misc.hpp" namespace big { @@ -11,12 +12,12 @@ namespace big if (g.vehicle.god_mode && g_local_player->m_ped_task_flag & (int)ePedTask::TASK_DRIVING) { g_local_player->m_vehicle->m_deform_god = 0x8C; - g_local_player->m_vehicle->m_godmode = 0x1; + misc::set_bit((int*)&g_local_player->m_vehicle->m_damage_bits, 8); } else { g_local_player->m_vehicle->m_deform_god = 0x9C; - g_local_player->m_vehicle->m_godmode = 0x0; + misc::clear_bit((int*)&g_local_player->m_vehicle->m_damage_bits, 8); } last_veh_god = g.vehicle.god_mode; diff --git a/BigBaseV2/src/common.hpp b/BigBaseV2/src/common.hpp index 0b6ca9d1..c372a96c 100644 --- a/BigBaseV2/src/common.hpp +++ b/BigBaseV2/src/common.hpp @@ -51,6 +51,7 @@ #include "logger.hpp" #include "core/globals.hpp" +#include "gta/natives.hpp" #include "CPed.hpp" namespace big diff --git a/BigBaseV2/src/core/data/player_struct.hpp b/BigBaseV2/src/core/data/player_struct.hpp index f9ee73d2..a87a96dc 100644 --- a/BigBaseV2/src/core/data/player_struct.hpp +++ b/BigBaseV2/src/core/data/player_struct.hpp @@ -1,5 +1,5 @@ #pragma once -#include "gta/player.hpp" +#include "CNetGamePlayer.hpp" #ifndef PLAYER_STRUCT #define PLAYER_STRUCT diff --git a/BigBaseV2/src/gta/VehicleValues.h b/BigBaseV2/src/gta/VehicleValues.h index befe3460..e2e4296e 100644 --- a/BigBaseV2/src/gta/VehicleValues.h +++ b/BigBaseV2/src/gta/VehicleValues.h @@ -629,7 +629,7 @@ enum WindowTints //m8 do you even int tint? #define TIRESMOKE_COLOR_BROWN 180, 130, 97 #define TIRESMOKE_COLOR_PATRIOT 0, 0, 0 -static bool GetVehicleInfoForClanLogo(Hash vehicleModel, rage::vector3& x, rage::vector3& y, rage::vector3& z, float& scale) +static bool GetVehicleInfoForClanLogo(Hash vehicleModel, rage::fvector3& x, rage::fvector3& y, rage::fvector3& z, float& scale) { switch (vehicleModel) { diff --git a/BigBaseV2/src/gta/enums.hpp b/BigBaseV2/src/gta/enums.hpp index df8ec345..d4646828 100644 --- a/BigBaseV2/src/gta/enums.hpp +++ b/BigBaseV2/src/gta/enums.hpp @@ -1,17 +1,6 @@ #pragma once #include -enum class eGameState : std::uint32_t -{ - Playing, - Died, - Arrested, - FailedMission, - LeftGame, - Respawn, - InMPCutScene -}; - constexpr auto MAX_PLAYERS = 32; enum class ControllerInputs : std::uint32_t diff --git a/BigBaseV2/src/gta/player.hpp b/BigBaseV2/src/gta/player.hpp index 390c8e38..87b0e537 100644 --- a/BigBaseV2/src/gta/player.hpp +++ b/BigBaseV2/src/gta/player.hpp @@ -8,62 +8,6 @@ #pragma pack(push, 1) namespace rage { - class netAddress - { - public: - uint8_t m_field4; //0x0000 - uint8_t m_field3; //0x0001 - uint8_t m_field2; //0x0002 - uint8_t m_field1; //0x0003 - }; //Size: 0x0004 - static_assert(sizeof(netAddress) == 0x4); - - class netPlayerData - { - public: - char pad_0000[8]; //0x0000 - uint64_t m_rockstar_id; //0x0008 - char pad_0010[52]; //0x0010 - class netAddress m_relay_ip; //0x0044 - uint16_t m_relay_port; //0x0048 - char pad_004A[2]; //0x004A - class netAddress m_external_ip; //0x004C - uint16_t m_external_port; //0x0050 - char pad_0052[2]; //0x0052 - class netAddress m_internal_ip; //0x0054 - uint16_t m_internal_port; //0x0058 - char pad_005A[6]; //0x005A - uint64_t m_host_token; //0x0060 - char pad_0068[8]; //0x0068 - uint64_t m_rockstar_id2; //0x0070 - char pad_0078[12]; //0x0078 - char m_name[20]; //0x0084 - }; //Size: 0x0098 - static_assert(sizeof(netPlayerData) == 0x98); - - class nonPhysicalPlayerDataBase - { - public: - virtual ~nonPhysicalPlayerDataBase() = default; // 0 (0x00) - virtual void unk_0x08() = 0; // 1 (0x08) - virtual void unk_0x10() = 0; // 2 (0x10) - virtual void unk_0x18() = 0; // 3 (0x18) - virtual void log(netLoggingInterface* logger) = 0; // 4 (0x20) - }; - - class netPlayer - { - public: - virtual ~netPlayer() = default; // 0 (0x00) - virtual void reset() = 0; // 1 (0x08) - virtual bool is_valid() const = 0; // 2 (0x10) - virtual const char *get_name() const = 0; // 3 (0x18) - virtual void _0x20() = 0; // 4 (0x20) - virtual bool is_host() = 0; // 5 (0x28) - virtual netPlayerData *get_net_data() = 0; // 6 (0x30) - virtual void _0x38() = 0; // 7 (0x38) - }; - class netPlayerMgrBase { public: @@ -76,34 +20,6 @@ namespace gta inline constexpr auto num_players = 32; } -class CNonPhysicalPlayerData : public rage::nonPhysicalPlayerDataBase -{ -public: - std::int32_t m_bubble_id; // 0x08 - std::int32_t m_player_id; // 0x0C - rage::vector3 m_position; // 0x10 -}; - -class CNetGamePlayer : public rage::netPlayer -{ -public: - char pad_0x0008[0x10]; //0x0008 - std::uint32_t msg_id; // 0x18 - char pad_0x001C[0x4]; //0x001C - std::int8_t active_id; //0x0020 - std::int8_t player_id; //0x0021 - char pad_0x0022[0x6E]; //0x0022 - BYTE local_player_check;//0x0090 - char pad_0x00A1[0xF]; //0x0091 - CPlayerInfo* player_info; //0x00A0 - - inline bool is_local_player() - { - return local_player_check & 1; - } -}; -static_assert(sizeof(CNetGamePlayer) == 0xA8); - //class CPlayerInfo : public rage::fwExtensibleBase //{ //public: @@ -144,5 +60,4 @@ static_assert(sizeof(CNetGamePlayer) == 0xA8); //}; //Size: 0x0869 //static_assert(sizeof(CPlayerInfo) == 0x869); -static_assert(sizeof(CNonPhysicalPlayerData) == 0x1C); #pragma pack(pop) diff --git a/BigBaseV2/src/gta/replay.hpp b/BigBaseV2/src/gta/replay.hpp index bab2fc6f..f2075055 100644 --- a/BigBaseV2/src/gta/replay.hpp +++ b/BigBaseV2/src/gta/replay.hpp @@ -6,28 +6,6 @@ namespace rage { - class fwEntity - { - public: - char pad_0000[32]; //0x0000 - class CBaseModelInfo* m_model_info; //0x0020 - int8_t m_invisible; //0x0028 - char pad_0029[7]; //0x0029 - class CNavigation* m_navigation; //0x0030 - char pad_0038[1]; //0x0038 - int8_t m_entity_type; //0x0039 - char pad_003A[150]; //0x003A - class netObject* m_net_object; //0x00D0 - char pad_00D8[176]; //0x00D8 - uint32_t m_damage_bits; //0x0188 - - bool is_invincible() { return(m_damage_bits & (1 << 8)); } - void enable_invincible() { m_damage_bits |= (1 << 8); } - void disable_invincible() { m_damage_bits &= ~(1 << 8); } - }; //Size: 0x018C - static_assert(sizeof(fwEntity) == 0x18C, "fwEntity is not properly sized"); - - class CVehicle : public fwEntity { public: @@ -36,18 +14,6 @@ namespace rage //class CPed* m_occupants[8]; //0x0C30 }; //Size: 0x018C - class CNavigation - { - public: - char pad_0000[32]; //0x0000 - float m_heading; //0x0020 - float m_heading2; //0x0024 - char pad_0028[8]; //0x0028 - vector3 m_rotation; //0x0030 - char pad_003C[20]; //0x003C - vector3 m_position; //0x0050 - }; //Size: 0x005C - class CPed : public fwEntity { public: diff --git a/BigBaseV2/src/gta/script_thread.hpp b/BigBaseV2/src/gta/script_thread.hpp index 2cff2b89..d9308a2f 100644 --- a/BigBaseV2/src/gta/script_thread.hpp +++ b/BigBaseV2/src/gta/script_thread.hpp @@ -31,6 +31,7 @@ namespace rage std::uint32_t m_stack_size; // 0x50 char m_padding2[0x54]; // 0x54 }; + static_assert(sizeof(scrThreadContext) == 0xA8); class scrThread { @@ -54,8 +55,6 @@ namespace rage scriptHandler *m_handler; // 0x110 scriptHandlerNetComponent *m_net_component; // 0x118 }; - - static_assert(sizeof(scrThreadContext) == 0xA8); static_assert(sizeof(scrThread) == 0x120); } diff --git a/BigBaseV2/src/gta/tls_context.hpp b/BigBaseV2/src/gta/tls_context.hpp index a2479c27..d1ced43b 100644 --- a/BigBaseV2/src/gta/tls_context.hpp +++ b/BigBaseV2/src/gta/tls_context.hpp @@ -18,6 +18,5 @@ namespace rage return *reinterpret_cast(__readgsqword(0x58)); } }; - static_assert(sizeof(tlsContext) == 0x838); } diff --git a/BigBaseV2/src/gta/vector.hpp b/BigBaseV2/src/gta/vector.hpp index 523f7495..1e01c770 100644 --- a/BigBaseV2/src/gta/vector.hpp +++ b/BigBaseV2/src/gta/vector.hpp @@ -8,13 +8,6 @@ namespace rage float y{}; }; - struct vector3 - { - float x{}; - float y{}; - float z{}; - }; - struct vector4 { float x{}; diff --git a/BigBaseV2/src/gui/window/player/player_info.cpp b/BigBaseV2/src/gui/window/player/player_info.cpp index 97b77da6..ef6495be 100644 --- a/BigBaseV2/src/gui/window/player/player_info.cpp +++ b/BigBaseV2/src/gui/window/player/player_info.cpp @@ -1,4 +1,5 @@ #include "player_tabs.hpp" +#include "util/misc.hpp" namespace big { @@ -15,19 +16,19 @@ namespace big if (CNetGamePlayer* net_player = g.selected_player.net_player; net_player != nullptr) { - if (CPlayerInfo* player_info = net_player->player_info; player_info != nullptr) + if (CPlayerInfo* player_info = net_player->m_player_info; player_info != nullptr) { - netPlayerData& netData = player_info->m_net_player_data; + rage::netPlayerData& netData = player_info->m_net_player_data; ImGui::Text("Session Host: %s", net_player->is_host() ? "Yes" : "No"); ImGui::Separator(); ImGui::Text("Wanted Level: %d", player_info->m_wanted_level); - ImGui::Text("Player God Mode: %s", player_info->m_ped->m_godmode ? "Yes" : "No"); + ImGui::Text("Player God Mode: %s", misc::has_bit_set((int*)&player_info->m_ped->m_damage_bits, 8) ? "Yes" : "No"); ImGui::Text("Vehicle God Mode: %s", player_info->m_ped->m_vehicle == nullptr ? "No vehicle detected" : - player_info->m_ped->m_vehicle->m_godmode ? "Yes" : "No" + misc::has_bit_set((int*)&player_info->m_ped->m_vehicle->m_damage_bits, 8) ? "Yes" : "No" ); ImGui::Separator(); diff --git a/BigBaseV2/src/hooking.hpp b/BigBaseV2/src/hooking.hpp index 4ca52da9..1cc831b7 100644 --- a/BigBaseV2/src/hooking.hpp +++ b/BigBaseV2/src/hooking.hpp @@ -58,7 +58,7 @@ namespace big ); static bool scripted_game_event(CScriptedGameEvent* scripted_game_event, CNetGamePlayer* player); - static bool send_net_info_to_lobby(netPlayerData* player, int64_t a2, int64_t a3, DWORD* a4); + static bool send_net_info_to_lobby(rage::netPlayerData* player, int64_t a2, int64_t a3, DWORD* a4); }; struct minhook_keepalive diff --git a/BigBaseV2/src/hooks/increment_stat_event.cpp b/BigBaseV2/src/hooks/increment_stat_event.cpp index 289d2160..91ce95b0 100644 --- a/BigBaseV2/src/hooks/increment_stat_event.cpp +++ b/BigBaseV2/src/hooks/increment_stat_event.cpp @@ -6,7 +6,7 @@ namespace big { bool hooks::increment_stat_event(CNetworkIncrementStatEvent* net_event, CNetGamePlayer* sender, int64_t a3) { - Player sender_id = sender->player_id; + Player sender_id = sender->m_player_id; switch (net_event->m_stat) { diff --git a/BigBaseV2/src/hooks/player_join.cpp b/BigBaseV2/src/hooks/player_join.cpp index 4c162d3c..8934e6d0 100644 --- a/BigBaseV2/src/hooks/player_join.cpp +++ b/BigBaseV2/src/hooks/player_join.cpp @@ -4,7 +4,7 @@ namespace big { void hooks::player_join(CNetworkObjectMgr* _this, CNetGamePlayer* net_player) { - LOG(INFO) << "Player '" << net_player->get_name() << "' joined taking slot #" << (int)net_player->player_id; + LOG(INFO) << "Player '" << net_player->get_name() << "' joined taking slot #" << (int)net_player->m_player_id; return g_hooking->m_player_has_joined_hook.get_original()(_this, net_player); } diff --git a/BigBaseV2/src/hooks/player_left.cpp b/BigBaseV2/src/hooks/player_left.cpp index 6b1b2f85..1fd042c3 100644 --- a/BigBaseV2/src/hooks/player_left.cpp +++ b/BigBaseV2/src/hooks/player_left.cpp @@ -4,7 +4,7 @@ namespace big { void hooks::player_leave(CNetworkObjectMgr* _this, CNetGamePlayer* net_player) { - LOG(INFO) << "Player '" << net_player->get_name() << "' left freeing slot #" << (int)net_player->player_id; + LOG(INFO) << "Player '" << net_player->get_name() << "' left freeing slot #" << (int)net_player->m_player_id; return g_hooking->m_player_has_left_hook.get_original()(_this, net_player); } diff --git a/BigBaseV2/src/hooks/received_event.cpp b/BigBaseV2/src/hooks/received_event.cpp index 9c387fbf..6411fb11 100644 --- a/BigBaseV2/src/hooks/received_event.cpp +++ b/BigBaseV2/src/hooks/received_event.cpp @@ -22,7 +22,7 @@ namespace big if (event_id > 90u) return false; const char* event_name = *(char**)((DWORD64)event_manager + 8i64 * event_id + 243376); - if (event_name == nullptr || source_player == nullptr || source_player->player_id < 0 || source_player->player_id >= 32) + if (event_name == nullptr || source_player == nullptr || source_player->m_player_id < 0 || source_player->m_player_id >= 32) { g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset); return false; @@ -32,7 +32,7 @@ namespace big { case RockstarEvent::NETWORK_CLEAR_PED_TASKS_EVENT: { - if (source_player->player_id < 32) + if (source_player->m_player_id < 32) { g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset); diff --git a/BigBaseV2/src/hooks/send_net_info_to_lobby.cpp b/BigBaseV2/src/hooks/send_net_info_to_lobby.cpp index 2f8693d7..17deb3fa 100644 --- a/BigBaseV2/src/hooks/send_net_info_to_lobby.cpp +++ b/BigBaseV2/src/hooks/send_net_info_to_lobby.cpp @@ -2,7 +2,7 @@ namespace big { - bool hooks::send_net_info_to_lobby(netPlayerData* player, int64_t a2, int64_t a3, DWORD* a4) + bool hooks::send_net_info_to_lobby(rage::netPlayerData* player, int64_t a2, int64_t a3, DWORD* a4) { // check so we're 100% sure we modify data only for ourselves if (g_local_player->m_player_info->m_net_player_data.m_rockstar_id == player->m_rockstar_id) diff --git a/vendor/GTAV-Classes b/vendor/GTAV-Classes index a069ad93..d7f9a681 160000 --- a/vendor/GTAV-Classes +++ b/vendor/GTAV-Classes @@ -1 +1 @@ -Subproject commit a069ad9316e70f612a937f5bda31fcc36dc38441 +Subproject commit d7f9a681a202e0824f8b0a1d1a635569422587fe