From b8bc97c0f34f887e9519c091374552ba39448bf5 Mon Sep 17 00:00:00 2001 From: Yimura Date: Sun, 25 Jul 2021 13:12:53 +0200 Subject: [PATCH] feat(Classes): Added includes --- CAutomobile.h | 13 +++++++------ CHandlingData.h | 25 ++++++++++++------------- CPed.h | 25 +++++++++++++------------ CPedFactory.h | 4 +++- CPedWeaponManager.h | 2 +- CPlayerInfo.h | 9 +++++---- CVehicleDrawHandler.h | 21 ++++++++++----------- CWheel.h | 20 -------------------- gtav.rcnet | Bin 9524 -> 8722 bytes 9 files changed, 51 insertions(+), 68 deletions(-) delete mode 100644 CWheel.h diff --git a/CAutomobile.h b/CAutomobile.h index fb59537..1365347 100644 --- a/CAutomobile.h +++ b/CAutomobile.h @@ -1,8 +1,11 @@ +#include "CHandlingData.h" +#include "CVehicleDrawHandler.h" + class CAutomobile { public: char pad_0000[72]; //0x0000 - class CVehicleDrawHandler* m_mods; //0x0048 + class CVehicleDrawHandler *m_mods; //0x0048 char pad_0050[313]; //0x0050 uint8_t m_godmode; //0x0189 char pad_018A[406]; //0x018A @@ -13,12 +16,10 @@ public: char pad_0848[192]; //0x0848 float m_health2; //0x0908 char pad_090C[44]; //0x090C - class CHandlingData* m_handling; //0x0938 + class CHandlingData *m_handling; //0x0938 char pad_0940[2]; //0x0940 - uint8_t m_bulletproof_tyres; //0x0942 - char pad_0943[685]; //0x0943 - class WheelArray* m_wheels; //0x0BF0 - char pad_0BF8[100]; //0x0BF8 + uint8_t m_bullet_proof_tyres; //0x0942 + char pad_0943[793]; //0x0943 float m_gravity; //0x0C5C }; //Size: 0x0C60 static_assert(sizeof(CAutomobile) == 0xC60); \ No newline at end of file diff --git a/CHandlingData.h b/CHandlingData.h index 2e5a886..6407e77 100644 --- a/CHandlingData.h +++ b/CHandlingData.h @@ -2,15 +2,15 @@ class CHandlingData { public: char pad_0000[8]; //0x0000 - uint32_t m_name_hash; //0x0008 + uint32_t m_model_hash; //0x0008 float m_mass; //0x000C float m_initial_drag_coeff; //0x0010 - float m_downforce_modifier; //0x0014 + float m_downforce_multiplier; //0x0014 float m_popup_light_rotation; //0x0018 char pad_001C[4]; //0x001C - rage::vector3 m_centre_of_mass; //0x0020 + Vector3 m_centre_of_mass; //0x0020 char pad_002C[4]; //0x002C - rage::vector3 m_inertia_multiplier; //0x0030 + Vector3 m_inertia_mult; //0x0030 char pad_003C[4]; //0x003C float m_buoyancy; //0x0040 float m_drive_bias_rear; //0x0044 @@ -22,9 +22,9 @@ public: float m_upshift; //0x0058 float m_downshift; //0x005C float m_initial_drive_force; //0x0060 - float m_drive_max_flat_vel; //0x0064 + float m_drive_max_flat_velocity; //0x0064 float m_initial_drive_max_flat_vel; //0x0068 - float m_brake_force; //0x006C + float m_brakeforce; //0x006C char pad_0070[4]; //0x0070 float m_brake_bias_front; //0x0074 float m_brake_bias_rear; //0x0078 @@ -64,14 +64,13 @@ public: float m_petrol_tank_volume; //0x0100 float m_oil_volume; //0x0104 char pad_0108[4]; //0x0108 - rage::vector3 m_seat_index_dist; //0x010C + Vector3 m_seat_offset_dist; //0x010C uint32_t m_monetary_value; //0x0118 char pad_011C[8]; //0x011C - uint32_t m_str_model_flags; //0x0124 - uint32_t m_str_handling_flags; //0x0128 - uint32_t m_str_damage_flags; //0x012C + uint32_t m_model_flags; //0x0124 + uint32_t m_handling_flags; //0x0128 + uint32_t m_damage_flags; //0x012C char pad_0130[12]; //0x0130 uint32_t m_ai_handling_hash; //0x013C - char pad_0140[208]; //0x0140 -}; //Size: 0x0210 -static_assert(sizeof(CHandlingData) == 0x210); \ No newline at end of file +}; //Size: 0x0140 +static_assert(sizeof(CHandlingData) == 0x140); \ No newline at end of file diff --git a/CPed.h b/CPed.h index 6855e53..d8eca8e 100644 --- a/CPed.h +++ b/CPed.h @@ -1,15 +1,20 @@ +#include "CAutomobile.h" +#include "CPedModelInfo.h" +#include "CPedWeaponManager.h" +#include "CPlayerInfo.h" + class CPed { public: char pad_0000[32]; //0x0000 - class CPedModelInfo* m_ped_model_info; //0x0020 + class CPedModelInfo *m_ped_model_info; //0x0020 uint8_t m_entity_type; //0x0028 char pad_0029[3]; //0x0029 uint8_t m_invisible; //0x002C char pad_002D[1]; //0x002D uint8_t m_freeze_momentum; //0x002E char pad_002F[97]; //0x002F - rage::vector3 m_position; //0x0090 + Vector3 m_position; //0x0090 char pad_009C[237]; //0x009C uint8_t m_godmode; //0x0189 char pad_018A[246]; //0x018A @@ -17,18 +22,14 @@ public: char pad_0284[28]; //0x0284 float m_maxhealth; //0x02A0 char pad_02A4[124]; //0x02A4 - rage::vector3 m_velocity; //0x0320 + Vector3 m_velocity; //0x0320 char pad_032C[2564]; //0x032C - class CAutomobile* m_vehicle; //0x0D30 - char pad_0D38[896]; //0x0D38 - uint8_t m_ragdoll; //0x10B8 - char pad_10B9[15]; //0x10B9 - class CPlayerInfo* m_player_info; //0x10C8 + class CAutomobile *m_vehicle; //0x0D30 + char pad_0D38[912]; //0x0D38 + class CPlayerInfo *m_player_info; //0x10C8 char pad_10D0[8]; //0x10D0 - class CPedWeaponManager* m_weapon_manager; //0x10D8 - char pad_10E0[919]; //0x10E0 - uint8_t m_in_vehicle; //0x1477 - char pad_1478[104]; //0x1478 + class CPedWeaponManager *m_weapon_manager; //0x10D8 + char pad_10E0[1024]; //0x10E0 float m_armor; //0x14E0 }; //Size: 0x14E4 static_assert(sizeof(CPed) == 0x14E4); \ No newline at end of file diff --git a/CPedFactory.h b/CPedFactory.h index 75d346b..9ebd177 100644 --- a/CPedFactory.h +++ b/CPedFactory.h @@ -1,7 +1,9 @@ +#include "CPed.h" + class CPedFactory { public: char pad_0000[8]; //0x0000 - class CPed* m_local_ped; //0x0008 + class CPed *m_local_ped; //0x0008 }; //Size: 0x0010 static_assert(sizeof(CPedFactory) == 0x10); \ No newline at end of file diff --git a/CPedWeaponManager.h b/CPedWeaponManager.h index 96a1f57..949c62b 100644 --- a/CPedWeaponManager.h +++ b/CPedWeaponManager.h @@ -2,6 +2,6 @@ class CPedWeaponManager { public: char pad_0000[32]; //0x0000 - class CWeaponInfo* m_weapon_info; //0x0020 + class CWeaponInfo *m_weapon_info; //0x0020 }; //Size: 0x0028 static_assert(sizeof(CPedWeaponManager) == 0x28); \ No newline at end of file diff --git a/CPlayerInfo.h b/CPlayerInfo.h index 9f0a390..5b49131 100644 --- a/CPlayerInfo.h +++ b/CPlayerInfo.h @@ -1,3 +1,6 @@ +// #include "CPed.h" // not included to prevent circular inclusion + +class CPed; // make the compiler happy class CPlayerInfo { public: @@ -24,14 +27,12 @@ public: char pad_01A8[11]; //0x01A8 bool m_is_online; //0x01B3 char pad_01B4[20]; //0x01B4 - class CPed* m_ped; //0x01C8 + class CPed *m_ped; //0x01C8 char pad_01D0[40]; //0x01D0 uint32_t m_frame_flags; //0x01F8 char pad_01FC[28]; //0x01FC uint32_t m_player_controls; //0x0218 - char pad_021C[1588]; //0x021C - uint32_t m_npc_ignore; //0x0850 - char pad_0854[12]; //0x0854 + char pad_021C[1604]; //0x021C bool m_is_wanted; //0x0860 char pad_0861[3]; //0x0861 int8_t m_wanted_level_display; //0x0864 diff --git a/CVehicleDrawHandler.h b/CVehicleDrawHandler.h index 3f84dba..381297b 100644 --- a/CVehicleDrawHandler.h +++ b/CVehicleDrawHandler.h @@ -8,9 +8,9 @@ public: char pad_038D[3]; //0x038D uint8_t m_secondary_color; //0x0390 char pad_0391[15]; //0x0391 - uint8_t m_neon_light_blue; //0x03A0 - uint8_t m_neon_light_green; //0x03A1 - uint8_t m_neon_light_red; //0x03A2 + uint8_t m_neon_blue; //0x03A0 + uint8_t m_neon_green; //0x03A1 + uint8_t m_neon_red; //0x03A2 char pad_03A3[15]; //0x03A3 uint8_t m_spoiler; //0x03B2 uint8_t m_bumper_front; //0x03B3 @@ -19,24 +19,24 @@ public: uint8_t m_exhaust; //0x03B6 uint8_t m_frame; //0x03B7 uint8_t m_grille; //0x03B8 - uint8_t m_hoods; //0x03B9 + uint8_t m_hood; //0x03B9 uint8_t m_fenders; //0x03BA uint8_t m_bullbars; //0x03BB uint8_t m_roof; //0x03BC char pad_03BD[3]; //0x03BD uint8_t m_ornaments; //0x03C0 char pad_03C1[1]; //0x03C1 - uint8_t m_dial_design; //0x03C2 + uint8_t m_dail_design; //0x03C2 uint8_t m_sunstrips; //0x03C3 uint8_t m_seats; //0x03C4 - uint8_t m_steering_wheels; //0x03C5 + uint8_t m_steering_wheel; //0x03C5 uint8_t m_column_shifter_levers; //0x03C6 char pad_03C7[2]; //0x03C7 uint8_t m_truck_beds; //0x03C9 char pad_03CA[4]; //0x03CA uint8_t m_roll_cages; //0x03CE uint8_t m_skid_plate; //0x03CF - uint8_t m_secondary_ligt_surrounds; //0x03D0 + uint8_t m_secondary_light_surrounds; //0x03D0 uint8_t m_hood_accessories; //0x03D1 uint8_t m_doors; //0x03D2 uint8_t m_snorkel; //0x03D3 @@ -63,7 +63,6 @@ public: uint8_t m_neon_left; //0x0402 uint8_t m_neon_right; //0x0403 uint8_t m_neon_front; //0x0404 - uint8_t m_neon_back; //0x0405 - char pad_0406[142]; //0x0406 -}; //Size: 0x0494 -static_assert(sizeof(CVehicleDrawHandler) == 0x494); \ No newline at end of file + uint8_t m_neon_rear; //0x0405 +}; //Size: 0x0406 +static_assert(sizeof(CVehicleDrawHandler) == 0x406); \ No newline at end of file diff --git a/CWheel.h b/CWheel.h deleted file mode 100644 index b452ab7..0000000 --- a/CWheel.h +++ /dev/null @@ -1,20 +0,0 @@ -class WheelArray -{ -public: - class CWheel* m_wheel1; //0x0000 - class CWheel* m_wheel2; //0x0008 - class CWheel* m_wheel3; //0x0010 - class CWheel* m_wheel4; //0x0018 - char pad_0020[88]; //0x0020 -}; //Size: 0x0078 -static_assert(sizeof(WheelArray) == 0x78); - -class CWheel -{ -public: - char pad_0000[8]; //0x0000 - float m_camber; //0x0008 - float m_camber_inverted; //0x000C - char pad_0010[552]; //0x0010 -}; //Size: 0x0238 -static_assert(sizeof(CWheel) == 0x238); \ No newline at end of file diff --git a/gtav.rcnet b/gtav.rcnet index f13f83a6524fdec34453935caf515834fc48f547..5a67c98343f727e7d1f77175296122237230651e 100644 GIT binary patch literal 8722 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