Update for b3717 (#9)
Build / build (ubuntu-latest) (push) Has been cancelled
Build / build (windows-latest) (push) Has been cancelled

This commit is contained in:
Mr-X-GTA
2025-12-13 17:49:21 +01:00
committed by GitHub
parent 98d4999a7f
commit b74e688860
8 changed files with 52 additions and 43 deletions
+23 -21
View File
@@ -1,31 +1,33 @@
#pragma once #pragma once
#include <cstdint>
#include "netsync/CProjectBaseSyncDataNode.hpp" #include "netsync/CProjectBaseSyncDataNode.hpp"
#pragma pack(push,4) #include <cstdint>
#pragma pack(push, 8)
class CTrainGameStateDataNode : CSyncDataNodeInfrequent class CTrainGameStateDataNode : CSyncDataNodeInfrequent
{ {
public: public:
bool m_is_engine; //0x00C0 bool m_is_engine; //0x00C0
bool m_is_caboose; //0x00C1 bool unk_00C1; //0x00C1
bool m_is_mission_train; //0x00C2 bool m_is_caboose; //0x00C2
bool m_direction; //0x00C3 bool m_is_mission_train; //0x00C3
bool m_has_passenger_carriages; //0x00C4 bool m_direction; //0x00C4
bool m_render_derailed; //0x00C5 bool m_has_passenger_carriages; //0x00C5
bool unk_00C6; //0x00C6 bool m_render_derailed; //0x00C6
bool unk_00C7; //0x00C7 bool unk_00C7; //0x00C7
uint16_t m_engine_id; //0x00C8 bool new_00C8; //0x00C8 added b3717
int8_t m_train_config_index; //0x00CA uint16_t m_engine_id; //0x00CA
int8_t m_carriage_config_index; //0x00CB int8_t m_train_config_index; //0x00CC
int8_t m_track_id; //0x00CC int8_t m_carriage_config_index; //0x00CD
char pad_00CD[3]; //0x00CD int8_t m_track_id; //0x00CE
float m_distance_from_engine; //0x00D0 float m_distance_from_engine; //0x00D0
float m_cruise_speed; //0x00D4 float new_00D4; //0x00D4 added b3717
uint16_t m_linked_to_backward_id; //0x00D8 float m_cruise_speed; //0x00D8
uint16_t m_linked_to_forward_id; //0x00DA uint16_t m_linked_to_backward_id; //0x00DC
uint32_t m_train_state; //0x0DC uint16_t m_linked_to_forward_id; //0x00DE
bool unk_00E0; //0x00E0 uint32_t m_train_state; //0x00E0
bool m_force_doors_open; //0x0E1 bool m_force_doors_open; //0x00E4
}; //Size: 0x00E4 bool unk_00E0; //0x00E5
static_assert(sizeof(CTrainGameStateDataNode) == 0xE4); }; //Size: 0x00E8
static_assert(sizeof(CTrainGameStateDataNode) == 0xE8);
#pragma pack(pop) #pragma pack(pop)
+5 -4
View File
@@ -478,9 +478,10 @@ struct FIELD_HANGAR_DATA
}; };
static_assert(sizeof(FIELD_HANGAR_DATA) == 2 * 8); static_assert(sizeof(FIELD_HANGAR_DATA) == 2 * 8);
#define NUM_PROPERTY_INTERIORS 33 // (30 -> 31) b3095 #define NUM_PROPERTY_INTERIORS 36 // (30 -> 31) b3095
// (31 -> 32) b3258 // (31 -> 32) b3258
// (32 -> 33) b3407 // (32 -> 33) b3407
// (33 -> 36) b3717
struct PROPERTY_DATA struct PROPERTY_DATA
{ {
@@ -569,7 +570,7 @@ struct PROPERTY_DATA
HACKER_DEN_DATA HackerDenData; HACKER_DEN_DATA HackerDenData;
FIELD_HANGAR_DATA FieldHangarData; FIELD_HANGAR_DATA FieldHangarData;
}; };
static_assert(sizeof(PROPERTY_DATA) == 542 * 8); static_assert(sizeof(PROPERTY_DATA) == 548 * 8);
struct BIKER_CONTRACTS struct BIKER_CONTRACTS
{ {
@@ -676,10 +677,10 @@ struct GPBD_FM_Entry
ARENA_WAR_DATA ArenaWarData; // @858 as of 1.67 ARENA_WAR_DATA ArenaWarData; // @858 as of 1.67
SCR_INT ApartmentEnterFlags; SCR_INT ApartmentEnterFlags;
}; };
static_assert(sizeof(GPBD_FM_Entry) == 874 * 8); static_assert(sizeof(GPBD_FM_Entry) == 880 * 8);
struct GPBD_FM struct GPBD_FM
{ {
SCR_ARRAY<GPBD_FM_Entry, 32> Entries; SCR_ARRAY<GPBD_FM_Entry, 32> Entries;
}; };
static_assert(sizeof(GPBD_FM) == 27969 * 8); static_assert(sizeof(GPBD_FM) == 28161 * 8);
+7 -3
View File
@@ -158,6 +158,7 @@ struct BOSS_GOON
SCR_BITSET<eBossGoonFlags> Flags; SCR_BITSET<eBossGoonFlags> Flags;
SCR_INT Flags2; // TODO SCR_INT Flags2; // TODO
SCR_INT Flags3; // TODO SCR_INT Flags3; // TODO
SCR_INT Flags4; // added b3717
SCR_INT TotalBossGoonTime; SCR_INT TotalBossGoonTime;
SCR_ARRAY<uint64_t, 2> BossGoonUUID; SCR_ARRAY<uint64_t, 2> BossGoonUUID;
SCR_ARRAY<uint64_t, 8> Goons; SCR_ARRAY<uint64_t, 8> Goons;
@@ -222,6 +223,7 @@ struct BOSS_GOON
SCR_BOOL CasinoLimoActive; SCR_BOOL CasinoLimoActive;
SCR_BOOL CasinoLuxuryCarActive; SCR_BOOL CasinoLuxuryCarActive;
SCR_HASH CasinoLuxuryCarModel; SCR_HASH CasinoLuxuryCarModel;
SCR_INT PAD_0309; // added b3717
CASINO_HEIST_PREP CasinoHeistPrep; CASINO_HEIST_PREP CasinoHeistPrep;
SCR_INT CayoPrepIndex; SCR_INT CayoPrepIndex;
SCR_INT CompanySUVDestination; SCR_INT CompanySUVDestination;
@@ -279,9 +281,11 @@ struct BOSS_GOON
SCR_INT NightclubMissionIndex; SCR_INT NightclubMissionIndex;
SCR_INT NightclubDefendMissionIndex; SCR_INT NightclubDefendMissionIndex;
uint64_t PAD_0478[18]; // TODO uint64_t PAD_0478[18]; // TODO
SCR_HASH PAD_0501; // added b3717
SCR_INT PAD_0502; // added b3717
SCR_BOOL DoubleActionCacheLocationRevealed; SCR_BOOL DoubleActionCacheLocationRevealed;
}; };
static_assert(sizeof(BOSS_GOON) == 500 * 8); static_assert(sizeof(BOSS_GOON) == 504 * 8);
struct MC_STATS struct MC_STATS
{ {
@@ -349,10 +353,10 @@ struct GBPD_FM_3_Entry
SCR_INT CasinoFlowProgress; SCR_INT CasinoFlowProgress;
SCR_ARRAY<uint64_t, 1> DailyObjectiveFlags; // @607 as of 1.67 SCR_ARRAY<uint64_t, 1> DailyObjectiveFlags; // @607 as of 1.67
}; };
static_assert(sizeof(GBPD_FM_3_Entry) == 611 * 8); static_assert(sizeof(GBPD_FM_3_Entry) == 615 * 8);
struct GPBD_FM_3 struct GPBD_FM_3
{ {
SCR_ARRAY<GBPD_FM_3_Entry, 32> Entries; SCR_ARRAY<GBPD_FM_3_Entry, 32> Entries;
}; };
static_assert(sizeof(GPBD_FM_3) == 19553 * 8); static_assert(sizeof(GPBD_FM_3) == 19681 * 8);
+2 -2
View File
@@ -84,7 +84,7 @@ struct GSBD
SCR_BOOL PAD_0816; // always set to FALSE SCR_BOOL PAD_0816; // always set to FALSE
SCR_INT PAD_0817; // unused SCR_INT PAD_0817; // unused
CEO_COLORS CeoColors; CEO_COLORS CeoColors;
SMPL_INTERIOR_DATA_SERVER SimpleInteriorData; //SMPL_INTERIOR_DATA_SERVER SimpleInteriorData; b3717 -> Global_2658056
LEAVE_CLUBHOUSE_SERVER LeaveClubhouse; LEAVE_CLUBHOUSE_SERVER LeaveClubhouse;
SCR_ARRAY<IE_DELIVERY_INFO, 32> IEDeliveryInfos; SCR_ARRAY<IE_DELIVERY_INFO, 32> IEDeliveryInfos;
SCR_INT PAD_1397; SCR_INT PAD_1397;
@@ -92,4 +92,4 @@ struct GSBD
uint64_t PAD_1399[97]; uint64_t PAD_1399[97];
SCR_INT CayoPericoStrandedAnimalChoice; SCR_INT CayoPericoStrandedAnimalChoice;
}; };
static_assert(sizeof(GSBD) == 1499 * 8); static_assert(sizeof(GSBD) == 1264 * 8);
+6 -5
View File
@@ -24,13 +24,14 @@ struct WEAPON_PICKUPS
SCR_INT LastMeleeWeaponPickupTime; SCR_INT LastMeleeWeaponPickupTime;
SCR_INT LastProjectilePickupTime; SCR_INT LastProjectilePickupTime;
SCR_INT LastGunPickupTime; SCR_INT LastGunPickupTime;
SCR_ARRAY<uint64_t, 96> Indices; // size increased in b3095 (62 -> 95) SCR_ARRAY<uint64_t, 95> Indices; // size increased in b3095 (62 -> 95)
// and in b3407 (95 -> 96) // and in b3407 (95 -> 96)
SCR_ARRAY<uint64_t, 96> Owners; // b3717 (96 -> 95)
SCR_ARRAY<uint64_t, 95> Owners;
SCR_INT SpawnCounter; SCR_INT SpawnCounter;
SCR_INT AmmoCount; SCR_INT AmmoCount;
}; };
static_assert(sizeof(WEAPON_PICKUPS) == 200 * 8); static_assert(sizeof(WEAPON_PICKUPS) == 198 * 8);
struct BIKER_CONTRACTS_SERVER struct BIKER_CONTRACTS_SERVER
{ {
@@ -50,7 +51,7 @@ struct GSBD_FM
SCR_ARRAY<uint64_t, 2> MuggingPlayers; // 0 = mugger, 1 = merryweather mercs SCR_ARRAY<uint64_t, 2> MuggingPlayers; // 0 = mugger, 1 = merryweather mercs
SCR_ARRAY<uint64_t, 2> MuggedPlayers; SCR_ARRAY<uint64_t, 2> MuggedPlayers;
uint64_t PAD_0112[4]; // unused uint64_t PAD_0112[4]; // unused
SCR_ARRAY<uint64_t, 62> PAD_0116; // TODO b3407 (61 -> 62) SCR_ARRAY<uint64_t, 65> PAD_0116; // TODO b3407 (61 -> 62), b3717 (62 -> 65)
SCR_INT ShopProcessingBitset; SCR_INT ShopProcessingBitset;
SCR_ARRAY<uint64_t, NUM_CONTACTS> ActiveContactServiceBitsets; SCR_ARRAY<uint64_t, NUM_CONTACTS> ActiveContactServiceBitsets;
SCR_ARRAY<ACTIVE_CONTACT_SERVICE, 32> ActiveContactServices; SCR_ARRAY<ACTIVE_CONTACT_SERVICE, 32> ActiveContactServices;
@@ -65,4 +66,4 @@ struct GSBD_FM
SCR_ARRAY<uint64_t, 32> DoubleActionCacheLocationRevealed; SCR_ARRAY<uint64_t, 32> DoubleActionCacheLocationRevealed;
SCR_INT TimeUpdated; SCR_INT TimeUpdated;
}; };
static_assert(sizeof(GSBD_FM) == 649 * 8); static_assert(sizeof(GSBD_FM) == 652 * 8);
+3 -2
View File
@@ -561,6 +561,7 @@ struct GlobalPlayerBDEntry
NETWORK_INDEX DeliveryBikeNetId; NETWORK_INDEX DeliveryBikeNetId;
NETWORK_INDEX BountyTransporterNetId; // added b3258 NETWORK_INDEX BountyTransporterNetId; // added b3258
NETWORK_INDEX FieldDusterNetId; // added b3407 NETWORK_INDEX FieldDusterNetId; // added b3407
NETWORK_INDEX MansionHeliNetId; // added b3717
SCR_BOOL PAD_0057; // (@59 as of b3407) SCR_BOOL PAD_0057; // (@59 as of b3407)
uint64_t PAD_0058[15]; // confirmed these are not used by PC scripts uint64_t PAD_0058[15]; // confirmed these are not used by PC scripts
PLAYER_BLIP PlayerBlip; PLAYER_BLIP PlayerBlip;
@@ -676,10 +677,10 @@ struct GlobalPlayerBDEntry
SCR_BOOL CanSpawnGunVan; SCR_BOOL CanSpawnGunVan;
}; };
static_assert(sizeof(GlobalPlayerBDEntry) == 467 * 8); static_assert(sizeof(GlobalPlayerBDEntry) == 468 * 8);
struct GlobalPlayerBD struct GlobalPlayerBD
{ {
SCR_ARRAY<GlobalPlayerBDEntry, 32> Entries; SCR_ARRAY<GlobalPlayerBDEntry, 32> Entries;
}; };
static_assert(sizeof(GlobalPlayerBD) == 14945 * 8); static_assert(sizeof(GlobalPlayerBD) == 14977 * 8);
+2 -2
View File
@@ -7,10 +7,10 @@ struct g_AMC_playerBD_Entry
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<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 SCR_ARRAY<uint64_t, NUM_CONTACTS> ContactServiceCooldowns; // same as above
}; };
static_assert(sizeof(g_AMC_playerBD_Entry) == 251 * 8); static_assert(sizeof(g_AMC_playerBD_Entry) == 257 * 8);
struct g_AMC_playerBD struct g_AMC_playerBD
{ {
SCR_ARRAY<g_AMC_playerBD_Entry, 32> Entries; SCR_ARRAY<g_AMC_playerBD_Entry, 32> Entries;
}; };
static_assert(sizeof(g_AMC_playerBD) == 8033 * 8); static_assert(sizeof(g_AMC_playerBD) == 8225 * 8);
+1 -1
View File
@@ -100,4 +100,4 @@ private:
}; };
static_assert(sizeof(GAMER_HANDLE) == 13 * 8); static_assert(sizeof(GAMER_HANDLE) == 13 * 8);
#define NUM_CONTACTS 83 #define NUM_CONTACTS 85