diff --git a/network/CNetGamePlayer.hpp b/network/CNetGamePlayer.hpp index ab22537..d043ac5 100644 --- a/network/CNetGamePlayer.hpp +++ b/network/CNetGamePlayer.hpp @@ -3,7 +3,9 @@ #include "../player/CPlayerInfo.hpp" #include "../player/CNonPhysicalPlayerData.hpp" -#include "ClandData.hpp" +#include "../rage/rlSessionInfo.hpp" + +#include "ClanData.hpp" #include "netPlayer.hpp" #include @@ -12,24 +14,50 @@ class CNetGamePlayer : public rage::netPlayer { public: - char pad_00A0[8]; //0x00A0 - uint32_t m_matchmaking_group; //0x00A8 - CPlayerInfo* m_player_info; //0x00B0 - char pad_00B0[16]; //0x00B0 - class ClanData m_clan_data; //0x00C8 + CPlayerInfo* m_player_info; //0x00A0 + uint32_t m_matchmaking_group; //0x0008 + bool m_is_spectating; //0x000C + char pad_00AD[3]; //0x000AD + uint64_t unk_00B0; //0x00B0 + char unk_00B8; //0x00B8 + char pad_00B9[3]; //0x00B9 + uint32_t unk_00BC; //0x00BC + uint32_t unk_00C0; //0x00C0 + char pad_00C4[4]; //0x00C4 + ClanData m_clan_data; //0x00C8 char m_crew_rank_title[25]; //0x0180 bool m_is_rockstar_dev; //0x0199 bool m_is_rockstar_qa; //0x019A bool m_is_cheater; //0x019B - char pad_019C[14]; //0x019C + uint32_t unk_019C; //0x019C + uint16_t unk_01A0; //0x01A0 + char unk_01A2; //0x01A2 + char pad_01A3; //0x01A3 + uint32_t m_phone_explosion_vehicle_net_id; //0x01A4 + uint16_t unk_01A8; //0x01A8 bool m_has_started_transition; //0x01AA char pad_01AB[5]; //0x01AB - char m_transition_info_buffer[125]; //0x01B0 - char pad_022D[19]; //0x022D + rage::rlSessionInfo m_transition_session_info; //0x01A3 + char pad_022D[16]; //0x022D + uint64_t unk_0230; //0x0230 + uint64_t unk_0238; //0x0238 uint32_t m_mute_count; //0x0240 uint32_t m_mute_talkers_count; //0x0244 - char pad_0248[112]; //0x0248 - uint32_t unk_02B8; //0x02B8 + char pad_0248[5]; //0x0248 + bool m_have_communication_privileges; //0x024D + uint16_t unk_024E; //0x024E + uint16_t unk_0250; //0x0250 + char pad_0252[2]; //0x0252 + uint32_t m_cheat_report_ids[20]; //0x0254 + uint32_t m_num_cheat_reports; //0x02A4 + uint8_t unk_02A8; //0x02A8 + char pad_02A9[3]; //0x02A9 + uint32_t unk_02AC; //0x02AC + char unk_02B0; //0x02B0 + char pad_02B1[3]; //0x02B1 + uint32_t unk_02B4; //0x02B4 + uint32_t m_account_id; //0x02B4 + uint32_t m_unk_02BC; //0x02BC }; //Size: 0x02C0 static_assert(sizeof(CNetGamePlayer) == 0x2C0); #pragma pack(pop) diff --git a/network/ClandData.hpp b/network/ClanData.hpp similarity index 100% rename from network/ClandData.hpp rename to network/ClanData.hpp diff --git a/network/netPlayer.hpp b/network/netPlayer.hpp index 7924cf1..316f960 100644 --- a/network/netPlayer.hpp +++ b/network/netPlayer.hpp @@ -1,6 +1,6 @@ #pragma once -#include "netPlayerData.hpp" +#include "../rage/rlGamerInfo.hpp" #include "../player/CNonPhysicalPlayerData.hpp" namespace rage @@ -15,7 +15,7 @@ namespace rage virtual const char* get_name(); virtual void _0x20(); virtual bool is_host(); - virtual netPlayerData* get_net_data(); + virtual rage::rlGamerInfo* get_net_data(); virtual void _0x38(); char pad_0008[8]; //0x0008 diff --git a/network/netPlayerData.hpp b/network/netPlayerData.hpp deleted file mode 100644 index 40160a3..0000000 --- a/network/netPlayerData.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include - -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 - uint64_t m_peer_id; //0x0068 - uint64_t m_rockstar_id2; //0x0070 - char pad_0078[12]; //0x0078 - char m_name[20]; //0x0084 - }; //Size: 0x0098 - static_assert(sizeof(netPlayerData) == 0x98); -} diff --git a/network/netPlayerMgrBase.hpp b/network/netPlayerMgrBase.hpp index 5e544cd..8362ab3 100644 --- a/network/netPlayerMgrBase.hpp +++ b/network/netPlayerMgrBase.hpp @@ -15,10 +15,10 @@ namespace rage virtual void Initialize() = 0; virtual void Shutdown() = 0; virtual void unk_0x18() = 0; - virtual CNetGamePlayer* AddPlayer_raw(void* a1, void* a2, void* a3, rage::netPlayerData* net_player_data, CNonPhysicalPlayerData* non_physical_player_data) = 0; + virtual CNetGamePlayer* AddPlayer_raw(void* a1, void* a2, void* a3, rage::rlGamerInfo* gamer_info, CNonPhysicalPlayerData* non_physical_player_data) = 0; virtual void RemovePlayer(CNetGamePlayer* net_game_player) = 0; virtual void UpdatePlayerListsForPlayer(CNetGamePlayer* net_game_player) = 0; - virtual CNetGamePlayer* AddPlayer(void* a1, void* a2, void* a3, rage::netPlayerData* net_player_data, CNonPhysicalPlayerData* non_physical_player_data) = 0; + virtual CNetGamePlayer* AddPlayer(void* a1, void* a2, void* a3, rage::rlGamerInfo* gamer_info, CNonPhysicalPlayerData* non_physical_player_data) = 0; char pad_0008[8]; //0x0008 uint64_t *m_network_bandwidth_manager; //0x0010 diff --git a/player/CPlayerInfo.hpp b/player/CPlayerInfo.hpp index 53b3cf6..d42fcd9 100644 --- a/player/CPlayerInfo.hpp +++ b/player/CPlayerInfo.hpp @@ -1,6 +1,6 @@ #pragma once -#include "../network/netPlayerData.hpp" +#include "../rage/rlGamerInfo.hpp" #include @@ -21,7 +21,7 @@ class CPlayerInfo { public: char pad_0000[32]; //0x0000 - class rage::netPlayerData m_net_player_data; //0x0020 + class rage::rlGamerInfo m_net_player_data; //0x0020 char pad_00B8[184]; //0x00B8 float m_swim_speed; //0x0170 char pad_0174[20]; //0x0174 diff --git a/rage/rlGamerHandle.hpp b/rage/rlGamerHandle.hpp new file mode 100644 index 0000000..e0eb17d --- /dev/null +++ b/rage/rlGamerHandle.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include + +namespace rage +{ +#pragma pack(push,8) + class rlGamerHandle + { + public: + uint64_t m_rockstar_id; + uint64_t m_unk; + + inline rlGamerHandle(uint64_t rockstar_id) : + m_rockstar_id(rockstar_id), + m_unk(3) + { + } + }; +#pragma pack(pop) +} \ No newline at end of file diff --git a/rage/rlGamerInfo.hpp b/rage/rlGamerInfo.hpp new file mode 100644 index 0000000..9ca80ab --- /dev/null +++ b/rage/rlGamerInfo.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include "rlGamerInfoBase.hpp" + +namespace rage +{ +#pragma pack(push,8) + class rlGamerInfo : public rlGamerInfoBase + { + public: + uint64_t m_host_token; + uint64_t m_platform_data; + rlGamerHandle m_gamer_handle_2; + uint32_t m_ros_privilege; + char m_name[20]; + }; //Size: 0x0098 + static_assert(sizeof(rlGamerInfo) == 0x98); +#pragma pack(pop) +} diff --git a/rage/rlGamerInfoBase.hpp b/rage/rlGamerInfoBase.hpp new file mode 100644 index 0000000..1567cf8 --- /dev/null +++ b/rage/rlGamerInfoBase.hpp @@ -0,0 +1,40 @@ +#pragma once + +#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); + +namespace rage +{ +#pragma pack(push,8) + class rlGamerInfoBase + { + public: + uint64_t m_peer_id; + rlGamerHandle m_gamer_handle; + char unk_0018[32]; + uint8_t unk_0038; + netAddress m_unk_ip; + uint16_t m_unk_port; + netAddress m_relay_ip; + uint16_t m_relay_port; + netAddress m_external_ip; + uint16_t m_external_port; + netAddress m_internal_ip; + uint16_t m_internal_port; + uint32_t unk_005C; + }; + static_assert(sizeof(rlGamerInfoBase) == 0x60); +#pragma pack(pop) +} \ No newline at end of file diff --git a/rage/rlSessionInfo.hpp b/rage/rlSessionInfo.hpp new file mode 100644 index 0000000..7903f6a --- /dev/null +++ b/rage/rlSessionInfo.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include +#include "../rage/rlGamerInfoBase.hpp" + +namespace rage +{ + class rlSessionInfo + { + public: + uint64_t m_unk; //0x0000 + uint64_t m_session_token; //0x0008 + rlGamerInfoBase m_net_player_data; //0x0010 + }; + static_assert(sizeof(rlSessionInfo) == 0x70); +} \ No newline at end of file