#pragma once#include <string>#include <d3dx9.h>#include <stdio.h>#include <Windows.h>#define D3DX_PI (3.14159265358979323846)#define ValidPointer( pointer ) ( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000 /*&& some other checks*/ )#define RETURN_IF_BAD( pointer ) if (!( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000)) return#define CONTINUE_IF_BAD( pointer ) if (!( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000)) continue#define TRY __try{#define TRY_END }__except(1){;};#define OBMGR_PATTERN1 {0x12,0x69,0xa3,0xd7,0xef,0x47,0x84,0x59}#define OBMFR_PATTERN2 {0xae,0x15,0x75,0xa7,0x6e,0x35,0xe4,0x2c}#define OBFUS_MGR_PTR_1 0x1438B46D0#define OBFUS_MGR_RET_1 0x147E207B6#define OBFUS_MGR_DEC_FUNC 0x14161F880#define OBFUS_STATIC_KEY 0x598447EFD7A36912#define CLIENT_GAME_CONTEXT 0x1447522a8#define OFFSET_GAMERENDERER 0x1447f6fb8#define PROTECTED_THREAD 0x144752654#define TYPEINFO_ClientSoldierEntity 0x144F2EF50#define TYPEINFO_ClientVehicleEntity 0x144E3A170#define TYPEINFO_ClientSupplySphereEntity 0x144C54550#define TYPEINFO_ClientCombatAreaTriggerEntity 0x144E3B870#define TYPEINFO_ClientExplosionPackEntity 0x144F346A0#define TYPEINFO_ClientProxyGrenadeEntity 0x144F34370#define TYPEINFO_ClientGrenadeEntity 0x144F34590#define TYPEINFO_ClientInteractableGrenadeEntity 0x144C5BCB0#define TYPEINFO_ClientCapturePointEntity 0x144C8DD30#define TYPEINFO_ClientLootItemEntity 0x144C473A0#define TYPEINFO_ClientArmorVestLootItemEntity 0x144C89090#define TYPEINFO_ClientStaticModelEntity 0x144E32F10#define TYPEINFO_ClientStaticModelEntity_vtbl 0x144E32F10#define CLIENTPLAYER_TEAMID_OFFSET 0x1C48#define CLIENTPLAYER_NAME_OFFSET 0x18#define CLIENTPLAYER_SOLDIER_OFFSET 0x1D50#define CLIENTPLAYER_VEHICLE_OFFSET 0x1D60#define CLIENTSOLDIER_HEALTHCOMPONENT_OFFSET 0x2e8#define CLIENTSOLDIER_OCCLUDED_OFFSET 0xA7Bnamespace fb{template <class T, INT Count, INT PadSize>class fixed_vector{public:T* m_firstElement;T* m_lastElement;T* m_arrayBound;LPVOID m_pad[PadSize];T m_data[Count];public:fixed_vector() {m_firstElement = (T*)m_data;m_lastElement = (T*)m_data;m_arrayBound = (T*)& m_data[Count];}void push_back(T* const value) {if (m_lastElement > m_arrayBound) {return;}*m_lastElement = *value;m_lastElement = m_lastElement + 1;};void clear() {m_firstElement = m_data;m_lastElement = m_data;m_arrayBound = (T*)& m_data[Count];}UINT Size() {return ((DWORD_PTR)m_lastElement - (DWORD_PTR)m_firstElement) / sizeof(T);}T At(INT nIndex) {return m_firstElement[nIndex];}T operator [](INT index) { return At(index); }};template <class T>class vector{private:T* m_firstElement;T* m_lastElement;T* m_arrayBound;void* vftable;public:size_t size(){return (((intptr_t)this->m_lastElement - (intptr_t)this->m_firstElement) / sizeof(T));}T at(int nIndex){return *(T*)((intptr_t)m_firstElement + (nIndex * sizeof(T)));}T operator [](int index){return at(index);}};template <typename T>class Array{private:T* m_firstElement;public:T At(INT nIndex){if (!ValidPointer(m_firstElement))return (T)NULL;return *(T*)((DWORD64)m_firstElement + (nIndex * sizeof(T)));};T operator [](INT index) { return m_firstElement[index]; }int GetSize(){if (m_firstElement){return *(int*)((DWORD_PTR)m_firstElement - sizeof(__int32));}return 0;}};template <typename T>class Tuple2{public:T Element1;T Element2;public:Tuple2(T _Element1, T _Element2){Element1 = _Element1;Element2 = _Element2;}};class Color32{public:Color32(DWORD dwColor){this->a = (dwColor >> 24) & 0xff;this->r = (dwColor >> 16) & 0xff;this->g = (dwColor >> 8) & 0xff;this->b = (dwColor) & 0xff;}Color32(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) :r(red), g(green), b(blue), a(alpha){}static Color32 Yellow() { return Color32(255, 255, 000, 255); }static Color32 White() { return Color32(255, 255, 255, 255); }static Color32 Black() { return Color32(0, 0, 0, 255); }static Color32 Red() { return Color32(255, 0, 0, 255); }static Color32 Green() { return Color32(0, 255, 0, 255); }static Color32 Blue() { return Color32(0, 0, 255, 255); }private:union{struct{unsigned char r;unsigned char g;unsigned char b;unsigned char a;};unsigned long color;};};template< class T >struct WeakToken{T* m_realptr; //its value is: realptr + 8DWORD32 m_refcount;};template< class T >class WeakPtr{private:WeakToken<T>* m_ptr;public:T* GetData(){if (!ValidPointer(m_ptr))return NULL;if (!ValidPointer(&m_ptr->m_realptr))return NULL;T* ptr = m_ptr->m_realptr;if (!ValidPointer(ptr))return NULL;return (T*)((DWORD_PTR)(ptr)-0x8);}};template< class T >class EncryptedPtr{public:DWORD64 m_encryptedPtr;DWORD64 m_pointerKey;public:T* GetPtr(){return (T*)(DecryptPointer(this->m_encryptedPtr, (DWORD64)(this->m_pointerKey)));}};typedef D3DXMATRIXA16 LinearTransform;struct AxisAlignedBox{D3DXVECTOR4 min;D3DXVECTOR4 max;D3DXVECTOR4 crnr2;D3DXVECTOR4 crnr3;D3DXVECTOR4 crnr4;D3DXVECTOR4 crnr5;D3DXVECTOR4 crnr6;D3DXVECTOR4 crnr7;/*.5------8.' | .'|6---+--7' || | | || ,4--+---3|.' | .'1------2'1 = min8 = max*/void updateBox(AxisAlignedBox* box_in){this->crnr2 = D3DXVECTOR4(box_in->max.x, box_in->min.y, box_in->min.z, 0.0);this->crnr3 = D3DXVECTOR4(box_in->max.x, box_in->min.y, box_in->max.z, 0.0);this->crnr4 = D3DXVECTOR4(box_in->min.x, box_in->min.y, box_in->max.z, 0.0);this->crnr5 = D3DXVECTOR4(box_in->min.x, box_in->max.y, box_in->max.z, 0.0);this->crnr6 = D3DXVECTOR4(box_in->min.x, box_in->max.y, box_in->min.z, 0.0);this->crnr7 = D3DXVECTOR4(box_in->max.x, box_in->max.y, box_in->min.z, 0.0);this->min = box_in->min;this->max = box_in->max;}};struct LinearTransform_AABB{public:LinearTransform m_Transform;AxisAlignedBox m_Box;char _pad[0x200];};class ClientPlayerManager{public:};class ClientGameContext{public:char _0x0000[0x20];ClientPlayerManager* m_playerManager; //0x0020char _0x0028[0x40 - 8];ClientPlayerManager* m_clientPlayerManager; //0x0060static ClientGameContext* GetInstance(){return *(ClientGameContext**)(CLIENT_GAME_CONTEXT);}};class HealthComponent{public:char pad_0000[32]; //0x0000float m_Health; //0x0020float m_MaxHealth; //0x0024char pad_0028[24]; //0x0028float m_VehicleHealth; //0x0040char pad_00EA[168]; //0x00EAfloat m_VehicleMaxHealth; //0x00ECchar pad_00F0[3922]; //0x00F0}; //Size: 0x1042class UpdatePoseResultData{public:class QuatTransform{public:D3DXVECTOR4 m_TransAndScale; //0x0000D3DXVECTOR4 m_Rotation; //0x0010};//Size=0x0020char _0x0000[0x20];class UpdatePoseResultData::QuatTransform* m_ActiveWorldTransforms; //0x0020class UpdatePoseResultData::QuatTransform* m_ActiveLocalTransforms; //0x0028int m_Slot; //0x0030int m_ReaderIndex; //0x0034bool m_ValidTransforms; //0x0038bool m_PoseUpdateEnabled; //0x0039bool m_PoseNeeded; //0x003A};class BoneCollisionComponent{public:UpdatePoseResultData m_ragdollTransforms; //0x0000};class VehicleEntityData;class ClientVehicleEntity{public:virtual class TypeInfo* GetType();virtual void Function1(); //virtual void Function2(); //virtual void Function3(); //virtual void Function4(); //virtual void Function5(); //virtual void Function6(); //virtual void Function7(); //virtual void Function8(); //virtual void Function9(); //virtual void Function10(); //virtual void Function11(); //virtual void Function12(); //virtual void Function13(); //virtual void Function14(); //virtual void Function15(); //virtual void Function16(); //virtual void Function17(); //virtual void Function18(); //virtual void Function19(); //virtual void Function20(); //virtual void Function21(); //virtual void Function22(); //virtual void Function23(); //virtual void Function24(); //virtual void Function25(); //virtual void GetTransformAABB(LinearTransform_AABB& mTransform);// 26VehicleEntityData* vehicleEntityData(){return *(VehicleEntityData**)((BYTE*)this + 0x38);};HealthComponent* healthcomponent(){return *(HealthComponent**)((BYTE*)this + 0x2E8);};};//Size: 0x1040class ClientSoldierEntity{public:void GetTransform(LinearTransform* OutMatrix){DWORD_PTR m_collection = *(DWORD_PTR*)((DWORD_PTR)this + 0x40);unsigned __int8 _9 = *(unsigned __int8*)(m_collection + 9);unsigned __int8 _10 = *(unsigned __int8*)(m_collection + 10);DWORD_PTR ComponentCollectionOffset = 0x20 * (_10 + (2 * _9));*(LinearTransform*)OutMatrix = *(LinearTransform*)(m_collection + ComponentCollectionOffset + 0x10);}char pad_0000[744]; //0x0000class HealthComponent* healthcomponent; //0x02E8char pad_02F0[976]; //0x02F0float authorativeYaw; //0x06C0char pad_06C4[28]; //0x06C4class BoneCollisionComponent* bonecollisioncomponent; //0x06E0char pad_06E8[704]; //0x06E8int8_t poseType; //0x09A8char pad_09A9[207]; //0x09A9int8_t N0000019E; //0x0A78int8_t N00000264; //0x0A79int8_t N00000268; //0x0A7Aint8_t occluded; //0x0A7Bchar pad_0A7C[532]; //0x0A7CD3DXVECTOR3 location; //0x0C90char pad_0C9C[936]; //0x0C9Cbool IsValid(){return (this->healthcomponent->m_Health > 0.1f && this->healthcomponent->m_Health <= this->healthcomponent->m_MaxHealth);}bool IsDead(){return !(this->healthcomponent->m_Health > 0.1f);}bool IsVisible(){return (this->occluded == false);}AxisAlignedBox GetAABB(){AxisAlignedBox aabb = AxisAlignedBox();if (this->poseType == 0) // standing{aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);aabb.max = D3DXVECTOR4(0.350000f, 1.700000f, 0.350000f, 0);}if (this->poseType == 1) // crouching{aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);aabb.max = D3DXVECTOR4(0.350000f, 1.150000f, 0.350000f, 0);}if (this->poseType == 2) // prone{aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);aabb.max = D3DXVECTOR4(0.350000f, 0.400000f, 0.350000f, 0);}return aabb;}bool GetBonePos(int BoneId, D3DXVECTOR3* vOut);}; //Size: 0x1034class ClientPlayer{public:virtual ~ClientPlayer();virtual DWORD_PTR GetCharacterEntity(); //=> ClientSoldierEntity + 0x268virtual DWORD_PTR GetCharacterUserData(); //=> PlayerCharacterUserDatavirtual class EntryComponent* GetEntryComponent();virtual bool InVehicle();virtual unsigned int getId();char pad_0008[16]; //0x0008char* name; //0x0018char pad_0020[32]; //0x0020bchar szName[8]; //0x0040char pad_0048[7168]; //0x0048uint8_t teamId; //0x1C48char pad_1C49[263]; //0x1C49fb::WeakPtr<ClientSoldierEntity> clientSoldierEntity; //0x1D50char pad_1D58[8]; //0x1D58fb::WeakPtr<ClientVehicleEntity> clientVehicleEntity; //0x1D60char pad_1D68[704]; //0x1D68}; //Size: 0x2028class RenderView{public:char pad_0000[1264]; //0x0000D3DXMATRIXA16 viewProj; //0x04F0char pad_0530[368]; //0x0530D3DXVECTOR3 cameraPos; //0x06A0char pad_06AC[4632]; //0x06AC}; //Size: 0x05C0class GameRenderer{public:char pad_0000[96]; //0x0000class RenderView* renderView; //0x0060char pad_0068[32]; //0x0068static GameRenderer* GetInstance(){return *(GameRenderer**)OFFSET_GAMERENDERER;}}; //Size: 0x0088enum BoneIds{BONE_Reference = 0x0,BONE_AITrajectory = 0x1,BONE_Hips = 0x2,BONE_Spine = 0x3,BONE_Spine1 = 0x4,BONE_Spine2 = 0x5,BONE_Neck = 0x6,BONE_Neck1 = 0x7,BONE_Head = 0x8,BONE_HeadEnd = 0x9,BONE_FACIAL_C_FacialRoot = 0xA,BONE_FACIAL_LOD1_C_Forehead = 0xB,BONE_FACIAL_LOD1_L_ForeheadIn = 0xC,BONE_FACIAL_LOD1_R_ForeheadIn = 0xD,BONE_FACIAL_LOD1_L_ForeheadMid = 0xE,BONE_FACIAL_LOD1_R_ForeheadMid = 0xF,BONE_FACIAL_LOD1_L_ForeheadOut = 0x10,BONE_FACIAL_LOD1_R_ForeheadOut = 0x11,BONE_FACIAL_LOD1_L_EyesackUpper = 0x12,BONE_FACIAL_LOD1_R_EyesackUpper = 0x13,BONE_FACIAL_LOD1_L_EyelidUpperFurrow = 0x14,BONE_FACIAL_LOD1_R_EyelidUpperFurrow = 0x15,BONE_FACIAL_LOD1_L_EyelidUpper = 0x16,BONE_FACIAL_LOD1_R_EyelidUpper = 0x17,BONE_FACIAL_LOD1_L_Eyeball = 0x18,BONE_FACIAL_LOD1_L_Pupil = 0x19,BONE_FACIAL_LOD1_R_Eyeball = 0x1A,BONE_FACIAL_LOD1_R_Pupil = 0x1B,BONE_FACIAL_LOD1_L_EyelidLower = 0x1C,BONE_FACIAL_LOD1_R_EyelidLower = 0x1D,BONE_FACIAL_LOD1_L_EyesackLower = 0x1E,BONE_FACIAL_LOD1_R_EyesackLower = 0x1F,BONE_FACIAL_LOD1_L_CheekInner = 0x20,BONE_FACIAL_LOD1_R_CheekInner = 0x21,BONE_FACIAL_LOD1_L_CheekOuter = 0x22,BONE_FACIAL_LOD1_R_CheekOuter = 0x23,BONE_FACIAL_LOD1_C_NoseBridge = 0x24,BONE_FACIAL_LOD1_L_NasolabialBulge = 0x25,BONE_FACIAL_LOD1_R_NasolabialBulge = 0x26,BONE_FACIAL_LOD1_L_NasolabialFurrow = 0x27,BONE_FACIAL_LOD1_R_NasolabialFurrow = 0x28,BONE_FACIAL_LOD1_L_CheekLower = 0x29,BONE_FACIAL_LOD1_R_CheekLower = 0x2A,BONE_FACIAL_LOD1_L_Ear = 0x2B,BONE_FACIAL_LOD1_R_Ear = 0x2C,BONE_FACIAL_LOD1_C_Nose = 0x2D,BONE_FACIAL_LOD1_C_NoseLower = 0x2E,BONE_FACIAL_LOD1_L_Nostril = 0x2F,BONE_FACIAL_LOD1_R_Nostril = 0x30,BONE_FACIAL_LOD1_C_Mouth = 0x31,BONE_FACIAL_LOD1_C_LipUpper = 0x32,BONE_FACIAL_LOD1_C_LipUpperInner = 0x33,BONE_FACIAL_LOD1_L_LipUpper = 0x34,BONE_FACIAL_LOD1_L_LipUpperInner = 0x35,BONE_FACIAL_LOD1_R_LipUpper = 0x36,BONE_FACIAL_LOD1_R_LipUpperInner = 0x37,BONE_FACIAL_LOD1_L_LipUpperOuter = 0x38,BONE_FACIAL_LOD1_L_LipUpperOuterInner = 0x39,BONE_FACIAL_LOD1_R_LipUpperOuter = 0x3A,BONE_FACIAL_LOD1_R_LipUpperOuterInner = 0x3B,BONE_FACIAL_LOD1_L_LipCorner = 0x3C,BONE_FACIAL_LOD1_L_LipCornerInner = 0x3D,BONE_FACIAL_LOD1_R_LipCorner = 0x3E,BONE_FACIAL_LOD1_R_LipCornerInner = 0x3F,BONE_FACIAL_LOD1_C_LipLower = 0x40,BONE_FACIAL_LOD1_C_LipLowerInner = 0x41,BONE_FACIAL_LOD1_L_LipLower = 0x42,BONE_FACIAL_LOD1_L_LipLowerInner = 0x43,BONE_FACIAL_LOD1_R_LipLower = 0x44,BONE_FACIAL_LOD1_R_LipLowerInner = 0x45,BONE_FACIAL_LOD1_L_LipLowerOuter = 0x46,BONE_FACIAL_LOD1_L_LipLowerOuterInner = 0x47,BONE_FACIAL_LOD1_R_LipLowerOuter = 0x48,BONE_FACIAL_LOD1_R_LipLowerOuterInner = 0x49,BONE_FACIAL_LOD1_C_Jaw = 0x4A,BONE_FACIAL_LOD1_C_Chin = 0x4B,BONE_FACIAL_LOD1_L_ChinSide = 0x4C,BONE_FACIAL_LOD1_R_ChinSide = 0x4D,BONE_FACIAL_LOD1_C_Tongue1 = 0x4E,BONE_FACIAL_LOD1_C_Tongue2 = 0x4F,BONE_FACIAL_LOD1_C_Tongue3 = 0x50,BONE_FACIAL_LOD1_C_Tongue4 = 0x51,BONE_FACIAL_LOD1_L_Masseter = 0x52,BONE_FACIAL_LOD1_R_Masseter = 0x53,BONE_FACIAL_LOD1_C_UnderChin = 0x54,BONE_FACIAL_LOD1_L_UnderChin = 0x55,BONE_FACIAL_LOD1_R_UnderChin = 0x56,BONE_Head_Prop = 0x57,BONE_Head_Phys = 0x58,BONE_FACIAL_C_Neck2Root = 0x59,BONE_FACIAL_LOD1_C_AdamsApple = 0x5A,BONE_HeadRoll = 0x5B,BONE_Neck_Phys = 0x5C,BONE_SpineX = 0x5D,BONE_Wep_Aim = 0x5E,BONE_SpineXRight = 0x5F,BONE_RightShoulder = 0x60,BONE_RightArm = 0x61,BONE_RightForeArm = 0x62,BONE_RightHand = 0x63,BONE_RightHandAttach = 0x64,BONE_RightHandIndex0 = 0x65,BONE_RightHandIndex1 = 0x66,BONE_RightHandIndex2 = 0x67,BONE_RightHandIndex3 = 0x68,BONE_RightHandIndex4 = 0x69,BONE_RightHandMiddle0 = 0x6A,BONE_RightHandMiddle1 = 0x6B,BONE_RightHandMiddle2 = 0x6C,BONE_RightHandMiddle3 = 0x6D,BONE_RightHandMiddle4 = 0x6E,BONE_RightHandThumb0 = 0x6F,BONE_RightHandThumb1 = 0x70,BONE_RightHandThumb2 = 0x71,BONE_RightHandThumb3 = 0x72,BONE_RightHandThumb4 = 0x73,BONE_RightHandPinky0 = 0x74,BONE_RightHandPinky1 = 0x75,BONE_RightHandPinky2 = 0x76,BONE_RightHandPinky3 = 0x77,BONE_RightHandPinky4 = 0x78,BONE_RightHandRing0 = 0x79,BONE_RightHandRing1 = 0x7A,BONE_RightHandRing2 = 0x7B,BONE_RightHandRing3 = 0x7C,BONE_RightHandRing4 = 0x7D,BONE_RightForeArmRoll = 0x7E,BONE_RightForeArmRoll1 = 0x7F,BONE_RightForeArmRoll2 = 0x80,BONE_RightForeArm_Upper = 0x81,BONE_RightForeArm_Lower = 0x82,BONE_RightElbowRoll = 0x83,BONE_RightArmRoll = 0x84,BONE_RightArmRoll1 = 0x85,BONE_RightArmBend = 0x86,BONE_RightShoulder_Phys = 0x87,BONE_SpineXLeft = 0x88,BONE_LeftShoulder = 0x89,BONE_LeftArm = 0x8A,BONE_LeftForeArm = 0x8B,BONE_LeftHand = 0x8C,BONE_LeftHandAttach = 0x8D,BONE_LeftHandIndex0 = 0x8E,BONE_LeftHandIndex1 = 0x8F,BONE_LeftHandIndex2 = 0x90,BONE_LeftHandIndex3 = 0x91,BONE_LeftHandIndex4 = 0x92,BONE_LeftHandMiddle0 = 0x93,BONE_LeftHandMiddle1 = 0x94,BONE_LeftHandMiddle2 = 0x95,BONE_LeftHandMiddle3 = 0x96,BONE_LeftHandMiddle4 = 0x97,BONE_LeftHandThumb0 = 0x98,BONE_LeftHandThumb1 = 0x99,BONE_LeftHandThumb2 = 0x9A,BONE_LeftHandThumb3 = 0x9B,BONE_LeftHandThumb4 = 0x9C,BONE_LeftHandPinky0 = 0x9D,BONE_LeftHandPinky1 = 0x9E,BONE_LeftHandPinky2 = 0x9F,BONE_LeftHandPinky3 = 0xA0,BONE_LeftHandPinky4 = 0xA1,BONE_LeftHandRing0 = 0xA2,BONE_LeftHandRing1 = 0xA3,BONE_LeftHandRing2 = 0xA4,BONE_LeftHandRing3 = 0xA5,BONE_LeftHandRing4 = 0xA6,BONE_LeftForeArmRoll = 0xA7,BONE_LeftForeArmRoll1 = 0xA8,BONE_LeftForeArmRoll2 = 0xA9,BONE_LeftForeArm_Upper = 0xAA,BONE_LeftForeArm_Lower = 0xAB,BONE_LeftElbowRoll = 0xAC,BONE_LeftArmRoll = 0xAD,BONE_LeftArmRoll1 = 0xAE,BONE_LeftArmBend = 0xAF,BONE_LeftShoulder_Phys = 0xB0,BONE_Wep_SpineX = 0xB1,BONE_Wep_Root = 0xB2,BONE_Wep_Align = 0xB3,BONE_Wep_Trigger = 0xB4,BONE_Wep_Slide = 0xB5,BONE_Wep_Grenade1 = 0xB6,BONE_Wep_Grenade2 = 0xB7,BONE_IK_Joint_LeftHand = 0xB8,BONE_IK_Joint_RightHand = 0xB9,BONE_Wep_Physic1 = 0xBA,BONE_Wep_Physic2 = 0xBB,BONE_Wep_Physic3 = 0xBC,BONE_Wep_Physic4 = 0xBD,BONE_Wep_Physic5 = 0xBE,BONE_Wep_Extra1 = 0xBF,BONE_Wep_Extra2 = 0xC0,BONE_Wep_Extra3 = 0xC1,BONE_Wep_Extra4 = 0xC2,BONE_Wep_Extra5 = 0xC3,BONE_Wep_FX = 0xC4,BONE_Wep_ButtStock = 0xC5,BONE_IK_Dyn_LeftHand = 0xC6,BONE_IK_Dyn_RightHand = 0xC7,BONE_Wep_Belt1 = 0xC8,BONE_Wep_Belt2 = 0xC9,BONE_Wep_Belt3 = 0xCA,BONE_Wep_Belt4 = 0xCB,BONE_Wep_Belt5 = 0xCC,BONE_Wep_Belt6 = 0xCD,BONE_Wep_Belt7 = 0xCE,BONE_Wep_Belt8 = 0xCF,BONE_Wep_Belt9 = 0xD0,BONE_Wep_Belt10 = 0xD1,BONE_Wep_Mag = 0xD2,BONE_Wep_Mag_Ammo = 0xD3,BONE_Wep_Mag_Extra1 = 0xD4,BONE_Wep_Scope1 = 0xD5,BONE_Wep_Scope2 = 0xD6,BONE_Wep_Bipod1 = 0xD7,BONE_Wep_Bipod2 = 0xD8,BONE_Wep_Bipod3 = 0xD9,BONE_Wep_Belt_Out1 = 0xDA,BONE_Wep_Belt_Out2 = 0xDB,BONE_Wep_Belt_Out3 = 0xDC,BONE_Wep_Belt_Out4 = 0xDD,BONE_Wep_Belt_Out5 = 0xDE,BONE_Wep_Belt_Out6 = 0xDF,BONE_Wep_Belt_Out7 = 0xE0,BONE_Wep_Belt_Out8 = 0xE1,BONE_Wep_Belt_Out9 = 0xE2,BONE_Wep_Belt_Out10 = 0xE3,BONE_Wep_Charm1 = 0xE4,BONE_Spine2_Phys = 0xE5,BONE_RightArmpit = 0xE6,BONE_RightDeltoidBulge = 0xE7,BONE_LeftArmpit = 0xE8,BONE_LeftDeltoidBulge = 0xE9,BONE_BackPackAnchor = 0xEA,BONE_BackPackRoot = 0xEB,BONE_BackPackPhys = 0xEC,BONE_Spine1_Phys = 0xED,BONE_Spine_Phys = 0xEE,BONE_LeftUpLeg = 0xEF,BONE_LeftKneeUp = 0xF0,BONE_LeftUpLegRoll = 0xF1,BONE_LeftUpLegRoll_Phys = 0xF2,BONE_LeftKneeRoll = 0xF3,BONE_LeftKneeUp_Phys = 0xF4,BONE_LeftLeg = 0xF5,BONE_LeftKneeLow = 0xF6,BONE_LeftKneeLow_Phys = 0xF7,BONE_LeftFoot = 0xF8,BONE_LeftToeBase = 0xF9,BONE_LeftToe = 0xFA,BONE_LeftFootAttach = 0xFB,BONE_LeftAnkle = 0xFC,BONE_LeftHipsRoll = 0xFD,BONE_RightUpLeg = 0xFE,BONE_RightKneeUp = 0xFF,BONE_RightUpLegRoll = 0x100,BONE_RightUpLegRoll_Phys = 0x101,BONE_RightKneeRoll = 0x102,BONE_RightKneeUp_Phys = 0x103,BONE_RightLeg = 0x104,BONE_RightKneeLow = 0x105,BONE_RightKneeLow_Phys = 0x106,BONE_RightFoot = 0x107,BONE_RightToeBase = 0x108,BONE_RightToe = 0x109,BONE_RightFootAttach = 0x10A,BONE_RightAnkle = 0x10B,BONE_RightHipsRoll = 0x10C,BONE_Hips_Phys = 0x10D,BONE_Trajectory = 0x10E,BONE_TrajectoryEnd = 0x10F,BONE_CameraBase = 0x110,BONE_CameraJoint = 0x111,BONE_WepRootOffset = 0x112,BONE_Connect = 0x113,BONE_ConnectEnd = 0x114,BONE_LeftFootPhaseEnd = 0x115,BONE_RightFootPhaseEnd = 0x116,BONE_RightAnkleEffectorAux = 0x117,BONE_LeftAnkleEffectorAux = 0x118,BONE_Wep_ProxyRoot = 0x119,BONE_Wep_Proxy1 = 0x11A,BONE_Wep_Proxy2 = 0x11B,BONE_Wep_ProxyExtra1 = 0x11C,BONE_Wep_ProxyExtra2 = 0x11D,BONE_SpineX_Driver = 0x11E,BONE_FacePosesAnimation = 0x11F};class VehicleEntityData{public:char pad_0000[816]; //0x0000char* m_NameSid; //0x0330char pad_0338[3336]; //0x0338}; //Size: 0x1040enum LootPickupType{LootPickupType_Weapon, //0x0000LootPickupType_Gadget, //0x0001LootPickupType_Health, //0x0002LootPickupType_Armor, //0x0003LootPickupType_Ammo, //0x0004LootPickupType_Sidearm, //0x0005LootPickupType_Melee, //0x0006LootPickupType_Throwable, //0x0007LootPickupType_Backpack, //0x0008LootPickupType_ArmorVest, //0x0009LootPickupType_COUNT, //0x000ALootPickupType_INVALID //0x000B};enum SharedAmmoType{SharedAmmoType_Pistol, //0x0000SharedAmmoType_SMG, //0x0001SharedAmmoType_LMG, //0x0002SharedAmmoType_Rifle, //0x0003SharedAmmoType_Shotgun, //0x0004SharedAmmoType_Sniper, //0x0005SharedAmmoType_COUNT //0x0006};enum WeaponClassEnum{wc12gauge, //0x0000wc338Magnum, //0x0001wc357Magnum, //0x0002wc44Magnum, //0x0003wc45cal, //0x0004wc46x30mm, //0x0005wc50cal, //0x0006wc545x45mmWP, //0x0007wc556x45mmNATO, //0x0008wc57x28mm, //0x0009wc58x42mm, //0x000Awc762x39mmWP, //0x000Bwc762x51mmNATO, //0x000Cwc762x54mmR, //0x000Dwc9x19mm, //0x000Ewc9x39mm, //0x000FwcAssault, //0x0010wcShotgun, //0x0011wcSmg, //0x0012wcLmg, //0x0013wcSniper, //0x0014wcUgl, //0x0015wcHgr, //0x0016wcAt, //0x0017wcATMine, //0x0018wcC4, //0x0019wcAutoInjector, //0x001AwcKnife, //0x001BwcBuff, //0x001CwcLaserDesignator, //0x001DwcLaserPainter, //0x001EwcMedKit, //0x001FwcMortarStrike, //0x0020wcPowerTool, //0x0021wcTracerDart, //0x0022wcRadioBeacon, //0x0023wcEodBot, //0x0024wcReconMav, //0x0025wcUGS, //0x0026wcUnarmed, //0x0027wcAmmoCrate, //0x0028wcCount, //0x0029wcNone //0x002A};};
class ClientPlayer {public:virtual~ClientPlayer();virtual DWORD_PTR GetCharacterEntity(); //=> ClientSoldierEntity + 0x268virtual DWORD_PTR GetCharacterUserData(); //=> PlayerCharacterUserDatavirtual class EntryComponent* GetEntryComponent();virtual bool InVehicle();virtual unsigned int getId();char _0x0008[16];char* name; //0x0018char pad_0020[32]; //0x0020char szName[8]; //0x0040char pad_0048[7168]; //0x0048uint8_t teamId; //0x1C48char pad_1C49[7]; //0x0048ClientSoldierEntity* clientSoldierEntity; //0x1D50char pad_1D58[8]; //0x0048ClientVehicleEntity* clientVehicleEntity; //0x1D60};
class ClientSoldierEntity {public:HealthComponent* healthcomponent; //0x02E8BoneCollisionComponent* BoneCollisionComponent//0x6E0uint8_t occluded; //0x0A7Buint8_t poseType; //0x09A8Vector location; //0xC88}; //Size: 0x104C
已经完成
class GameRenderer {public:char pad_0000[96]; //0x0000class RenderView* renderView; //0x0060char pad_0068[4112]; //0x0068static GameRenderer* GetInstance() {return *(GameRenderer**)OFFSET_GAMERENDERER;}}; //Size: 0x0088
class RenderView{public:char _0x0000[312];float m_FovY; //0x0138float defaultFovY; //0x013Cchar _0x0140[48];DWORD m_dirtyFlags; //0x0170char _0x0174[364];float m_FovX; //0x02E0float m_depthToWidthRatio; //0x02E4float m_fovScale; //0x02E8float m_fovScaleSqr; //0x02ECMatrix4x4 m_viewMatrix; //0x02F0Matrix4x4 m_viewMatrixTranspose; //0x0330Matrix4x4 m_viewMatrixInverse; //0x0370Matrix4x4 m_ProjectionMatrix; //0x03B0Matrix4x4 N09CECBCA; //0x03F0Matrix4x4 N09CECBD2; //0x0430Matrix4x4 N09CF2713; //0x0470Matrix4x4 N05AA0ABA; //0x04B0Matrix4x4 m_ViewProj; //0x04F0};//Size: 0x0530
class HealthComponent {public:char pad_0000[32]; //0x0000float m_Health; //0x0020float m_MaxHealth; //0x0024char pad_0028[24]; //0x0028float m_VehicleHealth; //0x0040//char pad_0044[4092]; //0x0044}; //Size: 0x0040
class BoneCollisionComponent{public:UpdatePoseResultData m_ragdollTransforms; //0x0000};
class UpdatePoseResultData{public:char _0x0000[0x20];class UpdatePoseResultData::QuatTransform* m_ActiveWorldTransforms; //0x0020class UpdatePoseResultData::QuatTransform* m_ActiveLocalTransforms; //0x0028int m_Slot; //0x0030int m_ReaderIndex; //0x0034bool m_ValidTransforms; //0x0038bool m_PoseUpdateEnabled; //0x0039bool m_PoseNeeded; //0x003A};
class QuatTransform{public:Vec4 m_TransAndScale; //0x0000Vec4 m_Rotation; //0x0010};//Size=0x0020
