From aac1a4e76c5fbddd2c4b74acec1813d23abc3609 Mon Sep 17 00:00:00 2001 From: Yimura Date: Mon, 8 Feb 2021 22:44:51 +0100 Subject: [PATCH] Initial Commit --- CAutomobile.h | 24 ++++++++++++++ CHandlingData.h | 77 +++++++++++++++++++++++++++++++++++++++++++ CPed.h | 34 +++++++++++++++++++ CPedFactory.h | 7 ++++ CPedModelInfo.h | 7 ++++ CPedWeaponManager.h | 7 ++++ CPlayerInfo.h | 44 +++++++++++++++++++++++++ CVehicleDrawHandler.h | 69 ++++++++++++++++++++++++++++++++++++++ CWeaponInfo.h | 7 ++++ CWheel.h | 20 +++++++++++ README.md | 9 +++++ 11 files changed, 305 insertions(+) create mode 100644 CAutomobile.h create mode 100644 CHandlingData.h create mode 100644 CPed.h create mode 100644 CPedFactory.h create mode 100644 CPedModelInfo.h create mode 100644 CPedWeaponManager.h create mode 100644 CPlayerInfo.h create mode 100644 CVehicleDrawHandler.h create mode 100644 CWeaponInfo.h create mode 100644 CWheel.h create mode 100644 README.md diff --git a/CAutomobile.h b/CAutomobile.h new file mode 100644 index 0000000..fb59537 --- /dev/null +++ b/CAutomobile.h @@ -0,0 +1,24 @@ +class CAutomobile +{ +public: + char pad_0000[72]; //0x0000 + class CVehicleDrawHandler* m_mods; //0x0048 + char pad_0050[313]; //0x0050 + uint8_t m_godmode; //0x0189 + char pad_018A[406]; //0x018A + float m_boost; //0x0320 + float m_rocket_recharge_speed; //0x0324 + char pad_0328[1308]; //0x0328 + float m_health; //0x0844 + char pad_0848[192]; //0x0848 + float m_health2; //0x0908 + char pad_090C[44]; //0x090C + 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 + 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 new file mode 100644 index 0000000..2e5a886 --- /dev/null +++ b/CHandlingData.h @@ -0,0 +1,77 @@ +class CHandlingData +{ +public: + char pad_0000[8]; //0x0000 + uint32_t m_name_hash; //0x0008 + float m_mass; //0x000C + float m_initial_drag_coeff; //0x0010 + float m_downforce_modifier; //0x0014 + float m_popup_light_rotation; //0x0018 + char pad_001C[4]; //0x001C + rage::vector3 m_centre_of_mass; //0x0020 + char pad_002C[4]; //0x002C + rage::vector3 m_inertia_multiplier; //0x0030 + char pad_003C[4]; //0x003C + float m_buoyancy; //0x0040 + float m_drive_bias_rear; //0x0044 + float m_drive_bias_front; //0x0048 + float m_acceleration; //0x004C + uint8_t m_initial_drive_gears; //0x0050 + char pad_0051[3]; //0x0051 + float m_drive_inertia; //0x0054 + float m_upshift; //0x0058 + float m_downshift; //0x005C + float m_initial_drive_force; //0x0060 + float m_drive_max_flat_vel; //0x0064 + float m_initial_drive_max_flat_vel; //0x0068 + float m_brake_force; //0x006C + char pad_0070[4]; //0x0070 + float m_brake_bias_front; //0x0074 + float m_brake_bias_rear; //0x0078 + float m_handbrake_force; //0x007C + float m_steering_lock; //0x0080 + float m_steering_lock_ratio; //0x0084 + float m_traction_curve_max; //0x0088 + float m_traction_curve_lateral; //0x008C + float m_traction_curve_min; //0x0090 + float m_traction_curve_ratio; //0x0094 + float m_curve_lateral; //0x0098 + float m_curve_lateral_ratio; //0x009C + float m_traction_spring_delta_max; //0x00A0 + float m_traction_spring_delta_max_ratio; //0x00A4 + float m_low_speed_traction_loss_mult; //0x00A8 + float m_camber_stiffness; //0x00AC + float m_traction_bias_front; //0x00B0 + float m_traction_bias_rear; //0x00B4 + float m_traction_loss_mult; //0x00B8 + float m_suspension_force; //0x00BC + float m_suspension_comp_damp; //0x00C0 + float m_suspension_rebound_damp; //0x00C4 + float m_suspension_upper_limit; //0x00C8 + float m_suspension_lower_limit; //0x00CC + float m_suspension_raise; //0x00D0 + float m_suspension_bias_front; //0x00D4 + float m_suspension_bias_rear; //0x00D8 + float m_anti_rollbar_force; //0x00DC + float m_anti_rollbar_bias_front; //0x00E0 + float m_anti_rollbar_bias_rear; //0x00E4 + float m_roll_centre_height_front; //0x00E8 + float m_roll_centre_height_rear; //0x00EC + float m_collision_damage_mult; //0x00F0 + float m_weapon_damamge_mult; //0x00F4 + float m_deformation_mult; //0x00F8 + float m_engine_damage_mult; //0x00FC + float m_petrol_tank_volume; //0x0100 + float m_oil_volume; //0x0104 + char pad_0108[4]; //0x0108 + rage::vector3 m_seat_index_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 + 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 diff --git a/CPed.h b/CPed.h new file mode 100644 index 0000000..6855e53 --- /dev/null +++ b/CPed.h @@ -0,0 +1,34 @@ +class CPed +{ +public: + char pad_0000[32]; //0x0000 + 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 + char pad_009C[237]; //0x009C + uint8_t m_godmode; //0x0189 + char pad_018A[246]; //0x018A + float m_health; //0x0280 + char pad_0284[28]; //0x0284 + float m_maxhealth; //0x02A0 + char pad_02A4[124]; //0x02A4 + rage::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 + 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 + 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 new file mode 100644 index 0000000..75d346b --- /dev/null +++ b/CPedFactory.h @@ -0,0 +1,7 @@ +class CPedFactory +{ +public: + char pad_0000[8]; //0x0000 + class CPed* m_local_ped; //0x0008 +}; //Size: 0x0010 +static_assert(sizeof(CPedFactory) == 0x10); \ No newline at end of file diff --git a/CPedModelInfo.h b/CPedModelInfo.h new file mode 100644 index 0000000..51d68ab --- /dev/null +++ b/CPedModelInfo.h @@ -0,0 +1,7 @@ +class CPedModelInfo +{ +public: + char pad_0000[24]; //0x0000 + uint32_t m_model_hash; //0x0018 +}; //Size: 0x001C +static_assert(sizeof(CPedModelInfo) == 0x1C); \ No newline at end of file diff --git a/CPedWeaponManager.h b/CPedWeaponManager.h new file mode 100644 index 0000000..96a1f57 --- /dev/null +++ b/CPedWeaponManager.h @@ -0,0 +1,7 @@ +class CPedWeaponManager +{ +public: + char pad_0000[32]; //0x0000 + 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 new file mode 100644 index 0000000..9f0a390 --- /dev/null +++ b/CPlayerInfo.h @@ -0,0 +1,44 @@ +class CPlayerInfo +{ +public: + char pad_0000[52]; //0x0000 + uint32_t m_internal_ip; //0x0034 + uint16_t m_internal_port; //0x0038 + char pad_003A[2]; //0x003A + uint32_t m_relay_ip; //0x003C + uint16_t m_relay_port; //0x0040 + char pad_0042[2]; //0x0042 + uint32_t m_external_ip; //0x0044 + uint16_t m_external_port; //0x0048 + char pad_004A[38]; //0x004A + uint64_t m_rockstar_id; //0x0070 + char pad_0078[12]; //0x0078 + char m_name[20]; //0x0084 + char pad_0098[180]; //0x0098 + float m_swim_speed; //0x014C + float m_run_speed; //0x0150 + char pad_0154[81]; //0x0154 + bool m_is_rockstar_dev; //0x01A5 + char pad_01A6[1]; //0x01A6 + bool m_is_cheater; //0x01A7 + char pad_01A8[11]; //0x01A8 + bool m_is_online; //0x01B3 + char pad_01B4[20]; //0x01B4 + 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 + bool m_is_wanted; //0x0860 + char pad_0861[3]; //0x0861 + int8_t m_wanted_level_display; //0x0864 + char pad_0865[3]; //0x0865 + int8_t m_wanted_level; //0x0868 + char pad_0869[1131]; //0x0869 + float m_stamina; //0x0CD4 + float m_max_stamina; //0x0CD8 +}; //Size: 0x0CDC +static_assert(sizeof(CPlayerInfo) == 0xCDC); \ No newline at end of file diff --git a/CVehicleDrawHandler.h b/CVehicleDrawHandler.h new file mode 100644 index 0000000..3f84dba --- /dev/null +++ b/CVehicleDrawHandler.h @@ -0,0 +1,69 @@ +class CVehicleDrawHandler +{ +public: + char pad_0000[904]; //0x0000 + uint8_t m_primary_color; //0x0388 + char pad_0389[3]; //0x0389 + uint8_t m_pearlescent; //0x038C + 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 + char pad_03A3[15]; //0x03A3 + uint8_t m_spoiler; //0x03B2 + uint8_t m_bumper_front; //0x03B3 + uint8_t m_bumper_rear; //0x03B4 + uint8_t m_sideskirts; //0x03B5 + uint8_t m_exhaust; //0x03B6 + uint8_t m_frame; //0x03B7 + uint8_t m_grille; //0x03B8 + uint8_t m_hoods; //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_sunstrips; //0x03C3 + uint8_t m_seats; //0x03C4 + uint8_t m_steering_wheels; //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_hood_accessories; //0x03D1 + uint8_t m_doors; //0x03D2 + uint8_t m_snorkel; //0x03D3 + uint8_t m_livery; //0x03D4 + char pad_03D5[1]; //0x03D5 + uint8_t m_engine; //0x03D6 + uint8_t m_brakes; //0x03D7 + uint8_t m_transmission; //0x03D8 + uint8_t m_horn; //0x03D9 + uint8_t m_suspension; //0x03DA + uint8_t m_armor; //0x03DB + char pad_03DC[1]; //0x03DC + uint8_t m_turbo; //0x03DD + char pad_03DE[3]; //0x03DE + uint8_t m_xenon; //0x03E1 + uint8_t m_tire_design; //0x03E2 + char pad_03E3[16]; //0x03E3 + uint8_t m_truck_bed; //0x03F3 + char pad_03F4[5]; //0x03F4 + uint8_t m_wheel_color; //0x03F9 + char pad_03FA[5]; //0x03FA + uint8_t m_window; //0x03FF + char pad_0400[2]; //0x0400 + 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 diff --git a/CWeaponInfo.h b/CWeaponInfo.h new file mode 100644 index 0000000..c0c9433 --- /dev/null +++ b/CWeaponInfo.h @@ -0,0 +1,7 @@ +class CWeaponInfo +{ +public: + char pad_0000[16]; //0x0000 + uint32_t m_model_hash; //0x0010 +}; //Size: 0x0014 +static_assert(sizeof(CWeaponInfo) == 0x14); \ No newline at end of file diff --git a/CWheel.h b/CWheel.h new file mode 100644 index 0000000..b452ab7 --- /dev/null +++ b/CWheel.h @@ -0,0 +1,20 @@ +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/README.md b/README.md new file mode 100644 index 0000000..bf1f025 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# GTA V Classes + +This repository contains a few classes that I've reverse engineered. + +They are in no way complete but contain some basics to get you started... + +## Disclaimer + +This code is provided purely for educational purposes, if there are objections please open an issue stating your reasoning. \ No newline at end of file