Add more spoofing options and added clang-format (#1020)
* feat(Spoofing): add spoofing * feat(Spoofing): prepare code for player attach * remove(PlayerAttach): isn't going to work due to netsync architecture * fix(GUI): fix scaling * feat(Project): add clang-format file * feat(Classes): update classes * fix(BlackHole): remove unnecessary cleanup * fix(Formatting): fix formatting for initializer lists * feat(clang-format): Set tab width and 1 space before comment Co-authored-by: Yimura <24669514+Yimura@users.noreply.github.com>
This commit is contained in:
@ -8,52 +8,52 @@ namespace rage
|
||||
class Blip_t
|
||||
{
|
||||
public:
|
||||
int32_t m_id; //0x0000
|
||||
uint16_t m_blip_array_index; //0x0004
|
||||
char pad_0006[4]; //0x0006
|
||||
bool m_active; //0x000A
|
||||
uint8_t N00000197; //0x000B
|
||||
int32_t m_entity_id; //0x000C
|
||||
float m_x; //0x0010
|
||||
float m_y; //0x0014
|
||||
float m_z; //0x0018
|
||||
char pad_001C[4]; //0x001C
|
||||
uint32_t m_display_bits; //0x0020
|
||||
uint32_t m_render_bits; //0x0024
|
||||
char *m_message; //0x0028
|
||||
char pad_0030[8]; //0x0030
|
||||
Hash m_description; //0x0038
|
||||
char pad_003C[4]; //0x003C
|
||||
int32_t m_icon; //0x0040
|
||||
int16_t m_flash_interval; //0x0044
|
||||
int16_t m_flash_timer; //0x0046
|
||||
uint32_t m_color; //0x0048
|
||||
int32_t m_id; //0x0000
|
||||
uint16_t m_blip_array_index;//0x0004
|
||||
char pad_0006[4]; //0x0006
|
||||
bool m_active; //0x000A
|
||||
uint8_t N00000197; //0x000B
|
||||
int32_t m_entity_id; //0x000C
|
||||
float m_x; //0x0010
|
||||
float m_y; //0x0014
|
||||
float m_z; //0x0018
|
||||
char pad_001C[4]; //0x001C
|
||||
uint32_t m_display_bits; //0x0020
|
||||
uint32_t m_render_bits; //0x0024
|
||||
char* m_message; //0x0028
|
||||
char pad_0030[8]; //0x0030
|
||||
Hash m_description; //0x0038
|
||||
char pad_003C[4]; //0x003C
|
||||
int32_t m_icon; //0x0040
|
||||
int16_t m_flash_interval; //0x0044
|
||||
int16_t m_flash_timer; //0x0046
|
||||
uint32_t m_color; //0x0048
|
||||
uint32_t m_secondary_color; //0x004C
|
||||
float m_scale_x; //0x0050
|
||||
float m_scale_y; //0x0054
|
||||
float m_rotation; //0x0058
|
||||
uint8_t m_mission_bits; //0x005C
|
||||
uint8_t m_priority; //0x005D
|
||||
uint8_t m_display_id; //0x005E
|
||||
uint8_t m_alpha; //0x005F
|
||||
int8_t m_category; //0x0060
|
||||
int8_t m_show_number; //0x0061
|
||||
char pad_0062[14]; //0x0062
|
||||
}; //Size: 0x0070
|
||||
float m_scale_x; //0x0050
|
||||
float m_scale_y; //0x0054
|
||||
float m_rotation; //0x0058
|
||||
uint8_t m_mission_bits; //0x005C
|
||||
uint8_t m_priority; //0x005D
|
||||
uint8_t m_display_id; //0x005E
|
||||
uint8_t m_alpha; //0x005F
|
||||
int8_t m_category; //0x0060
|
||||
int8_t m_show_number; //0x0061
|
||||
char pad_0062[14]; //0x0062
|
||||
}; //Size: 0x0070
|
||||
static_assert(sizeof(Blip_t) == 0x70, "Blip_t is not sized properly.");
|
||||
#pragma pack(pop)
|
||||
|
||||
class BlipEntry
|
||||
{
|
||||
public:
|
||||
Blip_t* m_pBlip; //0x0000
|
||||
Blip_t* m_pBlip;//0x0000
|
||||
|
||||
};//Size=0x0008
|
||||
|
||||
class BlipList
|
||||
{
|
||||
public:
|
||||
BlipEntry m_Blips[1500]; //0x0000
|
||||
BlipEntry m_Blips[1500];//0x0000
|
||||
char _0x2EE0[56];
|
||||
|
||||
};//Size=0x2F18
|
||||
|
@ -6,14 +6,18 @@ namespace rage
|
||||
struct rgbaColor
|
||||
{
|
||||
rgbaColor(std::uint8_t r = 0, std::uint8_t g = 0, std::uint8_t b = 0, std::uint8_t a = 255) :
|
||||
r(r), g(g), b(b), a(a)
|
||||
{}
|
||||
r(r),
|
||||
g(g),
|
||||
b(b),
|
||||
a(a)
|
||||
{
|
||||
}
|
||||
|
||||
std::uint8_t r;
|
||||
std::uint8_t g;
|
||||
std::uint8_t b;
|
||||
std::uint8_t a;
|
||||
};
|
||||
|
||||
|
||||
static_assert(sizeof(rgbaColor) == sizeof(std::uint8_t) * 4);
|
||||
}
|
||||
|
@ -10,24 +10,24 @@ namespace rage
|
||||
class decal_controller
|
||||
{
|
||||
public:
|
||||
char pad_0x0000[0xB0]; //0x0000
|
||||
char pad_0x0000[0xB0];//0x0000
|
||||
decal_list* ped_decal_list[69];
|
||||
decal_list* all_tattoo_decals_active; //0x02D8
|
||||
decal_list* all_tattoo_decals_active;//0x02D8
|
||||
|
||||
}; //Size=0x02E0
|
||||
};//Size=0x02E0
|
||||
|
||||
class decal_list
|
||||
{
|
||||
public:
|
||||
virtual ~decal_list() = default;
|
||||
virtual ~decal_list() = default;
|
||||
virtual __int64 refresh_list(__int64) = 0;
|
||||
char pad_0x0000[0x15E0]; //0x0000
|
||||
rage::atArray<decal> decal_array; //0x15E8
|
||||
char pad_0x0000[0x15E0]; //0x0000
|
||||
rage::atArray<decal> decal_array;//0x15E8
|
||||
|
||||
void clear_non_perm_decals_from_decal_array()
|
||||
{
|
||||
DWORD v1; // edx
|
||||
BYTE* v2; // rax
|
||||
DWORD v1;// edx
|
||||
BYTE* v2;// rax
|
||||
__int64 a1 = (__int64)this;
|
||||
|
||||
v1 = 0;
|
||||
@ -43,48 +43,48 @@ namespace rage
|
||||
}
|
||||
*(DWORD*)(a1 + 0x15E0) = 0;
|
||||
}
|
||||
}; //Size=0x15F1
|
||||
};//Size=0x15F1
|
||||
|
||||
class decal_helper
|
||||
{
|
||||
public:
|
||||
virtual ~decal_helper() = default;
|
||||
virtual ~decal_helper() = default;
|
||||
virtual Hash* get_decal_type(char*) = 0;
|
||||
};
|
||||
|
||||
class decal
|
||||
{
|
||||
public:
|
||||
std::uint32_t N00000001; //0x0000
|
||||
std::uint8_t N00000028; //0x0004
|
||||
std::uint8_t N0000002A; //0x0005
|
||||
char pad_0x0006[0x2]; //0x0006
|
||||
std::uint64_t N00000002; //0x0008
|
||||
std::uint64_t N00000003; //0x0010
|
||||
std::uint64_t N00000004; //0x0018
|
||||
std::uint32_t N00000005; //0x0020
|
||||
std::uint32_t N00000022; //0x0024
|
||||
std::uint32_t N00000006; //0x0028
|
||||
char pad_0x002C[0x4]; //0x002C
|
||||
decal_helper* m_decal_helper; //0x0030
|
||||
std::uint32_t collection; //0x0038
|
||||
std::uint32_t overlay; //0x003C
|
||||
std::uint16_t N00000009; //0x0040
|
||||
std::uint16_t N00000035; //0x0042
|
||||
std::uint16_t N00000036; //0x0044
|
||||
char pad_0x0046[0x2]; //0x0046
|
||||
std::uint32_t N0000000A; //0x0048
|
||||
std::uint32_t N00000041; //0x004C
|
||||
std::uint32_t N0000000B; //0x0050
|
||||
char pad_0x0054[0x4]; //0x0054
|
||||
std::uint32_t N0000000C; //0x0058
|
||||
std::uint32_t N00000046; //0x005C
|
||||
std::uint32_t N0000000D; //0x0060
|
||||
char pad_0x0064[0x4]; //0x0064
|
||||
std::uint64_t N0000000E; //0x0068
|
||||
std::uint8_t N0000000F; //0x0070
|
||||
char pad_0x0071[0x7]; //0x0071
|
||||
std::uint32_t N00000001; //0x0000
|
||||
std::uint8_t N00000028; //0x0004
|
||||
std::uint8_t N0000002A; //0x0005
|
||||
char pad_0x0006[0x2]; //0x0006
|
||||
std::uint64_t N00000002; //0x0008
|
||||
std::uint64_t N00000003; //0x0010
|
||||
std::uint64_t N00000004; //0x0018
|
||||
std::uint32_t N00000005; //0x0020
|
||||
std::uint32_t N00000022; //0x0024
|
||||
std::uint32_t N00000006; //0x0028
|
||||
char pad_0x002C[0x4]; //0x002C
|
||||
decal_helper* m_decal_helper;//0x0030
|
||||
std::uint32_t collection; //0x0038
|
||||
std::uint32_t overlay; //0x003C
|
||||
std::uint16_t N00000009; //0x0040
|
||||
std::uint16_t N00000035; //0x0042
|
||||
std::uint16_t N00000036; //0x0044
|
||||
char pad_0x0046[0x2]; //0x0046
|
||||
std::uint32_t N0000000A; //0x0048
|
||||
std::uint32_t N00000041; //0x004C
|
||||
std::uint32_t N0000000B; //0x0050
|
||||
char pad_0x0054[0x4]; //0x0054
|
||||
std::uint32_t N0000000C; //0x0058
|
||||
std::uint32_t N00000046; //0x005C
|
||||
std::uint32_t N0000000D; //0x0060
|
||||
char pad_0x0064[0x4]; //0x0064
|
||||
std::uint64_t N0000000E; //0x0068
|
||||
std::uint8_t N0000000F; //0x0070
|
||||
char pad_0x0071[0x7]; //0x0071
|
||||
|
||||
}; //Size=0x0078
|
||||
static_assert (sizeof(decal) == 0x78, "decal is not sized properly.");
|
||||
};//Size=0x0078
|
||||
static_assert(sizeof(decal) == 0x78, "decal is not sized properly.");
|
||||
}
|
@ -567,14 +567,14 @@ enum class BlipIcons
|
||||
Number10,
|
||||
GTAOCrew,
|
||||
GTAOFriend,
|
||||
CableCar = 36,
|
||||
CableCar = 36,
|
||||
RaceFinish = 38,
|
||||
Safehouse = 40,
|
||||
Safehouse = 40,
|
||||
Cop2,
|
||||
CopCar,
|
||||
Helicopter,
|
||||
ChatBubble = 47,
|
||||
Garage = 50,
|
||||
Garage = 50,
|
||||
Drugs,
|
||||
ConvenienceStore,
|
||||
PoliceCar = 56,
|
||||
@ -583,7 +583,7 @@ enum class BlipIcons
|
||||
ConvenienceStore2,
|
||||
ShieldWithStar,
|
||||
Asterisk,
|
||||
Helicopter2 = 64,
|
||||
Helicopter2 = 64,
|
||||
StrangersAndFreaks = 66,
|
||||
ArmoredTruck,
|
||||
TowTruck,
|
||||
@ -604,8 +604,8 @@ enum class BlipIcons
|
||||
FlightSchool,
|
||||
Bar = 93,
|
||||
ParachuteJump,
|
||||
Heist2 = 96,
|
||||
CarWash = 100,
|
||||
Heist2 = 96,
|
||||
CarWash = 100,
|
||||
ComedyClub = 102,
|
||||
Darts,
|
||||
FIB = 106,
|
||||
@ -613,7 +613,7 @@ enum class BlipIcons
|
||||
DollarSign,
|
||||
Golf,
|
||||
AmmuNation,
|
||||
Exile = 112,
|
||||
Exile = 112,
|
||||
ShootingRange = 119,
|
||||
Solomon,
|
||||
StripClub,
|
||||
@ -626,7 +626,7 @@ enum class BlipIcons
|
||||
Marijuana = 140,
|
||||
Hunting,
|
||||
ArmsTraffickingGround = 147,
|
||||
Nigel = 149,
|
||||
Nigel = 149,
|
||||
AssaultRifle,
|
||||
Bat,
|
||||
Grenade,
|
||||
@ -642,14 +642,14 @@ enum class BlipIcons
|
||||
PointOfInterest,
|
||||
GTAOPassive,
|
||||
GTAOUsingMenu,
|
||||
Link = 171,
|
||||
Link = 171,
|
||||
Minigun = 173,
|
||||
GrenadeLauncher,
|
||||
Armor,
|
||||
Castle,
|
||||
CameraIcon = 184,
|
||||
Handcuffs = 188,
|
||||
Yoga = 197,
|
||||
Handcuffs = 188,
|
||||
Yoga = 197,
|
||||
Cab,
|
||||
Number11,
|
||||
Number12,
|
||||
@ -661,9 +661,9 @@ enum class BlipIcons
|
||||
Epsilon,
|
||||
PersonalVehicleCar = 225,
|
||||
PersonalVehicleBike,
|
||||
Custody = 237,
|
||||
Custody = 237,
|
||||
ArmsTraffickingAir = 251,
|
||||
Fairground = 266,
|
||||
Fairground = 266,
|
||||
PropertyManagement,
|
||||
Altruist = 269,
|
||||
Enemy,
|
||||
@ -684,8 +684,8 @@ enum class BlipIcons
|
||||
RaceAir,
|
||||
RaceCar,
|
||||
RaceSea,
|
||||
GarbageTruck = 318,
|
||||
Motorcycle = 348,
|
||||
GarbageTruck = 318,
|
||||
Motorcycle = 348,
|
||||
SafehouseForSale = 350,
|
||||
Package,
|
||||
MartinMadrazo,
|
||||
@ -1005,35 +1005,35 @@ enum class BlipColors
|
||||
PlayerColor,
|
||||
YellowMission,
|
||||
FriendlyVehicle = 0x26,
|
||||
MichaelColor = 0x2A,
|
||||
MichaelColor = 0x2A,
|
||||
FranklinColor,
|
||||
TravorColor,
|
||||
BlipColorEnemy = 0x31,
|
||||
MissionVehicle = 0x36,
|
||||
RedMission = 0x3B,
|
||||
RedMission = 0x3B,
|
||||
YellowMission2 = 0x3C,
|
||||
Mission = 0x42,
|
||||
WaypointColor = 0x54
|
||||
Mission = 0x42,
|
||||
WaypointColor = 0x54
|
||||
};
|
||||
|
||||
enum class BlipDisplayBits
|
||||
{
|
||||
BlipIsBright = (1 << 1),
|
||||
BlipEngageFlashing = (1 << 3),
|
||||
BlipFlashForRoute = (1 << 5),
|
||||
BlipIsOnMinimap = (1 << 6),
|
||||
BlipIsHighDetail = (1 << 8),
|
||||
BlipIsBright = (1 << 1),
|
||||
BlipEngageFlashing = (1 << 3),
|
||||
BlipFlashForRoute = (1 << 5),
|
||||
BlipIsOnMinimap = (1 << 6),
|
||||
BlipIsHighDetail = (1 << 8),
|
||||
BlipUseBlipColorForDirection = (1 << 9),
|
||||
BlipIsSmall = (1 << 10),
|
||||
BlipShowCone = (1 << 11),
|
||||
BlipIsMissionCreatorBlip = (1 << 12),
|
||||
BlipShowCheckmark = (1 << 15),
|
||||
BlipShowDollarSign = (1 << 16),
|
||||
BlipShowHeadingIndicator = (1 << 17),
|
||||
BlipShowFullCircle = (1 << 18),
|
||||
BlipIsFriend = (1 << 19),
|
||||
BlipIsCrew = (1 << 20),
|
||||
BlipIsSelected = (1 << 22),
|
||||
BlipIsSmall = (1 << 10),
|
||||
BlipShowCone = (1 << 11),
|
||||
BlipIsMissionCreatorBlip = (1 << 12),
|
||||
BlipShowCheckmark = (1 << 15),
|
||||
BlipShowDollarSign = (1 << 16),
|
||||
BlipShowHeadingIndicator = (1 << 17),
|
||||
BlipShowFullCircle = (1 << 18),
|
||||
BlipIsFriend = (1 << 19),
|
||||
BlipIsCrew = (1 << 20),
|
||||
BlipIsSelected = (1 << 22),
|
||||
};
|
||||
|
||||
enum class BlipRenderBits
|
||||
@ -1043,10 +1043,10 @@ enum class BlipRenderBits
|
||||
|
||||
enum class eFrameFlags : std::uint32_t
|
||||
{
|
||||
eFrameFlagExplosiveAmmo = 1 << 11,
|
||||
eFrameFlagFireAmmo = 1 << 12,
|
||||
eFrameFlagExplosiveAmmo = 1 << 11,
|
||||
eFrameFlagFireAmmo = 1 << 12,
|
||||
eFrameFlagExplosiveMelee = 1 << 13,
|
||||
eFrameFlagSuperJump = 1 << 14,
|
||||
eFrameFlagSuperJump = 1 << 14,
|
||||
};
|
||||
|
||||
enum class eNetObjType
|
||||
@ -1070,7 +1070,7 @@ enum class eNetObjType
|
||||
enum class eNetObjectFlags : std::uint16_t
|
||||
{
|
||||
NET_OBJ_FLAGS_FROM_SCRIPT = 1 << 2,
|
||||
NET_OBJ_FLAGS_SCRIPTED = 1 << 6,
|
||||
NET_OBJ_FLAGS_SCRIPTED = 1 << 6,
|
||||
};
|
||||
|
||||
enum class eAckCode : std::uint32_t
|
||||
@ -1088,362 +1088,362 @@ enum class eAckCode : std::uint32_t
|
||||
|
||||
enum class PedBones : std::uint32_t
|
||||
{
|
||||
SKEL_ROOT = 0x0,
|
||||
SKEL_Pelvis = 0x2E28,
|
||||
SKEL_L_Thigh = 0xE39F,
|
||||
SKEL_L_Calf = 0xF9BB,
|
||||
SKEL_L_Foot = 0x3779,
|
||||
SKEL_L_Toe0 = 0x83C,
|
||||
EO_L_Foot = 0x84C5,
|
||||
EO_L_Toe = 0x68BD,
|
||||
IK_L_Foot = 0xFEDD,
|
||||
PH_L_Foot = 0xE175,
|
||||
MH_L_Knee = 0xB3FE,
|
||||
SKEL_R_Thigh = 0xCA72,
|
||||
SKEL_R_Calf = 0x9000,
|
||||
SKEL_R_Foot = 0xCC4D,
|
||||
SKEL_R_Toe0 = 0x512D,
|
||||
EO_R_Foot = 0x1096,
|
||||
EO_R_Toe = 0x7163,
|
||||
IK_R_Foot = 0x8AAE,
|
||||
PH_R_Foot = 0x60E6,
|
||||
MH_R_Knee = 0x3FCF,
|
||||
RB_L_ThighRoll = 0x5C57,
|
||||
RB_R_ThighRoll = 0x192A,
|
||||
SKEL_Spine_Root = 0xE0FD,
|
||||
SKEL_Spine0 = 0x5C01,
|
||||
SKEL_Spine1 = 0x60F0,
|
||||
SKEL_Spine2 = 0x60F1,
|
||||
SKEL_Spine3 = 0x60F2,
|
||||
SKEL_L_Clavicle = 0xFCD9,
|
||||
SKEL_L_UpperArm = 0xB1C5,
|
||||
SKEL_L_Forearm = 0xEEEB,
|
||||
SKEL_L_Hand = 0x49D9,
|
||||
SKEL_L_Finger00 = 0x67F2,
|
||||
SKEL_L_Finger01 = 0xFF9,
|
||||
SKEL_L_Finger02 = 0xFFA,
|
||||
SKEL_L_Finger10 = 0x67F3,
|
||||
SKEL_L_Finger11 = 0x1049,
|
||||
SKEL_L_Finger12 = 0x104A,
|
||||
SKEL_L_Finger20 = 0x67F4,
|
||||
SKEL_L_Finger21 = 0x1059,
|
||||
SKEL_L_Finger22 = 0x105A,
|
||||
SKEL_L_Finger30 = 0x67F5,
|
||||
SKEL_L_Finger31 = 0x1029,
|
||||
SKEL_L_Finger32 = 0x102A,
|
||||
SKEL_L_Finger40 = 0x67F6,
|
||||
SKEL_L_Finger41 = 0x1039,
|
||||
SKEL_L_Finger42 = 0x103A,
|
||||
PH_L_Hand = 0xEB95,
|
||||
IK_L_Hand = 0x8CBD,
|
||||
RB_L_ForeArmRoll = 0xEE4F,
|
||||
RB_L_ArmRoll = 0x1470,
|
||||
MH_L_Elbow = 0x58B7,
|
||||
SKEL_R_Clavicle = 0x29D2,
|
||||
SKEL_R_UpperArm = 0x9D4D,
|
||||
SKEL_R_Forearm = 0x6E5C,
|
||||
SKEL_R_Hand = 0xDEAD,
|
||||
SKEL_R_Finger00 = 0xE5F2,
|
||||
SKEL_R_Finger01 = 0xFA10,
|
||||
SKEL_R_Finger02 = 0xFA11,
|
||||
SKEL_R_Finger10 = 0xE5F3,
|
||||
SKEL_R_Finger11 = 0xFA60,
|
||||
SKEL_R_Finger12 = 0xFA61,
|
||||
SKEL_R_Finger20 = 0xE5F4,
|
||||
SKEL_R_Finger21 = 0xFA70,
|
||||
SKEL_R_Finger22 = 0xFA71,
|
||||
SKEL_R_Finger30 = 0xE5F5,
|
||||
SKEL_R_Finger31 = 0xFA40,
|
||||
SKEL_R_Finger32 = 0xFA41,
|
||||
SKEL_R_Finger40 = 0xE5F6,
|
||||
SKEL_R_Finger41 = 0xFA50,
|
||||
SKEL_R_Finger42 = 0xFA51,
|
||||
PH_R_Hand = 0x6F06,
|
||||
IK_R_Hand = 0x188E,
|
||||
RB_R_ForeArmRoll = 0xAB22,
|
||||
RB_R_ArmRoll = 0x90FF,
|
||||
MH_R_Elbow = 0xBB0,
|
||||
SKEL_Neck_1 = 0x9995,
|
||||
SKEL_Head = 0x796E,
|
||||
IK_Head = 0x322C,
|
||||
FACIAL_facialRoot = 0xFE2C,
|
||||
FB_L_Brow_Out_000 = 0xE3DB,
|
||||
FB_L_Lid_Upper_000 = 0xB2B6,
|
||||
FB_L_Eye_000 = 0x62AC,
|
||||
FB_L_CheekBone_000 = 0x542E,
|
||||
FB_L_Lip_Corner_000 = 0x74AC,
|
||||
FB_R_Lid_Upper_000 = 0xAA10,
|
||||
FB_R_Eye_000 = 0x6B52,
|
||||
FB_R_CheekBone_000 = 0x4B88,
|
||||
FB_R_Brow_Out_000 = 0x54C,
|
||||
FB_R_Lip_Corner_000 = 0x2BA6,
|
||||
FB_Brow_Centre_000 = 0x9149,
|
||||
FB_UpperLipRoot_000 = 0x4ED2,
|
||||
FB_UpperLip_000 = 0xF18F,
|
||||
FB_L_Lip_Top_000 = 0x4F37,
|
||||
FB_R_Lip_Top_000 = 0x4537,
|
||||
FB_Jaw_000 = 0xB4A0,
|
||||
FB_LowerLipRoot_000 = 0x4324,
|
||||
FB_LowerLip_000 = 0x508F,
|
||||
FB_L_Lip_Bot_000 = 0xB93B,
|
||||
FB_R_Lip_Bot_000 = 0xC33B,
|
||||
FB_Tongue_000 = 0xB987,
|
||||
RB_Neck_1 = 0x8B93,
|
||||
SPR_L_Breast = 0xFC8E,
|
||||
SPR_R_Breast = 0x885F,
|
||||
IK_Root = 0xDD1C,
|
||||
SKEL_Neck_2 = 0x5FD4,
|
||||
SKEL_Pelvis1 = 0xD003,
|
||||
SKEL_PelvisRoot = 0x45FC,
|
||||
SKEL_SADDLE = 0x9524,
|
||||
MH_L_CalfBack = 0x1013,
|
||||
MH_L_ThighBack = 0x600D,
|
||||
SM_L_Skirt = 0xC419,
|
||||
MH_R_CalfBack = 0xB013,
|
||||
MH_R_ThighBack = 0x51A3,
|
||||
SM_R_Skirt = 0x7712,
|
||||
SM_M_BackSkirtRoll = 0xDBB,
|
||||
SM_L_BackSkirtRoll = 0x40B2,
|
||||
SM_R_BackSkirtRoll = 0xC141,
|
||||
SM_M_FrontSkirtRoll = 0xCDBB,
|
||||
SM_L_FrontSkirtRoll = 0x9B69,
|
||||
SM_R_FrontSkirtRoll = 0x86F1,
|
||||
SM_CockNBalls_ROOT = 0xC67D,
|
||||
SM_CockNBalls = 0x9D34,
|
||||
MH_L_Finger00 = 0x8C63,
|
||||
MH_L_FingerBulge00 = 0x5FB8,
|
||||
MH_L_Finger10 = 0x8C53,
|
||||
MH_L_FingerTop00 = 0xA244,
|
||||
MH_L_HandSide = 0xC78A,
|
||||
MH_Watch = 0x2738,
|
||||
MH_L_Sleeve = 0x933C,
|
||||
MH_R_Finger00 = 0x2C63,
|
||||
MH_R_FingerBulge00 = 0x69B8,
|
||||
MH_R_Finger10 = 0x2C53,
|
||||
MH_R_FingerTop00 = 0xEF4B,
|
||||
MH_R_HandSide = 0x68FB,
|
||||
MH_R_Sleeve = 0x92DC,
|
||||
FACIAL_jaw = 0xB21,
|
||||
FACIAL_underChin = 0x8A95,
|
||||
FACIAL_L_underChin = 0x234E,
|
||||
FACIAL_chin = 0xB578,
|
||||
FACIAL_chinSkinBottom = 0x98BC,
|
||||
FACIAL_L_chinSkinBottom = 0x3E8F,
|
||||
FACIAL_R_chinSkinBottom = 0x9E8F,
|
||||
FACIAL_tongueA = 0x4A7C,
|
||||
FACIAL_tongueB = 0x4A7D,
|
||||
FACIAL_tongueC = 0x4A7E,
|
||||
FACIAL_tongueD = 0x4A7F,
|
||||
FACIAL_tongueE = 0x4A80,
|
||||
FACIAL_L_tongueE = 0x35F2,
|
||||
FACIAL_R_tongueE = 0x2FF2,
|
||||
FACIAL_L_tongueD = 0x35F1,
|
||||
FACIAL_R_tongueD = 0x2FF1,
|
||||
FACIAL_L_tongueC = 0x35F0,
|
||||
FACIAL_R_tongueC = 0x2FF0,
|
||||
FACIAL_L_tongueB = 0x35EF,
|
||||
FACIAL_R_tongueB = 0x2FEF,
|
||||
FACIAL_L_tongueA = 0x35EE,
|
||||
FACIAL_R_tongueA = 0x2FEE,
|
||||
FACIAL_chinSkinTop = 0x7226,
|
||||
FACIAL_L_chinSkinTop = 0x3EB3,
|
||||
FACIAL_chinSkinMid = 0x899A,
|
||||
FACIAL_L_chinSkinMid = 0x4427,
|
||||
FACIAL_L_chinSide = 0x4A5E,
|
||||
FACIAL_R_chinSkinMid = 0xF5AF,
|
||||
FACIAL_R_chinSkinTop = 0xF03B,
|
||||
FACIAL_R_chinSide = 0xAA5E,
|
||||
FACIAL_R_underChin = 0x2BF4,
|
||||
FACIAL_L_lipLowerSDK = 0xB9E1,
|
||||
FACIAL_L_lipLowerAnalog = 0x244A,
|
||||
FACIAL_L_lipLowerThicknessV = 0xC749,
|
||||
FACIAL_L_lipLowerThicknessH = 0xC67B,
|
||||
FACIAL_lipLowerSDK = 0x7285,
|
||||
FACIAL_lipLowerAnalog = 0xD97B,
|
||||
FACIAL_lipLowerThicknessV = 0xC5BB,
|
||||
FACIAL_lipLowerThicknessH = 0xC5ED,
|
||||
FACIAL_R_lipLowerSDK = 0xA034,
|
||||
FACIAL_R_lipLowerAnalog = 0xC2D9,
|
||||
FACIAL_R_lipLowerThicknessV = 0xC6E9,
|
||||
FACIAL_R_lipLowerThicknessH = 0xC6DB,
|
||||
FACIAL_nose = 0x20F1,
|
||||
FACIAL_L_nostril = 0x7322,
|
||||
FACIAL_L_nostrilThickness = 0xC15F,
|
||||
FACIAL_noseLower = 0xE05A,
|
||||
FACIAL_L_noseLowerThickness = 0x79D5,
|
||||
FACIAL_R_noseLowerThickness = 0x7975,
|
||||
FACIAL_noseTip = 0x6A60,
|
||||
FACIAL_R_nostril = 0x7922,
|
||||
FACIAL_R_nostrilThickness = 0x36FF,
|
||||
FACIAL_noseUpper = 0xA04F,
|
||||
FACIAL_L_noseUpper = 0x1FB8,
|
||||
FACIAL_noseBridge = 0x9BA3,
|
||||
FACIAL_L_nasolabialFurrow = 0x5ACA,
|
||||
FACIAL_L_nasolabialBulge = 0xCD78,
|
||||
FACIAL_L_cheekLower = 0x6907,
|
||||
FACIAL_L_cheekLowerBulge1 = 0xE3FB,
|
||||
FACIAL_L_cheekLowerBulge2 = 0xE3FC,
|
||||
FACIAL_L_cheekInner = 0xE7AB,
|
||||
FACIAL_L_cheekOuter = 0x8161,
|
||||
FACIAL_L_eyesackLower = 0x771B,
|
||||
FACIAL_L_eyeball = 0x1744,
|
||||
FACIAL_L_eyelidLower = 0x998C,
|
||||
FACIAL_L_eyelidLowerOuterSDK = 0xFE4C,
|
||||
FACIAL_L_eyelidLowerOuterAnalog = 0xB9AA,
|
||||
FACIAL_L_eyelashLowerOuter = 0xD7F6,
|
||||
FACIAL_L_eyelidLowerInnerSDK = 0xF151,
|
||||
FACIAL_L_eyelidLowerInnerAnalog = 0x8242,
|
||||
FACIAL_L_eyelashLowerInner = 0x4CCF,
|
||||
FACIAL_L_eyelidUpper = 0x97C1,
|
||||
FACIAL_L_eyelidUpperOuterSDK = 0xAF15,
|
||||
FACIAL_L_eyelidUpperOuterAnalog = 0x67FA,
|
||||
FACIAL_L_eyelashUpperOuter = 0x27B7,
|
||||
FACIAL_L_eyelidUpperInnerSDK = 0xD341,
|
||||
FACIAL_L_eyelidUpperInnerAnalog = 0xF092,
|
||||
FACIAL_L_eyelashUpperInner = 0x9B1F,
|
||||
FACIAL_L_eyesackUpperOuterBulge = 0xA559,
|
||||
FACIAL_L_eyesackUpperInnerBulge = 0x2F2A,
|
||||
SKEL_ROOT = 0x0,
|
||||
SKEL_Pelvis = 0x2E28,
|
||||
SKEL_L_Thigh = 0xE39F,
|
||||
SKEL_L_Calf = 0xF9BB,
|
||||
SKEL_L_Foot = 0x3779,
|
||||
SKEL_L_Toe0 = 0x83C,
|
||||
EO_L_Foot = 0x84C5,
|
||||
EO_L_Toe = 0x68BD,
|
||||
IK_L_Foot = 0xFEDD,
|
||||
PH_L_Foot = 0xE175,
|
||||
MH_L_Knee = 0xB3FE,
|
||||
SKEL_R_Thigh = 0xCA72,
|
||||
SKEL_R_Calf = 0x9000,
|
||||
SKEL_R_Foot = 0xCC4D,
|
||||
SKEL_R_Toe0 = 0x512D,
|
||||
EO_R_Foot = 0x1096,
|
||||
EO_R_Toe = 0x7163,
|
||||
IK_R_Foot = 0x8AAE,
|
||||
PH_R_Foot = 0x60E6,
|
||||
MH_R_Knee = 0x3FCF,
|
||||
RB_L_ThighRoll = 0x5C57,
|
||||
RB_R_ThighRoll = 0x192A,
|
||||
SKEL_Spine_Root = 0xE0FD,
|
||||
SKEL_Spine0 = 0x5C01,
|
||||
SKEL_Spine1 = 0x60F0,
|
||||
SKEL_Spine2 = 0x60F1,
|
||||
SKEL_Spine3 = 0x60F2,
|
||||
SKEL_L_Clavicle = 0xFCD9,
|
||||
SKEL_L_UpperArm = 0xB1C5,
|
||||
SKEL_L_Forearm = 0xEEEB,
|
||||
SKEL_L_Hand = 0x49D9,
|
||||
SKEL_L_Finger00 = 0x67F2,
|
||||
SKEL_L_Finger01 = 0xFF9,
|
||||
SKEL_L_Finger02 = 0xFFA,
|
||||
SKEL_L_Finger10 = 0x67F3,
|
||||
SKEL_L_Finger11 = 0x1049,
|
||||
SKEL_L_Finger12 = 0x104A,
|
||||
SKEL_L_Finger20 = 0x67F4,
|
||||
SKEL_L_Finger21 = 0x1059,
|
||||
SKEL_L_Finger22 = 0x105A,
|
||||
SKEL_L_Finger30 = 0x67F5,
|
||||
SKEL_L_Finger31 = 0x1029,
|
||||
SKEL_L_Finger32 = 0x102A,
|
||||
SKEL_L_Finger40 = 0x67F6,
|
||||
SKEL_L_Finger41 = 0x1039,
|
||||
SKEL_L_Finger42 = 0x103A,
|
||||
PH_L_Hand = 0xEB95,
|
||||
IK_L_Hand = 0x8CBD,
|
||||
RB_L_ForeArmRoll = 0xEE4F,
|
||||
RB_L_ArmRoll = 0x1470,
|
||||
MH_L_Elbow = 0x58B7,
|
||||
SKEL_R_Clavicle = 0x29D2,
|
||||
SKEL_R_UpperArm = 0x9D4D,
|
||||
SKEL_R_Forearm = 0x6E5C,
|
||||
SKEL_R_Hand = 0xDEAD,
|
||||
SKEL_R_Finger00 = 0xE5F2,
|
||||
SKEL_R_Finger01 = 0xFA10,
|
||||
SKEL_R_Finger02 = 0xFA11,
|
||||
SKEL_R_Finger10 = 0xE5F3,
|
||||
SKEL_R_Finger11 = 0xFA60,
|
||||
SKEL_R_Finger12 = 0xFA61,
|
||||
SKEL_R_Finger20 = 0xE5F4,
|
||||
SKEL_R_Finger21 = 0xFA70,
|
||||
SKEL_R_Finger22 = 0xFA71,
|
||||
SKEL_R_Finger30 = 0xE5F5,
|
||||
SKEL_R_Finger31 = 0xFA40,
|
||||
SKEL_R_Finger32 = 0xFA41,
|
||||
SKEL_R_Finger40 = 0xE5F6,
|
||||
SKEL_R_Finger41 = 0xFA50,
|
||||
SKEL_R_Finger42 = 0xFA51,
|
||||
PH_R_Hand = 0x6F06,
|
||||
IK_R_Hand = 0x188E,
|
||||
RB_R_ForeArmRoll = 0xAB22,
|
||||
RB_R_ArmRoll = 0x90FF,
|
||||
MH_R_Elbow = 0xBB0,
|
||||
SKEL_Neck_1 = 0x9995,
|
||||
SKEL_Head = 0x796E,
|
||||
IK_Head = 0x322C,
|
||||
FACIAL_facialRoot = 0xFE2C,
|
||||
FB_L_Brow_Out_000 = 0xE3DB,
|
||||
FB_L_Lid_Upper_000 = 0xB2B6,
|
||||
FB_L_Eye_000 = 0x62AC,
|
||||
FB_L_CheekBone_000 = 0x542E,
|
||||
FB_L_Lip_Corner_000 = 0x74AC,
|
||||
FB_R_Lid_Upper_000 = 0xAA10,
|
||||
FB_R_Eye_000 = 0x6B52,
|
||||
FB_R_CheekBone_000 = 0x4B88,
|
||||
FB_R_Brow_Out_000 = 0x54C,
|
||||
FB_R_Lip_Corner_000 = 0x2BA6,
|
||||
FB_Brow_Centre_000 = 0x9149,
|
||||
FB_UpperLipRoot_000 = 0x4ED2,
|
||||
FB_UpperLip_000 = 0xF18F,
|
||||
FB_L_Lip_Top_000 = 0x4F37,
|
||||
FB_R_Lip_Top_000 = 0x4537,
|
||||
FB_Jaw_000 = 0xB4A0,
|
||||
FB_LowerLipRoot_000 = 0x4324,
|
||||
FB_LowerLip_000 = 0x508F,
|
||||
FB_L_Lip_Bot_000 = 0xB93B,
|
||||
FB_R_Lip_Bot_000 = 0xC33B,
|
||||
FB_Tongue_000 = 0xB987,
|
||||
RB_Neck_1 = 0x8B93,
|
||||
SPR_L_Breast = 0xFC8E,
|
||||
SPR_R_Breast = 0x885F,
|
||||
IK_Root = 0xDD1C,
|
||||
SKEL_Neck_2 = 0x5FD4,
|
||||
SKEL_Pelvis1 = 0xD003,
|
||||
SKEL_PelvisRoot = 0x45FC,
|
||||
SKEL_SADDLE = 0x9524,
|
||||
MH_L_CalfBack = 0x1013,
|
||||
MH_L_ThighBack = 0x600D,
|
||||
SM_L_Skirt = 0xC419,
|
||||
MH_R_CalfBack = 0xB013,
|
||||
MH_R_ThighBack = 0x51A3,
|
||||
SM_R_Skirt = 0x7712,
|
||||
SM_M_BackSkirtRoll = 0xDBB,
|
||||
SM_L_BackSkirtRoll = 0x40B2,
|
||||
SM_R_BackSkirtRoll = 0xC141,
|
||||
SM_M_FrontSkirtRoll = 0xCDBB,
|
||||
SM_L_FrontSkirtRoll = 0x9B69,
|
||||
SM_R_FrontSkirtRoll = 0x86F1,
|
||||
SM_CockNBalls_ROOT = 0xC67D,
|
||||
SM_CockNBalls = 0x9D34,
|
||||
MH_L_Finger00 = 0x8C63,
|
||||
MH_L_FingerBulge00 = 0x5FB8,
|
||||
MH_L_Finger10 = 0x8C53,
|
||||
MH_L_FingerTop00 = 0xA244,
|
||||
MH_L_HandSide = 0xC78A,
|
||||
MH_Watch = 0x2738,
|
||||
MH_L_Sleeve = 0x933C,
|
||||
MH_R_Finger00 = 0x2C63,
|
||||
MH_R_FingerBulge00 = 0x69B8,
|
||||
MH_R_Finger10 = 0x2C53,
|
||||
MH_R_FingerTop00 = 0xEF4B,
|
||||
MH_R_HandSide = 0x68FB,
|
||||
MH_R_Sleeve = 0x92DC,
|
||||
FACIAL_jaw = 0xB21,
|
||||
FACIAL_underChin = 0x8A95,
|
||||
FACIAL_L_underChin = 0x234E,
|
||||
FACIAL_chin = 0xB578,
|
||||
FACIAL_chinSkinBottom = 0x98BC,
|
||||
FACIAL_L_chinSkinBottom = 0x3E8F,
|
||||
FACIAL_R_chinSkinBottom = 0x9E8F,
|
||||
FACIAL_tongueA = 0x4A7C,
|
||||
FACIAL_tongueB = 0x4A7D,
|
||||
FACIAL_tongueC = 0x4A7E,
|
||||
FACIAL_tongueD = 0x4A7F,
|
||||
FACIAL_tongueE = 0x4A80,
|
||||
FACIAL_L_tongueE = 0x35F2,
|
||||
FACIAL_R_tongueE = 0x2FF2,
|
||||
FACIAL_L_tongueD = 0x35F1,
|
||||
FACIAL_R_tongueD = 0x2FF1,
|
||||
FACIAL_L_tongueC = 0x35F0,
|
||||
FACIAL_R_tongueC = 0x2FF0,
|
||||
FACIAL_L_tongueB = 0x35EF,
|
||||
FACIAL_R_tongueB = 0x2FEF,
|
||||
FACIAL_L_tongueA = 0x35EE,
|
||||
FACIAL_R_tongueA = 0x2FEE,
|
||||
FACIAL_chinSkinTop = 0x7226,
|
||||
FACIAL_L_chinSkinTop = 0x3EB3,
|
||||
FACIAL_chinSkinMid = 0x899A,
|
||||
FACIAL_L_chinSkinMid = 0x4427,
|
||||
FACIAL_L_chinSide = 0x4A5E,
|
||||
FACIAL_R_chinSkinMid = 0xF5AF,
|
||||
FACIAL_R_chinSkinTop = 0xF03B,
|
||||
FACIAL_R_chinSide = 0xAA5E,
|
||||
FACIAL_R_underChin = 0x2BF4,
|
||||
FACIAL_L_lipLowerSDK = 0xB9E1,
|
||||
FACIAL_L_lipLowerAnalog = 0x244A,
|
||||
FACIAL_L_lipLowerThicknessV = 0xC749,
|
||||
FACIAL_L_lipLowerThicknessH = 0xC67B,
|
||||
FACIAL_lipLowerSDK = 0x7285,
|
||||
FACIAL_lipLowerAnalog = 0xD97B,
|
||||
FACIAL_lipLowerThicknessV = 0xC5BB,
|
||||
FACIAL_lipLowerThicknessH = 0xC5ED,
|
||||
FACIAL_R_lipLowerSDK = 0xA034,
|
||||
FACIAL_R_lipLowerAnalog = 0xC2D9,
|
||||
FACIAL_R_lipLowerThicknessV = 0xC6E9,
|
||||
FACIAL_R_lipLowerThicknessH = 0xC6DB,
|
||||
FACIAL_nose = 0x20F1,
|
||||
FACIAL_L_nostril = 0x7322,
|
||||
FACIAL_L_nostrilThickness = 0xC15F,
|
||||
FACIAL_noseLower = 0xE05A,
|
||||
FACIAL_L_noseLowerThickness = 0x79D5,
|
||||
FACIAL_R_noseLowerThickness = 0x7975,
|
||||
FACIAL_noseTip = 0x6A60,
|
||||
FACIAL_R_nostril = 0x7922,
|
||||
FACIAL_R_nostrilThickness = 0x36FF,
|
||||
FACIAL_noseUpper = 0xA04F,
|
||||
FACIAL_L_noseUpper = 0x1FB8,
|
||||
FACIAL_noseBridge = 0x9BA3,
|
||||
FACIAL_L_nasolabialFurrow = 0x5ACA,
|
||||
FACIAL_L_nasolabialBulge = 0xCD78,
|
||||
FACIAL_L_cheekLower = 0x6907,
|
||||
FACIAL_L_cheekLowerBulge1 = 0xE3FB,
|
||||
FACIAL_L_cheekLowerBulge2 = 0xE3FC,
|
||||
FACIAL_L_cheekInner = 0xE7AB,
|
||||
FACIAL_L_cheekOuter = 0x8161,
|
||||
FACIAL_L_eyesackLower = 0x771B,
|
||||
FACIAL_L_eyeball = 0x1744,
|
||||
FACIAL_L_eyelidLower = 0x998C,
|
||||
FACIAL_L_eyelidLowerOuterSDK = 0xFE4C,
|
||||
FACIAL_L_eyelidLowerOuterAnalog = 0xB9AA,
|
||||
FACIAL_L_eyelashLowerOuter = 0xD7F6,
|
||||
FACIAL_L_eyelidLowerInnerSDK = 0xF151,
|
||||
FACIAL_L_eyelidLowerInnerAnalog = 0x8242,
|
||||
FACIAL_L_eyelashLowerInner = 0x4CCF,
|
||||
FACIAL_L_eyelidUpper = 0x97C1,
|
||||
FACIAL_L_eyelidUpperOuterSDK = 0xAF15,
|
||||
FACIAL_L_eyelidUpperOuterAnalog = 0x67FA,
|
||||
FACIAL_L_eyelashUpperOuter = 0x27B7,
|
||||
FACIAL_L_eyelidUpperInnerSDK = 0xD341,
|
||||
FACIAL_L_eyelidUpperInnerAnalog = 0xF092,
|
||||
FACIAL_L_eyelashUpperInner = 0x9B1F,
|
||||
FACIAL_L_eyesackUpperOuterBulge = 0xA559,
|
||||
FACIAL_L_eyesackUpperInnerBulge = 0x2F2A,
|
||||
FACIAL_L_eyesackUpperOuterFurrow = 0xC597,
|
||||
FACIAL_L_eyesackUpperInnerFurrow = 0x52A7,
|
||||
FACIAL_forehead = 0x9218,
|
||||
FACIAL_L_foreheadInner = 0x843,
|
||||
FACIAL_L_foreheadInnerBulge = 0x767C,
|
||||
FACIAL_L_foreheadOuter = 0x8DCB,
|
||||
FACIAL_skull = 0x4221,
|
||||
FACIAL_foreheadUpper = 0xF7D6,
|
||||
FACIAL_L_foreheadUpperInner = 0xCF13,
|
||||
FACIAL_L_foreheadUpperOuter = 0x509B,
|
||||
FACIAL_R_foreheadUpperInner = 0xCEF3,
|
||||
FACIAL_R_foreheadUpperOuter = 0x507B,
|
||||
FACIAL_L_temple = 0xAF79,
|
||||
FACIAL_L_ear = 0x19DD,
|
||||
FACIAL_L_earLower = 0x6031,
|
||||
FACIAL_L_masseter = 0x2810,
|
||||
FACIAL_L_jawRecess = 0x9C7A,
|
||||
FACIAL_L_cheekOuterSkin = 0x14A5,
|
||||
FACIAL_R_cheekLower = 0xF367,
|
||||
FACIAL_R_cheekLowerBulge1 = 0x599B,
|
||||
FACIAL_R_cheekLowerBulge2 = 0x599C,
|
||||
FACIAL_R_masseter = 0x810,
|
||||
FACIAL_R_jawRecess = 0x93D4,
|
||||
FACIAL_R_ear = 0x1137,
|
||||
FACIAL_R_earLower = 0x8031,
|
||||
FACIAL_R_eyesackLower = 0x777B,
|
||||
FACIAL_R_nasolabialBulge = 0xD61E,
|
||||
FACIAL_R_cheekOuter = 0xD32,
|
||||
FACIAL_R_cheekInner = 0x737C,
|
||||
FACIAL_R_noseUpper = 0x1CD6,
|
||||
FACIAL_R_foreheadInner = 0xE43,
|
||||
FACIAL_R_foreheadInnerBulge = 0x769C,
|
||||
FACIAL_R_foreheadOuter = 0x8FCB,
|
||||
FACIAL_R_cheekOuterSkin = 0xB334,
|
||||
FACIAL_forehead = 0x9218,
|
||||
FACIAL_L_foreheadInner = 0x843,
|
||||
FACIAL_L_foreheadInnerBulge = 0x767C,
|
||||
FACIAL_L_foreheadOuter = 0x8DCB,
|
||||
FACIAL_skull = 0x4221,
|
||||
FACIAL_foreheadUpper = 0xF7D6,
|
||||
FACIAL_L_foreheadUpperInner = 0xCF13,
|
||||
FACIAL_L_foreheadUpperOuter = 0x509B,
|
||||
FACIAL_R_foreheadUpperInner = 0xCEF3,
|
||||
FACIAL_R_foreheadUpperOuter = 0x507B,
|
||||
FACIAL_L_temple = 0xAF79,
|
||||
FACIAL_L_ear = 0x19DD,
|
||||
FACIAL_L_earLower = 0x6031,
|
||||
FACIAL_L_masseter = 0x2810,
|
||||
FACIAL_L_jawRecess = 0x9C7A,
|
||||
FACIAL_L_cheekOuterSkin = 0x14A5,
|
||||
FACIAL_R_cheekLower = 0xF367,
|
||||
FACIAL_R_cheekLowerBulge1 = 0x599B,
|
||||
FACIAL_R_cheekLowerBulge2 = 0x599C,
|
||||
FACIAL_R_masseter = 0x810,
|
||||
FACIAL_R_jawRecess = 0x93D4,
|
||||
FACIAL_R_ear = 0x1137,
|
||||
FACIAL_R_earLower = 0x8031,
|
||||
FACIAL_R_eyesackLower = 0x777B,
|
||||
FACIAL_R_nasolabialBulge = 0xD61E,
|
||||
FACIAL_R_cheekOuter = 0xD32,
|
||||
FACIAL_R_cheekInner = 0x737C,
|
||||
FACIAL_R_noseUpper = 0x1CD6,
|
||||
FACIAL_R_foreheadInner = 0xE43,
|
||||
FACIAL_R_foreheadInnerBulge = 0x769C,
|
||||
FACIAL_R_foreheadOuter = 0x8FCB,
|
||||
FACIAL_R_cheekOuterSkin = 0xB334,
|
||||
FACIAL_R_eyesackUpperInnerFurrow = 0x9FAE,
|
||||
FACIAL_R_eyesackUpperOuterFurrow = 0x140F,
|
||||
FACIAL_R_eyesackUpperInnerBulge = 0xA359,
|
||||
FACIAL_R_eyesackUpperOuterBulge = 0x1AF9,
|
||||
FACIAL_R_nasolabialFurrow = 0x2CAA,
|
||||
FACIAL_R_temple = 0xAF19,
|
||||
FACIAL_R_eyeball = 0x1944,
|
||||
FACIAL_R_eyelidUpper = 0x7E14,
|
||||
FACIAL_R_eyelidUpperOuterSDK = 0xB115,
|
||||
FACIAL_R_eyelidUpperOuterAnalog = 0xF25A,
|
||||
FACIAL_R_eyelashUpperOuter = 0xE0A,
|
||||
FACIAL_R_eyelidUpperInnerSDK = 0xD541,
|
||||
FACIAL_R_eyelidUpperInnerAnalog = 0x7C63,
|
||||
FACIAL_R_eyelashUpperInner = 0x8172,
|
||||
FACIAL_R_eyelidLower = 0x7FDF,
|
||||
FACIAL_R_eyelidLowerOuterSDK = 0x1BD,
|
||||
FACIAL_R_eyelidLowerOuterAnalog = 0x457B,
|
||||
FACIAL_R_eyelashLowerOuter = 0xBE49,
|
||||
FACIAL_R_eyelidLowerInnerSDK = 0xF351,
|
||||
FACIAL_R_eyelidLowerInnerAnalog = 0xE13,
|
||||
FACIAL_R_eyelashLowerInner = 0x3322,
|
||||
FACIAL_L_lipUpperSDK = 0x8F30,
|
||||
FACIAL_L_lipUpperAnalog = 0xB1CF,
|
||||
FACIAL_L_lipUpperThicknessH = 0x37CE,
|
||||
FACIAL_L_lipUpperThicknessV = 0x38BC,
|
||||
FACIAL_lipUpperSDK = 0x1774,
|
||||
FACIAL_lipUpperAnalog = 0xE064,
|
||||
FACIAL_lipUpperThicknessH = 0x7993,
|
||||
FACIAL_lipUpperThicknessV = 0x7981,
|
||||
FACIAL_L_lipCornerSDK = 0xB1C,
|
||||
FACIAL_L_lipCornerAnalog = 0xE568,
|
||||
FACIAL_R_eyesackUpperInnerBulge = 0xA359,
|
||||
FACIAL_R_eyesackUpperOuterBulge = 0x1AF9,
|
||||
FACIAL_R_nasolabialFurrow = 0x2CAA,
|
||||
FACIAL_R_temple = 0xAF19,
|
||||
FACIAL_R_eyeball = 0x1944,
|
||||
FACIAL_R_eyelidUpper = 0x7E14,
|
||||
FACIAL_R_eyelidUpperOuterSDK = 0xB115,
|
||||
FACIAL_R_eyelidUpperOuterAnalog = 0xF25A,
|
||||
FACIAL_R_eyelashUpperOuter = 0xE0A,
|
||||
FACIAL_R_eyelidUpperInnerSDK = 0xD541,
|
||||
FACIAL_R_eyelidUpperInnerAnalog = 0x7C63,
|
||||
FACIAL_R_eyelashUpperInner = 0x8172,
|
||||
FACIAL_R_eyelidLower = 0x7FDF,
|
||||
FACIAL_R_eyelidLowerOuterSDK = 0x1BD,
|
||||
FACIAL_R_eyelidLowerOuterAnalog = 0x457B,
|
||||
FACIAL_R_eyelashLowerOuter = 0xBE49,
|
||||
FACIAL_R_eyelidLowerInnerSDK = 0xF351,
|
||||
FACIAL_R_eyelidLowerInnerAnalog = 0xE13,
|
||||
FACIAL_R_eyelashLowerInner = 0x3322,
|
||||
FACIAL_L_lipUpperSDK = 0x8F30,
|
||||
FACIAL_L_lipUpperAnalog = 0xB1CF,
|
||||
FACIAL_L_lipUpperThicknessH = 0x37CE,
|
||||
FACIAL_L_lipUpperThicknessV = 0x38BC,
|
||||
FACIAL_lipUpperSDK = 0x1774,
|
||||
FACIAL_lipUpperAnalog = 0xE064,
|
||||
FACIAL_lipUpperThicknessH = 0x7993,
|
||||
FACIAL_lipUpperThicknessV = 0x7981,
|
||||
FACIAL_L_lipCornerSDK = 0xB1C,
|
||||
FACIAL_L_lipCornerAnalog = 0xE568,
|
||||
FACIAL_L_lipCornerThicknessUpper = 0x7BC,
|
||||
FACIAL_L_lipCornerThicknessLower = 0xDD42,
|
||||
FACIAL_R_lipUpperSDK = 0x7583,
|
||||
FACIAL_R_lipUpperAnalog = 0x51CF,
|
||||
FACIAL_R_lipUpperThicknessH = 0x382E,
|
||||
FACIAL_R_lipUpperThicknessV = 0x385C,
|
||||
FACIAL_R_lipCornerSDK = 0xB3C,
|
||||
FACIAL_R_lipCornerAnalog = 0xEE0E,
|
||||
FACIAL_R_lipUpperSDK = 0x7583,
|
||||
FACIAL_R_lipUpperAnalog = 0x51CF,
|
||||
FACIAL_R_lipUpperThicknessH = 0x382E,
|
||||
FACIAL_R_lipUpperThicknessV = 0x385C,
|
||||
FACIAL_R_lipCornerSDK = 0xB3C,
|
||||
FACIAL_R_lipCornerAnalog = 0xEE0E,
|
||||
FACIAL_R_lipCornerThicknessUpper = 0x54C3,
|
||||
FACIAL_R_lipCornerThicknessLower = 0x2BBA,
|
||||
MH_MulletRoot = 0x3E73,
|
||||
MH_MulletScaler = 0xA1C2,
|
||||
MH_Hair_Scale = 0xC664,
|
||||
MH_Hair_Crown = 0x1675,
|
||||
SM_Torch = 0x8D6,
|
||||
FX_Light = 0x8959,
|
||||
FX_Light_Scale = 0x5038,
|
||||
FX_Light_Switch = 0xE18E,
|
||||
BagRoot = 0xAD09,
|
||||
BagPivotROOT = 0xB836,
|
||||
BagPivot = 0x4D11,
|
||||
BagBody = 0xAB6D,
|
||||
BagBone_R = 0x937,
|
||||
BagBone_L = 0x991,
|
||||
SM_LifeSaver_Front = 0x9420,
|
||||
SM_R_Pouches_ROOT = 0x2962,
|
||||
SM_R_Pouches = 0x4141,
|
||||
SM_L_Pouches_ROOT = 0x2A02,
|
||||
SM_L_Pouches = 0x4B41,
|
||||
SM_Suit_Back_Flapper = 0xDA2D,
|
||||
SPR_CopRadio = 0x8245,
|
||||
SM_LifeSaver_Back = 0x2127,
|
||||
MH_BlushSlider = 0xA0CE,
|
||||
SKEL_Tail_01 = 0x347,
|
||||
SKEL_Tail_02 = 0x348,
|
||||
MH_L_Concertina_B = 0xC988,
|
||||
MH_L_Concertina_A = 0xC987,
|
||||
MH_R_Concertina_B = 0xC8E8,
|
||||
MH_R_Concertina_A = 0xC8E7,
|
||||
MH_L_ShoulderBladeRoot = 0x8711,
|
||||
MH_L_ShoulderBlade = 0x4EAF,
|
||||
MH_R_ShoulderBladeRoot = 0x3A0A,
|
||||
MH_R_ShoulderBlade = 0x54AF,
|
||||
FB_R_Ear_000 = 0x6CDF,
|
||||
SPR_R_Ear = 0x63B6,
|
||||
FB_L_Ear_000 = 0x6439,
|
||||
SPR_L_Ear = 0x5B10,
|
||||
FB_TongueA_000 = 0x4206,
|
||||
FB_TongueB_000 = 0x4207,
|
||||
FB_TongueC_000 = 0x4208,
|
||||
SKEL_L_Toe1 = 0x1D6B,
|
||||
SKEL_R_Toe1 = 0xB23F,
|
||||
SKEL_Tail_03 = 0x349,
|
||||
SKEL_Tail_04 = 0x34A,
|
||||
SKEL_Tail_05 = 0x34B,
|
||||
SPR_Gonads_ROOT = 0xBFDE,
|
||||
SPR_Gonads = 0x1C00,
|
||||
FB_L_Brow_Out_001 = 0xE3DB,
|
||||
FB_L_Lid_Upper_001 = 0xB2B6,
|
||||
FB_L_Eye_001 = 0x62AC,
|
||||
FB_L_CheekBone_001 = 0x542E,
|
||||
FB_L_Lip_Corner_001 = 0x74AC,
|
||||
FB_R_Lid_Upper_001 = 0xAA10,
|
||||
FB_R_Eye_001 = 0x6B52,
|
||||
FB_R_CheekBone_001 = 0x4B88,
|
||||
FB_R_Brow_Out_001 = 0x54C,
|
||||
FB_R_Lip_Corner_001 = 0x2BA6,
|
||||
FB_Brow_Centre_001 = 0x9149,
|
||||
FB_UpperLipRoot_001 = 0x4ED2,
|
||||
FB_UpperLip_001 = 0xF18F,
|
||||
FB_L_Lip_Top_001 = 0x4F37,
|
||||
FB_R_Lip_Top_001 = 0x4537,
|
||||
FB_Jaw_001 = 0xB4A0,
|
||||
FB_LowerLipRoot_001 = 0x4324,
|
||||
FB_LowerLip_001 = 0x508F,
|
||||
FB_L_Lip_Bot_001 = 0xB93B,
|
||||
FB_R_Lip_Bot_001 = 0xC33B,
|
||||
FB_Tongue_001 = 0xB987
|
||||
MH_MulletRoot = 0x3E73,
|
||||
MH_MulletScaler = 0xA1C2,
|
||||
MH_Hair_Scale = 0xC664,
|
||||
MH_Hair_Crown = 0x1675,
|
||||
SM_Torch = 0x8D6,
|
||||
FX_Light = 0x8959,
|
||||
FX_Light_Scale = 0x5038,
|
||||
FX_Light_Switch = 0xE18E,
|
||||
BagRoot = 0xAD09,
|
||||
BagPivotROOT = 0xB836,
|
||||
BagPivot = 0x4D11,
|
||||
BagBody = 0xAB6D,
|
||||
BagBone_R = 0x937,
|
||||
BagBone_L = 0x991,
|
||||
SM_LifeSaver_Front = 0x9420,
|
||||
SM_R_Pouches_ROOT = 0x2962,
|
||||
SM_R_Pouches = 0x4141,
|
||||
SM_L_Pouches_ROOT = 0x2A02,
|
||||
SM_L_Pouches = 0x4B41,
|
||||
SM_Suit_Back_Flapper = 0xDA2D,
|
||||
SPR_CopRadio = 0x8245,
|
||||
SM_LifeSaver_Back = 0x2127,
|
||||
MH_BlushSlider = 0xA0CE,
|
||||
SKEL_Tail_01 = 0x347,
|
||||
SKEL_Tail_02 = 0x348,
|
||||
MH_L_Concertina_B = 0xC988,
|
||||
MH_L_Concertina_A = 0xC987,
|
||||
MH_R_Concertina_B = 0xC8E8,
|
||||
MH_R_Concertina_A = 0xC8E7,
|
||||
MH_L_ShoulderBladeRoot = 0x8711,
|
||||
MH_L_ShoulderBlade = 0x4EAF,
|
||||
MH_R_ShoulderBladeRoot = 0x3A0A,
|
||||
MH_R_ShoulderBlade = 0x54AF,
|
||||
FB_R_Ear_000 = 0x6CDF,
|
||||
SPR_R_Ear = 0x63B6,
|
||||
FB_L_Ear_000 = 0x6439,
|
||||
SPR_L_Ear = 0x5B10,
|
||||
FB_TongueA_000 = 0x4206,
|
||||
FB_TongueB_000 = 0x4207,
|
||||
FB_TongueC_000 = 0x4208,
|
||||
SKEL_L_Toe1 = 0x1D6B,
|
||||
SKEL_R_Toe1 = 0xB23F,
|
||||
SKEL_Tail_03 = 0x349,
|
||||
SKEL_Tail_04 = 0x34A,
|
||||
SKEL_Tail_05 = 0x34B,
|
||||
SPR_Gonads_ROOT = 0xBFDE,
|
||||
SPR_Gonads = 0x1C00,
|
||||
FB_L_Brow_Out_001 = 0xE3DB,
|
||||
FB_L_Lid_Upper_001 = 0xB2B6,
|
||||
FB_L_Eye_001 = 0x62AC,
|
||||
FB_L_CheekBone_001 = 0x542E,
|
||||
FB_L_Lip_Corner_001 = 0x74AC,
|
||||
FB_R_Lid_Upper_001 = 0xAA10,
|
||||
FB_R_Eye_001 = 0x6B52,
|
||||
FB_R_CheekBone_001 = 0x4B88,
|
||||
FB_R_Brow_Out_001 = 0x54C,
|
||||
FB_R_Lip_Corner_001 = 0x2BA6,
|
||||
FB_Brow_Centre_001 = 0x9149,
|
||||
FB_UpperLipRoot_001 = 0x4ED2,
|
||||
FB_UpperLip_001 = 0xF18F,
|
||||
FB_L_Lip_Top_001 = 0x4F37,
|
||||
FB_R_Lip_Top_001 = 0x4537,
|
||||
FB_Jaw_001 = 0xB4A0,
|
||||
FB_LowerLipRoot_001 = 0x4324,
|
||||
FB_LowerLip_001 = 0x508F,
|
||||
FB_L_Lip_Bot_001 = 0xB93B,
|
||||
FB_R_Lip_Bot_001 = 0xC33B,
|
||||
FB_Tongue_001 = 0xB987
|
||||
};
|
||||
|
@ -1,9 +1,12 @@
|
||||
#include "fidevice.hpp"
|
||||
|
||||
#include "pointers.hpp"
|
||||
|
||||
namespace rage
|
||||
{
|
||||
#define PURECALL() LOG(FATAL) << "pure fiDevice call (" __FUNCTION__ ")"; return 0
|
||||
#define PURECALL() \
|
||||
LOG(FATAL) << "pure fiDevice call (" __FUNCTION__ ")"; \
|
||||
return 0
|
||||
|
||||
fiDeviceImplemented::fiDeviceImplemented()
|
||||
{
|
||||
@ -11,15 +14,16 @@ namespace rage
|
||||
|
||||
fiDeviceImplemented::~fiDeviceImplemented()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
fiDevice::~fiDevice()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
uint64_t fiDeviceImplemented::Open(const char* fileName, bool) { PURECALL(); }
|
||||
uint64_t fiDeviceImplemented::Open(const char* fileName, bool)
|
||||
{
|
||||
PURECALL();
|
||||
}
|
||||
|
||||
uint64_t fiDeviceImplemented::OpenBulk(const char* fileName, uint64_t* ptr)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "sysMemAllocator.hpp"
|
||||
#include "pointers.hpp"
|
||||
#include "sysMemAllocator.hpp"
|
||||
|
||||
#include <array>
|
||||
|
||||
@ -74,9 +74,9 @@ namespace rage
|
||||
// dummy!
|
||||
virtual int m_40(int) = 0;
|
||||
|
||||
virtual bool RemoveFile(const char* file) = 0;
|
||||
virtual bool RemoveFile(const char* file) = 0;
|
||||
virtual int RenameFile(const char* from, const char* to) = 0;
|
||||
virtual int CreateDirectory(const char* dir) = 0;
|
||||
virtual int CreateDirectory(const char* dir) = 0;
|
||||
|
||||
virtual int RemoveDirectory(const char* dir) = 0;
|
||||
|
||||
@ -84,12 +84,12 @@ namespace rage
|
||||
|
||||
virtual uint64_t GetFileLengthLong(const char* fileName) = 0;
|
||||
|
||||
virtual uint64_t GetFileTime(const char* file) = 0;
|
||||
virtual uint64_t GetFileTime(const char* file) = 0;
|
||||
virtual bool SetFileTime(const char* file, FILETIME fileTime) = 0;
|
||||
|
||||
virtual uint64_t FindFirst(const char* path, fiFindData* findData) = 0;
|
||||
virtual bool FindNext(uint64_t handle, fiFindData* findData) = 0;
|
||||
virtual int FindClose(uint64_t handle) = 0;
|
||||
virtual bool FindNext(uint64_t handle, fiFindData* findData) = 0;
|
||||
virtual int FindClose(uint64_t handle) = 0;
|
||||
|
||||
virtual rage::fiDevice* GetUnkDevice() = 0;
|
||||
|
||||
@ -116,13 +116,13 @@ namespace rage
|
||||
|
||||
virtual int32_t m_yz(void*) = 0;
|
||||
|
||||
virtual int32_t m_zx(void*) = 0; // return 0x40000000
|
||||
virtual int32_t m_zx(void*) = 0;// return 0x40000000
|
||||
|
||||
virtual bool IsCollection() = 0;
|
||||
|
||||
virtual bool m_addedIn1290() = 0;
|
||||
|
||||
virtual fiDevice* GetCollection() = 0; // return this
|
||||
virtual fiDevice* GetCollection() = 0;// return this
|
||||
|
||||
virtual bool m_ax() = 0;
|
||||
|
||||
@ -214,13 +214,13 @@ namespace rage
|
||||
|
||||
virtual int32_t m_yz(void*);
|
||||
|
||||
virtual int32_t m_zx(void*); // return 0x40000000
|
||||
virtual int32_t m_zx(void*);// return 0x40000000
|
||||
|
||||
virtual bool IsCollection();
|
||||
|
||||
virtual bool m_addedIn1290();
|
||||
|
||||
virtual fiDevice* GetCollection(); // return this
|
||||
virtual fiDevice* GetCollection();// return this
|
||||
|
||||
virtual bool m_ax();
|
||||
|
||||
@ -233,6 +233,7 @@ namespace rage
|
||||
{
|
||||
private:
|
||||
char m_pad[272];
|
||||
|
||||
public:
|
||||
fiDeviceRelative();
|
||||
|
||||
@ -256,7 +257,7 @@ namespace rage
|
||||
void* m_0010;
|
||||
char m_buffer[4096];
|
||||
bool m_1018;
|
||||
alignas(int) char m_pad[64]; // unsure
|
||||
alignas(int) char m_pad[64];// unsure
|
||||
|
||||
private:
|
||||
void* AllocKeyState(const uint8_t* key);
|
||||
@ -271,6 +272,7 @@ namespace rage
|
||||
{
|
||||
private:
|
||||
char m_pad[368 + (0x650 - 0x590)];
|
||||
|
||||
public:
|
||||
fiPackfile();
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace rage
|
||||
{
|
||||
template <typename T>
|
||||
template<typename T>
|
||||
class atArray;
|
||||
|
||||
class datBitBuffer;
|
||||
|
@ -8,7 +8,7 @@ struct GXT2_metadata
|
||||
#pragma pack(push, 1)
|
||||
struct GXT2_key
|
||||
{
|
||||
rage::joaat_t key_hash = -1;
|
||||
rage::joaat_t key_hash = -1;
|
||||
uint32_t file_offset_to_text = -1;
|
||||
};
|
||||
static_assert(sizeof(GXT2_key) == 8);
|
||||
|
@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
#include "rage/joaat.hpp"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <string_view>
|
||||
#include <type_traits>
|
||||
|
||||
#include "rage/joaat.hpp"
|
||||
|
||||
namespace rage
|
||||
{
|
||||
inline consteval joaat_t consteval_joaat(const std::span<const char>& data)
|
||||
|
@ -6,8 +6,7 @@ namespace rage
|
||||
class matrix4x4
|
||||
{
|
||||
public:
|
||||
union
|
||||
{
|
||||
union {
|
||||
struct
|
||||
{
|
||||
vector4 _1;
|
||||
|
@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <utility>
|
||||
#include "fwddec.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
#include <script/types.hpp>
|
||||
#include <utility>
|
||||
|
||||
namespace rage
|
||||
{
|
||||
@ -12,61 +12,63 @@ namespace rage
|
||||
public:
|
||||
void reset()
|
||||
{
|
||||
m_arg_count = 0;
|
||||
m_arg_count = 0;
|
||||
m_data_count = 0;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void push_arg(T &&value)
|
||||
template<typename T>
|
||||
void push_arg(T&& value)
|
||||
{
|
||||
static_assert(sizeof(T) <= sizeof(std::uint64_t));
|
||||
*reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(reinterpret_cast<std::uint64_t*>(m_args) + (m_arg_count++)) = std::forward<T>(value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T &get_arg(std::size_t index)
|
||||
template<typename T>
|
||||
T& get_arg(std::size_t index)
|
||||
{
|
||||
static_assert(sizeof(T) <= sizeof(std::uint64_t));
|
||||
return *reinterpret_cast<T*>(reinterpret_cast<std::uint64_t*>(m_args) + index);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_arg(std::size_t index, T &&value)
|
||||
template<typename T>
|
||||
void set_arg(std::size_t index, T&& value)
|
||||
{
|
||||
static_assert(sizeof(T) <= sizeof(std::uint64_t));
|
||||
*reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(reinterpret_cast<std::uint64_t*>(m_args) + index) = std::forward<T>(value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T *get_return_value()
|
||||
template<typename T>
|
||||
T* get_return_value()
|
||||
{
|
||||
return reinterpret_cast<T*>(m_return_value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_return_value(T &&value)
|
||||
template<typename T>
|
||||
void set_return_value(T&& value)
|
||||
{
|
||||
*reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(m_return_value) = std::forward<T>(value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
template<typename T>
|
||||
void set_return_value(T& value)
|
||||
{
|
||||
*reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(m_return_value) = std::forward<T>(value);
|
||||
}
|
||||
|
||||
protected:
|
||||
void *m_return_value;
|
||||
void* m_return_value;
|
||||
std::uint32_t m_arg_count;
|
||||
void *m_args;
|
||||
void* m_args;
|
||||
std::int32_t m_data_count;
|
||||
std::uint32_t m_data[48];
|
||||
};
|
||||
static_assert(sizeof(scrNativeCallContext) == 0xE0);
|
||||
using scrNativeHash = std::uint64_t;
|
||||
using scrNativeHash = std::uint64_t;
|
||||
using scrNativeMapping = std::pair<scrNativeHash, scrNativeHash>;
|
||||
using scrNativeHandler = void(*)(scrNativeCallContext*);
|
||||
using scrNativeHandler = void (*)(scrNativeCallContext*);
|
||||
|
||||
class scrNativeRegistration {
|
||||
class scrNativeRegistration
|
||||
{
|
||||
public:
|
||||
uint64_t m_nextRegistration1;
|
||||
uint64_t m_nextRegistration2;
|
||||
@ -74,26 +76,31 @@ namespace rage
|
||||
uint32_t m_numEntries1;
|
||||
uint32_t m_numEntries2;
|
||||
uint64_t m_hashes;
|
||||
scrNativeRegistration* get_next_registration() {
|
||||
scrNativeRegistration* get_next_registration()
|
||||
{
|
||||
std::uintptr_t result;
|
||||
auto nextReg = uintptr_t(&m_nextRegistration1);
|
||||
auto newReg = nextReg ^ m_nextRegistration2;
|
||||
auto nextReg = uintptr_t(&m_nextRegistration1);
|
||||
auto newReg = nextReg ^ m_nextRegistration2;
|
||||
auto charTableOfRegs = (char*)&result - nextReg;
|
||||
for (auto i = 0; i < 3; i++) {
|
||||
for (auto i = 0; i < 3; i++)
|
||||
{
|
||||
*(DWORD*)&charTableOfRegs[nextReg] = static_cast<DWORD>(newReg) ^ *(DWORD*)nextReg;
|
||||
nextReg += 4;
|
||||
}
|
||||
return reinterpret_cast<scrNativeRegistration*>(result);
|
||||
}
|
||||
std::uint32_t get_num_entries() {
|
||||
std::uint32_t get_num_entries()
|
||||
{
|
||||
return static_cast<std::uint32_t>(((std::uintptr_t)&m_numEntries1) ^ m_numEntries1 ^ m_numEntries2);
|
||||
}
|
||||
std::uint64_t get_hash(std::uint32_t index) {
|
||||
std::uint64_t get_hash(std::uint32_t index)
|
||||
{
|
||||
auto nativeAddress = 16 * index + std::uintptr_t(&m_nextRegistration1) + 0x54;
|
||||
std::uint64_t result;
|
||||
auto charTableOfRegs = (char*)&result - nativeAddress;
|
||||
auto addressIndex = nativeAddress ^ *(DWORD*)(nativeAddress + 8);
|
||||
for (auto i = 0; i < 3; i++) {
|
||||
auto addressIndex = nativeAddress ^ *(DWORD*)(nativeAddress + 8);
|
||||
for (auto i = 0; i < 3; i++)
|
||||
{
|
||||
*(DWORD*)&charTableOfRegs[nativeAddress] = static_cast<DWORD>(addressIndex ^ *(DWORD*)(nativeAddress));
|
||||
nativeAddress += 4;
|
||||
}
|
||||
@ -104,7 +111,7 @@ namespace rage
|
||||
#pragma pack(push, 1)
|
||||
class scrNativeRegistrationTable
|
||||
{
|
||||
scrNativeRegistration *m_entries[0xFF];
|
||||
scrNativeRegistration* m_entries[0xFF];
|
||||
std::uint32_t m_unk;
|
||||
bool m_initialized;
|
||||
};
|
||||
|
@ -1,5 +1,11 @@
|
||||
#pragma once
|
||||
#include "fwddec.hpp"
|
||||
|
||||
class CNetGamePlayer;
|
||||
|
||||
namespace rage
|
||||
{
|
||||
class netArrayHandlerBase;
|
||||
}
|
||||
|
||||
class CGameArrayMgr
|
||||
{
|
||||
@ -14,38 +20,38 @@ namespace rage
|
||||
class netSyncDataUnit_Dynamic
|
||||
{
|
||||
public:
|
||||
virtual ~netSyncDataUnit_Dynamic() = default; // 0x00
|
||||
virtual ~netSyncDataUnit_Dynamic() = default;// 0x00
|
||||
|
||||
virtual void _0x08() = 0;
|
||||
|
||||
virtual void _0x10() = 0;
|
||||
|
||||
virtual void set_data_counter(int index, uint16_t counter) = 0; // 0x18
|
||||
virtual void set_data_counter(int index, uint16_t counter) = 0;// 0x18
|
||||
|
||||
virtual void reset_data_counter(int index) = 0; // 0x20
|
||||
virtual void reset_data_counter(int index) = 0;// 0x20
|
||||
|
||||
// ...
|
||||
|
||||
int m_players_need_ack; // 0x08
|
||||
int m_players_need_sync; // 0x0C
|
||||
int m_players_need_sync;// 0x0C
|
||||
};
|
||||
|
||||
class netSyncData_Dynamic
|
||||
{
|
||||
public:
|
||||
virtual ~netSyncData_Dynamic() = default; // 0x00
|
||||
virtual ~netSyncData_Dynamic() = default;// 0x00
|
||||
|
||||
virtual rage::datBitBuffer* _0x08() = 0;
|
||||
|
||||
virtual rage::datBitBuffer* _0x10() = 0;
|
||||
|
||||
virtual int get_num_receivers() = 0; // 0x18
|
||||
virtual int get_num_receivers() = 0;// 0x18
|
||||
|
||||
virtual int _0x20() = 0;
|
||||
|
||||
virtual void _0x28() = 0; // same as get_sync_unit_for_element
|
||||
virtual void _0x28() = 0;// same as get_sync_unit_for_element
|
||||
|
||||
virtual netSyncDataUnit_Dynamic* get_sync_unit_for_element(uint32_t element) = 0; // 0x30
|
||||
virtual netSyncDataUnit_Dynamic* get_sync_unit_for_element(uint32_t element) = 0;// 0x30
|
||||
|
||||
// ...
|
||||
};
|
||||
@ -53,7 +59,7 @@ namespace rage
|
||||
class netArrayHandlerBase
|
||||
{
|
||||
public:
|
||||
virtual ~netArrayHandlerBase() = default; // 0x00
|
||||
virtual ~netArrayHandlerBase() = default;// 0x00
|
||||
|
||||
virtual void _0x08() = 0;
|
||||
|
||||
@ -67,131 +73,131 @@ namespace rage
|
||||
|
||||
virtual void _0x30() = 0;
|
||||
|
||||
virtual void _0x38() = 0; //
|
||||
virtual void _0x38() = 0;//
|
||||
|
||||
virtual void _0x40() = 0; //
|
||||
virtual void _0x40() = 0;//
|
||||
|
||||
virtual int _0x48(CNetGamePlayer* player, int max_size, uint32_t* a3, uint32_t* a4) = 0; //
|
||||
virtual int _0x48(CNetGamePlayer* player, int max_size, uint32_t* a3, uint32_t* a4) = 0;//
|
||||
|
||||
virtual int get_size(CNetGamePlayer* player, int max_size, uint32_t element) = 0; // 0x50
|
||||
virtual int get_size(CNetGamePlayer* player, int max_size, uint32_t element) = 0;// 0x50
|
||||
|
||||
virtual int pack_array_data(CNetGamePlayer* player, rage::datBitBuffer* bit_buffer, uint16_t counter, uint32_t* elem_start, bool silent) = 0; // 0x58
|
||||
virtual int pack_array_data(CNetGamePlayer* player, rage::datBitBuffer* bit_buffer, uint16_t counter, uint32_t* elem_start, bool silent) = 0;// 0x58
|
||||
|
||||
virtual void _0x60() = 0; //
|
||||
virtual void _0x60() = 0;//
|
||||
|
||||
virtual bool _0x68(CNetGamePlayer* player) = 0; // is_player_out_of_scope or something like that
|
||||
virtual bool _0x68(CNetGamePlayer* player) = 0;// is_player_out_of_scope or something like that
|
||||
|
||||
virtual void _0x70() = 0; //
|
||||
virtual void _0x70() = 0;//
|
||||
|
||||
virtual bool can_send_update(CNetGamePlayer* player) = 0; // 0x78
|
||||
virtual bool can_send_update(CNetGamePlayer* player) = 0;// 0x78
|
||||
|
||||
virtual void _0x80() = 0; //
|
||||
virtual void _0x80() = 0;//
|
||||
|
||||
virtual void _0x88() = 0; //
|
||||
virtual void _0x88() = 0;//
|
||||
|
||||
virtual void* get_identifier() = 0; // 0x90
|
||||
virtual void* get_identifier() = 0;// 0x90
|
||||
|
||||
virtual void* _0x98() = 0; // same as get_identifier
|
||||
virtual void* _0x98() = 0;// same as get_identifier
|
||||
|
||||
virtual void _0xA0() = 0; //
|
||||
virtual void _0xA0() = 0;//
|
||||
|
||||
virtual bool can_verify_array_data() = 0; // 0xA8
|
||||
virtual bool can_verify_array_data() = 0;// 0xA8
|
||||
|
||||
virtual void _0xB0() = 0; //
|
||||
virtual void _0xB0() = 0;//
|
||||
|
||||
virtual void _0xB8() = 0; //
|
||||
virtual void _0xB8() = 0;//
|
||||
|
||||
virtual void should_sync_element(uint32_t element) = 0; // 0xC0
|
||||
virtual void should_sync_element(uint32_t element) = 0;// 0xC0
|
||||
|
||||
virtual void _0xC8() = 0; //
|
||||
virtual void _0xC8() = 0;//
|
||||
|
||||
virtual void _0xD0() = 0; //
|
||||
virtual void _0xD0() = 0;//
|
||||
|
||||
virtual bool are_all_elements_in_scope() = 0; // 0xD8
|
||||
virtual bool are_all_elements_in_scope() = 0;// 0xD8
|
||||
|
||||
virtual void _0xE0() = 0; //
|
||||
virtual void _0xE0() = 0;//
|
||||
|
||||
virtual void verify_array_data() = 0; // 0xE8
|
||||
virtual void verify_array_data() = 0;// 0xE8
|
||||
|
||||
virtual void _0xF0() = 0; //
|
||||
virtual void _0xF0() = 0;//
|
||||
|
||||
virtual char* get_name() = 0; // 0xF8
|
||||
virtual char* get_name() = 0;// 0xF8
|
||||
|
||||
virtual bool is_local_player_owner_of_array() = 0; // 0x100
|
||||
virtual bool is_local_player_owner_of_array() = 0;// 0x100
|
||||
|
||||
virtual CNetGamePlayer* get_owner_of_array() = 0; // 0x108
|
||||
virtual CNetGamePlayer* get_owner_of_array() = 0;// 0x108
|
||||
|
||||
virtual void _0x110() = 0;
|
||||
|
||||
virtual uint32_t get_array_hash() = 0;
|
||||
|
||||
virtual int _0x120() = 0; // gets array size for hashing
|
||||
virtual int _0x120() = 0;// gets array size for hashing
|
||||
|
||||
virtual netSyncData_Dynamic* _0x128() = 0; // same as get_dynamic_sync_data
|
||||
virtual netSyncData_Dynamic* _0x128() = 0;// same as get_dynamic_sync_data
|
||||
|
||||
virtual netSyncData_Dynamic* get_dynamic_sync_data() = 0; // 0x130
|
||||
virtual netSyncData_Dynamic* get_dynamic_sync_data() = 0;// 0x130
|
||||
|
||||
virtual void _0x138() = 0;
|
||||
|
||||
virtual bool is_element_in_scope(uint32_t element, CNetGamePlayer* player) = 0; // 0x140
|
||||
virtual bool is_element_in_scope(uint32_t element, CNetGamePlayer* player) = 0;// 0x140
|
||||
|
||||
virtual int get_receiver_index_from_player(CNetGamePlayer*) = 0; // 0x148
|
||||
virtual int get_receiver_index_from_player(CNetGamePlayer*) = 0;// 0x148
|
||||
|
||||
virtual void _0x150() = 0;
|
||||
|
||||
virtual void _0x158() = 0;
|
||||
|
||||
// pasted from fivem
|
||||
virtual bool is_element_empty(uint32_t element) = 0; // 0x160
|
||||
virtual bool is_element_empty(uint32_t element) = 0;// 0x160
|
||||
|
||||
virtual void set_element_empty(uint32_t element) = 0; // 0x168
|
||||
virtual void set_element_empty(uint32_t element) = 0;// 0x168
|
||||
|
||||
virtual void write_element_index(rage::datBitBuffer& buffer, uint32_t) = 0; // 0x170
|
||||
virtual void write_element_index(rage::datBitBuffer& buffer, uint32_t) = 0;// 0x170
|
||||
|
||||
virtual void read_element_index(rage::datBitBuffer& buffer, uint32_t&) = 0; // 0x178
|
||||
virtual void read_element_index(rage::datBitBuffer& buffer, uint32_t&) = 0;// 0x178
|
||||
|
||||
virtual bool is_valid_index(uint32_t) = 0; // 0x180
|
||||
virtual bool is_valid_index(uint32_t) = 0;// 0x180
|
||||
|
||||
virtual void recalculate_dirty_elements() = 0; // 0x188
|
||||
virtual void recalculate_dirty_elements() = 0;// 0x188
|
||||
|
||||
virtual void reset_element_sync_data(uint32_t element) = 0; // 0x190
|
||||
virtual void reset_element_sync_data(uint32_t element) = 0;// 0x190
|
||||
|
||||
virtual void do_post_read_processing() = 0; // 0x198
|
||||
virtual void do_post_read_processing() = 0;// 0x198
|
||||
|
||||
virtual void do_post_element_read_processing(uint32_t element) = 0; // 0x1A0
|
||||
virtual void do_post_element_read_processing(uint32_t element) = 0;// 0x1A0
|
||||
|
||||
virtual bool can_apply_element_data(uint32_t element, const rage::netPlayer& sender, bool force) = 0; // 0x1A8
|
||||
virtual bool can_apply_element_data(uint32_t element, const rage::netPlayer& sender, bool force) = 0;// 0x1A8
|
||||
|
||||
virtual void extract_data_for_serializing(uint32_t elem) = 0; // 0x1B0
|
||||
virtual void extract_data_for_serializing(uint32_t elem) = 0;// 0x1B0
|
||||
|
||||
virtual void write_element(rage::datBitBuffer& buffer, uint32_t elem, void* logger) = 0; // 0x1B8
|
||||
virtual void write_element(rage::datBitBuffer& buffer, uint32_t elem, void* logger) = 0;// 0x1B8
|
||||
|
||||
virtual void read_element(rage::datBitBuffer& buffer, uint32_t elem, void* logger) = 0; // 0x1C0
|
||||
virtual void read_element(rage::datBitBuffer& buffer, uint32_t elem, void* logger) = 0;// 0x1C0
|
||||
|
||||
virtual void log_element(uint32_t elem, void* logger) = 0; // 0x1C8
|
||||
virtual void log_element(uint32_t elem, void* logger) = 0;// 0x1C8
|
||||
|
||||
virtual uint32_t get_current_element_size_in_bits(uint32_t elem) = 0; // 0x1D0
|
||||
virtual uint32_t get_current_element_size_in_bits(uint32_t elem) = 0;// 0x1D0
|
||||
|
||||
virtual void apply_element_data(uint32_t element, const rage::netPlayer& sender) = 0; // 0x1D8
|
||||
virtual void apply_element_data(uint32_t element, const rage::netPlayer& sender) = 0;// 0x1D8
|
||||
|
||||
virtual void _0x1E0() = 0;
|
||||
|
||||
virtual void _0x1E8(bool) = 0; // very important! changes send function to use some kind of cached buffer that prevents us from modifing array data per player
|
||||
virtual void _0x1E8(bool) = 0;// very important! changes send function to use some kind of cached buffer that prevents us from modifing array data per player
|
||||
|
||||
void* m_something; // 0x10
|
||||
void* m_something;// 0x10
|
||||
|
||||
netArrayHandlerBase* m_next; // 0x18
|
||||
netArrayHandlerBase* m_next;// 0x18
|
||||
|
||||
uint8_t m_pad[100 - 0x18]; // +8
|
||||
uint8_t m_pad[100 - 0x18];// +8
|
||||
uint32_t m_hash;
|
||||
uint8_t m_pad2[244 - 104]; // +8
|
||||
uint16_t m_index; // 244
|
||||
uint16_t m_count; // 246
|
||||
uint8_t m_max_elements; // 248
|
||||
uint8_t m_element_size; // 249
|
||||
uint8_t m_pad2[244 - 104];// +8
|
||||
uint16_t m_index; // 244
|
||||
uint16_t m_count; // 246
|
||||
uint8_t m_max_elements; // 248
|
||||
uint8_t m_element_size; // 249
|
||||
uint8_t m_element_size_2; // 250
|
||||
uint8_t m_pad3[13]; // 251
|
||||
void* m_array; // 264
|
||||
uint8_t m_pad3[13]; // 251
|
||||
void* m_array; // 264
|
||||
|
||||
#if 0
|
||||
static inline netArrayHandlerBase* get_by_data(void* data)
|
||||
|
@ -1,7 +1,8 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "pointers.hpp"
|
||||
#include "fwddec.hpp"
|
||||
#include "pointers.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
namespace rage
|
||||
@ -9,33 +10,33 @@ namespace rage
|
||||
class CSyncDataBase
|
||||
{
|
||||
public:
|
||||
virtual ~CSyncDataBase() = default;
|
||||
virtual bool SerializeDword(uint32_t* dword, int size) = 0;
|
||||
virtual bool SerializeWord(uint16_t* word, int size) = 0;
|
||||
virtual bool SerializeByte(uint8_t* byte, int size) = 0;
|
||||
virtual bool SerializeInt32(int32_t* i, int size) = 0;
|
||||
virtual bool SerializeInt16(int16_t* i, int size) = 0;
|
||||
virtual bool SerializeSignedByte(int8_t* byte, int size) = 0;
|
||||
virtual bool SerializeBool(bool* flag) = 0;
|
||||
virtual bool SerializeInt64(int64_t* i, int size) = 0;
|
||||
virtual bool SerializeInt32Alt(int32_t* i, int size) = 0;
|
||||
virtual bool SerializeInt16Alt(int16_t* i, int size) = 0;
|
||||
virtual bool SerializeSignedByteAlt(int8_t* byte, int size) = 0;
|
||||
virtual bool SerializeQword(uint64_t* qword, int size) = 0;
|
||||
virtual bool SerializeDwordAlt(uint32_t* dword, int size) = 0;
|
||||
virtual bool SerializeWordAlt(uint16_t* word, int size) = 0;
|
||||
virtual bool SerializeByteAlt(uint8_t* byte, int size) = 0;
|
||||
virtual bool SerializeSignedFloat(float* flt, float divisor, int size) = 0;
|
||||
virtual bool SerializeFloat(float* flt, float divisor, int size) = 0;
|
||||
virtual bool SerializeNetworkId(uint16_t* net_id) = 0;
|
||||
virtual ~CSyncDataBase() = default;
|
||||
virtual bool SerializeDword(uint32_t* dword, int size) = 0;
|
||||
virtual bool SerializeWord(uint16_t* word, int size) = 0;
|
||||
virtual bool SerializeByte(uint8_t* byte, int size) = 0;
|
||||
virtual bool SerializeInt32(int32_t* i, int size) = 0;
|
||||
virtual bool SerializeInt16(int16_t* i, int size) = 0;
|
||||
virtual bool SerializeSignedByte(int8_t* byte, int size) = 0;
|
||||
virtual bool SerializeBool(bool* flag) = 0;
|
||||
virtual bool SerializeInt64(int64_t* i, int size) = 0;
|
||||
virtual bool SerializeInt32Alt(int32_t* i, int size) = 0;
|
||||
virtual bool SerializeInt16Alt(int16_t* i, int size) = 0;
|
||||
virtual bool SerializeSignedByteAlt(int8_t* byte, int size) = 0;
|
||||
virtual bool SerializeQword(uint64_t* qword, int size) = 0;
|
||||
virtual bool SerializeDwordAlt(uint32_t* dword, int size) = 0;
|
||||
virtual bool SerializeWordAlt(uint16_t* word, int size) = 0;
|
||||
virtual bool SerializeByteAlt(uint8_t* byte, int size) = 0;
|
||||
virtual bool SerializeSignedFloat(float* flt, float divisor, int size) = 0;
|
||||
virtual bool SerializeFloat(float* flt, float divisor, int size) = 0;
|
||||
virtual bool SerializeNetworkId(uint16_t* net_id) = 0;
|
||||
virtual bool SerializeVector3(rage::fvector3* vec3, float divisor, int size) = 0;
|
||||
virtual bool SerializeQuaternion(void* unk) = 0; // i have no clue what that is
|
||||
virtual bool SerializeQuaternion(void* unk) = 0;// i have no clue what that is
|
||||
virtual bool SerializeVector3SignedZComponent(rage::fvector3* vec3, float divisor, int size) = 0;
|
||||
virtual bool SerializeOrientation(rage::fvector4* vec4, float size) = 0; // yes, the size is a float
|
||||
virtual bool SerializeArray(void* array, int size) = 0;
|
||||
virtual bool SerializeString(char* str, int max_length) = 0;
|
||||
virtual bool IsSizeCalculator() = 0;
|
||||
virtual bool IsSizeCalculator2() = 0;
|
||||
virtual bool SerializeOrientation(rage::fvector4* vec4, float size) = 0;// yes, the size is a float
|
||||
virtual bool SerializeArray(void* array, int size) = 0;
|
||||
virtual bool SerializeString(char* str, int max_length) = 0;
|
||||
virtual bool IsSizeCalculator() = 0;
|
||||
virtual bool IsSizeCalculator2() = 0;
|
||||
|
||||
void* unk_0x8;
|
||||
void* syncLog;
|
||||
@ -47,45 +48,54 @@ namespace rage
|
||||
class datBitBuffer
|
||||
{
|
||||
public:
|
||||
datBitBuffer(void* data, uint32_t size) {
|
||||
m_data = data;
|
||||
m_bitOffset = 0;
|
||||
m_maxBit = size * 8;
|
||||
m_bitsRead = 0;
|
||||
m_curBit = 0;
|
||||
datBitBuffer(void* data, uint32_t size)
|
||||
{
|
||||
m_data = data;
|
||||
m_bitOffset = 0;
|
||||
m_maxBit = size * 8;
|
||||
m_bitsRead = 0;
|
||||
m_curBit = 0;
|
||||
m_highestBitsRead = 0;
|
||||
m_flagBits = 0;
|
||||
m_flagBits = 0;
|
||||
}
|
||||
uint32_t GetPosition() {
|
||||
uint32_t GetPosition()
|
||||
{
|
||||
return m_bitsRead;
|
||||
}
|
||||
bool Seek(uint32_t bits) {
|
||||
if (bits >= 0) {
|
||||
bool Seek(uint32_t bits)
|
||||
{
|
||||
if (bits >= 0)
|
||||
{
|
||||
uint32_t length = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
||||
if (bits <= length)
|
||||
m_bitsRead = bits;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteBool(bool integer) {
|
||||
bool WriteBool(bool integer)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_bool(this, integer, 1);
|
||||
}
|
||||
bool ReadBool(bool* integer) {
|
||||
bool ReadBool(bool* integer)
|
||||
{
|
||||
return big::g_pointers->m_read_bitbuf_bool(this, integer, 1);
|
||||
}
|
||||
bool ReadPeerId(uint64_t* integer) {
|
||||
bool ReadPeerId(uint64_t* integer)
|
||||
{
|
||||
return this->ReadQWord(integer, 0x40);
|
||||
}
|
||||
uint64_t ReadBits(size_t numBits) {
|
||||
uint64_t ReadBits(size_t numBits)
|
||||
{
|
||||
auto const totalBits = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
||||
if ((m_flagBits & 2) || m_bitsRead + numBits > totalBits)
|
||||
return 0;
|
||||
auto const bufPos = m_bitsRead + m_bitOffset;
|
||||
auto const bufPos = m_bitsRead + m_bitOffset;
|
||||
auto const initialBitOffset = bufPos & 0b111;
|
||||
auto const start = &((uint8_t*)m_data)[bufPos / 8];
|
||||
auto const next = &start[1];
|
||||
auto result = (start[0] << initialBitOffset) & 0xff;
|
||||
for (auto i = 0; i < ((numBits - 1) / 8); i++) {
|
||||
auto const start = &((uint8_t*)m_data)[bufPos / 8];
|
||||
auto const next = &start[1];
|
||||
auto result = (start[0] << initialBitOffset) & 0xff;
|
||||
for (auto i = 0; i < ((numBits - 1) / 8); i++)
|
||||
{
|
||||
result <<= 8;
|
||||
result |= next[i] << initialBitOffset;
|
||||
}
|
||||
@ -96,89 +106,113 @@ namespace rage
|
||||
m_highestBitsRead = m_bitsRead;
|
||||
return result >> ((8 - numBits) % 8);
|
||||
}
|
||||
int GetDataLength() {
|
||||
int GetDataLength()
|
||||
{
|
||||
int leftoverBit = (m_curBit % 8) ? 1 : 0;
|
||||
return (m_curBit / 8) + leftoverBit;
|
||||
}
|
||||
bool ReadString(char* string, int bits) {
|
||||
bool ReadString(char* string, int bits)
|
||||
{
|
||||
return big::g_pointers->m_read_bitbuf_string(this, string, bits);
|
||||
}
|
||||
bool WriteByte(uint8_t integer, int bits) {
|
||||
bool WriteByte(uint8_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadByte(uint8_t* integer, int bits) {
|
||||
bool ReadByte(uint8_t* integer, int bits)
|
||||
{
|
||||
uint32_t read;
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits)) {
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits))
|
||||
{
|
||||
*integer = read;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteWord(uint16_t integer, int bits) {
|
||||
bool WriteWord(uint16_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadWord(uint16_t* integer, int bits) {
|
||||
bool ReadWord(uint16_t* integer, int bits)
|
||||
{
|
||||
uint32_t read;
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits)) {
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits))
|
||||
{
|
||||
*integer = read;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteDword(uint32_t integer, int bits) {
|
||||
bool WriteDword(uint32_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadDword(uint32_t* integer, int bits) {
|
||||
bool ReadDword(uint32_t* integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_read_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool WriteInt32(int32_t integer, int bits) {
|
||||
bool WriteInt32(int32_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_int32(this, integer, bits);
|
||||
}
|
||||
bool ReadInt32(int32_t* integer, int bits) {
|
||||
bool ReadInt32(int32_t* integer, int bits)
|
||||
{
|
||||
int32_t v8;
|
||||
int32_t v9;
|
||||
if (ReadDword((uint32_t*)&v8, 1u) && ReadDword((uint32_t*)&v9, bits - 1)) {
|
||||
if (ReadDword((uint32_t*)&v8, 1u) && ReadDword((uint32_t*)&v9, bits - 1))
|
||||
{
|
||||
*integer = v8 + (v9 ^ -v8);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteQWord(uint64_t integer, int bits) {
|
||||
bool WriteQWord(uint64_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_qword(this, integer, bits);
|
||||
}
|
||||
bool ReadQWord(uint64_t* integer, int bits) {
|
||||
if (bits <= 32) {
|
||||
bool ReadQWord(uint64_t* integer, int bits)
|
||||
{
|
||||
if (bits <= 32)
|
||||
{
|
||||
uint32_t v10;
|
||||
if (ReadDword(&v10, bits)) {
|
||||
if (ReadDword(&v10, bits))
|
||||
{
|
||||
*integer = v10;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
uint32_t v10, v11;
|
||||
if (ReadDword(&v11, 32u) && ReadDword(&v10, bits - 32u)) {
|
||||
if (ReadDword(&v11, 32u) && ReadDword(&v10, bits - 32u))
|
||||
{
|
||||
*integer = v11 | ((uint64_t)v10 << 32);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteInt64(int64_t integer, int bits) {
|
||||
bool WriteInt64(int64_t integer, int bits)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_int64(this, integer, bits);
|
||||
}
|
||||
bool ReadInt64(int64_t* integer, int bits) {
|
||||
bool ReadInt64(int64_t* integer, int bits)
|
||||
{
|
||||
uint32_t v8;
|
||||
uint64_t v9;
|
||||
if (ReadDword(&v8, 1u) && ReadQWord(&v9, bits - 1)) {
|
||||
if (ReadDword(&v8, 1u) && ReadQWord(&v9, bits - 1))
|
||||
{
|
||||
*integer = v8 + (v9 ^ -(int64_t)v8);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool WriteArray(void* array, int size) {
|
||||
bool WriteArray(void* array, int size)
|
||||
{
|
||||
return big::g_pointers->m_write_bitbuf_array(this, array, size, 0);
|
||||
}
|
||||
bool ReadArray(PVOID array, int size) {
|
||||
bool ReadArray(PVOID array, int size)
|
||||
{
|
||||
return big::g_pointers->m_read_bitbuf_array(this, array, size, 0);
|
||||
}
|
||||
|
||||
@ -215,9 +249,9 @@ namespace rage
|
||||
template<typename T>
|
||||
inline void WriteSigned(int length, T data)
|
||||
{
|
||||
int sign = data < 0;
|
||||
int sign = data < 0;
|
||||
int signEx = (data < 0) ? 0xFFFFFFFF : 0;
|
||||
int d = (data ^ signEx);
|
||||
int d = (data ^ signEx);
|
||||
|
||||
Write<int>(1, sign);
|
||||
Write<int>(length - 1, d);
|
||||
@ -233,7 +267,7 @@ namespace rage
|
||||
|
||||
inline void WriteFloat(int length, float divisor, float value)
|
||||
{
|
||||
float max = (1 << length) - 1;
|
||||
float max = (1 << length) - 1;
|
||||
int integer = (int)((value / divisor) * max);
|
||||
|
||||
Write<int>(length, integer);
|
||||
@ -249,288 +283,289 @@ namespace rage
|
||||
|
||||
inline void WriteSignedFloat(int length, float divisor, float value)
|
||||
{
|
||||
float max = (1 << (length - 1)) - 1;
|
||||
float max = (1 << (length - 1)) - 1;
|
||||
int integer = (int)((value / divisor) * max);
|
||||
|
||||
WriteSigned<int>(length, integer);
|
||||
}
|
||||
|
||||
public:
|
||||
void* m_data; //0x0000
|
||||
uint32_t m_bitOffset; //0x0008
|
||||
uint32_t m_maxBit; //0x000C
|
||||
uint32_t m_bitsRead; //0x0010
|
||||
uint32_t m_curBit; //0x0014
|
||||
uint32_t m_highestBitsRead; //0x0018
|
||||
uint8_t m_flagBits; //0x001C
|
||||
void* m_data; //0x0000
|
||||
uint32_t m_bitOffset; //0x0008
|
||||
uint32_t m_maxBit; //0x000C
|
||||
uint32_t m_bitsRead; //0x0010
|
||||
uint32_t m_curBit; //0x0014
|
||||
uint32_t m_highestBitsRead;//0x0018
|
||||
uint8_t m_flagBits; //0x001C
|
||||
};
|
||||
|
||||
enum class eNetMessage : uint32_t
|
||||
enum class eNetMessage : uint32_t
|
||||
{
|
||||
MsgInvalid = 0xFFFFF,
|
||||
MsgSessionAcceptChat = 0x62,
|
||||
MsgStartMatchCmd = 0x2D,
|
||||
MsgSetInvitableCmd = 0x1F,
|
||||
MsgSessionMemberIds = 0x23,
|
||||
MsgRequestGamerInfo = 0x54,
|
||||
MsgRemoveGamersFromSessionCmd = 0x53,
|
||||
MsgNotMigrating = 0x35,
|
||||
MsgMigrateHostResponse = 0x12,
|
||||
MsgMigrateHostRequest = 0x66,
|
||||
MsgJoinResponse = 0x2A,
|
||||
MsgJoinRequest = 0x41,
|
||||
MsgHostLeftWhilstJoiningCmd = 0x58,
|
||||
MsgConfigResponse = 0x5F,
|
||||
MsgConfigRequest = 0x48,
|
||||
MsgChangeSessionAttributesCmd = 0x5A,
|
||||
MsgAddGamerToSessionCmd = 0x64, // this is where send net info to lobby is called, among other things
|
||||
MsgReassignResponse = 0x10,
|
||||
MsgReassignNegotiate = 0x01,
|
||||
MsgReassignConfirm = 0x26,
|
||||
MsgPlayerData = 0x18,
|
||||
MsgPackedReliables = 0x30,
|
||||
MsgPackedCloneSyncACKs = 0x3B,
|
||||
MsgNonPhysicalData = 0x16,
|
||||
MsgNetArrayMgrUpdateAck = 0x5D,
|
||||
MsgNetArrayMgrUpdate = 0x60,
|
||||
MsgNetArrayMgrSplitUpdateAck = 0x25,
|
||||
MsgScriptVerifyHostAck = 0x0B,
|
||||
MsgScriptVerifyHost = 0x3E,
|
||||
MsgScriptNewHost = 0x0E,
|
||||
MsgScriptMigrateHostFailAck = 0x1A,
|
||||
MsgScriptMigrateHost = 0x33,
|
||||
MsgScriptLeaveAck = 0x40,
|
||||
MsgScriptLeave = 0x17,
|
||||
MsgScriptJoinHostAck = 0x4D,
|
||||
MsgScriptJoinAck = 0x43,
|
||||
MsgScriptJoin = 0x5C,
|
||||
MsgScriptHostRequest = 0x67,
|
||||
MsgScriptHandshakeAck = 0x5B,
|
||||
MsgScriptHandshake = 0x57,
|
||||
MsgScriptBotLeave = 0x2B, // unused?
|
||||
MsgScriptBotJoinAck = 0x63, // unused?
|
||||
MsgScriptBotJoin = 0x1C, // unused?
|
||||
MsgScriptBotHandshakeAck = 0x31, // unused?
|
||||
MsgScriptBotHandshake = 0x4B, // unused?
|
||||
MsgPartyLeaveGame = 0x3D,
|
||||
MsgPartyEnterGame = 0x1E,
|
||||
MsgCloneSync = 0x4E, // aka clone_create, clone_sync etc.
|
||||
MsgActivateNetworkBot = 0x65, // unused?
|
||||
MsgRequestObjectIds = 0x29,
|
||||
MsgInformObjectIds = 0x09,
|
||||
MsgTextMessage = 0x24, // this one is for chat
|
||||
MsgPlayerIsTyping = 0x61,
|
||||
MsgPackedEvents = 0x4F, // aka received_event
|
||||
MsgPackedEventReliablesMsgs = 0x20,
|
||||
MsgRequestKickFromHost = 0x0D,
|
||||
MsgTransitionToGameStart = 0x50,
|
||||
MsgTransitionToGameNotify = 0x02,
|
||||
MsgTransitionToActivityStart = 0x06,
|
||||
MsgTransitionToActivityFinish = 0x36,
|
||||
MsgTransitionParameters = 0x3C,
|
||||
MsgTransitionParameterString = 0x37,
|
||||
MsgTransitionLaunchNotify = 0x1B,
|
||||
MsgTransitionLaunch = 0x19,
|
||||
MsgTransitionGamerInstruction = 0x14,
|
||||
MsgTextMessage2 = 0x0A, // this one is for phone message
|
||||
MsgSessionEstablishedRequest = 0x52,
|
||||
MsgSessionEstablished = 0x07,
|
||||
MsgInvalid = 0xFFFFF,
|
||||
MsgSessionAcceptChat = 0x62,
|
||||
MsgStartMatchCmd = 0x2D,
|
||||
MsgSetInvitableCmd = 0x1F,
|
||||
MsgSessionMemberIds = 0x23,
|
||||
MsgRequestGamerInfo = 0x54,
|
||||
MsgRemoveGamersFromSessionCmd = 0x53,
|
||||
MsgNotMigrating = 0x35,
|
||||
MsgMigrateHostResponse = 0x12,
|
||||
MsgMigrateHostRequest = 0x66,
|
||||
MsgJoinResponse = 0x2A,
|
||||
MsgJoinRequest = 0x41,
|
||||
MsgHostLeftWhilstJoiningCmd = 0x58,
|
||||
MsgConfigResponse = 0x5F,
|
||||
MsgConfigRequest = 0x48,
|
||||
MsgChangeSessionAttributesCmd = 0x5A,
|
||||
MsgAddGamerToSessionCmd = 0x64,// this is where send net info to lobby is called, among other things
|
||||
MsgReassignResponse = 0x10,
|
||||
MsgReassignNegotiate = 0x01,
|
||||
MsgReassignConfirm = 0x26,
|
||||
MsgPlayerData = 0x18,
|
||||
MsgPackedReliables = 0x30,
|
||||
MsgPackedCloneSyncACKs = 0x3B,
|
||||
MsgNonPhysicalData = 0x16,
|
||||
MsgNetArrayMgrUpdateAck = 0x5D,
|
||||
MsgNetArrayMgrUpdate = 0x60,
|
||||
MsgNetArrayMgrSplitUpdateAck = 0x25,
|
||||
MsgScriptVerifyHostAck = 0x0B,
|
||||
MsgScriptVerifyHost = 0x3E,
|
||||
MsgScriptNewHost = 0x0E,
|
||||
MsgScriptMigrateHostFailAck = 0x1A,
|
||||
MsgScriptMigrateHost = 0x33,
|
||||
MsgScriptLeaveAck = 0x40,
|
||||
MsgScriptLeave = 0x17,
|
||||
MsgScriptJoinHostAck = 0x4D,
|
||||
MsgScriptJoinAck = 0x43,
|
||||
MsgScriptJoin = 0x5C,
|
||||
MsgScriptHostRequest = 0x67,
|
||||
MsgScriptHandshakeAck = 0x5B,
|
||||
MsgScriptHandshake = 0x57,
|
||||
MsgScriptBotLeave = 0x2B,// unused?
|
||||
MsgScriptBotJoinAck = 0x63,// unused?
|
||||
MsgScriptBotJoin = 0x1C,// unused?
|
||||
MsgScriptBotHandshakeAck = 0x31,// unused?
|
||||
MsgScriptBotHandshake = 0x4B,// unused?
|
||||
MsgPartyLeaveGame = 0x3D,
|
||||
MsgPartyEnterGame = 0x1E,
|
||||
MsgCloneSync = 0x4E,// aka clone_create, clone_sync etc.
|
||||
MsgActivateNetworkBot = 0x65,// unused?
|
||||
MsgRequestObjectIds = 0x29,
|
||||
MsgInformObjectIds = 0x09,
|
||||
MsgTextMessage = 0x24,// this one is for chat
|
||||
MsgPlayerIsTyping = 0x61,
|
||||
MsgPackedEvents = 0x4F,// aka received_event
|
||||
MsgPackedEventReliablesMsgs = 0x20,
|
||||
MsgRequestKickFromHost = 0x0D,
|
||||
MsgTransitionToGameStart = 0x50,
|
||||
MsgTransitionToGameNotify = 0x02,
|
||||
MsgTransitionToActivityStart = 0x06,
|
||||
MsgTransitionToActivityFinish = 0x36,
|
||||
MsgTransitionParameters = 0x3C,
|
||||
MsgTransitionParameterString = 0x37,
|
||||
MsgTransitionLaunchNotify = 0x1B,
|
||||
MsgTransitionLaunch = 0x19,
|
||||
MsgTransitionGamerInstruction = 0x14,
|
||||
MsgTextMessage2 = 0x0A,// this one is for phone message
|
||||
MsgSessionEstablishedRequest = 0x52,
|
||||
MsgSessionEstablished = 0x07,
|
||||
MsgRequestTransitionParameters = 0x42,
|
||||
MsgRadioStationSyncRequest = 0x47,
|
||||
MsgRadioStationSync = 0x46,
|
||||
MsgPlayerCardSync = 0x3A,
|
||||
MsgPlayerCardRequest = 0x6A,
|
||||
MsgLostConnectionToHost = 0x81,
|
||||
MsgKickPlayer = 0x34, // host kick
|
||||
MsgDebugStall = 0x7E, // unused?
|
||||
MsgRadioStationSyncRequest = 0x47,
|
||||
MsgRadioStationSync = 0x46,
|
||||
MsgPlayerCardSync = 0x3A,
|
||||
MsgPlayerCardRequest = 0x6A,
|
||||
MsgLostConnectionToHost = 0x81,
|
||||
MsgKickPlayer = 0x34,// host kick
|
||||
MsgDebugStall = 0x7E,// unused?
|
||||
MsgCheckQueuedJoinRequestReply = 0x59,
|
||||
MsgCheckQueuedJoinRequest = 0x51,
|
||||
MsgBlacklist = 0x0C,
|
||||
MsgCheckQueuedJoinRequest = 0x51,
|
||||
MsgBlacklist = 0x0C,
|
||||
MsgRoamingRequestBubbleRequiredResponse = 0x83,
|
||||
MsgRoamingRequestBubbleRequiredCheck = 0x82,
|
||||
MsgRoamingRequestBubble = 0x2E,
|
||||
MsgRoamingJoinBubble = 0x4C,
|
||||
MsgRoamingJoinBubbleAck = 0x3F,
|
||||
MsgRoamingInitialBubble = 0x32,
|
||||
MsgVoiceStatus = 0x03,
|
||||
MsgTextChatStatus = 0x00,
|
||||
MsgJoinResponse2 = 0x08,
|
||||
MsgJoinRequest2 = 0x68,
|
||||
MsgNetTimeSync = 0x38, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 37
|
||||
MsgNetComplaint = 0x55, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 54
|
||||
MsgNetLagPing = 0x27, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 26
|
||||
MsgSearchResponse = 0x6B, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 6A
|
||||
MsgSearchRequest = 0x05, // unused?
|
||||
MsgQosProbeResponse = 0x2C, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2B
|
||||
MsgQosProbeRequest = 0x1D, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 1C
|
||||
MsgCxnRelayAddressChanged = 0x49, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 48
|
||||
MsgCxnRequestRemoteTimeout = 0x2F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2E
|
||||
MsgSessionDetailRequest = 0x22, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 21
|
||||
MsgSessionDetailResponse = 0x13, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 12
|
||||
MsgKeyExchangeOffer = 0x0F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 0E (last result)
|
||||
MsgKeyExchangeAnswer = 0x44, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 43
|
||||
Msg_0x87 = 0x87,
|
||||
Msg_0x88 = 0x88,
|
||||
Msg_0x80 = 0x80,
|
||||
Msg_0x28 = 0x28,
|
||||
Msg_0x11 = 0x11,
|
||||
Msg_0x45 = 0x45,
|
||||
Msg_0x89 = 0x89,
|
||||
Msg_0x86 = 0x86,
|
||||
MsgRoamingRequestBubbleRequiredCheck = 0x82,
|
||||
MsgRoamingRequestBubble = 0x2E,
|
||||
MsgRoamingJoinBubble = 0x4C,
|
||||
MsgRoamingJoinBubbleAck = 0x3F,
|
||||
MsgRoamingInitialBubble = 0x32,
|
||||
MsgVoiceStatus = 0x03,
|
||||
MsgTextChatStatus = 0x00,
|
||||
MsgJoinResponse2 = 0x08,
|
||||
MsgJoinRequest2 = 0x68,
|
||||
MsgNetTimeSync = 0x38,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 37
|
||||
MsgNetComplaint = 0x55,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 54
|
||||
MsgNetLagPing = 0x27,// unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 26
|
||||
MsgSearchResponse = 0x6B,// unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 6A
|
||||
MsgSearchRequest = 0x05,// unused?
|
||||
MsgQosProbeResponse = 0x2C,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2B
|
||||
MsgQosProbeRequest = 0x1D,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 1C
|
||||
MsgCxnRelayAddressChanged = 0x49,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 48
|
||||
MsgCxnRequestRemoteTimeout = 0x2F,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2E
|
||||
MsgSessionDetailRequest = 0x22,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 21
|
||||
MsgSessionDetailResponse = 0x13,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 12
|
||||
MsgKeyExchangeOffer = 0x0F,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 0E (last result)
|
||||
MsgKeyExchangeAnswer = 0x44,// ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 43
|
||||
Msg_0x87 = 0x87,
|
||||
Msg_0x88 = 0x88,
|
||||
Msg_0x80 = 0x80,
|
||||
Msg_0x28 = 0x28,
|
||||
Msg_0x11 = 0x11,
|
||||
Msg_0x45 = 0x45,
|
||||
Msg_0x89 = 0x89,
|
||||
Msg_0x86 = 0x86,
|
||||
};
|
||||
|
||||
namespace netConnection
|
||||
namespace netConnection
|
||||
{
|
||||
class InFrame
|
||||
{
|
||||
public:
|
||||
enum class EventType
|
||||
{
|
||||
ConnectionClosed = 3,
|
||||
FrameReceived = 4,
|
||||
ConnectionClosed = 3,
|
||||
FrameReceived = 4,
|
||||
BandwidthExceeded = 6,
|
||||
OutOfMemory = 7
|
||||
OutOfMemory = 7
|
||||
};
|
||||
|
||||
virtual ~InFrame() = default;
|
||||
|
||||
virtual void destroy() = 0;
|
||||
virtual void destroy() = 0;
|
||||
virtual EventType get_event_type() = 0;
|
||||
virtual uint32_t _0x18() = 0;
|
||||
virtual uint32_t _0x18() = 0;
|
||||
|
||||
uint32_t m_timestamp; //0x0008
|
||||
char pad_0008[52]; //0x000C
|
||||
uint32_t m_msg_id; //0x0040
|
||||
uint32_t m_connection_identifier; //0x0044
|
||||
InFrame* m_this; //0x0048
|
||||
uint32_t m_peer_id; //0x0050
|
||||
char pad_0050[44]; //0x0058
|
||||
uint32_t m_length; //0x0080
|
||||
char pad_007C[4]; //0x0084
|
||||
void* m_data; //0x0088
|
||||
uint32_t m_timestamp; //0x0008
|
||||
char pad_0008[52]; //0x000C
|
||||
uint32_t m_msg_id; //0x0040
|
||||
uint32_t m_connection_identifier;//0x0044
|
||||
InFrame* m_this; //0x0048
|
||||
uint32_t m_peer_id; //0x0050
|
||||
char pad_0050[44]; //0x0058
|
||||
uint32_t m_length; //0x0080
|
||||
char pad_007C[4]; //0x0084
|
||||
void* m_data; //0x0088
|
||||
};
|
||||
static_assert(sizeof(rage::netConnection::InFrame) == 0x90);
|
||||
}
|
||||
|
||||
|
||||
enum class eEventNetworkType : int64_t
|
||||
{
|
||||
CEventNetworkPlayerJoinScript = 153,
|
||||
CEventNetworkPlayerLeftScript = 154,
|
||||
CEventNetworkStorePlayerLeft = 155,
|
||||
CEventNetworkStartSession = 156,
|
||||
CEventNetworkEndSession = 157,
|
||||
CEventNetworkStartMatch = 158,
|
||||
CEventNetworkRemovedFromSessionDueToStall = 160,
|
||||
CEventNetworkRemovedFromSessionDueToComplaints = 161,
|
||||
CEventNetworkConnectionTimeout = 162,
|
||||
CEventNetworkPedDroppedWeapon = 163,
|
||||
CEventNetworkPlayerSpawn = 164,
|
||||
CEventNetworkPlayerCollectedPickup = 165,
|
||||
CEventNetworkPlayerCollectedAmbientPickup = 166,
|
||||
CEventNetworkPlayerCollectedPortablePickup = 167,
|
||||
CEventNetworkPlayerDroppedPortablePickup = 168,
|
||||
CEventNetworkInviteAccepted = 170,
|
||||
CEventNetworkInviteConfirmed = 171,
|
||||
CEventNetworkInviteRejected = 172,
|
||||
CEventNetworkSummo = 173,
|
||||
CEventNetworkScriptEvent = 174,
|
||||
CEventNetworkSignInStateChanged = 176,
|
||||
CEventNetworkSignInChangeActioned = 177,
|
||||
CEventNetworkRosChanged = 178,
|
||||
CEventNetworkBail = 179,
|
||||
CEventNetworkHostMigration = 180,
|
||||
CEventNetworkFindSession = 181,
|
||||
EventNetworkHostSession = 182,
|
||||
CEventNetworkJoinSession = 183,
|
||||
CEventNetworkJoinSessionResponse = 184,
|
||||
CEventNetworkCheatTriggered = 185,
|
||||
CEventNetworkEntityDamage = 186,
|
||||
CEventNetworkPlayerArrest = 187,
|
||||
CEventNetworkTimedExplosion = 188,
|
||||
CEventNetworkPrimaryClanChanged = 189,
|
||||
CEventNetworkClanJoined = 190,
|
||||
CEventNetworkClanLeft = 191,
|
||||
CEventNetworkClanInviteReceived = 192,
|
||||
CEventNetworkVoiceSessionStarted = 193,
|
||||
CEventNetworkVoiceSessionEnded = 194,
|
||||
CEventNetworkVoiceConnectionRequested = 195,
|
||||
CEventNetworkVoiceConnectionResponse = 196,
|
||||
CEventNetworkVoiceConnectionTerminated = 197,
|
||||
CEventNetworkTextMessageReceived = 198,
|
||||
CEventNetworkCloudFileResponse = 199,
|
||||
CEventNetworkPickupRespawned = 200,
|
||||
CEventNetworkPresence_StatUpdate = 201,
|
||||
CEventNetworkPedLeftBehind = 202,
|
||||
CEventNetwork_InboxMsgReceived = 203,
|
||||
CEventNetworkAttemptHostMigration = 204,
|
||||
CEventNetworkIncrementStat = 205,
|
||||
CEventNetworkSessionEvent = 206,
|
||||
CEventNetworkTransitionStarted = 207,
|
||||
CEventNetworkTransitionEvent = 208,
|
||||
CEventNetworkTransitionMemberJoined = 209,
|
||||
CEventNetworkTransitionMemberLeft = 210,
|
||||
CEventNetworkTransitionParameterChanged = 211,
|
||||
CEventNetworkClanKicked = 212,
|
||||
CEventNetworkTransitionStringChanged = 213,
|
||||
EventNetworkTransitionGamerInstruction = 214,
|
||||
CEventNetworkPresenceInvite = 215,
|
||||
EventNetworkPresenceInviteRemoved = 216,
|
||||
EventNetworkPresenceInviteReply = 217,
|
||||
CEventNetworkCashTransactionLog = 218,
|
||||
CEventNetworkClanRankChanged = 219,
|
||||
CEventNetworkVehicleUndrivable = 220,
|
||||
CEventNetworkPresenceTriggerEvent = 221,
|
||||
CEventNetworkEmailReceivedEvent = 222,
|
||||
CEventNetworkFollowInviteReceived = 223,
|
||||
CEventNetworkSpectateLocal = 225,
|
||||
CEventNetworkCloudEvent = 226,
|
||||
CEventNetworkShopTransaction = 227,
|
||||
CEventNetworkOnlinePermissionsUpdated = 230,
|
||||
CEventNetworkSystemServiceEvent = 231,
|
||||
CEventNetworkRequestDelay = 232,
|
||||
CEventNetworkSocialClubAccountLinked = 233,
|
||||
CEventNetworkScAdminPlayerUpdated = 234,
|
||||
CEventNetworkScAdminReceivedCash = 235,
|
||||
CEventNetworkClanInviteRequestReceived = 236,
|
||||
CEventNetworkMarketingEmailReceivedEvent = 237,
|
||||
CEventNetworkStuntPerformed = 238,
|
||||
CEventNetworkFiredDummyProjectile = 239,
|
||||
CEventNetworkPlayerEnteredVehicle = 240,
|
||||
CEventNetworkPlayerActivatedSpecialAbility = 241,
|
||||
CEventNetworkPlayerDeactivatedSpecialAbility = 242,
|
||||
CEventNetworkPlayerJoinScript = 153,
|
||||
CEventNetworkPlayerLeftScript = 154,
|
||||
CEventNetworkStorePlayerLeft = 155,
|
||||
CEventNetworkStartSession = 156,
|
||||
CEventNetworkEndSession = 157,
|
||||
CEventNetworkStartMatch = 158,
|
||||
CEventNetworkRemovedFromSessionDueToStall = 160,
|
||||
CEventNetworkRemovedFromSessionDueToComplaints = 161,
|
||||
CEventNetworkConnectionTimeout = 162,
|
||||
CEventNetworkPedDroppedWeapon = 163,
|
||||
CEventNetworkPlayerSpawn = 164,
|
||||
CEventNetworkPlayerCollectedPickup = 165,
|
||||
CEventNetworkPlayerCollectedAmbientPickup = 166,
|
||||
CEventNetworkPlayerCollectedPortablePickup = 167,
|
||||
CEventNetworkPlayerDroppedPortablePickup = 168,
|
||||
CEventNetworkInviteAccepted = 170,
|
||||
CEventNetworkInviteConfirmed = 171,
|
||||
CEventNetworkInviteRejected = 172,
|
||||
CEventNetworkSummo = 173,
|
||||
CEventNetworkScriptEvent = 174,
|
||||
CEventNetworkSignInStateChanged = 176,
|
||||
CEventNetworkSignInChangeActioned = 177,
|
||||
CEventNetworkRosChanged = 178,
|
||||
CEventNetworkBail = 179,
|
||||
CEventNetworkHostMigration = 180,
|
||||
CEventNetworkFindSession = 181,
|
||||
EventNetworkHostSession = 182,
|
||||
CEventNetworkJoinSession = 183,
|
||||
CEventNetworkJoinSessionResponse = 184,
|
||||
CEventNetworkCheatTriggered = 185,
|
||||
CEventNetworkEntityDamage = 186,
|
||||
CEventNetworkPlayerArrest = 187,
|
||||
CEventNetworkTimedExplosion = 188,
|
||||
CEventNetworkPrimaryClanChanged = 189,
|
||||
CEventNetworkClanJoined = 190,
|
||||
CEventNetworkClanLeft = 191,
|
||||
CEventNetworkClanInviteReceived = 192,
|
||||
CEventNetworkVoiceSessionStarted = 193,
|
||||
CEventNetworkVoiceSessionEnded = 194,
|
||||
CEventNetworkVoiceConnectionRequested = 195,
|
||||
CEventNetworkVoiceConnectionResponse = 196,
|
||||
CEventNetworkVoiceConnectionTerminated = 197,
|
||||
CEventNetworkTextMessageReceived = 198,
|
||||
CEventNetworkCloudFileResponse = 199,
|
||||
CEventNetworkPickupRespawned = 200,
|
||||
CEventNetworkPresence_StatUpdate = 201,
|
||||
CEventNetworkPedLeftBehind = 202,
|
||||
CEventNetwork_InboxMsgReceived = 203,
|
||||
CEventNetworkAttemptHostMigration = 204,
|
||||
CEventNetworkIncrementStat = 205,
|
||||
CEventNetworkSessionEvent = 206,
|
||||
CEventNetworkTransitionStarted = 207,
|
||||
CEventNetworkTransitionEvent = 208,
|
||||
CEventNetworkTransitionMemberJoined = 209,
|
||||
CEventNetworkTransitionMemberLeft = 210,
|
||||
CEventNetworkTransitionParameterChanged = 211,
|
||||
CEventNetworkClanKicked = 212,
|
||||
CEventNetworkTransitionStringChanged = 213,
|
||||
EventNetworkTransitionGamerInstruction = 214,
|
||||
CEventNetworkPresenceInvite = 215,
|
||||
EventNetworkPresenceInviteRemoved = 216,
|
||||
EventNetworkPresenceInviteReply = 217,
|
||||
CEventNetworkCashTransactionLog = 218,
|
||||
CEventNetworkClanRankChanged = 219,
|
||||
CEventNetworkVehicleUndrivable = 220,
|
||||
CEventNetworkPresenceTriggerEvent = 221,
|
||||
CEventNetworkEmailReceivedEvent = 222,
|
||||
CEventNetworkFollowInviteReceived = 223,
|
||||
CEventNetworkSpectateLocal = 225,
|
||||
CEventNetworkCloudEvent = 226,
|
||||
CEventNetworkShopTransaction = 227,
|
||||
CEventNetworkOnlinePermissionsUpdated = 230,
|
||||
CEventNetworkSystemServiceEvent = 231,
|
||||
CEventNetworkRequestDelay = 232,
|
||||
CEventNetworkSocialClubAccountLinked = 233,
|
||||
CEventNetworkScAdminPlayerUpdated = 234,
|
||||
CEventNetworkScAdminReceivedCash = 235,
|
||||
CEventNetworkClanInviteRequestReceived = 236,
|
||||
CEventNetworkMarketingEmailReceivedEvent = 237,
|
||||
CEventNetworkStuntPerformed = 238,
|
||||
CEventNetworkFiredDummyProjectile = 239,
|
||||
CEventNetworkPlayerEnteredVehicle = 240,
|
||||
CEventNetworkPlayerActivatedSpecialAbility = 241,
|
||||
CEventNetworkPlayerDeactivatedSpecialAbility = 242,
|
||||
CEventNetworkPlayerSpecialAbilityFailedActivation = 243,
|
||||
CEventNetworkFiredVehicleProjectile = 244,
|
||||
CEventNetworkFiredVehicleProjectile = 244,
|
||||
};
|
||||
|
||||
|
||||
class CEventNetwork
|
||||
{
|
||||
public:
|
||||
virtual ~CEventNetwork() = default; //0x0000 (0)
|
||||
virtual void unk_0008() = 0; //0x0008 (1)
|
||||
virtual void unk_0010() = 0; //0x0010 (2)
|
||||
virtual eEventNetworkType get_type() = 0; //0x0018 (3)
|
||||
virtual void unk_0020() = 0; //0x0020 (4)
|
||||
virtual void unk_0028() = 0; //0x0028 (5)
|
||||
virtual bool get_extra_information(void* info_array, int check) = 0; //0x0030 (6)
|
||||
virtual void unk_0038() = 0; //0x0038 (7)
|
||||
}; //Size: 0x0008
|
||||
virtual ~CEventNetwork() = default;//0x0000 (0)
|
||||
virtual void unk_0008() = 0; //0x0008 (1)
|
||||
virtual void unk_0010() = 0; //0x0010 (2)
|
||||
virtual eEventNetworkType get_type() = 0; //0x0018 (3)
|
||||
virtual void unk_0020() = 0; //0x0020 (4)
|
||||
virtual void unk_0028() = 0; //0x0028 (5)
|
||||
virtual bool get_extra_information(void* info_array, int check) = 0; //0x0030 (6)
|
||||
virtual void unk_0038() = 0; //0x0038 (7)
|
||||
}; //Size: 0x0008
|
||||
|
||||
class sEntityDamagedData
|
||||
{
|
||||
public:
|
||||
alignas(8) Entity m_victim_index; //0x0000
|
||||
alignas(8) Entity m_damager_index; //0x0008
|
||||
alignas(8) float m_damage; //0x0010
|
||||
alignas(8) float m_endurance_damage; //0x0018
|
||||
alignas(8) bool m_victim_incapacitated; //0x0020
|
||||
alignas(8) bool m_victim_destroyed; //0x0028
|
||||
alignas(8) int m_weapon_used; //0x0030
|
||||
alignas(8) float m_victim_speed; //0x0038
|
||||
alignas(8) float m_damager_speed; //0x0040
|
||||
alignas(8) bool m_is_responsible_for_collision; //0x0048
|
||||
alignas(8) bool m_is_headshot; //0x0050
|
||||
alignas(8) bool m_is_with_melee_weapon; //0x0058
|
||||
alignas(8) int m_hit_material; //0x0060
|
||||
}; //Size: 0x0068
|
||||
alignas(8) Entity m_victim_index; //0x0000
|
||||
alignas(8) Entity m_damager_index; //0x0008
|
||||
alignas(8) float m_damage; //0x0010
|
||||
alignas(8) float m_endurance_damage; //0x0018
|
||||
alignas(8) bool m_victim_incapacitated; //0x0020
|
||||
alignas(8) bool m_victim_destroyed; //0x0028
|
||||
alignas(8) int m_weapon_used; //0x0030
|
||||
alignas(8) float m_victim_speed; //0x0038
|
||||
alignas(8) float m_damager_speed; //0x0040
|
||||
alignas(8) bool m_is_responsible_for_collision;//0x0048
|
||||
alignas(8) bool m_is_headshot; //0x0050
|
||||
alignas(8) bool m_is_with_melee_weapon; //0x0058
|
||||
alignas(8) int m_hit_material; //0x0060
|
||||
}; //Size: 0x0068
|
||||
static_assert(sizeof(sEntityDamagedData) == 0x68);
|
||||
|
||||
class netGameEvent
|
||||
@ -538,48 +573,80 @@ namespace rage
|
||||
public:
|
||||
virtual ~netGameEvent() = default;
|
||||
|
||||
virtual const char* get_name() { return 0; };
|
||||
virtual bool is_in_scope(netPlayer* player) { return 0; };
|
||||
virtual bool time_to_resend(std::uint32_t time) { return 0; };
|
||||
virtual bool can_change_scope() { return 0; };
|
||||
virtual const char* get_name()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool is_in_scope(netPlayer* player)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool time_to_resend(std::uint32_t time)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool can_change_scope()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
|
||||
virtual void prepare_data(datBitBuffer* buffer, netPlayer* source_player, netPlayer* target_player) {};
|
||||
virtual void handle_data(datBitBuffer* buffer, netPlayer* source_player, netPlayer* target_player) {};
|
||||
virtual void prepare_data(datBitBuffer* buffer, netPlayer* source_player, netPlayer* target_player){};
|
||||
virtual void handle_data(datBitBuffer* buffer, netPlayer* source_player, netPlayer* target_player){};
|
||||
|
||||
virtual bool decide(netPlayer* source_player, netPlayer* target_player) { return 0; };
|
||||
virtual bool decide(netPlayer* source_player, netPlayer* target_player)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
|
||||
virtual void prepare_reply(datBitBuffer* buffer, netPlayer* reply_player) {};
|
||||
virtual void handle_reply(datBitBuffer* buffer, netPlayer* souce_player) {};
|
||||
virtual void prepare_reply(datBitBuffer* buffer, netPlayer* reply_player){};
|
||||
virtual void handle_reply(datBitBuffer* buffer, netPlayer* souce_player){};
|
||||
|
||||
virtual void prepare_extra_data(datBitBuffer* buffer, bool is_reply, netPlayer* player, netPlayer* player2) {};
|
||||
virtual void handle_extra_data(datBitBuffer* buffer, bool is_reply, netPlayer* player, netPlayer* player2) {};
|
||||
virtual void prepare_extra_data(datBitBuffer* buffer, bool is_reply, netPlayer* player, netPlayer* player2){};
|
||||
virtual void handle_extra_data(datBitBuffer* buffer, bool is_reply, netPlayer* player, netPlayer* player2){};
|
||||
|
||||
private:
|
||||
virtual void unk_0x60() {};
|
||||
virtual void unk_0x68() {};
|
||||
virtual void unk_0x70() {};
|
||||
virtual void unk_0x78() {};
|
||||
public:
|
||||
virtual bool operator==(netGameEvent const& other) { return 0; };
|
||||
virtual bool operator!=(netGameEvent const& other) { return 0; };
|
||||
virtual void unk_0x60(){};
|
||||
virtual void unk_0x68(){};
|
||||
virtual void unk_0x70(){};
|
||||
virtual void unk_0x78(){};
|
||||
|
||||
virtual bool must_persist() { return 0; };
|
||||
virtual bool must_persist_when_out_of_scope() { return 0; };
|
||||
virtual bool has_timed_out() { return 0; };
|
||||
public:
|
||||
std::uint16_t m_id; // 0x08
|
||||
bool m_requires_reply; // 0x0A
|
||||
private:
|
||||
char m_padding1[0x05]; // 0x0B
|
||||
virtual bool operator==(netGameEvent const& other)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool operator!=(netGameEvent const& other)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
|
||||
virtual bool must_persist()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool must_persist_when_out_of_scope()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
virtual bool has_timed_out()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
|
||||
public:
|
||||
netPlayer* m_source_player; // 0x10
|
||||
netPlayer* m_target_player; // 0x18
|
||||
std::uint32_t m_resend_time; // 0x20
|
||||
std::uint16_t m_id; // 0x08
|
||||
bool m_requires_reply;// 0x0A
|
||||
private:
|
||||
std::uint16_t m_0x24; // 0x24
|
||||
std::uint8_t m_0x26; // 0x26
|
||||
std::uint8_t m_0x27; // 0x27
|
||||
std::uint32_t m_0x28; // 0x28
|
||||
char m_padding1[0x05];// 0x0B
|
||||
public:
|
||||
netPlayer* m_source_player; // 0x10
|
||||
netPlayer* m_target_player; // 0x18
|
||||
std::uint32_t m_resend_time;// 0x20
|
||||
private:
|
||||
std::uint16_t m_0x24;// 0x24
|
||||
std::uint8_t m_0x26; // 0x26
|
||||
std::uint8_t m_0x27; // 0x27
|
||||
std::uint32_t m_0x28;// 0x28
|
||||
char m_padding2[0x04];
|
||||
};
|
||||
}
|
||||
@ -587,16 +654,16 @@ namespace rage
|
||||
class CScriptedGameEvent : public rage::netGameEvent
|
||||
{
|
||||
public:
|
||||
char m_padding[0x40]; // 0x30
|
||||
std::int64_t m_args[54]; // 0x70
|
||||
std::uint32_t m_bitset; // 0x220
|
||||
std::uint32_t m_args_size; // 0x224
|
||||
char m_padding[0x40]; // 0x30
|
||||
std::int64_t m_args[54]; // 0x70
|
||||
std::uint32_t m_bitset; // 0x220
|
||||
std::uint32_t m_args_size;// 0x224
|
||||
};
|
||||
|
||||
class CNetworkIncrementStatEvent : public rage::netGameEvent
|
||||
{
|
||||
public:
|
||||
Hash m_stat; // 0x30
|
||||
std::uint32_t m_amount; // 0x34
|
||||
Hash m_stat; // 0x30
|
||||
std::uint32_t m_amount;// 0x34
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include "node_list.hpp"
|
||||
#include "enums.hpp"
|
||||
#include "../pointers.hpp"
|
||||
#include "enums.hpp"
|
||||
#include "node_list.hpp"
|
||||
#include "replay.hpp"
|
||||
|
||||
class CNetGamePlayer;
|
||||
@ -11,39 +11,61 @@ namespace rage
|
||||
class CPlayerSyncTree
|
||||
{
|
||||
public:
|
||||
char pad_0000[8]; //0x0000
|
||||
netObject* player_object; //0x0008
|
||||
char pad_0010[256]; //0x0010
|
||||
}; //Size: 0x0110
|
||||
char pad_0000[8]; //0x0000
|
||||
netObject* player_object;//0x0008
|
||||
char pad_0010[256]; //0x0010
|
||||
}; //Size: 0x0110
|
||||
|
||||
class CNetworkSyncDataULBase
|
||||
{
|
||||
public:
|
||||
virtual ~CNetworkSyncDataULBase() = default;
|
||||
|
||||
inline virtual void m_8() { }
|
||||
inline virtual void m_10() { }
|
||||
inline virtual void m_18() { }
|
||||
inline virtual void m_20() { }
|
||||
inline virtual void m_28() { }
|
||||
inline virtual void m_30() { }
|
||||
inline virtual void m_38() { }
|
||||
inline virtual void m_40() { }
|
||||
inline virtual void m_48() { }
|
||||
inline virtual void m_50() { }
|
||||
inline virtual void SetCloningFrequency(int player, int frequency) { }
|
||||
inline virtual void m_8()
|
||||
{
|
||||
}
|
||||
inline virtual void m_10()
|
||||
{
|
||||
}
|
||||
inline virtual void m_18()
|
||||
{
|
||||
}
|
||||
inline virtual void m_20()
|
||||
{
|
||||
}
|
||||
inline virtual void m_28()
|
||||
{
|
||||
}
|
||||
inline virtual void m_30()
|
||||
{
|
||||
}
|
||||
inline virtual void m_38()
|
||||
{
|
||||
}
|
||||
inline virtual void m_40()
|
||||
{
|
||||
}
|
||||
inline virtual void m_48()
|
||||
{
|
||||
}
|
||||
inline virtual void m_50()
|
||||
{
|
||||
}
|
||||
inline virtual void SetCloningFrequency(int player, int frequency)
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
uint8_t pad_10h[49];
|
||||
uint8_t ownerId;
|
||||
uint8_t nextOwnerId;
|
||||
uint8_t isRemote;
|
||||
uint8_t wantsToDelete : 1; // netobj+76
|
||||
uint8_t wantsToDelete : 1;// netobj+76
|
||||
uint8_t unk1 : 1;
|
||||
uint8_t shouldNotBeDeleted : 1;
|
||||
uint8_t pad_4Dh[3];
|
||||
uint8_t pad_50h[32];
|
||||
uint32_t creationAckedPlayers; // netobj+112
|
||||
uint32_t creationAckedPlayers;// netobj+112
|
||||
uint32_t m64;
|
||||
uint32_t m68;
|
||||
uint32_t m6C;
|
||||
@ -68,41 +90,42 @@ namespace rage
|
||||
virtual ~netObjectMgrBase() = default;
|
||||
|
||||
virtual void Initialize() = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
virtual void Update(bool) = 0;
|
||||
|
||||
virtual void AddEntity(void*, void*) = 0;
|
||||
virtual void UnregisterNetworkObject_(void *unk, bool force) = 0;
|
||||
virtual void UnregisterNetworkObject(netObject *object, int reason, bool force1, bool force2) = 0;
|
||||
virtual void AddEntity(void*, void*) = 0;
|
||||
virtual void UnregisterNetworkObject_(void* unk, bool force) = 0;
|
||||
virtual void UnregisterNetworkObject(netObject* object, int reason, bool force1, bool force2) = 0;
|
||||
|
||||
virtual void ChangeOwner(netObject *object, CNetGamePlayer *player, int migrationType) = 0;
|
||||
virtual void ChangeOwner(netObject* object, CNetGamePlayer* player, int migrationType) = 0;
|
||||
|
||||
virtual void HandleJoiningPlayer(CNetGamePlayer *player) = 0;
|
||||
virtual void HandleLeavingPlayer(CNetGamePlayer *player) = 0;
|
||||
virtual void HandleJoiningPlayer(CNetGamePlayer* player) = 0;
|
||||
virtual void HandleLeavingPlayer(CNetGamePlayer* player) = 0;
|
||||
|
||||
virtual void _0x50(CNetGamePlayer *player) = 0;
|
||||
virtual void _0x58() = 0;
|
||||
virtual void _0x50(CNetGamePlayer* player) = 0;
|
||||
virtual void _0x58() = 0;
|
||||
|
||||
virtual void RegisterNetworkObject(netObject *object) = 0;
|
||||
virtual void RegisterNetworkObject(netObject* object) = 0;
|
||||
|
||||
virtual void PackCloneCreate(netObject *object, CNetGamePlayer *player, datBitBuffer *buffer) = 0;
|
||||
virtual bool PackCloneRemove(netObject *object, CNetGamePlayer *player, bool) = 0;
|
||||
virtual void PackCloneCreate(netObject* object, CNetGamePlayer* player, datBitBuffer* buffer) = 0;
|
||||
virtual bool PackCloneRemove(netObject* object, CNetGamePlayer* player, bool) = 0;
|
||||
|
||||
virtual void _0x78(netObject *object, void*) = 0;
|
||||
virtual void _0x80() = 0;
|
||||
virtual void _0x88() = 0;
|
||||
virtual const char *_0x90(int) = 0;
|
||||
virtual void _0x78(netObject* object, void*) = 0;
|
||||
virtual void _0x80() = 0;
|
||||
virtual void _0x88() = 0;
|
||||
virtual const char* _0x90(int) = 0;
|
||||
|
||||
virtual bool HandleCloneCreate(CNetGamePlayer *source, CNetGamePlayer *target, eNetObjType object_type, std::uint16_t object_id, eNetObjectFlags object_flags, void*, std::uint32_t timestamp) = 0;
|
||||
virtual void HandleCloneCreateAck(CNetGamePlayer *source, CNetGamePlayer *target, std::uint16_t object_flags, eAckCode ack_code) = 0;
|
||||
virtual bool HandleCloneCreate(CNetGamePlayer* source, CNetGamePlayer* target, eNetObjType object_type, std::uint16_t object_id, eNetObjectFlags object_flags, void*, std::uint32_t timestamp) = 0;
|
||||
virtual void HandleCloneCreateAck(CNetGamePlayer* source, CNetGamePlayer* target, std::uint16_t object_flags, eAckCode ack_code) = 0;
|
||||
|
||||
virtual int HandleCloneSync(CNetGamePlayer *source, CNetGamePlayer *target, eNetObjType object_type, std::uint16_t object_id, void*, std::uint16_t, std::uint32_t timestamp) = 0;
|
||||
virtual void HandleCloneSyncAck(CNetGamePlayer *source, CNetGamePlayer *target, void *, std::uint16_t objectId, eAckCode ack_code) = 0;
|
||||
virtual int HandleCloneSync(CNetGamePlayer* source, CNetGamePlayer* target, eNetObjType object_type, std::uint16_t object_id, void*, std::uint16_t, std::uint32_t timestamp) = 0;
|
||||
virtual void HandleCloneSyncAck(CNetGamePlayer* source, CNetGamePlayer* target, void*, std::uint16_t objectId, eAckCode ack_code) = 0;
|
||||
|
||||
virtual void HandleCloneRemove(CNetGamePlayer *source, CNetGamePlayer *target, std::uint16_t object_id, int) = 0;
|
||||
virtual void HandleCloneRemoveAck(CNetGamePlayer *source, CNetGamePlayer *target, std::uint16_t object_id, eAckCode ack_code) = 0;
|
||||
virtual void HandleCloneRemove(CNetGamePlayer* source, CNetGamePlayer* target, std::uint16_t object_id, int) = 0;
|
||||
virtual void HandleCloneRemoveAck(CNetGamePlayer* source, CNetGamePlayer* target, std::uint16_t object_id, eAckCode ack_code) = 0;
|
||||
|
||||
virtual void _0xC8() = 0;
|
||||
|
||||
public:
|
||||
atDList<atDNetObjectNode> m_objects_owned_by_player[32];
|
||||
};
|
||||
|
@ -1,23 +1,24 @@
|
||||
#pragma once
|
||||
#include "fwddec.hpp"
|
||||
|
||||
#include <base/datBase.hpp>
|
||||
|
||||
namespace rage
|
||||
{
|
||||
template <typename T, typename Base = datBase>
|
||||
template<typename T, typename Base = datBase>
|
||||
class atDNode : public Base
|
||||
{
|
||||
public:
|
||||
T m_data;
|
||||
void *m_unk;
|
||||
atDNode<T, Base> *m_next;
|
||||
void* m_unk;
|
||||
atDNode<T, Base>* m_next;
|
||||
};
|
||||
|
||||
template <typename Node>
|
||||
template<typename Node>
|
||||
class atDList
|
||||
{
|
||||
public:
|
||||
Node *m_head;
|
||||
Node *m_tail;
|
||||
Node* m_head;
|
||||
Node* m_tail;
|
||||
};
|
||||
}
|
||||
|
@ -1,9 +1,4 @@
|
||||
#pragma once
|
||||
#include "fwddec.hpp"
|
||||
|
||||
class CPedFactory
|
||||
{
|
||||
public:
|
||||
virtual ~CPedFactory() = default;
|
||||
CPed *m_local_ped;
|
||||
};
|
||||
#include <ped/CPedFactory.hpp>
|
@ -1,160 +1,160 @@
|
||||
#pragma once
|
||||
|
||||
#include "natives.hpp"
|
||||
#include "gta/joaat.hpp"
|
||||
#include "natives.hpp"
|
||||
|
||||
enum Rewards : Hash
|
||||
{
|
||||
REWARD_AMMO_ADVANCEDRIFLE = RAGE_JOAAT("REWARD_AMMO_ADVANCEDRIFLE"),
|
||||
REWARD_AMMO_APPISTOL = RAGE_JOAAT("REWARD_AMMO_APPISTOL"),
|
||||
REWARD_AMMO_ASSAULTRIFLE = RAGE_JOAAT("REWARD_AMMO_ASSAULTRIFLE"),
|
||||
REWARD_AMMO_ASSAULTSHOTGUN = RAGE_JOAAT("REWARD_AMMO_ASSAULTSHOTGUN"),
|
||||
REWARD_AMMO_ASSAULTSMG = RAGE_JOAAT("REWARD_AMMO_ASSAULTSMG"),
|
||||
REWARD_AMMO_AUTOSHOTGUN = RAGE_JOAAT("REWARD_AMMO_AUTOSHOTGUN"),
|
||||
REWARD_AMMO_BULLET_MP = RAGE_JOAAT("REWARD_AMMO_BULLET_MP"),
|
||||
REWARD_AMMO_BULLPUPRIFLE = RAGE_JOAAT("REWARD_AMMO_BULLPUPRIFLE"),
|
||||
REWARD_AMMO_BULLPUPSHOTGUN = RAGE_JOAAT("REWARD_AMMO_BULLPUPSHOTGUN"),
|
||||
REWARD_AMMO_CARBINERIFLE = RAGE_JOAAT("REWARD_AMMO_CARBINERIFLE"),
|
||||
REWARD_AMMO_COMBATMG = RAGE_JOAAT("REWARD_AMMO_COMBATMG"),
|
||||
REWARD_AMMO_COMBATPDW = RAGE_JOAAT("REWARD_AMMO_COMBATPDW"),
|
||||
REWARD_AMMO_COMBATPISTOL = RAGE_JOAAT("REWARD_AMMO_COMBATPISTOL"),
|
||||
REWARD_AMMO_COMPACTLAUNCHER = RAGE_JOAAT("REWARD_AMMO_COMPACTLAUNCHER"),
|
||||
REWARD_AMMO_COMPACTRIFLE = RAGE_JOAAT("REWARD_AMMO_COMPACTRIFLE"),
|
||||
REWARD_AMMO_DBSHOTGUN = RAGE_JOAAT("REWARD_AMMO_DBSHOTGUN"),
|
||||
REWARD_AMMO_DOUBLEACTION = RAGE_JOAAT("REWARD_AMMO_DOUBLEACTION"),
|
||||
REWARD_AMMO_FIREWORK = RAGE_JOAAT("REWARD_AMMO_FIREWORK"),
|
||||
REWARD_AMMO_FIREWORK_MP = RAGE_JOAAT("REWARD_AMMO_FIREWORK_MP"),
|
||||
REWARD_AMMO_FLAREGUN = RAGE_JOAAT("REWARD_AMMO_FLAREGUN"),
|
||||
REWARD_AMMO_GRENADE = RAGE_JOAAT("REWARD_AMMO_GRENADE"),
|
||||
REWARD_AMMO_GRENADELAUNCHER = RAGE_JOAAT("REWARD_AMMO_GRENADELAUNCHER"),
|
||||
REWARD_AMMO_GRENADELAUNCHER_MP = RAGE_JOAAT("REWARD_AMMO_GRENADELAUNCHER_MP"),
|
||||
REWARD_AMMO_GUSENBERG = RAGE_JOAAT("REWARD_AMMO_GUSENBERG"),
|
||||
REWARD_AMMO_HEAVYPISTOL = RAGE_JOAAT("REWARD_AMMO_HEAVYPISTOL"),
|
||||
REWARD_AMMO_HEAVYSHOTGUN = RAGE_JOAAT("REWARD_AMMO_HEAVYSHOTGUN"),
|
||||
REWARD_AMMO_HEAVYSNIPER = RAGE_JOAAT("REWARD_AMMO_HEAVYSNIPER"),
|
||||
REWARD_AMMO_HOMINGLAUNCHER = RAGE_JOAAT("REWARD_AMMO_HOMINGLAUNCHER"),
|
||||
REWARD_AMMO_MACHINEPISTOL = RAGE_JOAAT("REWARD_AMMO_MACHINEPISTOL"),
|
||||
REWARD_AMMO_MARKSMANPISTOL = RAGE_JOAAT("REWARD_AMMO_MARKSMANPISTOL"),
|
||||
REWARD_AMMO_MARKSMANRIFLE = RAGE_JOAAT("REWARD_AMMO_MARKSMANRIFLE"),
|
||||
REWARD_AMMO_MG = RAGE_JOAAT("REWARD_AMMO_MG"),
|
||||
REWARD_AMMO_MICROSMG = RAGE_JOAAT("REWARD_AMMO_MICROSMG"),
|
||||
REWARD_AMMO_MINIGUN = RAGE_JOAAT("REWARD_AMMO_MINIGUN"),
|
||||
REWARD_AMMO_MINISMG = RAGE_JOAAT("REWARD_AMMO_MINISMG"),
|
||||
REWARD_AMMO_MISSILE_MP = RAGE_JOAAT("REWARD_AMMO_MISSILE_MP"),
|
||||
REWARD_AMMO_MOLOTOV = RAGE_JOAAT("REWARD_AMMO_MOLOTOV"),
|
||||
REWARD_AMMO_MUSKET = RAGE_JOAAT("REWARD_AMMO_MUSKET"),
|
||||
REWARD_AMMO_PETROLCAN = RAGE_JOAAT("REWARD_AMMO_PETROLCAN"),
|
||||
REWARD_AMMO_PIPEBOMB = RAGE_JOAAT("REWARD_AMMO_PIPEBOMB"),
|
||||
REWARD_AMMO_PISTOL = RAGE_JOAAT("REWARD_AMMO_PISTOL"),
|
||||
REWARD_AMMO_PISTOL50 = RAGE_JOAAT("REWARD_AMMO_PISTOL50"),
|
||||
REWARD_AMMO_PROXMINE = RAGE_JOAAT("REWARD_AMMO_PROXMINE"),
|
||||
REWARD_AMMO_PUMPSHOTGUN = RAGE_JOAAT("REWARD_AMMO_PUMPSHOTGUN"),
|
||||
REWARD_AMMO_ADVANCEDRIFLE = RAGE_JOAAT("REWARD_AMMO_ADVANCEDRIFLE"),
|
||||
REWARD_AMMO_APPISTOL = RAGE_JOAAT("REWARD_AMMO_APPISTOL"),
|
||||
REWARD_AMMO_ASSAULTRIFLE = RAGE_JOAAT("REWARD_AMMO_ASSAULTRIFLE"),
|
||||
REWARD_AMMO_ASSAULTSHOTGUN = RAGE_JOAAT("REWARD_AMMO_ASSAULTSHOTGUN"),
|
||||
REWARD_AMMO_ASSAULTSMG = RAGE_JOAAT("REWARD_AMMO_ASSAULTSMG"),
|
||||
REWARD_AMMO_AUTOSHOTGUN = RAGE_JOAAT("REWARD_AMMO_AUTOSHOTGUN"),
|
||||
REWARD_AMMO_BULLET_MP = RAGE_JOAAT("REWARD_AMMO_BULLET_MP"),
|
||||
REWARD_AMMO_BULLPUPRIFLE = RAGE_JOAAT("REWARD_AMMO_BULLPUPRIFLE"),
|
||||
REWARD_AMMO_BULLPUPSHOTGUN = RAGE_JOAAT("REWARD_AMMO_BULLPUPSHOTGUN"),
|
||||
REWARD_AMMO_CARBINERIFLE = RAGE_JOAAT("REWARD_AMMO_CARBINERIFLE"),
|
||||
REWARD_AMMO_COMBATMG = RAGE_JOAAT("REWARD_AMMO_COMBATMG"),
|
||||
REWARD_AMMO_COMBATPDW = RAGE_JOAAT("REWARD_AMMO_COMBATPDW"),
|
||||
REWARD_AMMO_COMBATPISTOL = RAGE_JOAAT("REWARD_AMMO_COMBATPISTOL"),
|
||||
REWARD_AMMO_COMPACTLAUNCHER = RAGE_JOAAT("REWARD_AMMO_COMPACTLAUNCHER"),
|
||||
REWARD_AMMO_COMPACTRIFLE = RAGE_JOAAT("REWARD_AMMO_COMPACTRIFLE"),
|
||||
REWARD_AMMO_DBSHOTGUN = RAGE_JOAAT("REWARD_AMMO_DBSHOTGUN"),
|
||||
REWARD_AMMO_DOUBLEACTION = RAGE_JOAAT("REWARD_AMMO_DOUBLEACTION"),
|
||||
REWARD_AMMO_FIREWORK = RAGE_JOAAT("REWARD_AMMO_FIREWORK"),
|
||||
REWARD_AMMO_FIREWORK_MP = RAGE_JOAAT("REWARD_AMMO_FIREWORK_MP"),
|
||||
REWARD_AMMO_FLAREGUN = RAGE_JOAAT("REWARD_AMMO_FLAREGUN"),
|
||||
REWARD_AMMO_GRENADE = RAGE_JOAAT("REWARD_AMMO_GRENADE"),
|
||||
REWARD_AMMO_GRENADELAUNCHER = RAGE_JOAAT("REWARD_AMMO_GRENADELAUNCHER"),
|
||||
REWARD_AMMO_GRENADELAUNCHER_MP = RAGE_JOAAT("REWARD_AMMO_GRENADELAUNCHER_MP"),
|
||||
REWARD_AMMO_GUSENBERG = RAGE_JOAAT("REWARD_AMMO_GUSENBERG"),
|
||||
REWARD_AMMO_HEAVYPISTOL = RAGE_JOAAT("REWARD_AMMO_HEAVYPISTOL"),
|
||||
REWARD_AMMO_HEAVYSHOTGUN = RAGE_JOAAT("REWARD_AMMO_HEAVYSHOTGUN"),
|
||||
REWARD_AMMO_HEAVYSNIPER = RAGE_JOAAT("REWARD_AMMO_HEAVYSNIPER"),
|
||||
REWARD_AMMO_HOMINGLAUNCHER = RAGE_JOAAT("REWARD_AMMO_HOMINGLAUNCHER"),
|
||||
REWARD_AMMO_MACHINEPISTOL = RAGE_JOAAT("REWARD_AMMO_MACHINEPISTOL"),
|
||||
REWARD_AMMO_MARKSMANPISTOL = RAGE_JOAAT("REWARD_AMMO_MARKSMANPISTOL"),
|
||||
REWARD_AMMO_MARKSMANRIFLE = RAGE_JOAAT("REWARD_AMMO_MARKSMANRIFLE"),
|
||||
REWARD_AMMO_MG = RAGE_JOAAT("REWARD_AMMO_MG"),
|
||||
REWARD_AMMO_MICROSMG = RAGE_JOAAT("REWARD_AMMO_MICROSMG"),
|
||||
REWARD_AMMO_MINIGUN = RAGE_JOAAT("REWARD_AMMO_MINIGUN"),
|
||||
REWARD_AMMO_MINISMG = RAGE_JOAAT("REWARD_AMMO_MINISMG"),
|
||||
REWARD_AMMO_MISSILE_MP = RAGE_JOAAT("REWARD_AMMO_MISSILE_MP"),
|
||||
REWARD_AMMO_MOLOTOV = RAGE_JOAAT("REWARD_AMMO_MOLOTOV"),
|
||||
REWARD_AMMO_MUSKET = RAGE_JOAAT("REWARD_AMMO_MUSKET"),
|
||||
REWARD_AMMO_PETROLCAN = RAGE_JOAAT("REWARD_AMMO_PETROLCAN"),
|
||||
REWARD_AMMO_PIPEBOMB = RAGE_JOAAT("REWARD_AMMO_PIPEBOMB"),
|
||||
REWARD_AMMO_PISTOL = RAGE_JOAAT("REWARD_AMMO_PISTOL"),
|
||||
REWARD_AMMO_PISTOL50 = RAGE_JOAAT("REWARD_AMMO_PISTOL50"),
|
||||
REWARD_AMMO_PROXMINE = RAGE_JOAAT("REWARD_AMMO_PROXMINE"),
|
||||
REWARD_AMMO_PUMPSHOTGUN = RAGE_JOAAT("REWARD_AMMO_PUMPSHOTGUN"),
|
||||
REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE = RAGE_JOAAT("REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE"),
|
||||
REWARD_AMMO_RAILGUN = RAGE_JOAAT("REWARD_AMMO_RAILGUN"),
|
||||
REWARD_AMMO_RAYPISTOL = RAGE_JOAAT("REWARD_AMMO_RAYPISTOL"),
|
||||
REWARD_AMMO_REVOLVER = RAGE_JOAAT("REWARD_AMMO_REVOLVER"),
|
||||
REWARD_AMMO_RPG = RAGE_JOAAT("REWARD_AMMO_RPG"),
|
||||
REWARD_AMMO_SAWNOFFSHOTGUN = RAGE_JOAAT("REWARD_AMMO_SAWNOFFSHOTGUN"),
|
||||
REWARD_AMMO_SMG = RAGE_JOAAT("REWARD_AMMO_SMG"),
|
||||
REWARD_AMMO_SMOKEGRENADE = RAGE_JOAAT("REWARD_AMMO_SMOKEGRENADE"),
|
||||
REWARD_AMMO_SNIPERRIFLE = RAGE_JOAAT("REWARD_AMMO_SNIPERRIFLE"),
|
||||
REWARD_AMMO_SNSPISTOL = RAGE_JOAAT("REWARD_AMMO_SNSPISTOL"),
|
||||
REWARD_AMMO_SPECIALCARBINE = RAGE_JOAAT("REWARD_AMMO_SPECIALCARBINE"),
|
||||
REWARD_AMMO_STICKYBOMB = RAGE_JOAAT("REWARD_AMMO_STICKYBOMB"),
|
||||
REWARD_AMMO_STUNGUN = RAGE_JOAAT("REWARD_AMMO_STUNGUN"),
|
||||
REWARD_AMMO_VINTAGEPISTOL = RAGE_JOAAT("REWARD_AMMO_VINTAGEPISTOL"),
|
||||
REWARD_ARMOUR = RAGE_JOAAT("REWARD_ARMOUR"),
|
||||
REWARD_HEALTH = RAGE_JOAAT("REWARD_HEALTH"),
|
||||
REWARD_HEALTH_ENTER_VEHICLE = RAGE_JOAAT("REWARD_HEALTH_ENTER_VEHICLE"),
|
||||
REWARD_HEALTH_VARIABLE = RAGE_JOAAT("REWARD_HEALTH_VARIABLE"),
|
||||
REWARD_MONEY_VARIABLE = RAGE_JOAAT("REWARD_MONEY_VARIABLE"),
|
||||
REWARD_PARACHUTE = RAGE_JOAAT("REWARD_PARACHUTE"),
|
||||
REWARD_STAT_HEALTH = RAGE_JOAAT("REWARD_STAT_HEALTH"),
|
||||
REWARD_STAT_HEALTH_VARIABLE = RAGE_JOAAT("REWARD_STAT_HEALTH_VARIABLE"),
|
||||
REWARD_STAT_WEAPON = RAGE_JOAAT("REWARD_STAT_WEAPON"),
|
||||
REWARD_VEHICLE_FIX = RAGE_JOAAT("REWARD_VEHICLE_FIX"),
|
||||
REWARD_WEAPON_ADVANCEDRIFLE = RAGE_JOAAT("REWARD_WEAPON_ADVANCEDRIFLE"),
|
||||
REWARD_WEAPON_APPISTOL = RAGE_JOAAT("REWARD_WEAPON_APPISTOL"),
|
||||
REWARD_WEAPON_ASSAULTRIFLE = RAGE_JOAAT("REWARD_WEAPON_ASSAULTRIFLE"),
|
||||
REWARD_WEAPON_ASSAULTRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_ASSAULTRIFLE_MK2"),
|
||||
REWARD_WEAPON_ASSAULTSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_ASSAULTSHOTGUN"),
|
||||
REWARD_WEAPON_ASSAULTSMG = RAGE_JOAAT("REWARD_WEAPON_ASSAULTSMG"),
|
||||
REWARD_WEAPON_AUTOSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_AUTOSHOTGUN"),
|
||||
REWARD_WEAPON_BAT = RAGE_JOAAT("REWARD_WEAPON_BAT"),
|
||||
REWARD_WEAPON_BATTLEAXE = RAGE_JOAAT("REWARD_WEAPON_BATTLEAXE"),
|
||||
REWARD_WEAPON_BOTTLE = RAGE_JOAAT("REWARD_WEAPON_BOTTLE"),
|
||||
REWARD_WEAPON_BULLPUPRIFLE = RAGE_JOAAT("REWARD_WEAPON_BULLPUPRIFLE"),
|
||||
REWARD_WEAPON_BULLPUPRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_BULLPUPRIFLE_MK2"),
|
||||
REWARD_WEAPON_BULLPUPSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_BULLPUPSHOTGUN"),
|
||||
REWARD_WEAPON_CARBINERIFLE = RAGE_JOAAT("REWARD_WEAPON_CARBINERIFLE"),
|
||||
REWARD_WEAPON_CARBINERIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_CARBINERIFLE_MK2"),
|
||||
REWARD_WEAPON_COMBATMG = RAGE_JOAAT("REWARD_WEAPON_COMBATMG"),
|
||||
REWARD_WEAPON_COMBATMG_MK2 = RAGE_JOAAT("REWARD_WEAPON_COMBATMG_MK2"),
|
||||
REWARD_WEAPON_COMBATPDW = RAGE_JOAAT("REWARD_WEAPON_COMBATPDW"),
|
||||
REWARD_WEAPON_COMBATPISTOL = RAGE_JOAAT("REWARD_WEAPON_COMBATPISTOL"),
|
||||
REWARD_WEAPON_COMPACTLAUNCHER = RAGE_JOAAT("REWARD_WEAPON_COMPACTLAUNCHER"),
|
||||
REWARD_WEAPON_COMPACTRIFLE = RAGE_JOAAT("REWARD_WEAPON_COMPACTRIFLE"),
|
||||
REWARD_WEAPON_CROWBAR = RAGE_JOAAT("REWARD_WEAPON_CROWBAR"),
|
||||
REWARD_WEAPON_DAGGER = RAGE_JOAAT("REWARD_WEAPON_DAGGER"),
|
||||
REWARD_WEAPON_DBSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_DBSHOTGUN"),
|
||||
REWARD_WEAPON_DOUBLEACTION = RAGE_JOAAT("REWARD_WEAPON_DOUBLEACTION"),
|
||||
REWARD_WEAPON_FIREWORK = RAGE_JOAAT("REWARD_WEAPON_FIREWORK"),
|
||||
REWARD_WEAPON_FLAREGUN = RAGE_JOAAT("REWARD_WEAPON_FLAREGUN"),
|
||||
REWARD_WEAPON_FLASHLIGHT = RAGE_JOAAT("REWARD_WEAPON_FLASHLIGHT"),
|
||||
REWARD_WEAPON_GOLFCLUB = RAGE_JOAAT("REWARD_WEAPON_GOLFCLUB"),
|
||||
REWARD_WEAPON_GRENADE = RAGE_JOAAT("REWARD_WEAPON_GRENADE"),
|
||||
REWARD_WEAPON_GRENADELAUNCHER = RAGE_JOAAT("REWARD_WEAPON_GRENADELAUNCHER"),
|
||||
REWARD_WEAPON_GUSENBERG = RAGE_JOAAT("REWARD_WEAPON_GUSENBERG"),
|
||||
REWARD_WEAPON_HAMMER = RAGE_JOAAT("REWARD_WEAPON_HAMMER"),
|
||||
REWARD_WEAPON_HATCHET = RAGE_JOAAT("REWARD_WEAPON_HATCHET"),
|
||||
REWARD_WEAPON_HEAVYPISTOL = RAGE_JOAAT("REWARD_WEAPON_HEAVYPISTOL"),
|
||||
REWARD_WEAPON_HEAVYSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_HEAVYSHOTGUN"),
|
||||
REWARD_WEAPON_HEAVYSNIPER = RAGE_JOAAT("REWARD_WEAPON_HEAVYSNIPER"),
|
||||
REWARD_WEAPON_HEAVYSNIPER_MK2 = RAGE_JOAAT("REWARD_WEAPON_HEAVYSNIPER_MK2"),
|
||||
REWARD_WEAPON_HOMINGLAUNCHER = RAGE_JOAAT("REWARD_WEAPON_HOMINGLAUNCHER"),
|
||||
REWARD_WEAPON_KNIFE = RAGE_JOAAT("REWARD_WEAPON_KNIFE"),
|
||||
REWARD_WEAPON_KNUCKLE = RAGE_JOAAT("REWARD_WEAPON_KNUCKLE"),
|
||||
REWARD_WEAPON_MACHETE = RAGE_JOAAT("REWARD_WEAPON_MACHETE"),
|
||||
REWARD_WEAPON_MACHINEPISTOL = RAGE_JOAAT("REWARD_WEAPON_MACHINEPISTOL"),
|
||||
REWARD_WEAPON_MARKSMANPISTOL = RAGE_JOAAT("REWARD_WEAPON_MARKSMANPISTOL"),
|
||||
REWARD_WEAPON_MARKSMANRIFLE = RAGE_JOAAT("REWARD_WEAPON_MARKSMANRIFLE"),
|
||||
REWARD_WEAPON_MARKSMANRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_MARKSMANRIFLE_MK2"),
|
||||
REWARD_WEAPON_MG = RAGE_JOAAT("REWARD_WEAPON_MG"),
|
||||
REWARD_WEAPON_MICROSMG = RAGE_JOAAT("REWARD_WEAPON_MICROSMG"),
|
||||
REWARD_WEAPON_MINIGUN = RAGE_JOAAT("REWARD_WEAPON_MINIGUN"),
|
||||
REWARD_WEAPON_MINISMG = RAGE_JOAAT("REWARD_WEAPON_MINISMG"),
|
||||
REWARD_WEAPON_MOLOTOV = RAGE_JOAAT("REWARD_WEAPON_MOLOTOV"),
|
||||
REWARD_WEAPON_MUSKET = RAGE_JOAAT("REWARD_WEAPON_MUSKET"),
|
||||
REWARD_WEAPON_NIGHTSTICK = RAGE_JOAAT("REWARD_WEAPON_NIGHTSTICK"),
|
||||
REWARD_WEAPON_PETROLCAN = RAGE_JOAAT("REWARD_WEAPON_PETROLCAN"),
|
||||
REWARD_WEAPON_PIPEBOMB = RAGE_JOAAT("REWARD_WEAPON_PIPEBOMB"),
|
||||
REWARD_WEAPON_PISTOL = RAGE_JOAAT("REWARD_WEAPON_PISTOL"),
|
||||
REWARD_WEAPON_PISTOL50 = RAGE_JOAAT("REWARD_WEAPON_PISTOL50"),
|
||||
REWARD_WEAPON_PISTOL_MK2 = RAGE_JOAAT("REWARD_WEAPON_PISTOL_MK2"),
|
||||
REWARD_WEAPON_POOLCUE = RAGE_JOAAT("REWARD_WEAPON_POOLCUE"),
|
||||
REWARD_WEAPON_PROXMINE = RAGE_JOAAT("REWARD_WEAPON_PROXMINE"),
|
||||
REWARD_WEAPON_PUMPSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_PUMPSHOTGUN"),
|
||||
REWARD_WEAPON_PUMPSHOTGUN_MK2 = RAGE_JOAAT("REWARD_WEAPON_PUMPSHOTGUN_MK2"),
|
||||
REWARD_WEAPON_RAILGUN = RAGE_JOAAT("REWARD_WEAPON_RAILGUN"),
|
||||
REWARD_WEAPON_RAYCARBINE = RAGE_JOAAT("REWARD_WEAPON_RAYCARBINE"),
|
||||
REWARD_WEAPON_RAYMINIGUN = RAGE_JOAAT("REWARD_WEAPON_RAYMINIGUN"),
|
||||
REWARD_WEAPON_RAYPISTOL = RAGE_JOAAT("REWARD_WEAPON_RAYPISTOL"),
|
||||
REWARD_WEAPON_REVOLVER = RAGE_JOAAT("REWARD_WEAPON_REVOLVER"),
|
||||
REWARD_WEAPON_REVOLVER_MK2 = RAGE_JOAAT("REWARD_WEAPON_REVOLVER_MK2"),
|
||||
REWARD_WEAPON_RPG = RAGE_JOAAT("REWARD_WEAPON_RPG"),
|
||||
REWARD_WEAPON_SAWNOFFSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_SAWNOFFSHOTGUN"),
|
||||
REWARD_WEAPON_SMG = RAGE_JOAAT("REWARD_WEAPON_SMG"),
|
||||
REWARD_WEAPON_SMG_MK2 = RAGE_JOAAT("REWARD_WEAPON_SMG_MK2"),
|
||||
REWARD_WEAPON_SMOKEGRENADE = RAGE_JOAAT("REWARD_WEAPON_SMOKEGRENADE"),
|
||||
REWARD_WEAPON_SNIPERRIFLE = RAGE_JOAAT("REWARD_WEAPON_SNIPERRIFLE"),
|
||||
REWARD_WEAPON_SNSPISTOL = RAGE_JOAAT("REWARD_WEAPON_SNSPISTOL"),
|
||||
REWARD_WEAPON_SNSPISTOL_MK2 = RAGE_JOAAT("REWARD_WEAPON_SNSPISTOL_MK2"),
|
||||
REWARD_WEAPON_SPECIALCARBINE = RAGE_JOAAT("REWARD_WEAPON_SPECIALCARBINE"),
|
||||
REWARD_WEAPON_SPECIALCARBINE_MK2 = RAGE_JOAAT("REWARD_WEAPON_SPECIALCARBINE_MK2"),
|
||||
REWARD_WEAPON_STICKYBOMB = RAGE_JOAAT("REWARD_WEAPON_STICKYBOMB"),
|
||||
REWARD_WEAPON_STONE_HATCHET = RAGE_JOAAT("REWARD_WEAPON_STONE_HATCHET"),
|
||||
REWARD_WEAPON_STUNGUN = RAGE_JOAAT("REWARD_WEAPON_STUNGUN"),
|
||||
REWARD_WEAPON_SWITCHBLADE = RAGE_JOAAT("REWARD_WEAPON_SWITCHBLADE"),
|
||||
REWARD_WEAPON_VINTAGEPISTOL = RAGE_JOAAT("REWARD_WEAPON_VINTAGEPISTOL"),
|
||||
REWARD_WEAPON_WRENCH = RAGE_JOAAT("REWARD_WEAPON_WRENCH")
|
||||
REWARD_AMMO_RAILGUN = RAGE_JOAAT("REWARD_AMMO_RAILGUN"),
|
||||
REWARD_AMMO_RAYPISTOL = RAGE_JOAAT("REWARD_AMMO_RAYPISTOL"),
|
||||
REWARD_AMMO_REVOLVER = RAGE_JOAAT("REWARD_AMMO_REVOLVER"),
|
||||
REWARD_AMMO_RPG = RAGE_JOAAT("REWARD_AMMO_RPG"),
|
||||
REWARD_AMMO_SAWNOFFSHOTGUN = RAGE_JOAAT("REWARD_AMMO_SAWNOFFSHOTGUN"),
|
||||
REWARD_AMMO_SMG = RAGE_JOAAT("REWARD_AMMO_SMG"),
|
||||
REWARD_AMMO_SMOKEGRENADE = RAGE_JOAAT("REWARD_AMMO_SMOKEGRENADE"),
|
||||
REWARD_AMMO_SNIPERRIFLE = RAGE_JOAAT("REWARD_AMMO_SNIPERRIFLE"),
|
||||
REWARD_AMMO_SNSPISTOL = RAGE_JOAAT("REWARD_AMMO_SNSPISTOL"),
|
||||
REWARD_AMMO_SPECIALCARBINE = RAGE_JOAAT("REWARD_AMMO_SPECIALCARBINE"),
|
||||
REWARD_AMMO_STICKYBOMB = RAGE_JOAAT("REWARD_AMMO_STICKYBOMB"),
|
||||
REWARD_AMMO_STUNGUN = RAGE_JOAAT("REWARD_AMMO_STUNGUN"),
|
||||
REWARD_AMMO_VINTAGEPISTOL = RAGE_JOAAT("REWARD_AMMO_VINTAGEPISTOL"),
|
||||
REWARD_ARMOUR = RAGE_JOAAT("REWARD_ARMOUR"),
|
||||
REWARD_HEALTH = RAGE_JOAAT("REWARD_HEALTH"),
|
||||
REWARD_HEALTH_ENTER_VEHICLE = RAGE_JOAAT("REWARD_HEALTH_ENTER_VEHICLE"),
|
||||
REWARD_HEALTH_VARIABLE = RAGE_JOAAT("REWARD_HEALTH_VARIABLE"),
|
||||
REWARD_MONEY_VARIABLE = RAGE_JOAAT("REWARD_MONEY_VARIABLE"),
|
||||
REWARD_PARACHUTE = RAGE_JOAAT("REWARD_PARACHUTE"),
|
||||
REWARD_STAT_HEALTH = RAGE_JOAAT("REWARD_STAT_HEALTH"),
|
||||
REWARD_STAT_HEALTH_VARIABLE = RAGE_JOAAT("REWARD_STAT_HEALTH_VARIABLE"),
|
||||
REWARD_STAT_WEAPON = RAGE_JOAAT("REWARD_STAT_WEAPON"),
|
||||
REWARD_VEHICLE_FIX = RAGE_JOAAT("REWARD_VEHICLE_FIX"),
|
||||
REWARD_WEAPON_ADVANCEDRIFLE = RAGE_JOAAT("REWARD_WEAPON_ADVANCEDRIFLE"),
|
||||
REWARD_WEAPON_APPISTOL = RAGE_JOAAT("REWARD_WEAPON_APPISTOL"),
|
||||
REWARD_WEAPON_ASSAULTRIFLE = RAGE_JOAAT("REWARD_WEAPON_ASSAULTRIFLE"),
|
||||
REWARD_WEAPON_ASSAULTRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_ASSAULTRIFLE_MK2"),
|
||||
REWARD_WEAPON_ASSAULTSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_ASSAULTSHOTGUN"),
|
||||
REWARD_WEAPON_ASSAULTSMG = RAGE_JOAAT("REWARD_WEAPON_ASSAULTSMG"),
|
||||
REWARD_WEAPON_AUTOSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_AUTOSHOTGUN"),
|
||||
REWARD_WEAPON_BAT = RAGE_JOAAT("REWARD_WEAPON_BAT"),
|
||||
REWARD_WEAPON_BATTLEAXE = RAGE_JOAAT("REWARD_WEAPON_BATTLEAXE"),
|
||||
REWARD_WEAPON_BOTTLE = RAGE_JOAAT("REWARD_WEAPON_BOTTLE"),
|
||||
REWARD_WEAPON_BULLPUPRIFLE = RAGE_JOAAT("REWARD_WEAPON_BULLPUPRIFLE"),
|
||||
REWARD_WEAPON_BULLPUPRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_BULLPUPRIFLE_MK2"),
|
||||
REWARD_WEAPON_BULLPUPSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_BULLPUPSHOTGUN"),
|
||||
REWARD_WEAPON_CARBINERIFLE = RAGE_JOAAT("REWARD_WEAPON_CARBINERIFLE"),
|
||||
REWARD_WEAPON_CARBINERIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_CARBINERIFLE_MK2"),
|
||||
REWARD_WEAPON_COMBATMG = RAGE_JOAAT("REWARD_WEAPON_COMBATMG"),
|
||||
REWARD_WEAPON_COMBATMG_MK2 = RAGE_JOAAT("REWARD_WEAPON_COMBATMG_MK2"),
|
||||
REWARD_WEAPON_COMBATPDW = RAGE_JOAAT("REWARD_WEAPON_COMBATPDW"),
|
||||
REWARD_WEAPON_COMBATPISTOL = RAGE_JOAAT("REWARD_WEAPON_COMBATPISTOL"),
|
||||
REWARD_WEAPON_COMPACTLAUNCHER = RAGE_JOAAT("REWARD_WEAPON_COMPACTLAUNCHER"),
|
||||
REWARD_WEAPON_COMPACTRIFLE = RAGE_JOAAT("REWARD_WEAPON_COMPACTRIFLE"),
|
||||
REWARD_WEAPON_CROWBAR = RAGE_JOAAT("REWARD_WEAPON_CROWBAR"),
|
||||
REWARD_WEAPON_DAGGER = RAGE_JOAAT("REWARD_WEAPON_DAGGER"),
|
||||
REWARD_WEAPON_DBSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_DBSHOTGUN"),
|
||||
REWARD_WEAPON_DOUBLEACTION = RAGE_JOAAT("REWARD_WEAPON_DOUBLEACTION"),
|
||||
REWARD_WEAPON_FIREWORK = RAGE_JOAAT("REWARD_WEAPON_FIREWORK"),
|
||||
REWARD_WEAPON_FLAREGUN = RAGE_JOAAT("REWARD_WEAPON_FLAREGUN"),
|
||||
REWARD_WEAPON_FLASHLIGHT = RAGE_JOAAT("REWARD_WEAPON_FLASHLIGHT"),
|
||||
REWARD_WEAPON_GOLFCLUB = RAGE_JOAAT("REWARD_WEAPON_GOLFCLUB"),
|
||||
REWARD_WEAPON_GRENADE = RAGE_JOAAT("REWARD_WEAPON_GRENADE"),
|
||||
REWARD_WEAPON_GRENADELAUNCHER = RAGE_JOAAT("REWARD_WEAPON_GRENADELAUNCHER"),
|
||||
REWARD_WEAPON_GUSENBERG = RAGE_JOAAT("REWARD_WEAPON_GUSENBERG"),
|
||||
REWARD_WEAPON_HAMMER = RAGE_JOAAT("REWARD_WEAPON_HAMMER"),
|
||||
REWARD_WEAPON_HATCHET = RAGE_JOAAT("REWARD_WEAPON_HATCHET"),
|
||||
REWARD_WEAPON_HEAVYPISTOL = RAGE_JOAAT("REWARD_WEAPON_HEAVYPISTOL"),
|
||||
REWARD_WEAPON_HEAVYSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_HEAVYSHOTGUN"),
|
||||
REWARD_WEAPON_HEAVYSNIPER = RAGE_JOAAT("REWARD_WEAPON_HEAVYSNIPER"),
|
||||
REWARD_WEAPON_HEAVYSNIPER_MK2 = RAGE_JOAAT("REWARD_WEAPON_HEAVYSNIPER_MK2"),
|
||||
REWARD_WEAPON_HOMINGLAUNCHER = RAGE_JOAAT("REWARD_WEAPON_HOMINGLAUNCHER"),
|
||||
REWARD_WEAPON_KNIFE = RAGE_JOAAT("REWARD_WEAPON_KNIFE"),
|
||||
REWARD_WEAPON_KNUCKLE = RAGE_JOAAT("REWARD_WEAPON_KNUCKLE"),
|
||||
REWARD_WEAPON_MACHETE = RAGE_JOAAT("REWARD_WEAPON_MACHETE"),
|
||||
REWARD_WEAPON_MACHINEPISTOL = RAGE_JOAAT("REWARD_WEAPON_MACHINEPISTOL"),
|
||||
REWARD_WEAPON_MARKSMANPISTOL = RAGE_JOAAT("REWARD_WEAPON_MARKSMANPISTOL"),
|
||||
REWARD_WEAPON_MARKSMANRIFLE = RAGE_JOAAT("REWARD_WEAPON_MARKSMANRIFLE"),
|
||||
REWARD_WEAPON_MARKSMANRIFLE_MK2 = RAGE_JOAAT("REWARD_WEAPON_MARKSMANRIFLE_MK2"),
|
||||
REWARD_WEAPON_MG = RAGE_JOAAT("REWARD_WEAPON_MG"),
|
||||
REWARD_WEAPON_MICROSMG = RAGE_JOAAT("REWARD_WEAPON_MICROSMG"),
|
||||
REWARD_WEAPON_MINIGUN = RAGE_JOAAT("REWARD_WEAPON_MINIGUN"),
|
||||
REWARD_WEAPON_MINISMG = RAGE_JOAAT("REWARD_WEAPON_MINISMG"),
|
||||
REWARD_WEAPON_MOLOTOV = RAGE_JOAAT("REWARD_WEAPON_MOLOTOV"),
|
||||
REWARD_WEAPON_MUSKET = RAGE_JOAAT("REWARD_WEAPON_MUSKET"),
|
||||
REWARD_WEAPON_NIGHTSTICK = RAGE_JOAAT("REWARD_WEAPON_NIGHTSTICK"),
|
||||
REWARD_WEAPON_PETROLCAN = RAGE_JOAAT("REWARD_WEAPON_PETROLCAN"),
|
||||
REWARD_WEAPON_PIPEBOMB = RAGE_JOAAT("REWARD_WEAPON_PIPEBOMB"),
|
||||
REWARD_WEAPON_PISTOL = RAGE_JOAAT("REWARD_WEAPON_PISTOL"),
|
||||
REWARD_WEAPON_PISTOL50 = RAGE_JOAAT("REWARD_WEAPON_PISTOL50"),
|
||||
REWARD_WEAPON_PISTOL_MK2 = RAGE_JOAAT("REWARD_WEAPON_PISTOL_MK2"),
|
||||
REWARD_WEAPON_POOLCUE = RAGE_JOAAT("REWARD_WEAPON_POOLCUE"),
|
||||
REWARD_WEAPON_PROXMINE = RAGE_JOAAT("REWARD_WEAPON_PROXMINE"),
|
||||
REWARD_WEAPON_PUMPSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_PUMPSHOTGUN"),
|
||||
REWARD_WEAPON_PUMPSHOTGUN_MK2 = RAGE_JOAAT("REWARD_WEAPON_PUMPSHOTGUN_MK2"),
|
||||
REWARD_WEAPON_RAILGUN = RAGE_JOAAT("REWARD_WEAPON_RAILGUN"),
|
||||
REWARD_WEAPON_RAYCARBINE = RAGE_JOAAT("REWARD_WEAPON_RAYCARBINE"),
|
||||
REWARD_WEAPON_RAYMINIGUN = RAGE_JOAAT("REWARD_WEAPON_RAYMINIGUN"),
|
||||
REWARD_WEAPON_RAYPISTOL = RAGE_JOAAT("REWARD_WEAPON_RAYPISTOL"),
|
||||
REWARD_WEAPON_REVOLVER = RAGE_JOAAT("REWARD_WEAPON_REVOLVER"),
|
||||
REWARD_WEAPON_REVOLVER_MK2 = RAGE_JOAAT("REWARD_WEAPON_REVOLVER_MK2"),
|
||||
REWARD_WEAPON_RPG = RAGE_JOAAT("REWARD_WEAPON_RPG"),
|
||||
REWARD_WEAPON_SAWNOFFSHOTGUN = RAGE_JOAAT("REWARD_WEAPON_SAWNOFFSHOTGUN"),
|
||||
REWARD_WEAPON_SMG = RAGE_JOAAT("REWARD_WEAPON_SMG"),
|
||||
REWARD_WEAPON_SMG_MK2 = RAGE_JOAAT("REWARD_WEAPON_SMG_MK2"),
|
||||
REWARD_WEAPON_SMOKEGRENADE = RAGE_JOAAT("REWARD_WEAPON_SMOKEGRENADE"),
|
||||
REWARD_WEAPON_SNIPERRIFLE = RAGE_JOAAT("REWARD_WEAPON_SNIPERRIFLE"),
|
||||
REWARD_WEAPON_SNSPISTOL = RAGE_JOAAT("REWARD_WEAPON_SNSPISTOL"),
|
||||
REWARD_WEAPON_SNSPISTOL_MK2 = RAGE_JOAAT("REWARD_WEAPON_SNSPISTOL_MK2"),
|
||||
REWARD_WEAPON_SPECIALCARBINE = RAGE_JOAAT("REWARD_WEAPON_SPECIALCARBINE"),
|
||||
REWARD_WEAPON_SPECIALCARBINE_MK2 = RAGE_JOAAT("REWARD_WEAPON_SPECIALCARBINE_MK2"),
|
||||
REWARD_WEAPON_STICKYBOMB = RAGE_JOAAT("REWARD_WEAPON_STICKYBOMB"),
|
||||
REWARD_WEAPON_STONE_HATCHET = RAGE_JOAAT("REWARD_WEAPON_STONE_HATCHET"),
|
||||
REWARD_WEAPON_STUNGUN = RAGE_JOAAT("REWARD_WEAPON_STUNGUN"),
|
||||
REWARD_WEAPON_SWITCHBLADE = RAGE_JOAAT("REWARD_WEAPON_SWITCHBLADE"),
|
||||
REWARD_WEAPON_VINTAGEPISTOL = RAGE_JOAAT("REWARD_WEAPON_VINTAGEPISTOL"),
|
||||
REWARD_WEAPON_WRENCH = RAGE_JOAAT("REWARD_WEAPON_WRENCH")
|
||||
};
|
@ -9,47 +9,48 @@ namespace rage
|
||||
class CObject : public fwEntity
|
||||
{
|
||||
public:
|
||||
}; //Size: 0x018C
|
||||
};//Size: 0x018C
|
||||
|
||||
class CPedFactory
|
||||
{
|
||||
public:
|
||||
virtual ~CPedFactory() = default;
|
||||
class CPed* m_local_ped; //0x0008
|
||||
}; //Size: 0x0010
|
||||
class CPed* m_local_ped;//0x0008
|
||||
}; //Size: 0x0010
|
||||
|
||||
//CUSTOM CLASS TO IMPROVE R* SHIT CLASS STRUCTURE
|
||||
class CEntityHandle {
|
||||
class CEntityHandle
|
||||
{
|
||||
public:
|
||||
class fwEntity* m_entity_ptr; //0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
class fwEntity* m_entity_ptr;//0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
static_assert(sizeof(CEntityHandle) == 0x10, "CEntityHandle is not properly sized");
|
||||
|
||||
class CObjectHandle
|
||||
{
|
||||
public:
|
||||
class CObject* m_object; //0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
class CObject* m_object;//0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
static_assert(sizeof(CObjectHandle) == 0x10, "CObjectHandle is not properly sized");
|
||||
|
||||
class CObjectList
|
||||
{
|
||||
public:
|
||||
class CEntityHandle m_objects[2300]; //0x0000
|
||||
}; //Size: 0x8FC0
|
||||
class CEntityHandle m_objects[2300];//0x0000
|
||||
}; //Size: 0x8FC0
|
||||
|
||||
class CObjectInterface
|
||||
{
|
||||
public:
|
||||
char pad_0000[344]; //0x0000
|
||||
class CObjectList* m_object_list; //0x0158
|
||||
int32_t m_max_objects; //0x0160
|
||||
char pad_0164[4]; //0x0164
|
||||
int32_t m_cur_objects; //0x0168
|
||||
char pad_0000[344]; //0x0000
|
||||
class CObjectList* m_object_list;//0x0158
|
||||
int32_t m_max_objects; //0x0160
|
||||
char pad_0164[4]; //0x0164
|
||||
int32_t m_cur_objects; //0x0168
|
||||
|
||||
rage::fwEntity* get_object(const int& index)
|
||||
{
|
||||
@ -57,32 +58,32 @@ namespace rage
|
||||
return m_object_list->m_objects[index].m_entity_ptr;
|
||||
return nullptr;
|
||||
}
|
||||
}; //Size: 0x016C
|
||||
};//Size: 0x016C
|
||||
|
||||
class CPedHandle
|
||||
{
|
||||
public:
|
||||
class CPed* m_ped; //0x0000
|
||||
class CPed* m_ped;//0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
}; //Size: 0x0010
|
||||
static_assert(sizeof(CPedHandle) == 0x10, "CPedHandle is not properly sized");
|
||||
|
||||
class CPedList
|
||||
{
|
||||
public:
|
||||
//CHANGED FROM CPedHandle
|
||||
class CEntityHandle m_peds[256]; //0x0000
|
||||
}; //Size: 0x1000
|
||||
class CEntityHandle m_peds[256];//0x0000
|
||||
}; //Size: 0x1000
|
||||
|
||||
class CPedInterface
|
||||
{
|
||||
public:
|
||||
char pad_0000[256]; //0x0000
|
||||
class CPedList* m_ped_list; //0x0100
|
||||
int32_t m_max_peds; //0x0108
|
||||
char pad_010C[4]; //0x010C
|
||||
int32_t m_cur_peds; //0x0110
|
||||
char pad_0000[256]; //0x0000
|
||||
class CPedList* m_ped_list;//0x0100
|
||||
int32_t m_max_peds; //0x0108
|
||||
char pad_010C[4]; //0x010C
|
||||
int32_t m_cur_peds; //0x0110
|
||||
|
||||
fwEntity* get_ped(const int& index)
|
||||
{
|
||||
@ -90,32 +91,32 @@ namespace rage
|
||||
return m_ped_list->m_peds[index].m_entity_ptr;
|
||||
return nullptr;
|
||||
}
|
||||
}; //Size: 0x0114
|
||||
};//Size: 0x0114
|
||||
|
||||
class CVehicleHandle
|
||||
{
|
||||
public:
|
||||
class CAutomobile* m_vehicle; //0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
class CAutomobile* m_vehicle;//0x0000
|
||||
int32_t m_handle; //0x0008
|
||||
char pad_000C[4]; //0x000C
|
||||
}; //Size: 0x0010
|
||||
static_assert(sizeof(CVehicleHandle) == 0x10, "CVehicleHandle is not properly sized");
|
||||
|
||||
class CVehicleList
|
||||
{
|
||||
public:
|
||||
//CHANGED FROM CVehicleHandle
|
||||
class CEntityHandle m_vehicles[300]; //0x0000
|
||||
}; //Size: 0x12C0
|
||||
class CEntityHandle m_vehicles[300];//0x0000
|
||||
}; //Size: 0x12C0
|
||||
|
||||
class CVehicleInterface
|
||||
{
|
||||
public:
|
||||
char pad_0000[384]; //0x0000
|
||||
class CVehicleList* m_vehicle_list; //0x0180
|
||||
int32_t m_max_vehicles; //0x0188
|
||||
char pad_018C[4]; //0x018C
|
||||
int32_t m_cur_vehicles; //0x0190
|
||||
char pad_0000[384]; //0x0000
|
||||
class CVehicleList* m_vehicle_list;//0x0180
|
||||
int32_t m_max_vehicles; //0x0188
|
||||
char pad_018C[4]; //0x018C
|
||||
int32_t m_cur_vehicles; //0x0190
|
||||
|
||||
fwEntity* get_vehicle(const int& index)
|
||||
{
|
||||
@ -123,17 +124,17 @@ namespace rage
|
||||
return m_vehicle_list->m_vehicles[index].m_entity_ptr;
|
||||
return nullptr;
|
||||
}
|
||||
}; //Size: 0x0194
|
||||
};//Size: 0x0194
|
||||
|
||||
|
||||
class CReplayInterface
|
||||
{
|
||||
public:
|
||||
char pad_0000[16]; //0x0000
|
||||
class CVehicleInterface* m_vehicle_interface; //0x0010
|
||||
class CPedInterface* m_ped_interface; //0x0018
|
||||
char pad_0020[8]; //0x0020
|
||||
class CObjectInterface* m_object_interface; //0x0028
|
||||
}; //Size: 0x0030
|
||||
char pad_0000[16]; //0x0000
|
||||
class CVehicleInterface* m_vehicle_interface;//0x0010
|
||||
class CPedInterface* m_ped_interface; //0x0018
|
||||
char pad_0020[8]; //0x0020
|
||||
class CObjectInterface* m_object_interface; //0x0028
|
||||
}; //Size: 0x0030
|
||||
}
|
||||
#pragma pack(pop)
|
@ -1,5 +1,7 @@
|
||||
#include "script_handler.hpp"
|
||||
|
||||
#include "pointers.hpp"
|
||||
|
||||
#include <network/CNetworkPlayerMgr.hpp>
|
||||
|
||||
int CGameScriptHandlerNetComponent::get_participant_index(CNetGamePlayer* player)
|
||||
|
@ -1,9 +1,10 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "fwddec.hpp"
|
||||
#include "node_list.hpp"
|
||||
#include "script_id.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
namespace rage
|
||||
{
|
||||
@ -16,10 +17,10 @@ namespace rage
|
||||
class scriptResourceEntry
|
||||
{
|
||||
public:
|
||||
scriptResource* m_data; // 0x00
|
||||
std::uint32_t m_unk; // 0x04
|
||||
char m_padding[0x0C]; // 0x0C
|
||||
scriptResourceEntry* m_next; // 0x18
|
||||
scriptResource* m_data; // 0x00
|
||||
std::uint32_t m_unk; // 0x04
|
||||
char m_padding[0x0C]; // 0x0C
|
||||
scriptResourceEntry* m_next;// 0x18
|
||||
};
|
||||
|
||||
class scriptHandlerNetComponent
|
||||
@ -28,7 +29,7 @@ namespace rage
|
||||
virtual ~scriptHandlerNetComponent() = default;
|
||||
|
||||
public:
|
||||
scriptHandler* m_script_handler; // 0x08
|
||||
scriptHandler* m_script_handler;// 0x08
|
||||
};
|
||||
|
||||
class scriptHandler
|
||||
@ -37,65 +38,66 @@ namespace rage
|
||||
class atDScriptObjectNode : public atDNode<scriptHandlerObject*>
|
||||
{
|
||||
};
|
||||
|
||||
public:
|
||||
virtual ~scriptHandler() = default; // 0 (0x00)
|
||||
virtual ~scriptHandler() = default;// 0 (0x00)
|
||||
|
||||
virtual bool _0x08() = 0; // 1 (0x08)
|
||||
virtual bool _0x08() = 0;// 1 (0x08)
|
||||
|
||||
virtual void _0x10() = 0; // 2 (0x10)
|
||||
virtual void _0x10() = 0;// 2 (0x10)
|
||||
|
||||
virtual void cleanup_objects() = 0; // 3 (0x18)
|
||||
virtual void cleanup_objects() = 0;// 3 (0x18)
|
||||
|
||||
virtual scriptId* _0x20() = 0; // 4 (0x20)
|
||||
virtual scriptId* _0x20() = 0;// 4 (0x20)
|
||||
|
||||
virtual scriptId* get_id() = 0; // 5 (0x28)
|
||||
virtual scriptId* get_id() = 0;// 5 (0x28)
|
||||
|
||||
// Returns whether the script handler belongs to a networked script.
|
||||
virtual bool is_networked() = 0; // 6 (0x30)
|
||||
virtual bool is_networked() = 0;// 6 (0x30)
|
||||
|
||||
// Initializes the network component for the script handler.
|
||||
virtual void init_net_component() = 0; // 7 (0x38)
|
||||
virtual void init_net_component() = 0;// 7 (0x38)
|
||||
|
||||
// Deletes the script handler's network component, if it exists.
|
||||
virtual void reset_net_component() = 0; // 8 (0x40)
|
||||
virtual void reset_net_component() = 0;// 8 (0x40)
|
||||
|
||||
// Destroys the script handler.
|
||||
virtual bool destroy() = 0; // 9 (0x48)
|
||||
virtual bool destroy() = 0;// 9 (0x48)
|
||||
|
||||
// Adds the object to the script handler's list of objects.
|
||||
virtual void add_object(scriptHandlerObject*, bool is_network, bool is_network_and_scriptcheck) = 0; // 10 (0x50)
|
||||
virtual void add_object(scriptHandlerObject*, bool is_network, bool is_network_and_scriptcheck) = 0;// 10 (0x50)
|
||||
|
||||
// Something related to reservations.
|
||||
virtual void _0x58(void*) = 0; // 11 (0x58)
|
||||
virtual void _0x58(void*) = 0;// 11 (0x58)
|
||||
|
||||
virtual void register_resource(scriptResource*, void*) = 0; // 12 (0x60)
|
||||
virtual void register_resource(scriptResource*, void*) = 0;// 12 (0x60)
|
||||
|
||||
virtual void _0x68() = 0; // 13 (0x68)
|
||||
virtual void _0x68() = 0;// 13 (0x68)
|
||||
|
||||
virtual void _0x70() = 0; // 14 (0x70)
|
||||
virtual void _0x70() = 0;// 14 (0x70)
|
||||
|
||||
virtual void _0x78() = 0; // 15 (0x78)
|
||||
virtual void _0x78() = 0;// 15 (0x78)
|
||||
|
||||
virtual void _0x80() = 0; // 16 (0x80)
|
||||
virtual void _0x80() = 0;// 16 (0x80)
|
||||
|
||||
virtual void _0x88() = 0; // 17 (0x88)
|
||||
virtual void _0x88() = 0;// 17 (0x88)
|
||||
|
||||
virtual void _0x90() = 0; // 18 (0x90)
|
||||
virtual void _0x90() = 0;// 18 (0x90)
|
||||
|
||||
virtual void _0x98() = 0; // 19 (0x98)
|
||||
virtual void _0x98() = 0;// 19 (0x98)
|
||||
public:
|
||||
void* m_0x08; // 0x08
|
||||
void* m_0x10; // 0x10
|
||||
scrThread* m_script_thread; // 0x18
|
||||
atDList<atDScriptObjectNode> m_objects; // 0x20
|
||||
scriptResource* m_resource_list_head; // 0x30
|
||||
scriptResource* m_resource_list_tail; // 0x38
|
||||
void* m_0x40; // 0x40
|
||||
scriptHandlerNetComponent* m_net_component; // 0x48
|
||||
std::uint32_t m_0x50; // 0x50
|
||||
std::uint32_t m_0x54; // 0x54
|
||||
std::uint32_t m_0x58; // 0x58
|
||||
std::uint32_t m_0x60; // 0x5C
|
||||
void* m_0x08; // 0x08
|
||||
void* m_0x10; // 0x10
|
||||
scrThread* m_script_thread; // 0x18
|
||||
atDList<atDScriptObjectNode> m_objects; // 0x20
|
||||
scriptResource* m_resource_list_head; // 0x30
|
||||
scriptResource* m_resource_list_tail; // 0x38
|
||||
void* m_0x40; // 0x40
|
||||
scriptHandlerNetComponent* m_net_component;// 0x48
|
||||
std::uint32_t m_0x50; // 0x50
|
||||
std::uint32_t m_0x54; // 0x54
|
||||
std::uint32_t m_0x58; // 0x58
|
||||
std::uint32_t m_0x60; // 0x5C
|
||||
};
|
||||
|
||||
class scriptHandlerMgr
|
||||
@ -104,41 +106,41 @@ namespace rage
|
||||
virtual ~scriptHandlerMgr() = default;
|
||||
|
||||
// Initializes some scripting-related pools.
|
||||
virtual bool initialize() = 0; // 1 (0x08)
|
||||
virtual bool initialize() = 0;// 1 (0x08)
|
||||
|
||||
// Called every tick.
|
||||
virtual void _0x10() = 0; // 2 (0x10)
|
||||
virtual void _0x10() = 0;// 2 (0x10)
|
||||
|
||||
// Frees some scripting-related pools.
|
||||
virtual void shutdown() = 0; // 3 (0x18)
|
||||
virtual void shutdown() = 0;// 3 (0x18)
|
||||
|
||||
virtual void _0x20() = 0; // 4 (0x20)
|
||||
virtual void _0x28() = 0; // 5 (0x28)
|
||||
virtual void _0x30() = 0; // 6 (0x30)
|
||||
virtual void _0x20() = 0;// 4 (0x20)
|
||||
virtual void _0x28() = 0;// 5 (0x28)
|
||||
virtual void _0x30() = 0;// 6 (0x30)
|
||||
|
||||
// Generates a rage::scriptId from the thread and copies it over to a global structure.
|
||||
virtual void _0x38(scrThread*) = 0; // 7 (0x38)
|
||||
virtual void _0x38(scrThread*) = 0;// 7 (0x38)
|
||||
|
||||
// Allocates and constructs a script handler.
|
||||
virtual scriptHandler* create_script_handler() = 0; // 8 (0x40)
|
||||
virtual scriptHandler* create_script_handler() = 0;// 8 (0x40)
|
||||
|
||||
// Finds the script handler for a given script id.
|
||||
virtual scriptHandler* get_script_handler(scriptId*) = 0; // 9 (0x48)
|
||||
virtual scriptHandler* get_script_handler(scriptId*) = 0;// 9 (0x48)
|
||||
|
||||
// Attaches a script thread.
|
||||
virtual void attach_thread(scrThread*) = 0; // 10 (0x50)
|
||||
virtual void attach_thread(scrThread*) = 0;// 10 (0x50)
|
||||
|
||||
// Detaches a script thread.
|
||||
virtual void detach_thread(scrThread*) = 0; // 11 (0x58)
|
||||
virtual void detach_thread(scrThread*) = 0;// 11 (0x58)
|
||||
|
||||
// Called when a player joins.
|
||||
virtual void on_player_join(netPlayer*) = 0; // 12 (0x60)
|
||||
virtual void on_player_join(netPlayer*) = 0;// 12 (0x60)
|
||||
|
||||
// Called when a player leaves.
|
||||
virtual void on_player_left(netPlayer*) = 0; // 13 (0x68)
|
||||
virtual void on_player_left(netPlayer*) = 0;// 13 (0x68)
|
||||
|
||||
virtual std::int32_t _0x70() = 0; // 14 (0x70)
|
||||
virtual void* _0x78() = 0; // 15 (0x78)
|
||||
virtual std::int32_t _0x70() = 0;// 14 (0x70)
|
||||
virtual void* _0x78() = 0;// 15 (0x78)
|
||||
public:
|
||||
char pad_0008[104];
|
||||
};
|
||||
@ -147,39 +149,39 @@ namespace rage
|
||||
class CGameScriptHandler : public rage::scriptHandler
|
||||
{
|
||||
public:
|
||||
CGameScriptId m_script_id; // 0x60
|
||||
CGameScriptId m_script_id;// 0x60
|
||||
};
|
||||
|
||||
class CGameScriptHandlerNetwork : public CGameScriptHandler
|
||||
{
|
||||
public:
|
||||
std::uint8_t m_0xA0; // 0xA0
|
||||
std::uint8_t m_0xA1; // 0xA1
|
||||
std::uint8_t m_0xA2; // 0xA2
|
||||
std::uint8_t m_0xA3; // 0xA3
|
||||
std::uint8_t m_num_players; // 0xA4
|
||||
std::uint8_t m_0xA5; // 0xA5
|
||||
std::uint8_t m_0xA6; // 0xA6
|
||||
std::uint8_t m_0xA7; // 0xA7
|
||||
std::uint8_t m_0xA8; // 0xA8
|
||||
std::uint8_t m_0xA9; // 0xA9
|
||||
std::uint8_t m_0xAA; // 0xAA
|
||||
std::uint8_t m_0xAB; // 0xAB
|
||||
std::uint8_t m_0xAC; // 0xAC
|
||||
std::uint8_t m_0xAD; // 0xAD
|
||||
std::uint8_t m_0xAE; // 0xAE
|
||||
std::uint8_t m_0xAF; // 0xAF
|
||||
std::uint8_t m_0xA0; // 0xA0
|
||||
std::uint8_t m_0xA1; // 0xA1
|
||||
std::uint8_t m_0xA2; // 0xA2
|
||||
std::uint8_t m_0xA3; // 0xA3
|
||||
std::uint8_t m_num_players;// 0xA4
|
||||
std::uint8_t m_0xA5; // 0xA5
|
||||
std::uint8_t m_0xA6; // 0xA6
|
||||
std::uint8_t m_0xA7; // 0xA7
|
||||
std::uint8_t m_0xA8; // 0xA8
|
||||
std::uint8_t m_0xA9; // 0xA9
|
||||
std::uint8_t m_0xAA; // 0xAA
|
||||
std::uint8_t m_0xAB; // 0xAB
|
||||
std::uint8_t m_0xAC; // 0xAC
|
||||
std::uint8_t m_0xAD; // 0xAD
|
||||
std::uint8_t m_0xAE; // 0xAE
|
||||
std::uint8_t m_0xAF; // 0xAF
|
||||
};
|
||||
|
||||
class CScriptParticipant
|
||||
{
|
||||
public:
|
||||
char pad_0000[16]; //0x0000
|
||||
class CNetGamePlayer* m_net_game_player; //0x0010
|
||||
char pad_0018[2]; //0x0018
|
||||
int16_t m_participant_index; //0x001A
|
||||
char pad_001C[12]; //0x001C
|
||||
}; //Size: 0x0028
|
||||
char pad_0000[16]; //0x0000
|
||||
class CNetGamePlayer* m_net_game_player;//0x0010
|
||||
char pad_0018[2]; //0x0018
|
||||
int16_t m_participant_index; //0x001A
|
||||
char pad_001C[12]; //0x001C
|
||||
}; //Size: 0x0028
|
||||
static_assert(sizeof(CScriptParticipant) == 0x28);
|
||||
|
||||
class CGameScriptHandlerNetComponent
|
||||
@ -189,7 +191,7 @@ public:
|
||||
|
||||
virtual bool _0x08(void*) = 0;
|
||||
|
||||
virtual void _0x10(CNetGamePlayer*) = 0; // creates a scriptId?
|
||||
virtual void _0x10(CNetGamePlayer*) = 0;// creates a scriptId?
|
||||
|
||||
virtual void* player_left(CNetGamePlayer* player) = 0;
|
||||
|
||||
@ -199,7 +201,7 @@ public:
|
||||
|
||||
virtual void* player_joined_ack(void**, void* msg_ctx) = 0;
|
||||
|
||||
virtual bool _0x38(void*, void*) = 0; // join_script?
|
||||
virtual bool _0x38(void*, void*) = 0;// join_script?
|
||||
|
||||
virtual void* _0x40(void*, void*) = 0;
|
||||
|
||||
@ -221,7 +223,7 @@ public:
|
||||
|
||||
virtual void* _0x88(void*, void*) = 0;
|
||||
|
||||
virtual void* _0x90(void*, void*) = 0; // HOST_MIGRATION_FAILED
|
||||
virtual void* _0x90(void*, void*) = 0;// HOST_MIGRATION_FAILED
|
||||
|
||||
virtual bool _0x98(void*, void*) = 0;
|
||||
|
||||
@ -235,41 +237,41 @@ public:
|
||||
|
||||
virtual bool register_player_broadcast_data(int a1, int size, bool a3) = 0;
|
||||
|
||||
virtual bool _0xC8() = 0; // something to do to joining session
|
||||
virtual bool _0xC8() = 0;// something to do to joining session
|
||||
|
||||
virtual bool _0xD0() = 0;
|
||||
|
||||
virtual bool add_player_to_script(CNetGamePlayer* player, short* outParticipantID, short* outSlot, int* outFailReason) = 0;
|
||||
|
||||
virtual bool add_player_to_script_internal(CNetGamePlayer* player, short participantID, short slot) = 0; // player aka participant
|
||||
virtual bool add_player_to_script_internal(CNetGamePlayer* player, short participantID, short slot) = 0;// player aka participant
|
||||
|
||||
virtual bool remove_player_from_script(CNetGamePlayer* player) = 0;
|
||||
|
||||
virtual void* player_left_impl(CNetGamePlayer*, bool) = 0;
|
||||
|
||||
virtual bool do_host_migration(CNetGamePlayer* player, short host_token, bool unk) = 0; // aka _0xF8
|
||||
virtual bool do_host_migration(CNetGamePlayer* player, short host_token, bool unk) = 0;// aka _0xF8
|
||||
|
||||
virtual void* leave_from_script() = 0; // calls above function with player = nullptr
|
||||
virtual void* leave_from_script() = 0;// calls above function with player = nullptr
|
||||
|
||||
virtual bool _0x108() = 0;
|
||||
|
||||
virtual void* _0x110() = 0;
|
||||
|
||||
virtual bool _0x118() = 0; // related to above function
|
||||
virtual bool _0x118() = 0;// related to above function
|
||||
|
||||
CGameScriptHandler* m_script_handler; //0x0008
|
||||
char pad_0010[32]; //0x0010
|
||||
class CScriptParticipant* m_host; //0x0030
|
||||
int16_t m_local_participant_index; //0x0038
|
||||
char pad_003A[6]; //0x003A
|
||||
uint32_t m_participant_bitset; //0x0040
|
||||
char pad_0044[36]; //0x0044
|
||||
class CScriptParticipant* m_participants[32]; //0x0068
|
||||
char pad_0168[12]; //0x0168
|
||||
int16_t m_num_participants; //0x0174
|
||||
char pad_0176[28]; //0x0176
|
||||
uint8_t m_host_migration_flags; //0x0192
|
||||
char pad_0193[29]; //0x0193
|
||||
CGameScriptHandler* m_script_handler; //0x0008
|
||||
char pad_0010[32]; //0x0010
|
||||
class CScriptParticipant* m_host; //0x0030
|
||||
int16_t m_local_participant_index; //0x0038
|
||||
char pad_003A[6]; //0x003A
|
||||
uint32_t m_participant_bitset; //0x0040
|
||||
char pad_0044[36]; //0x0044
|
||||
class CScriptParticipant* m_participants[32];//0x0068
|
||||
char pad_0168[12]; //0x0168
|
||||
int16_t m_num_participants; //0x0174
|
||||
char pad_0176[28]; //0x0176
|
||||
uint8_t m_host_migration_flags; //0x0192
|
||||
char pad_0193[29]; //0x0193
|
||||
|
||||
int get_participant_index(CNetGamePlayer* player);
|
||||
bool is_player_a_participant(CNetGamePlayer* player);
|
||||
@ -277,7 +279,7 @@ public:
|
||||
inline bool is_local_player_host()
|
||||
{
|
||||
if (!m_host)
|
||||
return true; // or return false?
|
||||
return true;// or return false?
|
||||
|
||||
return m_host->m_participant_index == m_local_participant_index;
|
||||
}
|
||||
@ -299,43 +301,43 @@ public:
|
||||
m_host_migration_flags &= ~(1 << 7);
|
||||
}
|
||||
|
||||
}; //Size: 0x01B0
|
||||
};//Size: 0x01B0
|
||||
static_assert(sizeof(CGameScriptHandlerNetComponent) == 0x1B0);
|
||||
|
||||
class CRemoteScriptInfo : public CGameScriptId
|
||||
{
|
||||
public:
|
||||
uint32_t m_participants; //0x0040
|
||||
char pad_0044[4]; //0x0044
|
||||
class CNetGamePlayer* m_host; //0x0048
|
||||
uint32_t m_timestamp_2; //0x0050
|
||||
uint16_t m_host_token; //0x0054
|
||||
uint8_t m_reserved_peds; //0x0056
|
||||
uint32_t m_participants; //0x0040
|
||||
char pad_0044[4]; //0x0044
|
||||
class CNetGamePlayer* m_host;//0x0048
|
||||
uint32_t m_timestamp_2; //0x0050
|
||||
uint16_t m_host_token; //0x0054
|
||||
uint8_t m_reserved_peds; //0x0056
|
||||
uint8_t m_reserved_vehicles; //0x0057
|
||||
uint8_t m_reserved_objects; //0x0058
|
||||
uint8_t m_reserved_unk1; //0x0059
|
||||
uint8_t m_reserved_unk2; //0x005A
|
||||
uint8_t m_reserved_unk3; //0x005B
|
||||
uint8_t m_reserved_unk4; //0x005C
|
||||
char pad_005D[3]; //0x005D
|
||||
}; //Size: 0x0060
|
||||
uint8_t m_reserved_objects; //0x0058
|
||||
uint8_t m_reserved_unk1; //0x0059
|
||||
uint8_t m_reserved_unk2; //0x005A
|
||||
uint8_t m_reserved_unk3; //0x005B
|
||||
uint8_t m_reserved_unk4; //0x005C
|
||||
char pad_005D[3]; //0x005D
|
||||
}; //Size: 0x0060
|
||||
static_assert(sizeof(CRemoteScriptInfo) == 0x60);
|
||||
|
||||
class CGameScriptHandlerMgr : public rage::scriptHandlerMgr
|
||||
{
|
||||
public:
|
||||
char pad_0070[56]; //0x0070
|
||||
class CRemoteScriptInfo m_remote_script_infos[320]; //0x00A8
|
||||
char pad_78A8[4]; //0x78A8
|
||||
uint32_t m_remote_script_start_idx; //0x78AC
|
||||
uint32_t m_remote_script_count; //0x78B0
|
||||
char pad_78B4[4]; //0x78B4
|
||||
class CRemoteScriptInfo m_detached_remote_script_infos[64]; //0x78B8
|
||||
char pad_90B8[4]; //0x90B8
|
||||
uint32_t m_detached_remote_script_start_idx; //0x90BC
|
||||
uint32_t m_detached_remote_script_count; //0x90C0
|
||||
char pad_90C4[28]; //0x90C4
|
||||
}; //Size: 0x90E0
|
||||
char pad_0070[56]; //0x0070
|
||||
class CRemoteScriptInfo m_remote_script_infos[320]; //0x00A8
|
||||
char pad_78A8[4]; //0x78A8
|
||||
uint32_t m_remote_script_start_idx; //0x78AC
|
||||
uint32_t m_remote_script_count; //0x78B0
|
||||
char pad_78B4[4]; //0x78B4
|
||||
class CRemoteScriptInfo m_detached_remote_script_infos[64];//0x78B8
|
||||
char pad_90B8[4]; //0x90B8
|
||||
uint32_t m_detached_remote_script_start_idx; //0x90BC
|
||||
uint32_t m_detached_remote_script_count; //0x90C0
|
||||
char pad_90C4[28]; //0x90C4
|
||||
}; //Size: 0x90E0
|
||||
static_assert(sizeof(CGameScriptHandlerMgr) == 0x90E0);
|
||||
|
||||
|
||||
|
@ -1,71 +1,98 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "fwddec.hpp"
|
||||
#include "joaat.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
namespace rage
|
||||
{
|
||||
class scriptIdBase
|
||||
{
|
||||
public:
|
||||
virtual ~scriptIdBase() = default; // 0 (0x00)
|
||||
virtual ~scriptIdBase() = default;// 0 (0x00)
|
||||
|
||||
// Assumes the script thread's identity.
|
||||
virtual void assume_thread_identity(scrThread*) {}; // 1 (0x08)
|
||||
virtual void assume_thread_identity(scrThread*){};// 1 (0x08)
|
||||
|
||||
// Returns whether the hash of the script id is valid.
|
||||
virtual bool is_valid() { return false; }; // 2 (0x10)
|
||||
virtual bool is_valid()
|
||||
{
|
||||
return false;
|
||||
};// 2 (0x10)
|
||||
|
||||
// Gets the hash of the script id.
|
||||
virtual joaat_t* get_hash(joaat_t* out) { return 0; }; // 3 (0x18)
|
||||
virtual joaat_t* get_hash(joaat_t* out)
|
||||
{
|
||||
return 0;
|
||||
};// 3 (0x18)
|
||||
|
||||
// Gets an unknown value from the script id.
|
||||
virtual std::uint32_t* get_hash2(std::uint32_t* out) { return 0; }; // 4 (0x20)
|
||||
|
||||
virtual std::uint32_t* get_hash2(std::uint32_t* out)
|
||||
{
|
||||
return 0;
|
||||
};// 4 (0x20)
|
||||
|
||||
// Gets the name of the script id.
|
||||
virtual const char* get_name() { return nullptr; }; // 5 (0x28)
|
||||
virtual const char* get_name()
|
||||
{
|
||||
return nullptr;
|
||||
};// 5 (0x28)
|
||||
|
||||
// Serializes the script id from the buffer.
|
||||
virtual void deserialize(datBitBuffer* buffer) {}; // 6 (0x30)
|
||||
virtual void deserialize(datBitBuffer* buffer){};// 6 (0x30)
|
||||
|
||||
// Serializes the script id to the buffer.
|
||||
virtual void serialize(datBitBuffer* buffer) {}; // 7 (0x38)
|
||||
|
||||
virtual void serialize(datBitBuffer* buffer){};// 7 (0x38)
|
||||
|
||||
// Calculates some information with the position hash & instance id.
|
||||
virtual std::uint32_t _0x40() { return 0; }; // 8 (0x40)
|
||||
virtual std::uint32_t _0x40()
|
||||
{
|
||||
return 0;
|
||||
};// 8 (0x40)
|
||||
|
||||
// Calls _0x40 and returns it's value added to another value.
|
||||
virtual std::uint32_t _0x48() { return 0; }; // 9 (0x48)
|
||||
virtual std::uint32_t _0x48()
|
||||
{
|
||||
return 0;
|
||||
};// 9 (0x48)
|
||||
|
||||
// Logs some information about the script id.
|
||||
virtual void log_information(netLoggingInterface* logger) {}; // 10 (0x50)
|
||||
|
||||
// Copies the information of other to this object.
|
||||
virtual void copy_data(scriptIdBase *other) {} // 11 (0x58)
|
||||
|
||||
// Returns whether the other script id is equal.
|
||||
virtual bool operator==(scriptIdBase*) { return false; }; // 12 (0x60)
|
||||
virtual void log_information(netLoggingInterface* logger){};// 10 (0x50)
|
||||
|
||||
virtual bool _0x68(void*) { return false; }; // 13 (0x68)
|
||||
// Copies the information of other to this object.
|
||||
virtual void copy_data(scriptIdBase* other)
|
||||
{
|
||||
}// 11 (0x58)
|
||||
|
||||
// Returns whether the other script id is equal.
|
||||
virtual bool operator==(scriptIdBase*)
|
||||
{
|
||||
return false;
|
||||
};// 12 (0x60)
|
||||
|
||||
virtual bool _0x68(void*)
|
||||
{
|
||||
return false;
|
||||
};// 13 (0x68)
|
||||
};
|
||||
|
||||
class scriptId : public scriptIdBase
|
||||
{
|
||||
public:
|
||||
joaat_t m_hash; // 0x08
|
||||
char m_name[0x20]; // 0x0C
|
||||
joaat_t m_hash; // 0x08
|
||||
char m_name[0x20];// 0x0C
|
||||
};
|
||||
}
|
||||
|
||||
class CGameScriptId : public rage::scriptId
|
||||
{
|
||||
public:
|
||||
char m_padding[0x04]; // 0x2C
|
||||
std::int32_t m_timestamp; // 0x30
|
||||
std::int32_t m_position_hash; // 0x34
|
||||
std::int32_t m_instance_id; // 0x38
|
||||
std::int32_t m_unk; // 0x3C
|
||||
char m_padding[0x04]; // 0x2C
|
||||
std::int32_t m_timestamp; // 0x30
|
||||
std::int32_t m_position_hash;// 0x34
|
||||
std::int32_t m_instance_id; // 0x38
|
||||
std::int32_t m_unk; // 0x3C
|
||||
};
|
||||
|
||||
static_assert(sizeof(CGameScriptId) == 0x40);
|
||||
|
@ -1,33 +1,34 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "fwddec.hpp"
|
||||
#include "base.hpp"
|
||||
#include "fwddec.hpp"
|
||||
#include "joaat.hpp"
|
||||
#include "script_id.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
namespace rage
|
||||
{
|
||||
class scrProgram : public pgBase
|
||||
{
|
||||
public:
|
||||
std::uint8_t** m_code_blocks; // 0x10
|
||||
std::uint32_t m_hash; // 0x18
|
||||
std::uint32_t m_code_size; // 0x1C
|
||||
std::uint32_t m_arg_count; // 0x20
|
||||
std::uint32_t m_local_count; // 0x24
|
||||
std::uint32_t m_global_count; // 0x28
|
||||
std::uint32_t m_native_count; // 0x2C
|
||||
void *m_local_data; // 0x30
|
||||
std::int64_t **m_global_data; // 0x38
|
||||
void **m_native_entrypoints; // 0x40
|
||||
char m_padding6[0x10]; // 0x48
|
||||
std::uint32_t m_name_hash; // 0x58
|
||||
char m_padding7[0x04]; // 0x5C
|
||||
const char* m_name; // 0x60
|
||||
const char** m_strings_data; // 0x68
|
||||
std::uint32_t m_strings_count; // 0x70
|
||||
char m_padding8[0x0C]; // 0x74
|
||||
std::uint8_t** m_code_blocks; // 0x10
|
||||
std::uint32_t m_hash; // 0x18
|
||||
std::uint32_t m_code_size; // 0x1C
|
||||
std::uint32_t m_arg_count; // 0x20
|
||||
std::uint32_t m_local_count; // 0x24
|
||||
std::uint32_t m_global_count; // 0x28
|
||||
std::uint32_t m_native_count; // 0x2C
|
||||
void* m_local_data; // 0x30
|
||||
std::int64_t** m_global_data; // 0x38
|
||||
void** m_native_entrypoints; // 0x40
|
||||
char m_padding6[0x10]; // 0x48
|
||||
std::uint32_t m_name_hash; // 0x58
|
||||
char m_padding7[0x04]; // 0x5C
|
||||
const char* m_name; // 0x60
|
||||
const char** m_strings_data; // 0x68
|
||||
std::uint32_t m_strings_count;// 0x70
|
||||
char m_padding8[0x0C]; // 0x74
|
||||
|
||||
bool is_valid() const
|
||||
{
|
||||
@ -101,17 +102,17 @@ namespace rage
|
||||
class scrProgramTableEntry
|
||||
{
|
||||
public:
|
||||
scrProgram* m_program; // 0x00
|
||||
char m_Pad1[0x04]; // 0x08
|
||||
joaat_t m_hash; // 0x0C
|
||||
scrProgram* m_program;// 0x00
|
||||
char m_Pad1[0x04]; // 0x08
|
||||
joaat_t m_hash; // 0x0C
|
||||
};
|
||||
|
||||
class scrProgramTable
|
||||
{
|
||||
public:
|
||||
scrProgramTableEntry* m_data; // 0x00
|
||||
char m_padding[0x10]; // 0x08
|
||||
std::uint32_t m_size; // 0x18
|
||||
scrProgramTableEntry* m_data;// 0x00
|
||||
char m_padding[0x10]; // 0x08
|
||||
std::uint32_t m_size; // 0x18
|
||||
|
||||
std::list<joaat_t> all_script_hashes()
|
||||
{
|
||||
@ -170,4 +171,3 @@ namespace rage
|
||||
static_assert(sizeof(scrProgramTable) == 0x1C);
|
||||
}
|
||||
#pragma pack(pop)
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "fwddec.hpp"
|
||||
#include "joaat.hpp"
|
||||
#include "tls_context.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CGameScriptHandlerNetComponent;
|
||||
|
||||
namespace rage
|
||||
@ -20,64 +21,65 @@ namespace rage
|
||||
class scrThreadContext
|
||||
{
|
||||
public:
|
||||
std::uint32_t m_thread_id; // 0x00
|
||||
joaat_t m_script_hash; // 0x04
|
||||
eThreadState m_state; // 0x08
|
||||
std::uint32_t m_instruction_pointer; // 0x0C
|
||||
std::uint32_t m_frame_pointer; // 0x10
|
||||
std::uint32_t m_stack_pointer; // 0x14
|
||||
float m_timer_a; // 0x18
|
||||
float m_timer_b; // 0x1C
|
||||
float m_timer_c; // 0x20
|
||||
char m_padding1[0x2C]; // 0x24
|
||||
std::uint32_t m_stack_size; // 0x50
|
||||
char m_padding2[0x54]; // 0x54
|
||||
std::uint32_t m_thread_id; // 0x00
|
||||
joaat_t m_script_hash; // 0x04
|
||||
eThreadState m_state; // 0x08
|
||||
std::uint32_t m_instruction_pointer;// 0x0C
|
||||
std::uint32_t m_frame_pointer; // 0x10
|
||||
std::uint32_t m_stack_pointer; // 0x14
|
||||
float m_timer_a; // 0x18
|
||||
float m_timer_b; // 0x1C
|
||||
float m_timer_c; // 0x20
|
||||
char m_padding1[0x2C]; // 0x24
|
||||
std::uint32_t m_stack_size; // 0x50
|
||||
char m_padding2[0x54]; // 0x54
|
||||
};
|
||||
static_assert(sizeof(scrThreadContext) == 0xA8);
|
||||
|
||||
class scrThread
|
||||
{
|
||||
public:
|
||||
virtual ~scrThread() = default; // 0 (0x00)
|
||||
virtual void reset(std::uint32_t script_hash, void* args, std::uint32_t arg_count) = 0; // 1 (0x08)
|
||||
virtual eThreadState run() = 0; // 2 (0x10)
|
||||
virtual eThreadState tick(std::uint32_t ops_to_execute) = 0; // 3 (0x18)
|
||||
virtual void kill() = 0; // 4 (0x20)
|
||||
virtual ~scrThread() = default;// 0 (0x00)
|
||||
virtual void reset(std::uint32_t script_hash, void* args, std::uint32_t arg_count) = 0; // 1 (0x08)
|
||||
virtual eThreadState run() = 0; // 2 (0x10)
|
||||
virtual eThreadState tick(std::uint32_t ops_to_execute) = 0; // 3 (0x18)
|
||||
virtual void kill() = 0; // 4 (0x20)
|
||||
|
||||
inline static scrThread* get()
|
||||
{
|
||||
return rage::tlsContext::get()->m_script_thread;
|
||||
}
|
||||
|
||||
public:
|
||||
scrThreadContext m_context; // 0x08
|
||||
void* m_stack; // 0xB0
|
||||
char m_padding[0x4]; // 0xB8
|
||||
uint32_t m_arg_size; // 0xBC
|
||||
uint32_t m_arg_loc; // 0xC0
|
||||
char m_padding2[0x4]; // 0xC4
|
||||
const char* m_exit_message; // 0xC8
|
||||
std::uint32_t m_name_hash; // 0xCC
|
||||
char m_name[0x40]; // 0xD4
|
||||
scriptHandler* m_handler; // 0x114
|
||||
CGameScriptHandlerNetComponent* m_net_component; // 0x11C
|
||||
scrThreadContext m_context; // 0x08
|
||||
void* m_stack; // 0xB0
|
||||
char m_padding[0x4]; // 0xB8
|
||||
uint32_t m_arg_size; // 0xBC
|
||||
uint32_t m_arg_loc; // 0xC0
|
||||
char m_padding2[0x4]; // 0xC4
|
||||
const char* m_exit_message; // 0xC8
|
||||
std::uint32_t m_name_hash; // 0xCC
|
||||
char m_name[0x40]; // 0xD4
|
||||
scriptHandler* m_handler; // 0x114
|
||||
CGameScriptHandlerNetComponent* m_net_component;// 0x11C
|
||||
};
|
||||
}
|
||||
|
||||
class GtaThread : public rage::scrThread
|
||||
{
|
||||
public:
|
||||
rage::joaat_t m_script_hash; // 0x120
|
||||
char m_padding3[0x14]; // 0x124
|
||||
std::int32_t m_instance_id; // 0x138
|
||||
char m_padding4[0x04]; // 0x13C
|
||||
std::uint8_t m_flag1; // 0x140
|
||||
bool m_safe_for_network_game; // 0x141
|
||||
char m_padding5[0x02]; // 0x142
|
||||
bool m_is_minigame_script; // 0x144
|
||||
char m_padding6[0x02]; // 0x145
|
||||
bool m_can_be_paused; // 0x147
|
||||
bool m_can_remove_blips_from_other_scripts; // 0x148
|
||||
char m_padding7[0x0F]; // 0x149
|
||||
rage::joaat_t m_script_hash; // 0x120
|
||||
char m_padding3[0x14]; // 0x124
|
||||
std::int32_t m_instance_id; // 0x138
|
||||
char m_padding4[0x04]; // 0x13C
|
||||
std::uint8_t m_flag1; // 0x140
|
||||
bool m_safe_for_network_game; // 0x141
|
||||
char m_padding5[0x02]; // 0x142
|
||||
bool m_is_minigame_script; // 0x144
|
||||
char m_padding6[0x02]; // 0x145
|
||||
bool m_can_be_paused; // 0x147
|
||||
bool m_can_remove_blips_from_other_scripts;// 0x148
|
||||
char m_padding7[0x0F]; // 0x149
|
||||
};
|
||||
|
||||
static_assert(sizeof(GtaThread) == 0x160);
|
||||
|
@ -1,3 +1,4 @@
|
||||
#pragma once
|
||||
#include "fwddec.hpp"
|
||||
|
||||
#include <rage/sysMemAllocator.hpp>
|
@ -1,17 +1,18 @@
|
||||
#pragma once
|
||||
#include <intrin.h>
|
||||
#include "fwddec.hpp"
|
||||
|
||||
#include <intrin.h>
|
||||
|
||||
namespace rage
|
||||
{
|
||||
class tlsContext
|
||||
{
|
||||
public:
|
||||
char m_padding1[0xB8]; // 0x00
|
||||
sysMemAllocator* m_allocator; // 0xB8
|
||||
char m_padding2[0x788]; // 0xD0
|
||||
scrThread* m_script_thread; // 0x848
|
||||
bool m_is_script_thread_active; // 0x850
|
||||
char m_padding1[0xB8]; // 0x00
|
||||
sysMemAllocator* m_allocator; // 0xB8
|
||||
char m_padding2[0x788]; // 0xD0
|
||||
scrThread* m_script_thread; // 0x848
|
||||
bool m_is_script_thread_active;// 0x850
|
||||
|
||||
static tlsContext* get()
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
1438
src/gta/vehicles.hpp
1438
src/gta/vehicles.hpp
File diff suppressed because it is too large
Load Diff
1237
src/gta/weapons.hpp
1237
src/gta/weapons.hpp
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user