diff --git a/CMakeLists.txt b/CMakeLists.txt index a18b0ad..636273d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ add_library(GTAV-Classes MODULE "${SRC_MAIN}") add_compile_definitions(_CRT_SECURE_NO_WARNINGS) message(STATUS "") - + target_include_directories(GTAV-Classes PRIVATE "${SRC_DIR}" ) diff --git a/classes.cpp b/classes.cpp index b7b2a3c..7956581 100644 --- a/classes.cpp +++ b/classes.cpp @@ -118,6 +118,7 @@ #include "network/CNetGamePlayerDataMsg.hpp" #include "network/CNetworkPlayerMgr.hpp" #include "network/netObject.hpp" +#include "network/netPeerAddress.hpp" #include "network/netPlayer.hpp" #include "network/netPlayerMgrBase.hpp" #include "network/netTime.hpp" diff --git a/network/netConnection.hpp b/network/netConnection.hpp index 5274741..8e12e97 100644 --- a/network/netConnection.hpp +++ b/network/netConnection.hpp @@ -1,6 +1,7 @@ #pragma once #include #include "rage/rlGamerInfoBase.hpp" +#include "netPeerAddress.hpp" #pragma pack(push, 1) namespace rage @@ -8,22 +9,6 @@ namespace rage class netConnectionManager; class netConnectionPeer; -#pragma pack(push, 4) - class netPeerAddress - { - public: - uint32_t m_internal_ip; //0x0000 - uint16_t m_internal_port; //0x0004 - uint32_t m_external_ip; //0x0008 - uint16_t m_external_port; //0x000C - uint64_t m_peer_id; //0x0010 - uint32_t unk_0018; //0x0018 - uint16_t unk_001C; //0x001C - uint8_t m_platform; //0x001E - }; - static_assert(sizeof(netPeerAddress) == 0x20); -#pragma pack(pop) - class netQueuedMessage { public: diff --git a/network/netPeerAddress.hpp b/network/netPeerAddress.hpp new file mode 100644 index 0000000..0127e58 --- /dev/null +++ b/network/netPeerAddress.hpp @@ -0,0 +1,32 @@ +#pragma once +#include + +union netAddress { + uint32_t m_packed; //0x0000 + struct { + 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) == 0x04); + +namespace rage +{ +#pragma pack(push, 4) + class netPeerAddress + { + public: + netAddress m_internal_ip; //0x0000 + uint16_t m_internal_port; //0x0004 + netAddress m_external_ip; //0x0008 + uint16_t m_external_port; //0x000C + uint64_t m_peer_id; //0x0010 + netAddress m_relay_address; //0x0018 + uint16_t m_relay_port; //0x001C + uint8_t m_connection_type; //0x001E + }; + static_assert(sizeof(netPeerAddress) == 0x20); +#pragma pack(pop) +} \ No newline at end of file diff --git a/rage/rlGamerInfoBase.hpp b/rage/rlGamerInfoBase.hpp index 1de12eb..d63a356 100644 --- a/rage/rlGamerInfoBase.hpp +++ b/rage/rlGamerInfoBase.hpp @@ -3,43 +3,27 @@ #include #include #include "rlGamerHandle.hpp" - -union netAddress { - uint32_t m_packed; //0x0000 - struct { - 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) == 0x04); +#include "network/netPeerAddress.hpp" namespace rage { #pragma pack(push,8) - class rlGamerInfoBase - { - public: - char pad_0000[0x8]; //0x0000 - uint64_t m_peer_id; //0x0008 - rlGamerHandle m_gamer_handle; //0x0010 - char m_aes_key[0x20]; //0x0020 - char pad_0040[0x8]; //0x0040 - netAddress m_unk_ip; //0x0048 - uint16_t m_unk_port; //0x004C - netAddress m_relay_ip; //0x0050 - uint16_t m_relay_port; //0x0054 - char pad_0058[0x12]; //0x0056 - char pad_0068[0x40]; //0x0068 - netAddress m_external_ip; //0x00A8 - uint16_t m_external_port; //0x00AC - netAddress m_internal_ip; //0x00B0 - uint16_t m_internal_port; //0x00B4 - char pad_00B6[0x2]; //0x00B6 - uint32_t unk_00B8; //0x00B8 - char pad_00BC[0x4]; //0x00BC - }; - static_assert(sizeof(rlGamerInfoBase) == 0xC0); + class rlGamerInfoBase + { + public: + int m_security_enabled; //0x0000 + uint64_t m_peer_id; //0x0008 + rlGamerHandle m_gamer_handle; //0x0010 + char m_aes_key[0x28]; //0x0020 + netPeerAddress m_relay_address; //0x0048 + char m_relay_signature[0x40]; //0x0068 + netAddress m_external_ip; //0x00A8 + uint16_t m_external_port; //0x00AC + netAddress m_internal_ip; //0x00B0 + uint16_t m_internal_port; //0x00B4 + uint32_t m_nat_type; //0x00B8 + bool m_force_relays; //0x00BC + }; + static_assert(sizeof(rlGamerInfoBase) == 0xC0); #pragma pack(pop) }