diff --git a/datanodes/ped/CPedInventoryDataNode.hpp b/datanodes/ped/CPedInventoryDataNode.hpp index 633308c..9ea8a8c 100644 --- a/datanodes/ped/CPedInventoryDataNode.hpp +++ b/datanodes/ped/CPedInventoryDataNode.hpp @@ -2,21 +2,21 @@ #include -#pragma pack(push,1) +#pragma pack(push, 4) class CPedInventoryDataNode { public: - char pad_0000[4812]; //0x0000 - uint32_t m_items[105]; //0x12CC - uint32_t m_num_items; //0x1470 - uint32_t m_ammos[65]; //0x1474 - uint32_t m_ammo_quantities[65]; //0x1578 - uint32_t m_num_ammos; //0x167C - uint8_t unk_1680[105]; //0x1680 - uint8_t unk_16E9[105]; //0x16E9 - char pad_1680[1155]; //0x1752 - bool m_infinite_ammos[65]; //0x1BD5 - bool m_ammo_all_infinite; //0x1C16 -}; //Size: 0x1C17 -static_assert(sizeof(CPedInventoryDataNode) == 0x1C17); + char pad_0000[5232]; + uint32_t m_items[105]; + uint32_t m_num_items; + uint32_t m_ammos[65]; + uint32_t m_ammo_quantities[65]; + uint32_t m_num_ammos; + uint8_t unk_1680[105]; + uint8_t unk_16E9[105]; + char pad_1680[1260]; + bool m_infinite_ammos[65]; + bool m_ammo_all_infinite; +}; +static_assert(sizeof(CPedInventoryDataNode) == 0x1E24); #pragma pack(pop) \ No newline at end of file diff --git a/network/Network.hpp b/network/Network.hpp index 171bf5a..3413fdc 100644 --- a/network/Network.hpp +++ b/network/Network.hpp @@ -10,10 +10,10 @@ class MetricSessionMigrated : public rage::rlMetric { public: - char pad_0008[804]; //0x0008 - uint32_t m_num_players; //0x032C -}; //Size: 0x0330 -static_assert(sizeof(MetricSessionMigrated) == 0x330); + char pad_0008[828]; //0x0008 + uint32_t m_num_players; //0x0344 +}; //Size: 0x0348 +static_assert(sizeof(MetricSessionMigrated) == 0x348); class NetworkGameConfig { @@ -28,64 +28,64 @@ static_assert(sizeof(NetworkGameConfig) == 0x148); class NetworkGameFilterMatchmakingComponent { public: - // do not use for actual network filters, this will break things - inline void SetParameter(const char* name, int index, int value) - { - std::strcpy(m_param_names[index], name); - m_param_mappings[index] = index; - m_param_values[index] = value; - m_enabled_params_bitset |= (1 << index); + // do not use for actual network filters, this will break things + inline void SetParameter(const char* name, int index, int value) + { + std::strcpy(m_param_names[index], name); + m_param_mappings[index] = index; + m_param_values[index] = value; + m_enabled_params_bitset |= (1 << index); - if (m_num_parameters <= index) - m_num_parameters++; - } + if (m_num_parameters <= index) + m_num_parameters++; + } - uint32_t m_filter_type; //0x0000 - char m_filter_name[24]; //0x0004 - uint32_t m_num_parameters; //0x001C - uint16_t m_game_mode; //0x0020 - uint16_t m_session_type; //0x0022 - uint32_t m_param_unk[8]; //0x0024 - char m_param_names[8][24]; //0x0044 - char pad_0104[4]; //0x0104 - uint32_t m_param_mappings[8]; //0x0108 - char pad_0128[352]; //0x0128 - uint32_t m_param_values[8]; //0x0288 - char pad_02A8[96]; //0x02A8 - uint32_t m_enabled_params_bitset; //0x0308 - char pad_030C[8]; //0x030C + uint32_t m_filter_type; //0x0000 + char m_filter_name[24]; //0x0004 + uint32_t m_num_parameters; //0x001C + uint16_t m_game_mode; //0x0020 + uint16_t m_session_type; //0x0022 + uint32_t m_param_unk[8]; //0x0024 + char m_param_names[8][24]; //0x0044 + char pad_0104[4]; //0x0104 + uint32_t m_param_mappings[8]; //0x0108 + char pad_0128[352]; //0x0128 + uint32_t m_param_values[8]; //0x0288 + char pad_02A8[96]; //0x02A8 + uint32_t m_enabled_params_bitset; //0x0308 + char pad_030C[8]; //0x030C }; //Size: 0x0314 static_assert(sizeof(NetworkGameFilterMatchmakingComponent) == 0x314); class MatchmakingAttributes { public: - uint32_t m_game_mode; //0x0000 - uint32_t m_num_params; //0x0004 - uint32_t m_param_unk[8]; //0x0008 - char m_param_names[8][24]; //0x0028 - uint32_t m_param_values[8]; //0x00E8 - uint32_t m_params_bitset; //0x0108 + uint32_t m_game_mode; //0x0000 + uint32_t m_num_params; //0x0004 + uint32_t m_param_unk[8]; //0x0008 + char m_param_names[8][24]; //0x0028 + uint32_t m_param_values[8]; //0x00E8 + uint32_t m_params_bitset; //0x0108 }; //Size: 0x010C static_assert(sizeof(MatchmakingAttributes) == 0x10C); class NetworkGameFilter { public: - virtual ~NetworkGameFilter() = default; - virtual void Reset() {}; + virtual ~NetworkGameFilter() = default; + virtual void Reset() {}; - uint32_t m_build_type; //0x0008 - uint32_t m_discriminator; //0x000C - uint32_t m_discriminator_mapping; //0x0010 - uint32_t m_region_mapping; //0x0014 - uint32_t m_language_mapping; //0x0018 - uint32_t m_mm_group_1_mapping; //0x001C - uint32_t m_mm_group_2_mapping; //0x0020 - uint32_t m_activity_type_mapping; //0x0024 - uint32_t m_activity_id_mapping; //0x0028 - uint32_t m_activity_players_mapping; //0x002C - class NetworkGameFilterMatchmakingComponent m_matchmaking_component; //0x0030 + uint32_t m_build_type; //0x0008 + uint32_t m_discriminator; //0x000C + uint32_t m_discriminator_mapping; //0x0010 + uint32_t m_region_mapping; //0x0014 + uint32_t m_language_mapping; //0x0018 + uint32_t m_mm_group_1_mapping; //0x001C + uint32_t m_mm_group_2_mapping; //0x0020 + uint32_t m_activity_type_mapping; //0x0024 + uint32_t m_activity_id_mapping; //0x0028 + uint32_t m_activity_players_mapping; //0x002C + class NetworkGameFilterMatchmakingComponent m_matchmaking_component; //0x0030 }; //Size: 0x0344 static_assert(sizeof(NetworkGameFilter) == 0x344); @@ -182,7 +182,7 @@ static_assert(sizeof(InvitedGamers) == 0xC88); class Network { public: - class rage::rlSessionInfo m_session_info; //0x0000 + rage::rlSessionInfo m_steam_unk_session; //0x0000 rage::Obf32 m_num_dinput8_instances; //0x0070 rage::Obf32 m_last_time_dinput8_checked; //0x0080 class rage::snSession* m_game_session_ptr; //0x0090 @@ -197,76 +197,89 @@ public: char pad_8039[19]; //0x8039 uint32_t m_session_visibility_flags; //0x804C uint32_t m_transition_visibility_flags; //0x8050 - char pad_8054[36]; //0x8054 - class MetricSessionMigrated m_metric_session_migrated; //0x8078 - bool m_migrated_metric_enabled; //0x83A8 - char pad_83A9[3]; //0x83A9 - uint32_t m_game_session_state; //0x83AC - class NetworkGameFilter m_network_game_filter; //0x83B0 - char pad_86F4[33]; //0x86F4 - bool m_was_invited; //0x8715 - char pad_8716[757]; //0x8716 - bool m_need_host_change; //0x8A0B - char pad_8A0C[2620]; //0x8A0C - class rage::rlSessionDetail m_joining_session_detail; //0x9448 - class SessionInfoBackup m_last_joined_session; //0x9800 - char pad_987C[40]; //0x987C - uint32_t m_current_matchmaking_group; //0x98A4 - uint32_t m_matchmaking_group_max_players[5]; //0x98A8 - uint32_t m_num_active_matchmaking_groups; //0x98Bc - char pad_98C0[8]; //0x98C0 - uint8_t m_matchmaking_property_id; //0x98C8 - uint8_t m_matchmaking_mental_state; //0x98C9 - char pad_98CA[374]; //0x98CA - class rage::rlMatchmakingFindResult m_game_session_matchmaking[3]; //0x9A40 - char pad_14390[40]; //0x14390 - class MatchmakingSessionResult m_game_matchmaking_session_results[10]; //0x143B8 - char pad_169D8[320]; //0x169D8 - class rage::rlGamerHandle m_transition_creator_handle; //0x16B18 - char pad_16B28[24]; //0x16B28 - bool m_local_player_info_dirty; //0x16B40 - char pad_16B41[495]; //0x16B41 - class rage::rlGamerHandle m_inviter_handle; //0x16D30 - class CNetComplaintMgr m_game_complaint_mgr; //0x16D40 - class CNetComplaintMgr m_transition_complaint_mgr; //0x179D8 - char pad_18670[32]; //0x18670 - class JoiningPlayerNameMap m_unused_joining_player_name_map; //0x18690 - char pad_19FB8[8]; //0x19FB8 - class CNetBlacklist m_blacklist; //0x19FC0 - char pad_1A278[8]; //0x1A278 - class InvitedGamers m_game_invited_gamers; //0x1A280 - char pad_1AF08[56]; //0x1AF08 - class SessionInfoBackup m_last_joined_transition; //0x1AF40 - char pad_1AFBC[4]; //0x1AFBC - uint32_t m_activity_spectator_max_players; //0x1AFC0 - char pad_1AFC4[56]; //0x1AFC4 - bool m_is_activity_session; //0x1AFFC - char pad_1AFFD[35]; //0x1AFFD - class RemotePlayerData m_remote_player_data; //0x1B020 - char pad_1B628[8]; //0x1B628 - class rage::netGamePlayerData m_local_net_game_player_data; //0x1B630 - char pad_1B660[600]; //0x1B660 - class rage::rlMatchmakingFindResult m_transition_matchmaking[4]; //0x1B8B8 - class NetworkGameFilter m_transition_filters[4]; //0x29A78 - char pad_2A788[20]; //0x2A788 - uint32_t m_transition_quickmatch_group_handle_count; //0x2A79C - class rage::rlGamerHandle m_transition_quickmatch_group_handles[32]; //0x2A7A0 - char pad_2A9A0[8]; //0x2A9A0 - class rage::rlSessionInfo m_transition_to_activity_session_info; //0x2A9A8 - char pad_2AA18[48]; //0x2AA18 - class MatchmakingSessionResult m_transition_matchmaking_session_results[10]; //0x2AA48 - char pad_2D068[8]; //0x2D068 - class InvitedGamers m_transition_invited_gamers; //0x2D070 - char pad_2DCF8[16]; //0x2DCF8 - class rage::rlGamerHandle m_transition_to_game_handle; //0x2DD08 - class rage::rlSessionInfo m_transition_to_game_session_info; //0x2DD18 - char pad_2DD88[4]; //0x2DD88 - uint32_t m_transition_to_game_session_participant_count; //0x2DD8C - class rage::rlGamerHandle m_transition_to_game_session_participants[32]; //0x2DD90 - char pad_2DF90[72]; //0x2DF90 - class rage::rlGamerHandle m_follower_handles[32]; //0x2DFD8 - uint32_t m_follower_count; //0x2E1D8 - char pad_2E1DC[628]; //0x2E1DC -}; //Size: 0x2E450 -static_assert(sizeof(Network) == 0x2E450); -#pragma pack(pop) + char pad_8054[60]; //0x8054 + class MetricSessionMigrated m_metric_session_migrated; //0x8090 + bool m_migrated_metric_enabled; //0x83D8 + char pad_83D9[3]; //0x83D9 + uint32_t m_game_session_state; //0x83DC + class NetworkGameFilter m_network_game_filter; //0x83E0 + char pad_8724[33]; //0x8724 + bool m_was_invited; //0x8745 + char pad_8746[10]; //0x8746 + class rage::rlSessionInfo m_unk_session_info; //0x8750 + char pad_87C0[635]; //0x87C0 + bool m_need_host_change; //0x8A3B + char pad_8A3C[2612]; //0x8A3C + class rage::rlSessionDetail m_joining_session_detail; //0x9470 + class SessionInfoBackup m_last_joined_session; //0x9828 + char pad_98A4[40]; //0x98A4 + uint32_t m_current_matchmaking_group; //0x98CC + uint32_t m_matchmaking_group_max_players[5]; //0x98D0 + uint32_t m_num_active_matchmaking_groups; //0x98E4 + char pad_98E8[8]; //0x98E8 + uint8_t m_matchmaking_property_id; //0x98F0 + uint8_t m_matchmaking_mental_state; //0x98F1 + char pad_98F2[366]; //0x98F2 + class rage::rlMatchmakingFindResult m_game_session_matchmaking[3]; //0x9A60 + char pad_143B0[40]; //0x143B0 + class MatchmakingSessionResult m_game_matchmaking_session_results[10]; //0x143D8 + char pad_169F8[308]; //0x169F8 + uint32_t m_num_bosses; //0x16B2C + bool m_num_bosses_set; //0x16B30 + char pad_16B31[7]; //0x16B31 + class rage::rlGamerHandle m_transition_creator_handle; //0x16B38 + char pad_16B48[12]; //0x16B48 + bool m_is_waiting_async; //0x16B54 + bool m_is_preferred_activity; //0x16B55 + char pad_16B56[2]; //0x16B56 + uint32_t m_in_progress_finish_time; //0x16B58 + char pad_16B5C[4]; //0x16B5C + bool m_local_player_info_dirty; //0x16B60 + char pad_16B61[495]; //0x16B61 + class rage::rlGamerHandle m_inviter_handle; //0x16D50 + class CNetComplaintMgr m_game_complaint_mgr; //0x16D60 + class CNetComplaintMgr m_transition_complaint_mgr; //0x179F8 + char pad_18690[32]; //0x18690 + class JoiningPlayerNameMap m_unused_joining_player_name_map; //0x186B0 + char pad_19FD8[8]; //0x19FD8 + class CNetBlacklist m_blacklist; //0x19FE0 + char pad_1A298[8]; //0x1A298 + class InvitedGamers m_game_invited_gamers; //0x1A2A0 + char pad_1AF28[56]; //0x1AF28 + class SessionInfoBackup m_last_joined_transition; //0x1AF60 + uint32_t m_activity_max_players; //0x1AFDC + uint32_t m_activity_max_spectators; //0x1AFE0 + char pad_1AFE4[48]; //0x1AFE4 + bool m_do_not_launch_from_join_as_migrated_host; //0x1B014 + char pad_1B015[7]; //0x1B015 + bool m_is_activity_session; //0x1B01C + char pad_1B01D[35]; //0x1B01D + class RemotePlayerData m_remote_player_data; //0x1B040 + char pad_1B648[8]; //0x1B648 + class rage::netGamePlayerData m_local_net_game_player_data; //0x1B650 + char pad_1B680[600]; //0x1B680 + class rage::rlMatchmakingFindResult m_transition_matchmaking[4]; //0x1B8D8 + class NetworkGameFilter m_transition_filters[4]; //0x29A98 + char pad_2A7A8[20]; //0x2A7A8 + uint32_t m_transition_quickmatch_group_handle_count; //0x2A7BC + class rage::rlGamerHandle m_transition_quickmatch_group_handles[32]; //0x2A7C0 + bool m_retain_activity_group; //0x2A9C0 + char pad_2A9C1[7]; //0x2A9C1 + class rage::rlSessionInfo m_transition_to_activity_session_info; //0x2A9C8 + char pad_2AA38[48]; //0x2AA38 + class MatchmakingSessionResult m_transition_matchmaking_session_results[10]; //0x2AA68 + char pad_2D088[8]; //0x2D088 + class InvitedGamers m_transition_invited_gamers; //0x2D090 + char pad_2DD18[16]; //0x2DD18 + class rage::rlGamerHandle m_transition_to_game_handle; //0x2DD28 + class rage::rlSessionInfo m_transition_to_game_session_info; //0x2DD38 + char pad_2DDA8[4]; //0x2DDA8 + uint32_t m_transition_to_game_session_participant_count; //0x2DDAC + class rage::rlGamerHandle m_transition_to_game_session_participants[32]; //0x2DDB0 + char pad_2DFB0[72]; //0x2DFB0 + class rage::rlGamerHandle m_follower_handles[32]; //0x2DFF8 + uint32_t m_follower_count; //0x2E1F8 + char pad_2E1FC[628]; //0x2E1FC +}; //Size: 0x2E470 +static_assert(sizeof(Network) == 0x2E470); +#pragma pack(pop) \ No newline at end of file diff --git a/network/netPlayer.hpp b/network/netPlayer.hpp index 316f960..30b2937 100644 --- a/network/netPlayer.hpp +++ b/network/netPlayer.hpp @@ -9,17 +9,23 @@ namespace rage class netPlayer { public: - virtual ~netPlayer(); + virtual void* _0x00(); + virtual void* _0x08(); + virtual uint32_t _0x10(); + virtual netPlayer* _0x18(void*); + virtual bool _0x20(void*); + virtual bool _0x28(void**); + virtual void destructor(); virtual void reset(); virtual bool is_valid(); virtual const char* get_name(); - virtual void _0x20(); + virtual void _0x50(); virtual bool is_host(); virtual rage::rlGamerInfo* get_net_data(); - virtual void _0x38(); + virtual void _0x68(); char pad_0008[8]; //0x0008 - CNonPhysicalPlayerData *m_non_physical_player; //0x0010 + CNonPhysicalPlayerData* m_non_physical_player; //0x0010 uint32_t m_msg_id; //0x0018 char pad_001C[4]; //0x001C uint8_t m_active_id; //0x0020 @@ -27,10 +33,10 @@ namespace rage char pad_0022[3]; //0x0022 uint16_t m_complaints; //0x0026 char pad_0027[17]; //0x0028 - class CNetGamePlayer *m_unk_net_player_list[10]; //0x0040 + class CNetGamePlayer* m_unk_net_player_list[10]; //0x0040 char pad_0090[4]; //0x0090 uint64_t pad_0098; //0x0098 }; //Size: 0x00A0 static_assert(sizeof(netPlayer) == 0xA0); #pragma pack(pop) -} +} \ No newline at end of file