feat(network): update nodes (#94)

This commit is contained in:
Mr-X-GTA
2025-04-03 21:06:58 +02:00
committed by GitHub
parent f795a63f0d
commit 56f2b268ab
18 changed files with 397 additions and 404 deletions
+2 -2
View File
@@ -7,8 +7,8 @@ namespace YimMenu::Features
{
using LoopedCommand::LoopedCommand;
const std::vector<joaat_t> m_TunableHashes = {"IDLEKICK_WARNING1"_J, "IDLEKICK_WARNING2"_J, "IDLEKICK_WARNING3"_J, "IDLEKICK_KICK"_J, "ConstrainedKick_Warning1"_J, "ConstrainedKick_Warning2"_J, "ConstrainedKick_Warning3"_J, "ConstrainedKick_Kick"_J};
const std::vector<int> m_DefaultValues = {120000, 300000, 600000, 900000, 30000, 60000, 90000, 120000};
static constexpr std::array m_TunableHashes = {"IDLEKICK_WARNING1"_J, "IDLEKICK_WARNING2"_J, "IDLEKICK_WARNING3"_J, "IDLEKICK_KICK"_J, "ConstrainedKick_Warning1"_J, "ConstrainedKick_Warning2"_J, "ConstrainedKick_Warning3"_J, "ConstrainedKick_Kick"_J};
static constexpr std::array m_DefaultValues = {120000, 300000, 600000, 900000, 30000, 60000, 90000, 120000};
virtual void OnTick() override
{
@@ -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);