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
+26 -24
View File
@@ -1,31 +1,33 @@
#pragma once
#include <cstdint>
#include "netsync/CProjectBaseSyncDataNode.hpp"
#pragma pack(push,4)
#include <cstdint>
#pragma pack(push, 8)
class CTrainGameStateDataNode : CSyncDataNodeInfrequent
{
public:
bool m_is_engine; //0x00C0
bool m_is_caboose; //0x00C1
bool m_is_mission_train; //0x00C2
bool m_direction; //0x00C3
bool m_has_passenger_carriages; //0x00C4
bool m_render_derailed; //0x00C5
bool unk_00C6; //0x00C6
bool unk_00C7; //0x00C7
uint16_t m_engine_id; //0x00C8
int8_t m_train_config_index; //0x00CA
int8_t m_carriage_config_index; //0x00CB
int8_t m_track_id; //0x00CC
char pad_00CD[3]; //0x00CD
float m_distance_from_engine; //0x00D0
float m_cruise_speed; //0x00D4
uint16_t m_linked_to_backward_id; //0x00D8
uint16_t m_linked_to_forward_id; //0x00DA
uint32_t m_train_state; //0x0DC
bool unk_00E0; //0x00E0
bool m_force_doors_open; //0x0E1
}; //Size: 0x00E4
static_assert(sizeof(CTrainGameStateDataNode) == 0xE4);
bool m_is_engine; //0x00C0
bool unk_00C1; //0x00C1
bool m_is_caboose; //0x00C2
bool m_is_mission_train; //0x00C3
bool m_direction; //0x00C4
bool m_has_passenger_carriages; //0x00C5
bool m_render_derailed; //0x00C6
bool unk_00C7; //0x00C7
bool new_00C8; //0x00C8 added b3717
uint16_t m_engine_id; //0x00CA
int8_t m_train_config_index; //0x00CC
int8_t m_carriage_config_index; //0x00CD
int8_t m_track_id; //0x00CE
float m_distance_from_engine; //0x00D0
float new_00D4; //0x00D4 added b3717
float m_cruise_speed; //0x00D8
uint16_t m_linked_to_backward_id; //0x00DC
uint16_t m_linked_to_forward_id; //0x00DE
uint32_t m_train_state; //0x00E0
bool m_force_doors_open; //0x00E4
bool unk_00E0; //0x00E5
}; //Size: 0x00E8
static_assert(sizeof(CTrainGameStateDataNode) == 0xE8);
#pragma pack(pop)
+5 -4
View File
@@ -478,9 +478,10 @@ struct FIELD_HANGAR_DATA
};
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
// (32 -> 33) b3407
// (33 -> 36) b3717
struct PROPERTY_DATA
{
@@ -569,7 +570,7 @@ struct PROPERTY_DATA
HACKER_DEN_DATA HackerDenData;
FIELD_HANGAR_DATA FieldHangarData;
};
static_assert(sizeof(PROPERTY_DATA) == 542 * 8);
static_assert(sizeof(PROPERTY_DATA) == 548 * 8);
struct BIKER_CONTRACTS
{
@@ -676,10 +677,10 @@ struct GPBD_FM_Entry
ARENA_WAR_DATA ArenaWarData; // @858 as of 1.67
SCR_INT ApartmentEnterFlags;
};
static_assert(sizeof(GPBD_FM_Entry) == 874 * 8);
static_assert(sizeof(GPBD_FM_Entry) == 880 * 8);
struct GPBD_FM
{
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_INT Flags2; // TODO
SCR_INT Flags3; // TODO
SCR_INT Flags4; // added b3717
SCR_INT TotalBossGoonTime;
SCR_ARRAY<uint64_t, 2> BossGoonUUID;
SCR_ARRAY<uint64_t, 8> Goons;
@@ -222,6 +223,7 @@ struct BOSS_GOON
SCR_BOOL CasinoLimoActive;
SCR_BOOL CasinoLuxuryCarActive;
SCR_HASH CasinoLuxuryCarModel;
SCR_INT PAD_0309; // added b3717
CASINO_HEIST_PREP CasinoHeistPrep;
SCR_INT CayoPrepIndex;
SCR_INT CompanySUVDestination;
@@ -279,9 +281,11 @@ struct BOSS_GOON
SCR_INT NightclubMissionIndex;
SCR_INT NightclubDefendMissionIndex;
uint64_t PAD_0478[18]; // TODO
SCR_HASH PAD_0501; // added b3717
SCR_INT PAD_0502; // added b3717
SCR_BOOL DoubleActionCacheLocationRevealed;
};
static_assert(sizeof(BOSS_GOON) == 500 * 8);
static_assert(sizeof(BOSS_GOON) == 504 * 8);
struct MC_STATS
{
@@ -349,10 +353,10 @@ struct GBPD_FM_3_Entry
SCR_INT CasinoFlowProgress;
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
{
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_INT PAD_0817; // unused
CEO_COLORS CeoColors;
SMPL_INTERIOR_DATA_SERVER SimpleInteriorData;
//SMPL_INTERIOR_DATA_SERVER SimpleInteriorData; b3717 -> Global_2658056
LEAVE_CLUBHOUSE_SERVER LeaveClubhouse;
SCR_ARRAY<IE_DELIVERY_INFO, 32> IEDeliveryInfos;
SCR_INT PAD_1397;
@@ -92,4 +92,4 @@ struct GSBD
uint64_t PAD_1399[97];
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 LastProjectilePickupTime;
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)
SCR_ARRAY<uint64_t, 96> Owners;
// b3717 (96 -> 95)
SCR_ARRAY<uint64_t, 95> Owners;
SCR_INT SpawnCounter;
SCR_INT AmmoCount;
};
static_assert(sizeof(WEAPON_PICKUPS) == 200 * 8);
static_assert(sizeof(WEAPON_PICKUPS) == 198 * 8);
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> MuggedPlayers;
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_ARRAY<uint64_t, NUM_CONTACTS> ActiveContactServiceBitsets;
SCR_ARRAY<ACTIVE_CONTACT_SERVICE, 32> ActiveContactServices;
@@ -65,4 +66,4 @@ struct GSBD_FM
SCR_ARRAY<uint64_t, 32> DoubleActionCacheLocationRevealed;
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 BountyTransporterNetId; // added b3258
NETWORK_INDEX FieldDusterNetId; // added b3407
NETWORK_INDEX MansionHeliNetId; // added b3717
SCR_BOOL PAD_0057; // (@59 as of b3407)
uint64_t PAD_0058[15]; // confirmed these are not used by PC scripts
PLAYER_BLIP PlayerBlip;
@@ -676,10 +677,10 @@ struct GlobalPlayerBDEntry
SCR_BOOL CanSpawnGunVan;
};
static_assert(sizeof(GlobalPlayerBDEntry) == 467 * 8);
static_assert(sizeof(GlobalPlayerBDEntry) == 468 * 8);
struct GlobalPlayerBD
{
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<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
{
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);
#define NUM_CONTACTS 83
#define NUM_CONTACTS 85