feat: Updated classes

This commit is contained in:
Yimura 2022-01-28 00:02:15 +01:00
parent a069ad9316
commit 5abbb7f1eb
No known key found for this signature in database
GPG Key ID: 3D8FF4397E768682
15 changed files with 415 additions and 116 deletions

View File

@ -2,52 +2,44 @@
#include "CHandlingData.hpp"
#include "CVehicleDrawHandler.hpp"
#include "CVehicleModelInfo.hpp"
#include "pgBase.hpp"
#include "fwEntity.hpp"
class CAutomobile
class CAutomobile : public rage::fwEntity
{
public:
char pad_0000[32]; //0x0000
class CVehicleModelInfo* m_vehicle_model; //0x0020
char pad_0028[8]; //0x0028
class pgBase* m_posbase; //0x0030
char pad_0038[16]; //0x0038
class CVehicleDrawHandler* m_mods; //0x0048
char pad_0050[313]; //0x0050
uint8_t m_godmode; //0x0189
char pad_018A[246]; //0x018A
float m_health; //0x0280
char pad_0284[28]; //0x0284
float m_health_max; //0x02A0
char pad_02A4[116]; //0x02A4
uint8_t m_boost_state; //0x0318
char pad_0319[2]; //0x0319
uint8_t m_boost_allow_recharge; //0x031B
char pad_031C[4]; //0x031C
float m_boost; //0x0320
float m_rocket_recharge_speed; //0x0324
char pad_0328[136]; //0x0328
float m_jump_boost_charge; //0x03B0
char pad_03B4[1164]; //0x03B4
float m_body_health; //0x0840
float m_petrol_tank_health; //0x0844
char pad_0848[192]; //0x0848
float m_engine_health; //0x0908
char pad_090C[44]; //0x090C
class CHandlingData* m_handling; //0x0938
char pad_0940[2]; //0x0940
uint8_t m_is_drivable; //0x0942
uint8_t m_tyres_can_burst; //0x0943
uint8_t m_deform_god; //0x0944
char pad_0945[179]; //0x0945
float m_dirt_level; //0x09F8
char pad_09FC[194]; //0x09FC
uint8_t m_is_targetable; //0x0ABE
char pad_0ABF[413]; //0x0ABF
float m_gravity; //0x0C5C
char pad_0C60[8]; //0x0C60
class CPed* m_driver; //0x0C68
class CPed* m_passengers[15]; //0x0C70
class CPed* m_last_driver; //0x0CE8
}; //Size: 0x0CF0
static_assert(sizeof(CAutomobile) == 0xCF0);
char pad_018C[240]; //0x018C
float m_health; //0x027C
char pad_0280[28]; //0x0280
float m_health_max; //0x029C
char pad_02A0[116]; //0x02A0
uint8_t m_boost_state; //0x0314
char pad_0315[2]; //0x0315
uint8_t m_boost_allow_recharge; //0x0317
char pad_0318[4]; //0x0318
float m_boost; //0x031C
float m_rocket_recharge_speed; //0x0320
char pad_0324[136]; //0x0324
float m_jump_boost_charge; //0x03AC
char pad_03B0[1164]; //0x03B0
float m_body_health; //0x083C
float m_petrol_tank_health; //0x0840
char pad_0844[192]; //0x0844
float m_engine_health; //0x0904
char pad_0908[44]; //0x0908
class CHandlingData *m_handling; //0x0934
char pad_093C[2]; //0x093C
uint8_t m_is_drivable; //0x093E
uint8_t m_tyres_can_burst; //0x093F
uint8_t m_deform_god; //0x0940
char pad_0941[179]; //0x0941
float m_dirt_level; //0x09F4
char pad_09F8[194]; //0x09F8
uint8_t m_is_targetable; //0x0ABA
char pad_0ABB[413]; //0x0ABB
float m_gravity; //0x0C58
char pad_0C5C[8]; //0x0C5C
class CPed *m_driver; //0x0C64
class CPed *m_passengers[15]; //0x0C6C
class CPed *m_last_driver; //0x0CE4
}; //Size: 0x0CEC
static_assert(sizeof(CAutomobile) == 0xCEC);

9
CBaseModelInfo.hpp Normal file
View File

@ -0,0 +1,9 @@
#pragma once
class CBaseModelInfo
{
public:
char pad_0000[24]; //0x0000
uint32_t m_model_hash; //0x0018
}; //Size: 0x001C
static_assert(sizeof(CBaseModelInfo) == 0x1C);

14
CNavigation.hpp Normal file
View File

@ -0,0 +1,14 @@
#pragma once
class CNavigation
{
public:
char pad_0000[32]; //0x0000
float m_heading; //0x0020
float m_heading2; //0x0024
char pad_0028[8]; //0x0028
rage::vector3 m_rotation; //0x0030
char pad_003C[24]; //0x003C
rage::vector3 m_position; //0x0054
}; //Size: 0x0060
static_assert(sizeof(CNavigation) == 0x60);

View File

@ -1,18 +1,18 @@
#pragma once
#include "CPlayerInfo.hpp"
#include "CNonPhysicalPlayerData.hpp"
#include "netPlayer.hpp"
class CNetGamePlayer
class CNetGamePlayer : public rage::netPlayer
{
public:
char pad_0000[24]; //0x0000
char pad_0008[8]; //0x0008
class CNonPhysicalPlayerData *m_non_physical_player; //0x0010
uint32_t m_msg_id; //0x0018
char pad_001C[4]; //0x001C
uint8_t m_active_id; //0x0020
uint8_t m_player_id; //0x0021
char pad_0022[110]; //0x0022
uint8_t m_player_flag; //0x0090
char pad_0091[15]; //0x0091
class CPlayerInfo* m_player_info; //0x00A0
char pad_00A8[40]; //0x00A8
uint32_t m_bubble_id; //0x00D0
}; //Size: 0x00D4
static_assert(sizeof(CNetGamePlayer) == 0xD4);
char pad_0022[126]; //0x0022
class CPlayerInfo *m_player_info; //0x00A0
}; //Size: 0x00A8
static_assert(sizeof(CNetGamePlayer) == 0xA8);

33
CNetworkPlayerMgr.hpp Normal file
View File

@ -0,0 +1,33 @@
#pragma once
#include "CNetGamePlayer.hpp"
#include "CNonPhysicalPlayerData.hpp"
namespace rage
{
class netPlayerMgrBase
{
public:
virtual ~netPlayerMgrBase() = default;
virtual void Initialize() = 0;
virtual void Shutdown() = 0;
virtual void unk_0x18() = 0;
virtual CNetGamePlayer* AddPlayer_raw(void* a1, void* a2, void* a3, rage::netPlayerData* net_player_data, CNonPhysicalPlayerData* non_physical_player_data) = 0;
virtual void RemovePlayer(CNetGamePlayer* net_game_player) = 0;
virtual void UpdatePlayerListsForPlayer(CNetGamePlayer* net_game_player) = 0;
virtual CNetGamePlayer* AddPlayer(void* a1, void* a2, void* a3, rage::netPlayerData* net_player_data, CNonPhysicalPlayerData* non_physical_player_data) = 0;
}; //Size: 0x0008
static_assert(sizeof(netPlayerMgrBase) == 0x8);
}
class CNetworkPlayerMgr : public rage::netPlayerMgrBase
{
public:
char pad_0008[224]; //0x0008
class CNetGamePlayer* m_local_net_player; //0x00E8
char pad_00F0[144]; //0x00F0
class CNetGamePlayer* m_player_list[32]; //0x0180
uint16_t m_player_limit; //0x0280
char pad_0282[10]; //0x0282
uint16_t m_player_count; //0x028C
}; //Size: 0x028E
static_assert(sizeof(CNetworkPlayerMgr) == 0x28E);

View File

@ -0,0 +1,24 @@
#pragma once
namespace rage
{
class nonPhysicalPlayerDataBase
{
public:
virtual ~nonPhysicalPlayerDataBase();
virtual void _0x08();
virtual void _0x10();
virtual void _0x18();
virtual void log();
}; //Size: 0x0008
static_assert(sizeof(nonPhysicalPlayerDataBase) == 0x8);
}
class CNonPhysicalPlayerData : public rage::nonPhysicalPlayerDataBase
{
public:
int32_t m_bubble_id; //0x0008
int32_t m_player_id; //0x000C
rage::vector3 m_position; //0x0010
}; //Size: 0x001C
static_assert(sizeof(CNonPhysicalPlayerData) == 0x1C);

View File

@ -3,27 +3,13 @@
#include "CPedModelInfo.hpp"
#include "CPedWeaponManager.hpp"
#include "CPlayerInfo.hpp"
#include "pgBase.hpp"
#include "fwEntity.hpp"
#pragma pack(push, 1)
class CPed
class CPed : public rage::fwEntity
{
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[1]; //0x002F
class pgBase *m_posbase; //0x0030
char pad_0038[88]; //0x0038
rage::vector3 m_camera; //0x0090
char pad_009C[237]; //0x009C
uint8_t m_godmode; //0x0189
char pad_018A[2]; //0x018A
uint8_t m_hostility; //0x018C
char pad_018D[243]; //0x018D
float m_health; //0x0280

View File

@ -1,49 +1,19 @@
#pragma once
class netAddress
{
public:
uint8_t m_field4; //0x0000
uint8_t m_field3; //0x0001
uint8_t m_field2; //0x0002
uint8_t m_field1; //0x0003
}; //Size: 0x0004
static_assert(sizeof(netAddress) == 0x4);
class netPlayerData
{
public:
char pad_0000[8]; //0x0000
uint64_t m_rockstar_id; //0x0008
char pad_0010[52]; //0x0010
class netAddress m_relay_ip; //0x0044
uint16_t m_relay_port; //0x0048
char pad_004A[2]; //0x004A
class netAddress m_external_ip; //0x004C
uint16_t m_external_port; //0x0050
char pad_0052[2]; //0x0052
class netAddress m_internal_ip; //0x0054
uint16_t m_internal_port; //0x0058
char pad_005A[6]; //0x005A
uint64_t m_host_token; //0x0060
uint64_t m_peer_id; //0x0068
uint64_t m_rockstar_id2; //0x0070
char pad_0078[12]; //0x0078
char m_name[20]; //0x0084
}; //Size: 0x0098
static_assert(sizeof(netPlayerData) == 0x98);
#include "netPlayerData.hpp"
#pragma pack(push, 1)
class CPlayerInfo
{
public:
char pad_0000[32]; //0x0000
class netPlayerData m_net_player_data; //0x0020
class rage::netPlayerData m_net_player_data; //0x0020
char pad_00B8[184]; //0x00B8
float m_swim_speed; //0x0170
char pad_0174[20]; //0x0174
uint32_t m_water_proof; //0x0188
char pad_018C[92]; //0x018C
char pad_018C[76]; //0x018C
eGameState m_game_state; //0x01D8
char pad_01DC[12]; //0x01DC
class CPed *m_ped; //0x01E8
char pad_01F0[40]; //0x01F0
uint32_t m_frame_flags; //0x0218

73
fwDrawData.hpp Normal file
View File

@ -0,0 +1,73 @@
#pragma once
namespace rage
{
class fwDrawData
{
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_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
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_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_dail_design; //0x03C2
uint8_t m_sunstrips; //0x03C3
uint8_t m_seats; //0x03C4
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_light_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_rear; //0x0405
}; //Size: 0x0406
static_assert(sizeof(fwDrawData) == 0x406);
}

28
fwEntity.hpp Normal file
View File

@ -0,0 +1,28 @@
#pragma once
#include "CBaseModelInfo.hpp"
#include "CNavigation.hpp"
#include "fwDrawData.hpp"
#include "netObject.hpp"
namespace rage
{
class fwEntity
{
public:
char pad_0000[32]; //0x0000
class CBaseModelInfo *m_model_info; //0x0020
char pad_0028[1]; //0x0028
int8_t m_entity_type; //0x0029
char pad_002A[2]; //0x002A
uint8_t m_invisible; //0x002C
char pad_002D[3]; //0x002D
class CNavigation *m_navigation; //0x0030
char pad_0038[16]; //0x0038
class rage::fwDrawData *m_draw_data; //0x0048
char pad_0050[128]; //0x0050
class rage::netObject *m_net_object; //0x00D0
char pad_00D8[176]; //0x00D8
uint32_t m_damage_bits; //0x0188
}; //Size: 0x018C
static_assert(sizeof(fwEntity) == 0x18C);
}

Binary file not shown.

123
netObject.hpp Normal file
View File

@ -0,0 +1,123 @@
#pragma once
namespace rage
{
class netObject
{
public:
int16_t m_object_type; //0x0008
int16_t m_object_id; //0x000A
char pad_000C[61]; //0x000C
int8_t m_owner_id; //0x0049
int8_t m_control_id; //0x004A
int8_t m_next_owner_id; //0x004B
bool m_is_remote; //0x004C
bool m_wants_to_delete; //0x004D
char pad_004E[1]; //0x004E
bool m_should_not_be_delete; //0x004F
virtual ~netObject();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual void Function46();
virtual void Function47();
virtual void Function48();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual void Function55();
virtual void Function56();
virtual void Function57();
virtual void Function58();
virtual void Function59();
virtual void Function60();
virtual void Function61();
virtual void Function62();
virtual void Function63();
virtual void Function64();
virtual void Function65();
virtual void Function66();
virtual void Function67();
virtual void Function68();
virtual void Function69();
virtual void Function70();
virtual void Function71();
virtual void Function72();
virtual void Function73();
virtual void Function74();
virtual void Function75();
virtual void Function76();
virtual void Function77();
virtual void Function78();
virtual void Function79();
virtual void Function80();
virtual void Function81();
virtual void Function82();
virtual void Function83();
virtual void Function84();
virtual void Function85();
virtual void Function86();
virtual void Function87();
virtual void Function88();
virtual void Function89();
virtual void Function90();
virtual void Function91();
virtual void Function92();
virtual void Function93();
virtual void Function94();
virtual void Function95();
virtual void Function96();
virtual void Function97();
virtual void Function98();
virtual void Function99();
virtual void Function100();
virtual void Function101();
}; //Size: 0x0050
static_assert(sizeof(netObject) == 0x50);
}

19
netPlayer.hpp Normal file
View File

@ -0,0 +1,19 @@
#pragma once
#include "netPlayerData.hpp"
namespace rage
{
class netPlayer
{
public:
virtual void ~netPlayer();
virtual void reset();
virtual bool is_valid();
virtual const char* get_name();
virtual void _0x20();
virtual bool is_host();
virtual netPlayerData* get_net_data();
virtual void _0x38();
}; //Size: 0x0008
static_assert(sizeof(netPlayer) == 0x8);
}

37
netPlayerData.hpp Normal file
View File

@ -0,0 +1,37 @@
#pragma once
namespace rage
{
class netAddress
{
public:
uint8_t m_field4; //0x0000
uint8_t m_field3; //0x0001
uint8_t m_field2; //0x0002
uint8_t m_field1; //0x0003
}; //Size: 0x0004
static_assert(sizeof(netAddress) == 0x4);
class netPlayerData
{
public:
char pad_0000[8]; //0x0000
uint64_t m_rockstar_id; //0x0008
char pad_0010[52]; //0x0010
class netAddress m_relay_ip; //0x0044
uint16_t m_relay_port; //0x0048
char pad_004A[2]; //0x004A
class netAddress m_external_ip; //0x004C
uint16_t m_external_port; //0x0050
char pad_0052[2]; //0x0052
class netAddress m_internal_ip; //0x0054
uint16_t m_internal_port; //0x0058
char pad_005A[6]; //0x005A
uint64_t m_host_token; //0x0060
uint64_t m_peer_id; //0x0068
uint64_t m_rockstar_id2; //0x0070
char pad_0078[12]; //0x0078
char m_name[20]; //0x0084
}; //Size: 0x0098
static_assert(sizeof(netPlayerData) == 0x98);
}

View File

@ -1,9 +0,0 @@
#pragma once
class pgBase
{
public:
char pad_0000[80]; //0x0000
rage::vector3 m_pos; //0x0050
}; //Size: 0x005C
static_assert(sizeof(pgBase) == 0x5C);