Сигнатуры
World - указатель на структуру мира.
Сигнатура: 48 8B 05 ? ? ? ? 48 8B 58 08 48 85 DB 74 32
Метод: pattern + readInt(pattern + 3) + 7
Local Player - указатель на структуру игрока.
Метод: World + 0x8
class LocalPlayer
{
public:
{
char padding_0x0000[0x28]; //0x0000
BYTE entity_type; //0x0028
char padding_0x0029[0x3]; //0x0029
BYTE invisible; //0x002C
char padding_0x002D[0x1]; //0x002D
BYTE freeze_momentum; //0x002E
char padding_0x002F[0x1]; //0x002F
uintptr_t navigation_ptr; //0x0030
char padding_0x0038[0x10]; //0x0038
struct c_ped_style* ped_style_ptr; //0x0048
char padding_0x0038[0x40]; //0x0050
D3DXVECTOR3 position; //0x0090
char padding_0x009C[0xED]; //0x009C
BYTE god_mode; //0x0189
char padding_0x018A[0xF6]; //0x018A
float health; //0x0280
char padding_0x0284[0x1C]; //0x0284
float max_health; //0x02A0
char padding_0x02A4[0x4]; //0x02A4
struct c_attacker* attacker_ptr; //0x02A8
char padding_0x02B0[0x70]; //0x02B0
D3DXVECTOR3 velocity; //0x0320
char padding_0x032C[0x9FC]; //0x032C
uintptr_t last_vehicle_ptr; //0x0D28
char padding_0x0D30[0x378]; //0x0D30
uint32_t ped_type; //0x10A8
char padding_0x10A9[12]; //0x10A9
uintptr_t player_info_ptr; //0x10B8
char padding_0x10C0[0x8]; //0x10C0
uintptr_t weapon_manager_ptr; //0x10C8
char padding_0x10D0[0x31C]; //0x10D0
BYTE seatbelt; //0x13EC
char padding_0x13ED[0xB]; //0x13ED
BYTE unk094; //0x13F8
char padding_0x13F9[0x1]; //0x13F9
BYTE can_switch_weapons;
char padding_0x13FB[0x5];
BYTE forced_aim; //0x1400
BYTE N00000936; //0x1401
BYTE N00000939; //0x1402
BYTE N00000937; //0x1403
char padding_0x1404[0x67]; //0x1404
BYTE is_in_vehicle; //0x146B
char padding_0x146C[0x44]; //0x146C
float unk1; //0x14B0
float unk2; //0x14B4
float armor_amount; //0x14B8
char padding_0x14B4[0x20]; //0x14B4
float fatigued_health_threshold; //0x14D4
float injured_health_threshold; //0x14D8
float dying_health_threshold; //0x14DC
float hurt_health_threshold; //0x14E0
char padding_0x14E4[0xC]; //0x14E4
class c_vehicle* last_vehicle2_ptr; //0x14F0
char padding_0x14F8[0xDC]; //0x14F8
__int32 cash; //0x15D4
}
}
Координаты.
По смещению 0x30
находится указатель на координаты игрока, находящиеся по смещению 0x50
, 0x54
, 0x58
(float).
AccuracySpread - фактор разброса.
World + 0x08 + 0x10C8 + 0x20 + 0x74
PlayerAngles.
Метод: "GTA5.exe" + 01F51A90
Сигнатура: 48 8B 05 ? ? ? ? 48 8B 98 ? ? ? ? EB 32
class PlayerAngles
{
public:
char padding_0000[16]; //0x0000
CPlayerCameraData* m_cam_data; //0x0010
char padding_0018[40]; //0x0018
rage::vector3 m_fps_angles; //0x0040
char padding_004C[20]; //0x004C
rage::vector3 m_cam_pos; //0x0060
char padding_006C[212]; //0x006C
rage::vector3 m_cam_pos2; //0x0140
char padding_014C[644]; //0x014C
rage::vector3 m_tps_angles; //0x03D0
char padding_03DC[20]; //0x03DC
rage::vector3 m_fps_cam_pos; //0x03F0
char pad_03FC[88]; //0x03FC
};
ReplayInterface.
Сигнатура: 48 8D 0D ? ? ? ? 48 8B D7 E8 ? ? ? ? 48 8D 0D ? ? ? ? 8A D8 E8 ? ? ? ? 84 DB 75 13 48 8D 0D ? ? ? ?
class CReplayInterface
{
public:
void* N000006F5; //0x0000
CCameraInterface* pCCameraInterface; //0x0008
CVehicleInterface* pCVehicleInterface; //0x0010
CPedInterface* pCPedInterface; //0x0018
CPickupInterface* pCPickupInterface; //0x0020
CObjectInterface* pCObjectInterface; //0x0028
};
//Object Interface
class CObjectInterface
{
public:
char pad_0x0000[0x158]; //0x0000
CObjectList* pCObjectList; //0x0158
__int32 iMaxObjects; //0x0160
char pad_0x0164[0x4]; //0x0164
__int32 iCurObjects; //0x0168
char pad_0x016C[0x5C]; //0x016C
CObject* get_object(const int& index)
{
if (index < iMaxObjects)
return pCObjectList->ObjectList[index].pCObject;
return nullptr;
}
}; //Size=0x01C8
//Vehicle Interface
class CVehicleInterface
{
public:
char pad_0x0000[0x180]; //0x0000
CVehList* VehList; //0x0180
__int32 iMaxVehicles; //0x0188
char pad_0x018C[0x4]; //0x018C
__int32 iCurVehicles; //0x0190
char pad_0x0194[0x74]; //0x0194
CVehicle* get_vehicle(const int& index)
{
if (index < iMaxVehicles)
return VehList->vehs[index].pCVehicle;
return nullptr;
}
}; //Size=0x0208
//Ped Interface
class CPedInterface
{
public:
char pad_0x0000[0x100]; //0x0000
CPedList* PedLIst; //0x0100
__int32 iMaxPeds; //0x0108
char pad_0x010C[0x4]; //0x010C
__int32 iCurPeds; //0x0110
char pad_0x0114[0x34]; //0x0114
CPed* get_ped(const int& index)
{
if (index < iMaxPeds)
return PedLIst->peds[index].pCPed;
return nullptr;
}
}; //Size=0x0148
//Pickup Interface
class CPickupInterface
{
public:
char pad_0x0000[0x100]; //0x0000
CPickupList* pCPickupList; //0x0100
__int32 iMaxPickups; //0x0108
char pad_0x010C[0x4]; //0x010C
__int32 iCurPickups; //0x0110
CPickup* get_pickup(const int& index)
{
if (index < iMaxPickups)
return pCPickupList->pickups[index].pCPickup;
return nullptr;
}
}; //Size=0x0114
//Camera Interface
class CCameraInterface
{
public:
char pad_0x0000[0x248]; //0x0000
}; //Size=0x0248
Blip - указатель на структуру вейпоинта на карте.
Сигнатура: 4C 8D 05 ? ? ? ? 0F B7 C1
Метод: pattern + readInt(pattern + 3) + 7
Исходный код EZRAGEMP телепортера для RageMP - https://github.com/0niel/EZRAGEMP
Готовый сканер (возможно неактуален)
Сканер сигнатур от aurilisdev. Возможно определяет некорректно, по крайней мере WorldPTR в RageMP точно неправильно определяет.