Update to 1.67 (#117)

This commit is contained in:
maybegreat48 2023-06-14 20:16:19 +00:00 committed by GitHub
parent 14adf08cac
commit 9d951d0e32
15 changed files with 1862 additions and 1857 deletions

View File

@ -9,25 +9,25 @@ public:
class rage::rlGamerInfo m_gamer_info; //0x0000
char pad_0098[40]; //0x00F8
}; //Size: 0x00C0
static_assert(sizeof(CVoiceConnection) == 0x120);
static_assert(sizeof(CVoiceConnection) == 0x118);
class CVoice
{
public:
class CVoiceConnection m_connection_storage[32]; //0x0000
char pad_1800[8]; //0x1800
class CVoiceConnection* m_connections[32]; //0x1808
uint32_t m_connection_count; //0x1908
char pad_190C[3508]; //0x190C
}; //Size: 0x1978
static_assert(sizeof(CVoice) == 0x32C0);
char pad_2300[8]; //0x2300
class CVoiceConnection* m_connections[32]; //0x2308
uint32_t m_connection_count; //0x2408
char pad_240C[3508]; //0x240C
}; //Size: 0x31C0
static_assert(sizeof(CVoice) == 0x31C0);
class CCommunications
{
public:
char pad_0000[48]; //0x0000
class CVoice m_voice; //0x0030
char pad_26F0[280300]; //0x26F0
}; //Size: 0x46DE4
static_assert(sizeof(CCommunications) == 0x479DC);
char pad_31F0[280300]; //0x31F0
}; //Size: 0x478DC
static_assert(sizeof(CCommunications) == 0x478DC);
#pragma pack(pop)

View File

@ -19,21 +19,21 @@ public:
char pad_000C[4]; //0x000C
void* m_net_connection_mgr; //0x0010
char pad_0018[64]; //0x0018
uint64_t m_host_tokens_in_scope[64]; //0x0058
uint32_t m_num_tokens_in_scope; //0x0258
char pad_025C[4]; //0x025C
class CNetRemoteComplaint m_remote_complaints[64]; //0x0260
uint32_t m_num_remote_complaints; //0x0860
char pad_0864[4]; //0x0864
uint64_t m_host_tokens_complained[64]; //0x0868
uint32_t m_num_tokens_complained; //0x0A68
char pad_0A6C[520]; //0x0A6C
uint32_t m_connection_identifier; //0x0C74
uint32_t m_last_resend_time; //0x0C78
char pad_0C7C[4]; //0x0C7C
uint32_t m_time_to_resend; //0x0C80
uint32_t m_flags; //0x0C84
char pad_0C88[16]; //0x0C88
class rage::rlGamerHandle m_handles_in_scope[64]; //0x0058
uint32_t m_num_handles_in_scope; //0x0458
char pad_045C[4]; //0x045C
class CNetRemoteComplaint m_remote_complaints[64]; //0x0460
uint32_t m_num_remote_complaints; //0x0A60
char pad_0A64[4]; //0x0A64
uint64_t m_host_tokens_complained[64]; //0x0A68
uint32_t m_num_tokens_complained; //0x0C68
char pad_0C6C[520]; //0x0C6C
uint32_t m_connection_identifier; //0x0E74
uint32_t m_last_resend_time; //0x0E78
char pad_0E7C[4]; //0x0E7C
uint32_t m_time_to_resend; //0x0E80
uint32_t m_flags; //0x0E84
char pad_0E88[16]; //0x0E88
inline bool has_local_complaint(uint64_t host_token)
{
@ -67,4 +67,4 @@ public:
}
}; //Size: 0x0C98
static_assert(sizeof(CNetComplaintMgr) == 0xC98);
static_assert(sizeof(CNetComplaintMgr) == 0xE98);

View File

@ -30,5 +30,5 @@ public:
uint32_t unk_B944; //0xB944
uint16_t unk_B948; //0xB948
}; //Size: 0xB94A
static_assert(sizeof(CNetworkPlayerMgr) == 0xD14A);
static_assert(sizeof(CNetworkPlayerMgr) == 0xD152);
#pragma pack(pop)

View File

@ -110,22 +110,22 @@ static_assert(sizeof(MatchmakingSessionResult) == 0x490);
class PlayerNameMapNode
{
public:
char m_name[24]; //0x0000
class rage::rlGamerHandle m_handle; //0x0018
class PlayerNameMapNode* m_next; //0x0028
class PlayerNameMapNode* m_prev; //0x0030
}; //Size: 0x0038
static_assert(sizeof(PlayerNameMapNode) == 0x38);
char m_name[16]; //0x0000
class rage::rlGamerHandle m_handle; //0x0010
class PlayerNameMapNode* m_next; //0x0020
class PlayerNameMapNode* m_prev; //0x0028
}; //Size: 0x0030
static_assert(sizeof(PlayerNameMapNode) == 0x30);
class JoiningPlayerNameMap
{
public:
class PlayerNameMapNode m_names[100]; //0x0000
char pad_15E0[40]; //0x15E0
uint32_t m_num_name_nodes; //0x1608
char pad_160C[796]; //0x160C
}; //Size: 0x1928
static_assert(sizeof(JoiningPlayerNameMap) == 0x1928);
char pad_12C0[40]; //0x12C0
uint32_t m_num_name_nodes; //0x12E8
char pad_12EC[796]; //0x12EC
}; //Size: 0x1608
static_assert(sizeof(JoiningPlayerNameMap) == 0x1608);
class CNetBlacklistNode
{
@ -185,101 +185,104 @@ public:
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
class rage::snSession* m_transition_session_ptr; //0x0098
char pad_00A0[24]; //0x00A0
class rage::snSession m_game_session; //0x00B8
class rage::snSession m_transition_session; //0x3F28
char pad_7D98[16]; //0x7D98
class NetworkGameConfig m_network_game_config; //0xAC48
class NetworkGameConfig m_network_transition_config; //0xAD90
bool m_session_attributes_dirty; //0xAED8
char pad_AED9[19]; //0xAED9
uint32_t m_session_visibility_flags; //0xAEEC
uint32_t m_transition_visibility_flags; //0xAEF0
char pad_AEF4[60]; //0xAEF4
class MetricSessionMigrated m_metric_session_migrated; //0xAF30
bool m_migrated_metric_enabled; //0xB278
char pad_B279[3]; //0xB279
uint32_t m_game_session_state; //0xB27C
class NetworkGameFilter m_network_game_filter; //0xB280
char pad_B5C4[33]; //0xB5C4
bool m_was_invited; //0xB5E5
char pad_B5E6[10]; //0xB5E6
class rage::rlSessionInfo m_unk_session_info; //0xB5F0
char pad_B6C0[635]; //0xB6C0
bool m_need_host_change; //0xB93B
char pad_B93C[2628]; //0xB93C
class rage::rlSessionDetail m_joining_session_detail; //0xC380
class SessionInfoBackup m_last_joined_session; //0xC7F8
char pad_C8D4[40]; //0xC8D4
uint32_t m_current_matchmaking_group; //0xC8FC
uint32_t m_matchmaking_group_max_players[5]; //0xC900
uint32_t m_num_active_matchmaking_groups; //0xC914
char pad_C918[8]; //0xC918
uint8_t m_matchmaking_property_id; //0xC920
uint8_t m_matchmaking_mental_state; //0xC921
char pad_C922[366]; //0xC922
class rage::rlMatchmakingFindResult m_game_session_matchmaking[3]; //0xCA90
char pad_195A0[40]; //0x195A0
class MatchmakingSessionResult m_game_matchmaking_session_results[10]; //0x195C8
char pad_1C368[308]; //0x1C368
uint32_t m_num_bosses; //0x1C49C
bool m_num_bosses_set; //0x1C4A0
char pad_1C4A1[7]; //0x1C4A1
class rage::rlGamerHandle m_transition_creator_handle; //0x1C4A8
char pad_1C4B8[12]; //0x1C4B8
bool m_is_waiting_async; //0x1C4C4
bool m_is_preferred_activity; //0x1C4C5
char pad_1C4C6[2]; //0x1C4C6
uint32_t m_in_progress_finish_time; //0x1C4C8
char pad_1C4CC[4]; //0x1C4CC
bool m_local_player_info_dirty; //0x1C4D0
char pad_1C4D1[495]; //0x1C4D1
class rage::rlGamerHandle m_inviter_handle; //0x1C6C0
class CNetComplaintMgr m_game_complaint_mgr; //0x1C6D0
class CNetComplaintMgr m_transition_complaint_mgr; //0x1D368
char pad_1E000[32]; //0x1E000
class JoiningPlayerNameMap m_unused_joining_player_name_map; //0x1E020
char pad_1F948[8]; //0x1F948
class CNetBlacklist m_blacklist; //0x1F950
char pad_1FC08[8]; //0x1FC08
class InvitedGamers m_game_invited_gamers; //0x1FC10
char pad_20898[4864]; //0x20898
class SessionInfoBackup m_last_joined_transition; //0x21B98
uint32_t m_activity_max_players; //0x21C74
uint32_t m_activity_max_spectators; //0x21C78
char pad_21C7C[48]; //0x21C7C
bool m_do_not_launch_from_join_as_migrated_host; //0x21CAC
char pad_21CAD[7]; //0x21CAD
bool m_is_activity_session; //0x21CB4
char pad_21CB5[35]; //0x21CB5
class RemotePlayerData m_remote_player_data; //0x21CD8
char pad_222E0[8]; //0x222E0
class rage::netGamePlayerData m_local_net_game_player_data; //0x222E8
char pad_22318[608]; //0x22318
class rage::rlMatchmakingFindResult m_transition_matchmaking[4]; //0x22578
class NetworkGameFilter m_transition_filters[4]; //0x33438
char pad_34148[20]; //0x34148
uint32_t m_transition_quickmatch_group_handle_count; //0x3415C
class rage::rlGamerHandle m_transition_quickmatch_group_handles[32]; //0x34160
bool m_retain_activity_group; //0x34360
char pad_34361[7]; //0x34361
class rage::rlSessionInfo m_transition_to_activity_session_info; //0x34368
char pad_34438[48]; //0x34438
class MatchmakingSessionResult m_transition_matchmaking_session_results[10]; //0x34468
char pad_37208[8]; //0x37208
class InvitedGamers m_transition_invited_gamers; //0x37210
char pad_37E98[16]; //0x37E98
class rage::rlGamerHandle m_transition_to_game_handle; //0x37EA8
class rage::rlSessionInfo m_transition_to_game_session_info; //0x37EB8
char pad_37F88[4]; //0x37F88
uint32_t m_transition_to_game_session_participant_count; //0x37F8C
class rage::rlGamerHandle m_transition_to_game_session_participants[32]; //0x37F90
char pad_38190[72]; //0x38190
class rage::rlGamerHandle m_follower_handles[32]; //0x381D8
uint32_t m_follower_count; //0x383D8
char pad_383DC[628]; //0x383DC
class rage::snSession m_game_session; //0x00F0
class rage::snSession m_transition_session; //0x5578
char pad_AA00[16]; //0xAA00
class rage::snSession* m_game_session_ptr_2; //0xAA10
class rage::snSession* m_transition_session_ptr_2; //0xAA18
char pad_AA20[16]; //0xAA20
class rage::snSession* m_game_session_ptr; //0xAA30
class rage::snSession* m_transition_session_ptr; //0xAA38
char pad_AA40[24]; //0xAA40
class NetworkGameConfig m_network_game_config; //0xAA58
class NetworkGameConfig m_network_transition_config; //0xABA0
bool m_session_attributes_dirty; //0xACE8
char pad_ACE9[19]; //0xACE9
uint32_t m_session_visibility_flags; //0xACFC
uint32_t m_transition_visibility_flags; //0xAD00
char pad_AD04[68]; //0xAD04
class MetricSessionMigrated m_metric_session_migrated; //0xAD48
bool m_migrated_metric_enabled; //0xB090
char pad_B091[3]; //0xB091
uint32_t m_game_session_state; //0xB094
class NetworkGameFilter m_network_game_filter; //0xB098
char pad_B3DC[33]; //0xB3DC
bool m_was_invited; //0xB3FD
char pad_B3FE[10]; //0xB3FE
class rage::rlSessionInfo m_unk_session_info; //0xB408
char pad_B4D8[635]; //0xB4D8
bool m_need_host_change; //0xB753
char pad_B754[74316]; //0xB754
class rage::rlSessionDetail m_joining_session_detail; //0x1D9A0
class SessionInfoBackup m_last_joined_session; //0x1DE18
char pad_1DEF4[40]; //0x1DEF4
uint32_t m_current_matchmaking_group; //0x1DF1C
uint32_t m_matchmaking_group_max_players[5]; //0x1DF20
uint32_t m_num_active_matchmaking_groups; //0x1DF34
char pad_1DF38[8]; //0x1DF38
uint8_t m_matchmaking_property_id; //0x1DF40
uint8_t m_matchmaking_mental_state; //0x1DF41
char pad_1DF42[366]; //0x1DF42
class rage::rlMatchmakingFindResult m_game_session_matchmaking[3]; //0x1E0B0
char pad_2ABC0[40]; //0x2ABC0
class MatchmakingSessionResult m_game_matchmaking_session_results[10]; //0x2ABE8
char pad_2D988[308]; //0x2D988
uint32_t m_num_bosses; //0x2DABC
bool m_num_bosses_set; //0x2DAC0
char pad_2DAC1[7]; //0x2DAC1
class rage::rlGamerHandle m_transition_creator_handle; //0x2DAC8
char pad_2DAD8[12]; //0x2DAD8
bool m_is_waiting_async; //0x2DAE4
bool m_is_preferred_activity; //0x2DAE5
char pad_2DAE6[2]; //0x2DAE6
uint32_t m_in_progress_finish_time; //0x2DAE8
char pad_2DAEC[4]; //0x2DAEC
bool m_local_player_info_dirty; //0x2DAF0
char pad_2DAF1[495]; //0x2DAF1
class rage::rlGamerHandle m_inviter_handle; //0x2DCE0
class CNetComplaintMgr m_game_complaint_mgr; //0x2DCF0
class CNetComplaintMgr m_transition_complaint_mgr; //0x2EB88
char pad_2FA20[32]; //0x2FA20
class JoiningPlayerNameMap m_unused_joining_player_name_map; //0x2FA40
char pad_31048[8]; //0x31048
class CNetBlacklist m_blacklist; //0x31050
char pad_31308[8]; //0x31308
class InvitedGamers m_game_invited_gamers; //0x31310
char pad_31F98[5888]; //0x31F98
class SessionInfoBackup m_last_joined_transition; //0x33698
uint32_t m_activity_max_players; //0x33774
uint32_t m_activity_max_spectators; //0x33778
char pad_3377C[48]; //0x3377C
bool m_do_not_launch_from_join_as_migrated_host; //0x337AC
char pad_337AD[7]; //0x337AD
bool m_is_activity_session; //0x337B4
char pad_337B5[35]; //0x337B5
class RemotePlayerData m_remote_player_data; //0x337D8
char pad_33DE0[8]; //0x33DE0
class rage::netGamePlayerData m_local_net_game_player_data; //0x33DE8
char pad_33E18[608]; //0x33E18
class rage::rlMatchmakingFindResult m_transition_matchmaking[4]; //0x34078
class NetworkGameFilter m_transition_filters[4]; //0x44F38
char pad_45C48[20]; //0x45C48
uint32_t m_transition_quickmatch_group_handle_count; //0x45C5C
class rage::rlGamerHandle m_transition_quickmatch_group_handles[32]; //0x45C60
bool m_retain_activity_group; //0x45E60
char pad_45E61[7]; //0x45E61
class rage::rlSessionInfo m_transition_to_activity_session_info; //0x45E68
char pad_45F38[48]; //0x45F38
class MatchmakingSessionResult m_transition_matchmaking_session_results[10]; //0x45F68
char pad_48D08[8]; //0x48D08
class InvitedGamers m_transition_invited_gamers; //0x48D10
char pad_49998[16]; //0x49998
class rage::rlGamerHandle m_transition_to_game_handle; //0x499A8
class rage::rlSessionInfo m_transition_to_game_session_info; //0x499B8
char pad_49A88[4]; //0x49A88
uint32_t m_transition_to_game_session_participant_count; //0x49A8C
class rage::rlGamerHandle m_transition_to_game_session_participants[32]; //0x49A90
char pad_49C90[80]; //0x49C90
class rage::rlGamerHandle m_follower_handles[32]; //0x49CE0
uint32_t m_follower_count; //0x49EE0
char pad_49EE4[628]; //0x49EE4
}; //Size: 0x38650
static_assert(sizeof(Network) == 0x38650);
static_assert(sizeof(Network) == 0x4A158);
#pragma pack(pop)

View File

@ -31,5 +31,5 @@ public:
uint32_t m_num_handles; //0x02C8
class rage::rlGamerHandle m_handles[32]; //0x02D0
}; //Size: 0x04D0
static_assert(sizeof(RemoteGamerInfoMsg) == 0x530);
static_assert(sizeof(RemoteGamerInfoMsg) == 0x528);
#pragma pack(pop)

View File

@ -22,16 +22,16 @@ namespace rage
virtual CNetGamePlayer* AddPlayer(rage::rlGamerInfo* gamer_info, uint32_t a3, CNetGamePlayerDataMsg* player_data, CNonPhysicalPlayerData* non_physical_player_data) = 0;
char pad_0008[8]; //0x0008
uint64_t *m_network_bandwidth_manager; //0x0010
char pad_0018[208]; //0x0018
CNetGamePlayer *m_local_net_player; //0x00E8
uint64_t* m_network_bandwidth_manager; //0x0010
char pad_0018[216]; //0x0018
CNetGamePlayer* m_local_net_player; //0x00E8
char pad_00F0[144]; //0x00F0
CNetGamePlayer *m_player_list[32]; //0x0180
CNetGamePlayer* m_player_list[32]; //0x0180
uint16_t m_player_limit; //0x0280
char pad_0282[10]; //0x0282
uint16_t m_player_count; //0x028C
char pad_0290[1618]; //0x0290
}; //Size: 0x08E0
static_assert(sizeof(netPlayerMgrBase) == 0x8E0);
static_assert(sizeof(netPlayerMgrBase) == 0x8E8);
#pragma pack(pop)
}

View File

@ -14,7 +14,8 @@ namespace rage
public:
uint64_t m_msg_id; //0x0000
class rage::rlGamerInfo m_player_data; //0x0008
}; //Size: 0x00A0
char pad_00F8[8]; //0x00F8
}; //Size: 0x0100
static_assert(sizeof(rage::snPlayer) == 0x100);
class snPeer
@ -23,7 +24,7 @@ namespace rage
class rage::rlGamerInfo m_peer_data; //0x0000
char pad_0098[40]; //0x0098
}; //Size: 0x00C0
static_assert(sizeof(rage::snPeer) == 0x120);
static_assert(sizeof(rage::snPeer) == 0x118);
class rlRemoteGamer
{
@ -40,15 +41,15 @@ namespace rage
class rlSession
{
public:
char pad_0008[264]; //0x0008
class rage::rlSessionInfo m_session_info; //0x0110
char pad_01E0[288]; //0x01E0
uint64_t m_session_id; //0x0300
char pad_0308[1136]; //0x0308
char pad_0008[248]; //0x0008
class rage::rlSessionInfo m_session_info; //0x0100
char pad_01D0[296]; //0x01D0
uint64_t m_session_id; //0x02F8
char pad_0300[1136]; //0x0300
virtual ~rlSession() = default;
}; //Size: 0x0778
static_assert(sizeof(rage::rlSession) == 0x778);
}; //Size: 0x0770
static_assert(sizeof(rage::rlSession) == 0x770);
class rlSessionDetail
{
@ -105,36 +106,37 @@ namespace rage
class snSession
{
public:
rage::sysMemAllocator* m_memory_allocator; //0x0000
uint64_t m_memory_allocator; //0x0000
char pad_0008[64]; //0x0008
rage::netConnectionManager* m_net_connection_mgr; //0x0048
char pad_0050[48]; //0x0050
class rage::rlSession m_rline_session; //0x0080
class rage::snPlayer m_local_player; //0x0938
uint64_t m_host_token; //0x09D8
char pad_09E0[144]; //0x09E0
class rage::snPeer m_peer_storage[32]; //0x0A70
char pad_2270[24]; //0x2270
class rage::snPeer* m_peers[32]; //0x2288
uint32_t m_peer_count; //0x2388
char pad_238C[4]; //0x238C
class rage::snPlayer m_player_storage[32]; //0x2390
char pad_3790[24]; //0x3790
class rage::snPlayer* m_players[32]; //0x37A8
uint32_t m_player_count; //0x38A8
char pad_38AC[4]; //0x38AC
class rage::rlRemoteGamer m_remote_gamers[32]; //0x38B0
uint32_t m_num_remote_gamers; //0x3CB0
bool m_player_joining; //0x3CB4
char pad_3CB5[107]; //0x3CB5
uint32_t m_connection_identifier; //0x3D20
char pad_3D24[8]; //0x3D24
char m_token_key[64]; //0x3D2C
char m_id_key[64]; //0x3D6C
char m_info_key[64]; //0x3DAC
char m_host_key[64]; //0x3DEC
char m_join_key[64]; //0x3E2C
char pad_3E6C[4]; //0x3E6C
class rage::snPlayer m_local_player; //0x07F0
uint64_t m_host_token; //0x08F0
char pad_08F8[144]; //0x08F8
class rage::snPeer m_peer_storage[32]; //0x0988
char pad_2C88[24]; //0x2C88
class rage::snPeer* m_peers[32]; //0x2CA0
uint32_t m_peer_count; //0x2DA0
char pad_2DA4[4]; //0x2DA4
class rage::snPlayer m_player_storage[32]; //0x2DA8
char pad_4DA8[24]; //0x4DA8
class rage::snPlayer* m_players[32]; //0x4DC0
int32_t m_player_count; //0x4EC0
char pad_4EC4[4]; //0x4EC4
class rage::rlRemoteGamer m_remote_gamers[32]; //0x4EC8
uint32_t m_num_remote_gamers; //0x52C8
bool m_player_joining; //0x52CC
char pad_52CD[107]; //0x52CD
uint32_t m_connection_identifier; //0x5338
char pad_533C[4]; //0x533C
uint32_t m_profile_index; //0x5340
char m_token_key[64]; //0x5344
char m_id_key[64]; //0x5384
char m_info_key[64]; //0x53C4
char m_host_key[64]; //0x5404
char m_join_key[64]; //0x5444
char pad_5484[4]; //0x5484
inline bool is_host()
{
@ -168,17 +170,17 @@ namespace rage
}
}; //Size: 0x3E70
static_assert(sizeof(rage::snSession) == 0x5590);
static_assert(sizeof(rage::snSession) == 0x5488);
class snMsgRemoveGamersFromSessionCmd
{
public:
uint64_t m_session_id; //0x0000
uint64_t m_peer_ids[32]; //0x0008
int32_t m_unk = -1; //0x0108
uint32_t m_num_peers; //0x010C
rage::rlGamerHandle m_handles[32]; //0x0008
int32_t m_unk = -1; //0x208
uint32_t m_num_peers; //0x20C
}; //Size: 0x0110
static_assert(sizeof(rage::snMsgRemoveGamersFromSessionCmd) == 0x110);
static_assert(sizeof(rage::snMsgRemoveGamersFromSessionCmd) == 0x210);
}
class SessionSortEntry

View File

@ -22,44 +22,40 @@ class CPlayerInfo
public:
char pad_0000[32]; //0x0000
class rage::rlGamerInfo m_net_player_data; //0x0020
char pad_00B8[184]; //0x00B8
float m_swim_speed; //0x0170
char pad_0174[20]; //0x0174
uint32_t m_water_proof; //0x0188
char pad_018C[76]; //0x018C
eGameState m_game_state; //0x01D8
char pad_01DC[12]; //0x01DC
class CPed *m_ped; //0x01E8
char pad_01F0[40]; //0x01F0
uint32_t m_frame_flags; //0x0218
char pad_021C[52]; //0x021C
uint32_t m_player_controls; //0x0250
char pad_0254[1256]; //0x0254
float m_wanted_can_change; //0x073C
char pad_0740[144]; //0x0740
float m_wanted_level_difficulty; //0x07D0 min:-1 max:1
char pad_07D4[52]; //0x07D4
float m_wanted_level_multiplier; //0x0808 min:0 max:1
char pad_080C[100]; //0x080C
uint32_t m_npc_ignore; //0x0870
char pad_0874[12]; //0x0874
bool m_is_wanted; //0x0880
char pad_0881[7]; //0x0881
uint32_t m_wanted_level; //0x0888
uint32_t m_wanted_level_display; //0x088C
char pad_0890[1120]; //0x0890
float m_run_speed; //0x0CF0
float m_stamina; //0x0CF4
float m_stamina_regen; //0x0CF8
char pad_0CFC[16]; //0x0CFC
float m_weapon_damage_mult; //0x0D0C
float m_weapon_defence_mult; //0x0D10
char pad_0D14[4]; //0x0D14
float m_melee_weapon_damage_mult; //0x0D18
float m_melee_damage_mult; //0x0D1C
float m_melee_defence_mult; //0x0D20
char pad_0D24[8]; //0x0D24
float m_melee_weapon_defence_mult; //0x0D2C
}; //Size: 0x0D30
static_assert(sizeof(CPlayerInfo) == 0xD90);
char pad_0110[184]; //0x0110
float m_swim_speed; //0x01C8
char pad_01CC[20]; //0x01CC
uint32_t m_water_proof; //0x01E0
char pad_01E4[76]; //0x01E4
eGameState m_game_state; //0x0230
char pad_0234[12]; //0x0234
class CPed* m_ped; //0x0240
char pad_0248[40]; //0x0248
uint32_t m_frame_flags; //0x0270
char pad_0274[52]; //0x0274
uint32_t m_player_controls; //0x02A8
char pad_02AC[1248]; //0x02AC
float m_wanted_can_change; //0x078C
char pad_0790[304]; //0x0790
uint32_t m_npc_ignore; //0x08C0
char pad_08C4[12]; //0x08C4
bool m_is_wanted; //0x08D0
char pad_08D1[7]; //0x08D1
uint32_t m_wanted_level; //0x08D8
uint32_t m_wanted_level_display; //0x08DC
char pad_08E0[1120]; //0x08E0
float m_run_speed; //0x0D40
float m_stamina; //0x0D44
float m_stamina_regen; //0x0D48
char pad_0D4C[16]; //0x0D4C
float m_weapon_damage_mult; //0x0D5C
float m_weapon_defence_mult; //0x0D60
char pad_0D64[4]; //0x0D64
float m_melee_weapon_damage_mult; //0x0D68
float m_melee_damage_mult; //0x0D6C
float m_melee_defence_mult; //0x0D70
char pad_0D74[8]; //0x0D74
float m_melee_weapon_defence_mult; //0x0D7C
}; //Size: 0x0D80
static_assert(sizeof(CPlayerInfo) == 0xD80);
#pragma pack(pop)

View File

@ -10,11 +10,16 @@ namespace rage
{
public:
uint64_t m_host_token;
uint64_t m_peer_id_2;
union
{
rlGamerHandle m_gamer_handle_2;
uint32_t m_peer_id_2; // not found in all instances
};
uint32_t m_ros_privilege;
char m_name[17];
}; //Size: 0x0098
static_assert(sizeof(rlGamerInfo) == 0xF8);
static_assert(sizeof(rlGamerInfo) == 0xF0);
#pragma pack(pop)
}

View File

@ -488,7 +488,7 @@ struct PROPERTY_DATA
SCR_INT PAD_0299;
DEFUNCT_BASE_DATA DefunctBaseData;
SCR_INT AvengerInteriorDecorFlags; // "PACKED_MP_INT_ARMORY_AIRCRAFT_INTERIOR_v0"
uint64_t PAD_0308[2];
uint64_t PAD_0308[3];
BUSINESS_HUB_DATA BusinessHubData;
NIGHTCLUB_DATA NightclubData;
SCR_INT PAD_0365;
@ -512,7 +512,7 @@ struct PROPERTY_DATA
uint64_t PAD_0398[4];
SCR_INT OfficeGarageModdingVehicleSlot;
SCR_INT CurrentOfficeGarageFloor;
CASINO_APARTMENT_DATA CasinoApartmentData;
CASINO_APARTMENT_DATA CasinoApartmentData; // @405 as of 1.67
ARCADE_DATA ArcadeData;
ARCADE_MACHINES ArcadeMachines;
SCR_ARRAY<uint64_t, 41> ArcadeMachineSlots;
@ -523,11 +523,12 @@ struct PROPERTY_DATA
CAR_CLUB_DATA CarClubData;
FIXER_HQ_DATA FixerHQData;
SCR_INT PAD_0503; // not read by the scripts
SCR_INT PAD_0504;
VEHICLE_INDEX CurrentlyModdingVehicleFixerHQ;
MULTI_STOREY_GARAGE_DATA MultiStoreyGarageData;
MULTI_STOREY_GARAGE_DATA MultiStoreyGarageData; // @507 as of 1.67
SCR_INT FreakshopBits; // 0: has weapon workshop, 1: radio enabled
};
static_assert(sizeof(PROPERTY_DATA) == 512 * 8);
static_assert(sizeof(PROPERTY_DATA) == 514 * 8);
struct BIKER_CONTRACTS
{
@ -631,14 +632,15 @@ struct GPBD_FM_Entry
NIGHTCLUB_SALE NightclubSale;
uint64_t PAD_844[11]; // unused, all of them
SCR_INT SeatingIndex;
ARENA_WAR_DATA ArenaWarData;
uint64_t PAD_0859[2];
ARENA_WAR_DATA ArenaWarData; // @858 as of 1.67
uint64_t PAD_0861[2];
SCR_INT ApartmentEnterFlags;
SCR_VEC3 AvengerMissionStartPosition;
};
static_assert(sizeof(GPBD_FM_Entry) == 862 * 8);
static_assert(sizeof(GPBD_FM_Entry) == 867 * 8);
struct GPBD_FM
{
SCR_ARRAY<GPBD_FM_Entry, 32> Entries;
};
static_assert(sizeof(GPBD_FM) == 27585 * 8);
static_assert(sizeof(GPBD_FM) == 27745 * 8);

View File

@ -207,12 +207,12 @@ struct BOSS_GOON
SCR_INT PAD_0178; // TODO
SCR_HASH ContrabandPickupModel2;
SCR_BOOL DestroyedCargo;
SCR_INT VIPGameplayDisabledTimer;
SCR_INT VIPGameplayDisabledTimer; // @181 as of 1.67
SCR_INT SettingUpBusiness;
uint64_t PAD_0183[4]; // TODO some unknown contraband struct
VEHICLE_EXPORT VehicleExport;
uint64_t PAD_0193[12]; // TODO
SCR_ARRAY<uint64_t, 6> ActiveFreemodeEvents; // force thunder
SCR_ARRAY<uint64_t, 7> ActiveFreemodeEvents; // force thunder
uint64_t PAD_0212[22]; // I'm not even going to bother with this one
HANGAR_CARGO HangarCargo;
uint64_t PAD_0236[23]; // not going to bother with this one either
@ -280,7 +280,7 @@ struct BOSS_GOON
uint64_t PAD_0478[18]; // TODO
SCR_BOOL DoubleActionCacheLocationRevealed;
};
static_assert(sizeof(BOSS_GOON) == 497 * 8);
static_assert(sizeof(BOSS_GOON) == 498 * 8);
struct MC_STATS
{
@ -346,12 +346,12 @@ struct GBPD_FM_3_Entry
SCR_INT CurrentlyUsingArenaTurretActivatedTime;
SCR_INT CasinoStoryProgress;
SCR_INT CasinoFlowProgress;
SCR_ARRAY<uint64_t, 1> DailyObjectiveFlags;
SCR_ARRAY<uint64_t, 1> DailyObjectiveFlags; // @607 as of 1.67
};
static_assert(sizeof(GBPD_FM_3_Entry) == 608 * 8);
static_assert(sizeof(GBPD_FM_3_Entry) == 609 * 8);
struct GPBD_FM_3
{
SCR_ARRAY<GBPD_FM_3_Entry, 32> Entries;
};
static_assert(sizeof(GPBD_FM_3) == 19457 * 8);
static_assert(sizeof(GPBD_FM_3) == 19489 * 8);

View File

@ -49,9 +49,9 @@ struct GSBD_FM
SCR_ARRAY<uint64_t, 2> MuggingPlayers; // 0 = mugger, 1 = merryweather mercs
SCR_ARRAY<uint64_t, 2> MuggedPlayers;
uint64_t PAD_0112[4]; // unused
SCR_ARRAY<uint64_t, 60> PAD_0116; // TODO
SCR_ARRAY<uint64_t, 61> PAD_0116; // TODO
SCR_INT ShopProcessingBitset;
SCR_ARRAY<uint64_t, 79> ActiveContactServiceBitsets;
SCR_ARRAY<uint64_t, NUM_CONTACTS> ActiveContactServiceBitsets;
SCR_ARRAY<ACTIVE_CONTACT_SERVICE, 32> ActiveContactServices;
PLAYER_INDEX SpectatorTVWantedPlayer;
SCR_BOOL SpectatorTVWantedClosing;
@ -63,4 +63,4 @@ struct GSBD_FM
BIKER_CONTRACTS_SERVER BikerContracts;
SCR_ARRAY<uint64_t, 32> DoubleActionCacheLocationRevealed;
};
static_assert(sizeof(GSBD_FM) == 574 * 8);
static_assert(sizeof(GSBD_FM) == 576 * 8);

View File

@ -593,7 +593,7 @@ struct GlobalPlayerBDEntry
SCR_INT CurrentStoreIndex; // the stores in the map which can be held up
SCR_BOOL ShopActive; // any shop
SCR_BOOL InTaxi;
SCR_INT Haircut;
SCR_INT Haircut; // @250 as of 1.67
SCR_INT PrimaryHairColor;
SCR_INT SecondaryHairColor;
SCR_INT FriendlyPlayers; // bitset of player team relgroups that obtain a Respect relationship with player
@ -617,23 +617,17 @@ struct GlobalPlayerBDEntry
SMPL_INTERIOR_DATA SimpleInteriorData;
SCR_BOOL PAD_0350; // TODO
SCR_INT PAD_0351; // unused vehicle/interior stuff
SCR_BOOL ShowMOCBlip;
SCR_BOOL ShowAvengerBlip;
SCR_BOOL ShowTerrorbyteBlip;
SCR_BOOL ShowSubmarineBlip;
SCR_BOOL ShowDinghyBlip;
SCR_BOOL ShowDeliveryBikeBlip;
SCR_BOOL ShowAcidLabBlip;
LEAVE_CLUBHOUSE LeaveClubhouse;
SCR_INT BlipShownBitset;
LEAVE_CLUBHOUSE LeaveClubhouse; // @353 as of 1.67
SCR_INT Friends; // bitset of players that are friends
SCR_VEC3 InteriorVehiclePosition; // for terrorbyte and MOC, used to fake player blip position on map
SCR_FLOAT InteriorVehicleHeading;
SCR_VEC3 AcidLabPosition; // not read by the scripts
SCR_FLOAT AcidLabHeading;
SCR_INT VehicleTurretsActive; // bitset
SCR_ARRAY<SCR_VEC3, 3> VehicleTurretsCameraPosition;
SCR_ARRAY<SCR_VEC3, 4> VehicleTurretsCameraPosition; // 3->4 in 1.67
SCR_INT PAD_0416; // TODO
SCR_BOOL DozerDetected; // very shady stuff, anticheat?
SCR_BOOL DozerDetected; // very shady stuff, anticheat? @414 as of 1.67
SCR_ARRAY<uint64_t, 6> MissionTurretParticipants;
SCR_INT PAD_0425; // some seat index
SCR_INT MissionTurretSlot;
@ -643,7 +637,7 @@ struct GlobalPlayerBDEntry
SCR_BOOL PAD_0430; // todo
SCR_BOOL BeingSolicitedByProstitute; // why tf is this used by the orbital cannon?
SCR_VEC3 DronePosition; // updates every second
SCR_FLOAT DroneHeading;
SCR_FLOAT DroneHeading; // @432 as of 1.67
SCR_INT OrbitalBitset2; // ugh
SCR_INT CurrentlyUsingArenaTrapIndex;
SCR_INT CurrentlyUsingArenaTrapActivatedTime;
@ -657,13 +651,14 @@ struct GlobalPlayerBDEntry
SCR_BITSET<eOutOfSightFlags> OutOfSightFlags;
SCR_VEC3 OutOfSightArea;
SCR_INT AmmunationWeaponPartFlags;
PLAYER_INDEX LastKilledBy;
PLAYER_INDEX LastKilledBy; // @461 as of 1.67
SCR_BOOL CanSpawnGunVan;
};
static_assert(sizeof(GlobalPlayerBDEntry) == 466 * 8);
static_assert(sizeof(GlobalPlayerBDEntry) == 463 * 8);
struct GlobalPlayerBD
{
SCR_ARRAY<GlobalPlayerBDEntry, 32> Entries;
};
static_assert(sizeof(GlobalPlayerBD) == 14913 * 8);
static_assert(sizeof(GlobalPlayerBD) == 14817 * 8);

View File

@ -4,13 +4,13 @@
struct g_AMC_playerBD_Entry
{
SCR_ARRAY<TIMER, 79> UsedContactServicesTimer; // only index 2 (mugger) is actually used by the scripts. the rest is just a waste of bandwidth
SCR_ARRAY<uint64_t, 79> ContactServiceCooldowns; // same as above
SCR_ARRAY<TIMER, NUM_CONTACTS> UsedContactServicesTimer; // only index 2 (mugger) is actually used by the scripts. the rest is just a waste of bandwidth
SCR_ARRAY<uint64_t, NUM_CONTACTS> ContactServiceCooldowns; // same as above
};
static_assert(sizeof(g_AMC_playerBD_Entry) == 239 * 8);
static_assert(sizeof(g_AMC_playerBD_Entry) == 242 * 8);
struct g_AMC_playerBD
{
SCR_ARRAY<g_AMC_playerBD_Entry, 32> Entries;
};
static_assert(sizeof(g_AMC_playerBD) == 7649 * 8);
static_assert(sizeof(g_AMC_playerBD) == 7745 * 8);

View File

@ -99,3 +99,5 @@ private:
uint64_t Data[13];
};
static_assert(sizeof(GAMER_HANDLE) == 13 * 8);
#define NUM_CONTACTS 80