mirror of
https://github.com/YimMenu/YimMenuV2.git
synced 2026-10-11 01:38:13 +08:00
feat(network): update nodes (#94)
This commit is contained in:
1 parent
f795a63f0d
commit
56f2b268ab
18 files changed
+397
-404
No files matched your search
@@ -1,16 +1,19 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/rage/vector.hpp"
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/rage/vector.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CDoorCreationDataNode : CProjectBaseSyncDataNode
|
||||
{
|
||||
public:
|
||||
uint32_t m_ModelHash; //0x00C0
|
||||
char pad_00C4[12]; //0x00C4
|
||||
rage::fvector3 m_Position; //0x00D0
|
||||
char pad_00E0[8]; //0x00E0
|
||||
bool m_IsScriptDoor; //0x00E8
|
||||
bool m_PlayerWantsControl; //0x00E9
|
||||
}; //Size: 0x00EC
|
||||
static_assert(sizeof(CDoorCreationDataNode) == 0xF0);
|
||||
uint32_t m_ModelHash; //0x00C0
|
||||
rage::fvector3 m_Position; //0x00D0
|
||||
float m_Heading; //0x00E0 -- added b3258
|
||||
uint32_t m_DoorSystemHash; //0x00E4 -- added b3258
|
||||
class CObject* m_Door; //0x00E8
|
||||
bool m_IsScriptDoor; //0x00F0
|
||||
bool m_PlayerWantsControl; //0x00F1
|
||||
bool m_ExistingDoorSystemEntry; //0x00F2 -- added b3258
|
||||
}; //Size: 0x0100
|
||||
static_assert(sizeof(CDoorCreationDataNode) == 0x100);
|
||||
@@ -1,17 +1,13 @@
|
||||
#pragma once
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/script/CGameScriptObjInfo.hpp"
|
||||
|
||||
#if 0
|
||||
#pragma pack(push, 4)
|
||||
struct CDoorScriptInfoDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
bool m_has_script_info;
|
||||
int m_pad;
|
||||
CGameScriptObjInfo m_script_info;
|
||||
uint32_t m_door_system_hash;
|
||||
bool m_existing_door_system_entry;
|
||||
bool m_HasScriptInfo; //0x00C0
|
||||
CGameScriptObjInfo m_ScriptInfo; //0x00C8
|
||||
uint32_t m_DoorSystemHash; //0x0118
|
||||
bool m_ExistingDoorSystemEntry; //0x011C
|
||||
};
|
||||
static_assert(sizeof(CDoorScriptInfoDataNode) == 0x120);
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
static_assert(sizeof(CDoorScriptInfoDataNode) == 0x120);
|
||||
@@ -1,22 +1,22 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
struct CDecorator
|
||||
{
|
||||
uint32_t m_Type;
|
||||
uint32_t m_NameHash;
|
||||
uint32_t m_Value;
|
||||
uint32_t m_Type;
|
||||
uint32_t m_NameHash;
|
||||
uint32_t m_Value;
|
||||
};
|
||||
|
||||
class CDynamicEntityGameStateDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
uint32_t m_InteriorIndex; // 0x00C0
|
||||
bool unk_00C4; // 0x00C4
|
||||
bool unk_00C5; // 0x00C5
|
||||
uint32_t m_DecorCount; // 0x00C8
|
||||
CDecorator m_Decors[10]; // 0x00CC
|
||||
char pad[8]; // TODO!
|
||||
uint32_t m_InteriorIndex; //0x00C0
|
||||
bool unk_00C4; //0x00C4
|
||||
bool unk_00C5; //0x00C5
|
||||
uint32_t m_DecorCount; //0x00C8
|
||||
CDecorator m_Decors[11]; //0x00CC
|
||||
};
|
||||
static_assert(sizeof(CDynamicEntityGameStateDataNode) == 0x150);
|
||||
@@ -1,13 +1,10 @@
|
||||
#pragma once
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/rage/vector.hpp"
|
||||
|
||||
#if 0
|
||||
#pragma pack(push, 4)
|
||||
class CEntityOrientationDataNode : CSyncDataNodeFrequent
|
||||
{
|
||||
public:
|
||||
rage::fmatrix44 m_eulers;
|
||||
}; //Size: 0x00EC
|
||||
static_assert(sizeof(CEntityOrientationDataNode) == 0x100);
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
rage::matrix44 m_Eulers;
|
||||
}; //Size: 0x0100
|
||||
static_assert(sizeof(CEntityOrientationDataNode) == 0x100);
|
||||
@@ -1,25 +1,26 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "netsync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "netsync/nodes/vehicle/CVehicleControlDataNode.hpp"
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/network/sync/nodes/vehicle/CVehicleControlDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 8)
|
||||
class CHeliControlDataNode : CVehicleControlDataNode
|
||||
{
|
||||
public:
|
||||
char m_pad[0x10]; // 0x130
|
||||
float m_yaw_control; // 0x140
|
||||
float m_pitch_control; // 0x144
|
||||
float m_roll_control; // 0x148
|
||||
float m_throttle_control; // 0x14C
|
||||
bool m_engine_off; // 0x150
|
||||
int m_landing_gear_state; // 0x154
|
||||
bool m_has_landing_gear; // 0x158
|
||||
bool m_has_vehicle_task; // 0x159
|
||||
bool m_is_thruster_model; // 0x15A
|
||||
float m_thruster_side_rcs_throttle; // 0x15C
|
||||
float m_thruster_throttle; // 0x160
|
||||
bool m_unk8; // 0x164
|
||||
void* m_CommonDataOpsVFT; //0x0130 NodeCommonDataOperations
|
||||
void* m_CommonDataOpsNode; //0x0138
|
||||
|
||||
float m_YawControl; //0x0140
|
||||
float m_PitchControl; //0x0144
|
||||
float m_RollControl; //0x0148
|
||||
float m_ThrottleControl; //0x014C
|
||||
bool m_EngineOff; //0x0150
|
||||
int m_LandingGearState; //0x0154
|
||||
bool m_HasLandingGear; //0x0158
|
||||
bool m_HasVehicleTask; //0x0159
|
||||
bool m_IsThrusterModel; //0x015A
|
||||
float m_ThrusterSideRcsThrottle; //0x015C
|
||||
float m_ThrusterThrottle; //0x0160
|
||||
bool m_Unk8; //0x0164
|
||||
};
|
||||
static_assert(sizeof(CHeliControlDataNode) == 0x168);
|
||||
#pragma pack(pop)
|
||||
static_assert(sizeof(CHeliControlDataNode) == 0x168);
|
||||
@@ -1,25 +1,26 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "netsync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "netsync/nodes/physical/CPhysicalHealthDataNode.hpp"
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/network/sync/nodes/physical/CPhysicalHealthDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 8)
|
||||
class CHeliHealthDataNode : CPhysicalHealthDataNode // intentionally private since the physical health node fields aren't serialized
|
||||
{
|
||||
public:
|
||||
char m_pad[0x10]; // 0xF0
|
||||
uint32_t m_main_rotor_health;
|
||||
uint32_t m_rear_rotor_health;
|
||||
bool m_can_tail_boom_break_off;
|
||||
bool m_is_tail_boom_broken;
|
||||
bool m_unk;
|
||||
bool m_disable_explode_from_body_damage;
|
||||
uint32_t m_body_health;
|
||||
uint32_t m_petrol_tank_health;
|
||||
uint32_t m_engine_health;
|
||||
float m_unk_deformation_level;
|
||||
float m_unk2_deformation_level;
|
||||
float m_unk3_deformation_level;
|
||||
void* m_CommonDataOpsVFT; //0x00E0 NodeCommonDataOperations
|
||||
void* m_CommonDataOpsNode; //0x00E8
|
||||
|
||||
uint32_t m_MainRotorHealth; //0x00F0
|
||||
uint32_t m_RearRotorHealth; //0x00F4
|
||||
bool m_CanTailBoomBreakOff; //0x00F8
|
||||
bool m_IsTailBoomBroken; //0x00F9
|
||||
bool m_Unk; //0x00FA
|
||||
bool m_DisableExplodeFromBodyDamage; //0x00FB
|
||||
uint32_t m_BodyHealth; //0x00FC
|
||||
uint32_t m_PetrolTankHealth; //0x0100
|
||||
uint32_t m_EngineHealth; //0x0104
|
||||
float m_UnkDeformationLevel; //0x0108
|
||||
float m_Unk2DeformationLevel; //0x010C
|
||||
float m_Unk3DeformationLevel; //0x0110
|
||||
};
|
||||
static_assert(sizeof(CHeliHealthDataNode) == 0x118);
|
||||
#pragma pack(pop)
|
||||
static_assert(sizeof(CHeliHealthDataNode) == 0x118);
|
||||
@@ -1,76 +1,78 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CPedGameStateDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
bool m_WeaponComponentSomething[12]; //0x0C0
|
||||
uint32_t m_WeaponComponentHash[12]; //0x0CC
|
||||
uint32_t m_GadgetHash[3]; //0x0F8
|
||||
uint32_t unk_0104; // 0x0104
|
||||
uint32_t unk_0108; // 0x0108
|
||||
uint32_t unk_010C; // 0x010C
|
||||
float unk_0110; // 0x0110
|
||||
float unk_0114; // 0x0114
|
||||
float unk_0118; // 0x0118
|
||||
bool unk_011C; // 0x011C
|
||||
char pad_011D[3]; //0x011D
|
||||
uint32_t m_ArrestState; //0x0120
|
||||
uint32_t m_DeathState; //0x0124
|
||||
uint32_t m_WeaponHash; //0x0128
|
||||
uint32_t m_NumWeaponComponents; //0x012C
|
||||
uint32_t m_NumEquippedGadgets; //0x0130
|
||||
uint32_t m_VehicleSeat; //0x0134
|
||||
uint32_t m_ActionModeOverride; //0x0138
|
||||
uint32_t unk_013C; // 0x013C
|
||||
uint16_t m_VehicleId; //0x0140
|
||||
uint16_t m_MountId; //0x0142
|
||||
uint16_t m_CustodianId; //0x0144
|
||||
uint16_t unk_0146; // 0x0146
|
||||
uint8_t new_014C;
|
||||
bool m_TintIndex; //0x0148
|
||||
char pad_0149; //0x0149
|
||||
uint8_t unk_014A; // 0x014A
|
||||
bool m_IsHandcuffed; //0x014B
|
||||
bool m_CanPerformArrest; //0x014C
|
||||
bool m_CanPerformUncuff; //0x014D
|
||||
bool m_CanBeArrested; //0x014E
|
||||
bool m_IsInCustody; //0x014F
|
||||
char pad_0150; //0x0150
|
||||
bool m_WeaponExists; //0x0151
|
||||
bool m_WeaponVisible; //0x0152
|
||||
bool m_WeaponHasAmmo; //0x0153
|
||||
bool m_WeaponAttachLeft; //0x0154
|
||||
char pad_0155; //0x0155
|
||||
bool m_InSeat; //0x0156
|
||||
bool m_InVehicle; //0x0157
|
||||
bool m_OnMount; //0x0158
|
||||
bool m_HasCustodianOrArrestFlags; //0x0159
|
||||
char pad_015A; //0x015A
|
||||
bool m_ActionModeEnabled; //0x015B
|
||||
bool m_StealthModeEnabled; //0x015C
|
||||
bool unk_015D; // 0x015D
|
||||
bool unk_015E; // 0x015E
|
||||
bool unk_015F; // 0x015F
|
||||
bool unk_0160; // 0x0160
|
||||
bool unk_0161; // 0x0161
|
||||
bool unk_0162; // 0x0162
|
||||
bool unk_0163; // 0x0163
|
||||
bool unk_0164; // 0x0164
|
||||
bool unk_0165; // 0x0165
|
||||
bool unk_0166; // 0x0166
|
||||
bool unk_0167; // 0x0167
|
||||
bool unk_0168; // 0x0168
|
||||
bool unk_0169; // 0x0169
|
||||
bool unk_016A; // 0x016A
|
||||
bool unk_016B; // 0x016B
|
||||
bool unk_016C; // 0x016C
|
||||
bool unk_016D; // 0x016D
|
||||
bool unk_016E; // 0x016E
|
||||
bool unk_016F; // 0x016F
|
||||
bool unk_0170; // 0x0170
|
||||
bool unk_0171; // 0x0171
|
||||
bool unk_0172; // 0x0172
|
||||
}; //Size: 0x0174
|
||||
static_assert(sizeof(CPedGameStateDataNode) == 0x178);
|
||||
uint8_t m_WeaponComponentSomething[12]; //0x00C0
|
||||
uint32_t m_WeaponComponentHash[12]; //0x00CC
|
||||
uint32_t m_GadgetHash[3]; //0x00FC
|
||||
uint32_t unk_0108; //0x0108
|
||||
uint32_t unk_010C; //0x010C
|
||||
uint32_t unk_0110; //0x0110
|
||||
float unk_0114; //0x0114
|
||||
float unk_0118; //0x0118
|
||||
float unk_011C; //0x011C
|
||||
bool unk_0120; //0x0120
|
||||
uint32_t m_ArrestState; //0x0124
|
||||
uint32_t m_DeathState; //0x0128
|
||||
uint32_t m_WeaponHash; //0x012C
|
||||
uint32_t m_NumWeaponComponents; //0x0130
|
||||
uint32_t m_NumEquippedGadgets; //0x0134
|
||||
uint32_t m_VehicleSeat; //0x0138
|
||||
uint32_t m_ActionModeOverride; //0x013C
|
||||
uint32_t unk_0140; //0x0140
|
||||
uint16_t m_VehicleId; //0x0144
|
||||
uint16_t m_MountId; //0x0146
|
||||
uint16_t m_CustodianId; //0x0148
|
||||
uint16_t unk_014A; //0x014A
|
||||
uint8_t new_014C; //0x014C -- added b3258
|
||||
uint8_t m_TintIndex; //0x014D
|
||||
char pad_014E; //0x014E
|
||||
uint8_t unk_014F; //0x014F
|
||||
bool m_IsHandcuffed; //0x0150
|
||||
bool m_CanPerformArrest; //0x0151
|
||||
bool m_CanPerformUncuff; //0x0152
|
||||
bool m_CanBeArrested; //0x0153
|
||||
bool m_IsInCustody; //0x0154
|
||||
char pad_0155; //0x0155
|
||||
bool m_WeaponExists; //0x0156
|
||||
bool m_WeaponVisible; //0x0157
|
||||
bool m_WeaponHasAmmo; //0x0158
|
||||
bool m_WeaponAttachLeft; //0x0159
|
||||
char pad_015A; //0x015A
|
||||
bool m_InSeat; //0x015B
|
||||
bool m_InVehicle; //0x015C
|
||||
bool m_OnMount; //0x015D
|
||||
bool m_HasCustodianOrArrestFlags; //0x015E
|
||||
char pad_015F; //0x015F
|
||||
bool m_ActionModeEnabled; //0x0160
|
||||
bool m_StealthModeEnabled; //0x0161
|
||||
bool unk_0162; //0x0162
|
||||
bool unk_0163; //0x0163
|
||||
bool unk_0164; //0x0164
|
||||
bool unk_0165; //0x0165
|
||||
bool unk_0166; //0x0166
|
||||
bool unk_0167; //0x0167
|
||||
bool unk_0168; //0x0168
|
||||
bool unk_0169; //0x0169
|
||||
bool unk_016A; //0x016A
|
||||
bool unk_016B; //0x016B
|
||||
bool unk_016C; //0x016C
|
||||
bool unk_016D; //0x016D
|
||||
bool unk_016E; //0x016E
|
||||
bool unk_016F; //0x016F
|
||||
bool unk_0170; //0x0170
|
||||
bool unk_0171; //0x0171
|
||||
bool unk_0172; //0x0172
|
||||
bool unk_0173; //0x0173
|
||||
bool unk_0174; //0x0174
|
||||
bool unk_0175; //0x0175
|
||||
bool unk_0176; //0x0176
|
||||
bool unk_0177; //0x0177
|
||||
bool m_0x178; //0x0178 -- added b3407
|
||||
bool m_0x179; //0x0179 -- added b3407
|
||||
}; //Size: 0x0180
|
||||
static_assert(sizeof(CPedGameStateDataNode) == 0x180);
|
||||
@@ -1,22 +1,21 @@
|
||||
#pragma once
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
// todo?
|
||||
#pragma pack(push, 4)
|
||||
class CPedInventoryDataNode
|
||||
class CPedInventoryDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
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;
|
||||
char pad_0000[5280]; //0x00C0
|
||||
uint32_t m_Items[110]; //0x1560
|
||||
uint32_t m_NumItems; //0x1718
|
||||
uint32_t m_Ammos[65]; //0x171C
|
||||
uint32_t m_AmmoQuantities[65]; //0x1820
|
||||
uint32_t m_NumAmmos; //0x1924
|
||||
uint8_t unk_1680[110]; //0x1928
|
||||
uint8_t unk_16E9[110]; //0x1996
|
||||
char pad_1680[1320]; //0x1A04
|
||||
bool m_InfiniteAmmos[65]; //0x1F2C
|
||||
bool m_AmmoAllInfinite; //0x1F6D
|
||||
};
|
||||
static_assert(sizeof(CPedInventoryDataNode) == 0x1E24);
|
||||
#pragma pack(pop)
|
||||
static_assert(sizeof(CPedInventoryDataNode) == 0x1F70);
|
||||
@@ -4,9 +4,7 @@
|
||||
class CPedOrientationDataNode : CSyncDataNodeFrequent
|
||||
{
|
||||
public:
|
||||
bool m_HasDesiredHeadingX; //000C1
|
||||
bool m_HasDesiredHeadingY; //000C2
|
||||
float m_DesiredHeadingX; //0x00C4
|
||||
float m_DesiredHeadingY; //0x00C8
|
||||
float m_Heading; //0x00C0
|
||||
float m_DesiredHeading; //0x00C4
|
||||
};
|
||||
static_assert(sizeof(CPedOrientationDataNode) == 0xD0);
|
||||
static_assert(sizeof(CPedOrientationDataNode) == 0xC8);
|
||||
@@ -1,34 +1,35 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CPhysicalScriptGameStateDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
bool m_godmode;
|
||||
bool m_dont_load_collision;
|
||||
bool m_freeze_on_collision_load;
|
||||
bool m_only_damaged_by_player;
|
||||
bool m_bullet_proof;
|
||||
bool m_fire_proof;
|
||||
bool m_explosion_proof;
|
||||
bool m_collision_proof;
|
||||
bool m_melee_proof;
|
||||
bool m_cannot_be_damaged_by_relationship_group;
|
||||
bool m_can_only_be_damaged_by_relationship_group;
|
||||
bool m_smoke_proof;
|
||||
bool m_steam_proof;
|
||||
bool m_can_only_be_damaged_by_participants;
|
||||
bool m_dont_reset_proofs_on_cleanup_mission;
|
||||
bool m_no_reassign;
|
||||
bool m_pass_control_in_tutorial;
|
||||
bool m_visible_in_cutscene;
|
||||
bool m_visible_in_cutscene_remain_hack;
|
||||
bool m_pickup_by_cargobob_disabled;
|
||||
uint32_t m_relationship_group;
|
||||
uint32_t m_always_cloned_for_players;
|
||||
bool m_modified_max_speed;
|
||||
bool m_trigger_damage_event_for_zero_damage;
|
||||
float m_max_speed;
|
||||
bool m_Godmode; //0x00C0
|
||||
bool m_DontLoadCollision; //0x00C1
|
||||
bool m_FreezeOnCollisionLoad; //0x00C2
|
||||
bool m_OnlyDamagedByPlayer; //0x00C3
|
||||
bool m_BulletProof; //0x00C4
|
||||
bool m_FireProof; //0x00C5
|
||||
bool m_ExplosionProof; //0x00C6
|
||||
bool m_CollisionProof; //0x00C7
|
||||
bool m_MeleeProof; //0x00C8
|
||||
bool m_CannotBeDamagedByRelationshipGroup; //0x00C9
|
||||
bool m_CanOnlyBeDamagedByRelationshipGroup; //0x00CA
|
||||
bool m_SmokeProof; //0x00CB
|
||||
bool m_SteamProof; //0x00CC
|
||||
bool m_CanOnlyBeDamagedByParticipants; //0x00CD
|
||||
bool m_DontResetProofsOnCleanupMission; //0x00CE
|
||||
bool m_NoReassign; //0x00CF
|
||||
bool m_PassControlInTutorial; //0x00D0
|
||||
bool m_VisibleInCutscene; //0x00D1
|
||||
bool m_VisibleInCutsceneRemainHack; //0x00D2
|
||||
bool m_PickupByCargobobDisabled; //0x00D3
|
||||
uint32_t m_RelationshipGroup; //0x00D4
|
||||
uint32_t m_AlwaysClonedForPlayers; //0x00D8
|
||||
bool m_ModifiedMaxSpeed; //0x00DC
|
||||
bool m_TriggerDamageEventForZeroDamage; //0x00DD
|
||||
float m_MaxSpeed; //0x00E0
|
||||
};
|
||||
static_assert(sizeof(CPhysicalScriptGameStateDataNode) == 0xE8);
|
||||
@@ -1,25 +1,35 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/rage/vector.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CPlayerCameraDataNode : CSyncDataNodeFrequent
|
||||
{
|
||||
public:
|
||||
float m_FreeCamPosX; //0x00C0
|
||||
float m_FreeCamPosY; //0x00C4
|
||||
float m_FreeCamPosZ; //0x00C8
|
||||
char pad_00CC[4]; //0x00CC
|
||||
float m_LockOnTargetOffsetX; //0x00D0
|
||||
float m_LockOnTargetOffsetY; //0x00D4
|
||||
char pad_00D8[40]; //0x00D8
|
||||
float m_CameraX; //0x0100
|
||||
float m_CameraZ; //0x0104
|
||||
int16_t m_FreeAimLockedOnTarget; //0x0108
|
||||
bool m_FreeCam; //0x010A
|
||||
char pad_010B[2]; //0x010B
|
||||
bool m_HasPositionOffset; //0x010D
|
||||
char pad_010E[1]; //0x010E
|
||||
bool m_IsLongRangeTarget; //0x010F
|
||||
char pad_0110[48]; //0x0110
|
||||
}; //Size: 0x0140
|
||||
static_assert(sizeof(CPlayerCameraDataNode) == 0x140);
|
||||
rage::fvector3 m_FreeCamPos; //0x00C0
|
||||
rage::fvector3 m_TargetOffset; //0x00D0
|
||||
rage::fvector3 m_LockOnTargetOffset; //0x00E0
|
||||
rage::fvector3 m_0xF0; //0x00F0
|
||||
float m_CameraX; //0x0100
|
||||
float m_CameraZ; //0x0104
|
||||
uint16_t m_FreeAimLockedOnTarget; //0x0108
|
||||
bool m_FreeCam; //0x010A
|
||||
bool m_0x10B; //0x010B
|
||||
bool m_0x10C; //0x010C
|
||||
bool m_HasPositionOffset; //0x010D
|
||||
bool m_0x10E; //0x010E
|
||||
bool m_IsLongRangeTarget; //0x010F
|
||||
bool m_0x110; //0x0110
|
||||
bool m_0x111; //0x0111
|
||||
bool m_0x112; //0x0112
|
||||
bool m_0x113; //0x0113
|
||||
bool m_0x114; //0x0114
|
||||
bool m_0x115; //0x0115
|
||||
bool m_0x116; //0x0116
|
||||
bool m_0x117; //0x0117
|
||||
bool m_0x118; //0x0118
|
||||
bool m_0x119; //0x0119
|
||||
bool m_0x11A; //0x011A
|
||||
};
|
||||
static_assert(sizeof(CPlayerCameraDataNode) == 0x120);
|
||||
@@ -1,17 +1,17 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CPlayerCreationDataNode : CProjectBaseSyncDataNode
|
||||
{
|
||||
public:
|
||||
uint32_t m_ModelHash; //0x00C0
|
||||
uint32_t m_NumScars; //0x00C4
|
||||
char unk_struct_0xC8[192]; //0x00C8
|
||||
uint32_t unk_0188; //0x0188
|
||||
char pad_018C[4]; //0x018C
|
||||
char m_scar_struct[176]; //0x0190
|
||||
bool unk_0240; //0x0240
|
||||
char pad_0241[19]; //0x0241
|
||||
}; //Size: 0x0254
|
||||
static_assert(sizeof(CPlayerCreationDataNode) == 0x258);
|
||||
uint32_t m_ModelHash; //0x00C0
|
||||
uint32_t m_NumUnk; //0x00C4
|
||||
char unk_struct_0xC8[192]; //0x00C8
|
||||
uint32_t m_NumScars; //0x0188
|
||||
char m_scar_struct[180]; //0x0190
|
||||
bool unk_0240; //0x0240
|
||||
char pad_0241[15]; //0x0241
|
||||
};
|
||||
static_assert(sizeof(CPlayerCreationDataNode) == 0x250);
|
||||
@@ -1,145 +1,134 @@
|
||||
#pragma once
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/rage/vector.hpp"
|
||||
|
||||
class CPlayerGameStateDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
uint32_t m_player_state; //0x00C0
|
||||
bool m_controls_disabled_by_script; //0x00C4
|
||||
bool m_is_max_armor_and_health_default; //0x00C5
|
||||
bool unk_000C6; //0x00C6
|
||||
bool m_is_spectating; //0x00C7
|
||||
bool m_is_antagonistic_to_another_player; //0x00C8
|
||||
bool m_never_target; //0x00C9
|
||||
bool m_use_kinematic_physics; //0x00CA
|
||||
bool m_has_tutorial_data; //0x00CB
|
||||
bool m_pending_tutorial_change; //0x00CC
|
||||
bool unk_00CD; //0x00CD
|
||||
bool m_respawning; //0x00CE
|
||||
bool m_will_jack_any_player; //0x00CF
|
||||
bool m_will_jack_wanted_players; //0x00D0
|
||||
bool m_dont_drag_from_car; //0x00D1
|
||||
bool m_random_peds_flee; //0x00D2
|
||||
bool m_every_ped_back_away; //0x00D3
|
||||
bool m_has_microphone; //0x00D4
|
||||
bool m_is_invincible; //0x00D5
|
||||
bool unk_00D6; //0x00D6
|
||||
bool unk_00D7; //0x00D7
|
||||
bool m_seatbelt; //0x00D8
|
||||
bool unk_00D9; //0x00D9
|
||||
bool m_bullet_proof; //0x00DA
|
||||
bool m_fire_proof; //0x00DB
|
||||
bool m_explosion_proof; //0x00DC
|
||||
bool m_collision_proof; //0x00DD
|
||||
bool m_melee_proof; //0x00DE
|
||||
bool m_water_proof; //0x00DF
|
||||
bool m_steam_proof; //0x00E0
|
||||
bool unk_00E1; //0x00E1
|
||||
bool unk_00E2; //0x00E2
|
||||
bool unk_00E3; //0x00E3
|
||||
bool unk_00E4; //0x00E4
|
||||
bool unk_00E5; //0x00E5
|
||||
bool unk_00E6; //0x00E6
|
||||
bool unk_00E7; //0x00E7
|
||||
bool unk_00E8; //0x00E8
|
||||
bool unk_00E9; //0x00E9
|
||||
bool unk_00EA; //0x00EA
|
||||
bool unk_00EB; //0x00EB
|
||||
bool unk_00EC; //0x00EC
|
||||
bool unk_00ED; //0x00ED
|
||||
bool unk_00EE; //0x00EE
|
||||
bool unk_00EF; //0x00EF
|
||||
bool unk_00F0; //0x00F0
|
||||
bool unk_00F1; //0x00F1
|
||||
bool unk_00F2; //0x00F2
|
||||
bool unk_00F3; //0x00F3
|
||||
bool unk_00F4; //0x00F4
|
||||
bool unk_00F5; //0x00F5
|
||||
bool unk_00F6; //0x00F6
|
||||
bool unk_00F7; //0x00F7
|
||||
bool unk_00F8; //0x00F8
|
||||
bool unk_00F9; //0x00F9
|
||||
bool unk_00FA; //0x00FA
|
||||
bool unk_00FB; //0x00FB
|
||||
uint32_t unk_00FC; //0x00FC
|
||||
uint32_t m_mobile_ring_state; //0x0100
|
||||
int32_t m_player_team; //0x0104
|
||||
float m_air_drag_multiplier; //0x0108
|
||||
uint32_t m_max_health; //0x010C
|
||||
uint32_t m_max_armor; //0x0110
|
||||
uint32_t m_jack_speed; //0x0114
|
||||
uint16_t m_player_is_targetable_by_team; //0x0118
|
||||
uint32_t m_override_receive_chat; //0x011C
|
||||
uint32_t m_override_send_chat; //0x0120
|
||||
bool unk_0124; //0x0124
|
||||
bool unk_0125; //0x0125
|
||||
bool unk_0126; //0x0126
|
||||
bool unk_0127; //0x0127
|
||||
uint16_t m_spectating_net_id; //0x0128
|
||||
uint8_t m_antagonistic_to_player_id; //0x012C
|
||||
uint8_t m_tutorial_index; //0x012B
|
||||
uint8_t m_tutorial_instance_id; //0x012C
|
||||
char pad_012D[2]; //0x012D
|
||||
float m_microphone_volume; //0x0130
|
||||
uint32_t m_voice_channel; //0x0134
|
||||
bool m_is_overriding_voice_proximity; //0x0138
|
||||
char pad_0139[7]; //0x0139
|
||||
float m_voice_proximity_x; //0x0140
|
||||
float m_voice_proximity_y; //0x0144
|
||||
float m_voice_proximity_z; //0x0148
|
||||
float m_voice_proximity_radius_maybe; //0x014C
|
||||
uint32_t unk_0150; //0x0150
|
||||
uint32_t m_vehicle_weapon_index; //0x0154
|
||||
bool m_has_vehicle_weapon_index; //0x0158
|
||||
uint32_t m_decor_count; //0x015C
|
||||
uint32_t m_decor_type[3]; // 0x0160
|
||||
uint32_t m_decor_value[3]; // 0x016C
|
||||
uint32_t m_decor_name_hash[3]; // 0x0178
|
||||
bool m_friendly_fire_allowed; //0x0184
|
||||
bool unk_0185; //0x0185
|
||||
uint8_t m_current_garage_instance_index; //0x0186
|
||||
uint8_t m_current_property_id; //0x0187
|
||||
uint8_t unk_0188; //0x0188
|
||||
uint8_t m_city_density; //0x0189
|
||||
bool m_battle_aware; //0x018A
|
||||
bool m_vehicle_jump_down; //0x018B
|
||||
float m_weapon_defence_modifier; //0x018C
|
||||
float m_weapon_defence_modifier_2; //0x0190
|
||||
bool m_is_overriding_population_control_sphere; //0x0194
|
||||
char pad_0195[11]; //0x0195
|
||||
float m_population_control_sphere_x; //0x01A0
|
||||
float m_population_control_sphere_y; //0x01A4
|
||||
float m_population_control_sphere_z; //0x01A8
|
||||
uint16_t unk_01AC; //0x01AC
|
||||
uint16_t unk_01AE; //0x01AE
|
||||
uint16_t unk_01B0; //0x01B0
|
||||
bool new_01B2;
|
||||
bool new_01B3;
|
||||
bool pad_01B2; //0x01B2
|
||||
bool unk_01B3; //0x01B3
|
||||
bool m_no_collision; //0x01B4
|
||||
bool unk_01B5; //0x01B5
|
||||
bool unk_01B6; //0x01B6
|
||||
bool m_super_jump; //0x01B7
|
||||
bool unk_01B8; //0x01B8
|
||||
bool unk_01B9; //0x01B9
|
||||
uint16_t unk_01BA; //0x01BA
|
||||
uint32_t unk_01BC; //0x01BC
|
||||
float unk_01C0; //0x01C0
|
||||
float m_weapon_damage_modifier; //0x01C4
|
||||
float m_melee_weapon_damage_modifier; //0x01C8
|
||||
float unk_01CC; //0x01CC
|
||||
bool unk_01D0; //0x01D0
|
||||
char pad_01D1[11]; //0x01D1
|
||||
float unk_01E0; //0x01E0
|
||||
float unk_01E4; //0x01E4
|
||||
float unk_01E8; //0x01E8
|
||||
uint32_t unk_01EC; //0x01EC
|
||||
uint8_t unk_01F0; //0x01F0
|
||||
uint8_t unk_01F1; //0x01F1
|
||||
bool unk_01F2; //0x01F2
|
||||
uint8_t unk_01F3; //0x01F3
|
||||
bool unk_01F4; //0x01F4
|
||||
bool unk_01F5; //0x01F5
|
||||
}; //Size: 0x01F8
|
||||
static_assert(sizeof(CPlayerGameStateDataNode) == 0x1F8);
|
||||
uint32_t m_PlayerState; //0x00C0
|
||||
bool m_ControlsDisabledByScript; //0x00C4
|
||||
bool m_IsMaxArmorAndHealthDefault; //0x00C5
|
||||
bool unk_000C6; //0x00C6
|
||||
bool m_IsSpectating; //0x00C7
|
||||
bool m_IsAntagonisticToAnotherPlayer; //0x00C8
|
||||
bool m_NeverTarget; //0x00C9
|
||||
bool m_UseKinematicPhysics; //0x00CA
|
||||
bool m_HasTutorialData; //0x00CB
|
||||
bool m_PendingTutorialChange; //0x00CC
|
||||
bool unk_00CD; //0x00CD
|
||||
bool m_Respawning; //0x00CE
|
||||
bool m_WillJackAnyPlayer; //0x00CF
|
||||
bool m_WillJackWantedPlayers; //0x00D0
|
||||
bool m_DontDragFromCar; //0x00D1
|
||||
bool m_RandomPedsFlee; //0x00D2
|
||||
bool m_EveryPedBackAway; //0x00D3
|
||||
bool m_HasMicrophone; //0x00D4
|
||||
bool m_IsInvincible; //0x00D5
|
||||
bool unk_00D6; //0x00D6
|
||||
bool unk_00D7; //0x00D7
|
||||
bool m_Seatbelt; //0x00D8
|
||||
bool unk_00D9; //0x00D9
|
||||
bool m_BulletProof; //0x00DA
|
||||
bool m_FireProof; //0x00DB
|
||||
bool m_ExplosionProof; //0x00DC
|
||||
bool m_CollisionProof; //0x00DD
|
||||
bool m_MeleeProof; //0x00DE
|
||||
bool m_WaterProof; //0x00DF
|
||||
bool m_SteamProof; //0x00E0
|
||||
bool unk_00E1; //0x00E1
|
||||
bool unk_00E2; //0x00E2
|
||||
bool unk_00E3; //0x00E3
|
||||
bool unk_00E4; //0x00E4
|
||||
bool unk_00E5; //0x00E5
|
||||
bool unk_00E6; //0x00E6
|
||||
bool unk_00E7; //0x00E7
|
||||
bool unk_00E8; //0x00E8
|
||||
bool unk_00E9; //0x00E9
|
||||
bool unk_00EA; //0x00EA
|
||||
bool unk_00EB; //0x00EB
|
||||
bool unk_00EC; //0x00EC
|
||||
bool unk_00ED; //0x00ED
|
||||
bool unk_00EE; //0x00EE
|
||||
bool unk_00EF; //0x00EF
|
||||
bool unk_00F0; //0x00F0
|
||||
bool unk_00F1; //0x00F1
|
||||
bool unk_00F2; //0x00F2
|
||||
bool unk_00F3; //0x00F3
|
||||
bool unk_00F4; //0x00F4
|
||||
bool unk_00F5; //0x00F5
|
||||
bool unk_00F6; //0x00F6
|
||||
bool unk_00F7; //0x00F7
|
||||
bool unk_00F8; //0x00F8
|
||||
bool unk_00F9; //0x00F9
|
||||
bool unk_00FA; //0x00FA
|
||||
bool unk_00FB; //0x00FB
|
||||
uint32_t unk_00FC; //0x00FC
|
||||
uint32_t m_MobileRingState; //0x0100
|
||||
int32_t m_PlayerTeam; //0x0104
|
||||
float m_AirDragMultiplier; //0x0108
|
||||
uint32_t m_MaxHealth; //0x010C
|
||||
uint32_t m_MaxArmor; //0x0110
|
||||
uint32_t m_JackSpeed; //0x0114
|
||||
uint16_t m_PlayerIsTargetableByTeam; //0x0118
|
||||
uint32_t m_OverrideReceiveChat; //0x011C
|
||||
uint32_t m_OverrideSendChat; //0x0120
|
||||
bool unk_0124; //0x0124
|
||||
bool unk_0125; //0x0125
|
||||
bool unk_0126; //0x0126
|
||||
bool unk_0127; //0x0127
|
||||
uint16_t m_SpectatingNetId; //0x0128
|
||||
uint8_t m_AntagonisticToPlayerId; //0x012C
|
||||
uint8_t m_TutorialIndex; //0x012B
|
||||
uint8_t m_TutorialInstanceId; //0x012C
|
||||
char pad_012D[2]; //0x012D
|
||||
float m_MicrophoneVolume; //0x0130
|
||||
uint32_t m_VoiceChannel; //0x0134
|
||||
bool m_IsOverridingVoiceProximity; //0x0138
|
||||
char pad_0139[7]; //0x0139
|
||||
rage::fvector3 m_VoiceProximity; //0x0140
|
||||
uint32_t unk_0150; //0x0150
|
||||
uint32_t m_VehicleWeaponIndex; //0x0154
|
||||
bool m_HasVehicleWeaponIndex; //0x0158
|
||||
uint32_t m_DecorCount; //0x015C
|
||||
uint32_t m_DecorType[3]; //0x0160
|
||||
uint32_t m_DecorValue[3]; //0x016C
|
||||
uint32_t m_DecorNameHash[3]; //0x0178
|
||||
bool m_FriendlyFireAllowed; //0x0184
|
||||
bool unk_0185; //0x0185
|
||||
uint8_t m_CurrentGarageInstanceIndex; //0x0186
|
||||
uint8_t m_CurrentPropertyId; //0x0187
|
||||
uint8_t unk_0188; //0x0188
|
||||
uint8_t m_CityDensity; //0x0189
|
||||
bool m_BattleAware; //0x018A
|
||||
bool m_VehicleJumpDown; //0x018B
|
||||
float m_WeaponDefenceModifier; //0x018C
|
||||
float m_WeaponDefenceModifier_2; //0x0190
|
||||
bool m_IsOverridingPopulationControlSphere; //0x0194
|
||||
rage::fvector3 m_PopulationControlSphere; //0x01A0
|
||||
uint16_t unk_01B0; //0x01B0
|
||||
bool new_01B2; //0x01B2
|
||||
bool new_01B3; //0x01B3
|
||||
bool pad_01B2; //0x01B4
|
||||
bool unk_01B3; //0x01B5
|
||||
bool m_NoCollision; //0x01B6
|
||||
bool unk_01B5; //0x01B7
|
||||
bool unk_01B6; //0x01B8
|
||||
bool m_SuperJump; //0x01B9
|
||||
bool unk_01B8; //0x01BA
|
||||
bool unk_01B9; //0x01BB
|
||||
uint16_t unk_01BA; //0x01BC
|
||||
uint32_t unk_01BC; //0x01C0
|
||||
float unk_01C0; //0x01C4
|
||||
float m_WeaponDamageModifier; //0x01C8
|
||||
float m_MeleeWeaponDamageModifier; //0x01CC
|
||||
float unk_01CC; //0x01D0
|
||||
bool unk_01D0; //0x01D4
|
||||
rage::fvector3 unk_01E0; //0x01E0
|
||||
uint8_t unk_01F0; //0x01F0
|
||||
uint8_t unk_01F1; //0x01F1
|
||||
bool unk_01F2; //0x01F2
|
||||
uint8_t unk_01F3; //0x01F3
|
||||
bool unk_01F4; //0x01F4
|
||||
bool unk_01F5; //0x01F5
|
||||
};
|
||||
static_assert(sizeof(CPlayerGameStateDataNode) == 0x200);
|
||||
@@ -10,7 +10,6 @@ struct CGroupMember
|
||||
};
|
||||
static_assert(sizeof(CGroupMember) == 0x10);
|
||||
|
||||
// this node is kinda sus, need to check if the fields are in the right order
|
||||
class CPlayerPedGroupDataNode : CSyncDataNodeInfrequent
|
||||
{
|
||||
public:
|
||||
@@ -22,10 +21,8 @@ public:
|
||||
float m_MaxSeparation; // 0x160
|
||||
char m_unused3[0xC]; // 0x164
|
||||
int m_PopType; // 0x170
|
||||
uint8_t m_0x174; // 0x174
|
||||
bool m_NeedsGroupEventScan; // 0x175
|
||||
char m_unused4[6]; // 0x176
|
||||
int m_FormationType; // 0x17C
|
||||
float m_FormationDistance; // 0x180
|
||||
char m_unused5[0xC]; // 0x184
|
||||
char m_0x176[18]; // 0x176
|
||||
};
|
||||
static_assert(sizeof(CPlayerPedGroupDataNode) == 0x190);
|
||||
static_assert(sizeof(CPlayerPedGroupDataNode) == 0x188);
|
||||
@@ -1,19 +1,20 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CVehicleCreationDataNode : CProjectBaseSyncDataNode
|
||||
{
|
||||
public:
|
||||
uint32_t m_PopType; //0x00C0
|
||||
uint32_t m_RandomSeed; //0x00C4
|
||||
uint32_t m_ModelHash; //0x00C8
|
||||
uint32_t m_VehicleStatus; //0x00CC
|
||||
uint32_t m_MaxHealth; //0x00D0
|
||||
uint32_t m_CreationToken; //0x00D4
|
||||
bool m_CarBudget; //0x00D8
|
||||
bool m_NeedsToBeHotwired; //0x00D9
|
||||
bool m_TiresDontBurst; //0x00DA
|
||||
char pad_00DB[165]; //0x00DB
|
||||
}; //Size: 0x0180
|
||||
static_assert(sizeof(CVehicleCreationDataNode) == 0x180);
|
||||
uint32_t m_PopType; //0x00C0
|
||||
uint32_t m_RandomSeed; //0x00C4
|
||||
uint32_t m_ModelHash; //0x00C8
|
||||
uint32_t m_VehicleStatus; //0x00CC
|
||||
uint32_t m_MaxHealth; //0x00D0
|
||||
uint32_t m_CreationToken; //0x00D4
|
||||
bool m_CarBudget; //0x00D8
|
||||
bool m_NeedsToBeHotwired; //0x00D9
|
||||
bool m_TiresDontBurst; //0x00DA
|
||||
bool m_0xDB; //0x00DB
|
||||
};
|
||||
static_assert(sizeof(CVehicleCreationDataNode) == 0xE0);
|
||||
@@ -1,35 +1,33 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "types/network/sync/CProjectBaseSyncDataNode.hpp"
|
||||
#include "types/rage/vector.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
enum eVehicleGadgetType : uint32_t
|
||||
{
|
||||
FORKS,
|
||||
SEARCH_LIGHT,
|
||||
PICK_UP_ROPE_WITH_HOOK,
|
||||
PICK_UP_ROPE_WITH_MAGNET,
|
||||
DIGGER_ARM,
|
||||
HANDLER_FRAME,
|
||||
BOMB_BAY,
|
||||
FORKS,
|
||||
SEARCH_LIGHT,
|
||||
PICK_UP_ROPE_WITH_HOOK,
|
||||
PICK_UP_ROPE_WITH_MAGNET,
|
||||
DIGGER_ARM,
|
||||
HANDLER_FRAME,
|
||||
BOMB_BAY,
|
||||
};
|
||||
|
||||
struct CVehicleGadgetData
|
||||
{
|
||||
eVehicleGadgetType m_Type; //0x0000
|
||||
uint8_t m_Data[94]; //0x0004
|
||||
eVehicleGadgetType m_Type; //0x0000
|
||||
uint8_t m_Data[95]; //0x0004
|
||||
}; //Size: 0x64
|
||||
static_assert(sizeof(CVehicleGadgetData) == 0x64);
|
||||
|
||||
class CVehicleGadgetDataNode : CSyncDataNodeFrequent
|
||||
{
|
||||
public:
|
||||
bool m_HasParentOffset; //0x00C0
|
||||
char pad_00C1[15]; //0x00C1
|
||||
uint32_t m_ParentOffsetX; //0x00D0
|
||||
uint32_t m_ParentOffsetY; //0x00D4
|
||||
uint32_t m_ParentOffsetZ; //0x00D8
|
||||
uint32_t m_ParentOffsetW; //0x00DC
|
||||
uint32_t m_GadgetCount; //0x00E0
|
||||
CVehicleGadgetData m_GadgetData[2]; //0x00E4
|
||||
}; //Size: 0x01AC
|
||||
CVehicleGadgetData m_GadgetData[2]; //0x00C0
|
||||
rage::fvector3 m_ParentOffset; //0x0190
|
||||
uint32_t m_GadgetCount; //0x01A0
|
||||
bool m_HasParentOffset; //0x01A4
|
||||
};
|
||||
static_assert(sizeof(CVehicleGadgetDataNode) == 0x1B0);
|
||||
@@ -14,6 +14,6 @@ public:
|
||||
std::int32_t m_VelocityX;
|
||||
std::int32_t m_VelocityY;
|
||||
std::int32_t m_VelocityZ;
|
||||
char pad3[352];
|
||||
}; //Size: 0x0180
|
||||
static_assert(sizeof(CVehicleProximityMigrationDataNode) == 0x290);
|
||||
char pad3[116];
|
||||
};
|
||||
static_assert(sizeof(CVehicleProximityMigrationDataNode) == 0x1A0);
|
||||
Reference in new issue
Block a user