1. #pragma once
    2. #include <string>
    3. #include <d3dx9.h>
    4. #include <stdio.h>
    5. #include <Windows.h>
    6. #define D3DX_PI (3.14159265358979323846)
    7. #define ValidPointer( pointer ) ( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000 /*&& some other checks*/ )
    8. #define RETURN_IF_BAD( pointer ) if (!( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000)) return
    9. #define CONTINUE_IF_BAD( pointer ) if (!( pointer != NULL && (DWORD_PTR)pointer >= 0x10000 && (DWORD_PTR)pointer < 0x000F000000000000)) continue
    10. #define TRY __try{
    11. #define TRY_END }__except(1){;};
    12. #define OBMGR_PATTERN1 {0x12,0x69,0xa3,0xd7,0xef,0x47,0x84,0x59}
    13. #define OBMFR_PATTERN2 {0xae,0x15,0x75,0xa7,0x6e,0x35,0xe4,0x2c}
    14. #define OBFUS_MGR_PTR_1 0x1438B46D0
    15. #define OBFUS_MGR_RET_1 0x147E207B6
    16. #define OBFUS_MGR_DEC_FUNC 0x14161F880
    17. #define OBFUS_STATIC_KEY 0x598447EFD7A36912
    18. #define CLIENT_GAME_CONTEXT 0x1447522a8
    19. #define OFFSET_GAMERENDERER 0x1447f6fb8
    20. #define PROTECTED_THREAD 0x144752654
    21. #define TYPEINFO_ClientSoldierEntity 0x144F2EF50
    22. #define TYPEINFO_ClientVehicleEntity 0x144E3A170
    23. #define TYPEINFO_ClientSupplySphereEntity 0x144C54550
    24. #define TYPEINFO_ClientCombatAreaTriggerEntity 0x144E3B870
    25. #define TYPEINFO_ClientExplosionPackEntity 0x144F346A0
    26. #define TYPEINFO_ClientProxyGrenadeEntity 0x144F34370
    27. #define TYPEINFO_ClientGrenadeEntity 0x144F34590
    28. #define TYPEINFO_ClientInteractableGrenadeEntity 0x144C5BCB0
    29. #define TYPEINFO_ClientCapturePointEntity 0x144C8DD30
    30. #define TYPEINFO_ClientLootItemEntity 0x144C473A0
    31. #define TYPEINFO_ClientArmorVestLootItemEntity 0x144C89090
    32. #define TYPEINFO_ClientStaticModelEntity 0x144E32F10
    33. #define TYPEINFO_ClientStaticModelEntity_vtbl 0x144E32F10
    34. #define CLIENTPLAYER_TEAMID_OFFSET 0x1C48
    35. #define CLIENTPLAYER_NAME_OFFSET 0x18
    36. #define CLIENTPLAYER_SOLDIER_OFFSET 0x1D50
    37. #define CLIENTPLAYER_VEHICLE_OFFSET 0x1D60
    38. #define CLIENTSOLDIER_HEALTHCOMPONENT_OFFSET 0x2e8
    39. #define CLIENTSOLDIER_OCCLUDED_OFFSET 0xA7B
    40. namespace fb
    41. {
    42. template <class T, INT Count, INT PadSize>
    43. class fixed_vector
    44. {
    45. public:
    46. T* m_firstElement;
    47. T* m_lastElement;
    48. T* m_arrayBound;
    49. LPVOID m_pad[PadSize];
    50. T m_data[Count];
    51. public:
    52. fixed_vector() {
    53. m_firstElement = (T*)m_data;
    54. m_lastElement = (T*)m_data;
    55. m_arrayBound = (T*)& m_data[Count];
    56. }
    57. void push_back(T* const value) {
    58. if (m_lastElement > m_arrayBound) {
    59. return;
    60. }
    61. *m_lastElement = *value;
    62. m_lastElement = m_lastElement + 1;
    63. };
    64. void clear() {
    65. m_firstElement = m_data;
    66. m_lastElement = m_data;
    67. m_arrayBound = (T*)& m_data[Count];
    68. }
    69. UINT Size() {
    70. return ((DWORD_PTR)m_lastElement - (DWORD_PTR)m_firstElement) / sizeof(T);
    71. }
    72. T At(INT nIndex) {
    73. return m_firstElement[nIndex];
    74. }
    75. T operator [](INT index) { return At(index); }
    76. };
    77. template <class T>
    78. class vector
    79. {
    80. private:
    81. T* m_firstElement;
    82. T* m_lastElement;
    83. T* m_arrayBound;
    84. void* vftable;
    85. public:
    86. size_t size()
    87. {
    88. return (((intptr_t)this->m_lastElement - (intptr_t)this->m_firstElement) / sizeof(T));
    89. }
    90. T at(int nIndex)
    91. {
    92. return *(T*)((intptr_t)m_firstElement + (nIndex * sizeof(T)));
    93. }
    94. T operator [](int index)
    95. {
    96. return at(index);
    97. }
    98. };
    99. template <typename T>
    100. class Array
    101. {
    102. private:
    103. T* m_firstElement;
    104. public:
    105. T At(INT nIndex)
    106. {
    107. if (!ValidPointer(m_firstElement))
    108. return (T)NULL;
    109. return *(T*)((DWORD64)m_firstElement + (nIndex * sizeof(T)));
    110. };
    111. T operator [](INT index) { return m_firstElement[index]; }
    112. int GetSize()
    113. {
    114. if (m_firstElement)
    115. {
    116. return *(int*)((DWORD_PTR)m_firstElement - sizeof(__int32));
    117. }
    118. return 0;
    119. }
    120. };
    121. template <typename T>
    122. class Tuple2
    123. {
    124. public:
    125. T Element1;
    126. T Element2;
    127. public:
    128. Tuple2(T _Element1, T _Element2)
    129. {
    130. Element1 = _Element1;
    131. Element2 = _Element2;
    132. }
    133. };
    134. class Color32
    135. {
    136. public:
    137. Color32(DWORD dwColor)
    138. {
    139. this->a = (dwColor >> 24) & 0xff;
    140. this->r = (dwColor >> 16) & 0xff;
    141. this->g = (dwColor >> 8) & 0xff;
    142. this->b = (dwColor) & 0xff;
    143. }
    144. Color32(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) :
    145. r(red), g(green), b(blue), a(alpha)
    146. {
    147. }
    148. static Color32 Yellow() { return Color32(255, 255, 000, 255); }
    149. static Color32 White() { return Color32(255, 255, 255, 255); }
    150. static Color32 Black() { return Color32(0, 0, 0, 255); }
    151. static Color32 Red() { return Color32(255, 0, 0, 255); }
    152. static Color32 Green() { return Color32(0, 255, 0, 255); }
    153. static Color32 Blue() { return Color32(0, 0, 255, 255); }
    154. private:
    155. union
    156. {
    157. struct
    158. {
    159. unsigned char r;
    160. unsigned char g;
    161. unsigned char b;
    162. unsigned char a;
    163. };
    164. unsigned long color;
    165. };
    166. };
    167. template< class T >
    168. struct WeakToken
    169. {
    170. T* m_realptr; //its value is: realptr + 8
    171. DWORD32 m_refcount;
    172. };
    173. template< class T >
    174. class WeakPtr
    175. {
    176. private:
    177. WeakToken<T>* m_ptr;
    178. public:
    179. T* GetData()
    180. {
    181. if (!ValidPointer(m_ptr))
    182. return NULL;
    183. if (!ValidPointer(&m_ptr->m_realptr))
    184. return NULL;
    185. T* ptr = m_ptr->m_realptr;
    186. if (!ValidPointer(ptr))
    187. return NULL;
    188. return (T*)((DWORD_PTR)(ptr)-0x8);
    189. }
    190. };
    191. template< class T >
    192. class EncryptedPtr
    193. {
    194. public:
    195. DWORD64 m_encryptedPtr;
    196. DWORD64 m_pointerKey;
    197. public:
    198. T* GetPtr()
    199. {
    200. return (T*)(DecryptPointer(this->m_encryptedPtr, (DWORD64)(this->m_pointerKey)));
    201. }
    202. };
    203. typedef D3DXMATRIXA16 LinearTransform;
    204. struct AxisAlignedBox
    205. {
    206. D3DXVECTOR4 min;
    207. D3DXVECTOR4 max;
    208. D3DXVECTOR4 crnr2;
    209. D3DXVECTOR4 crnr3;
    210. D3DXVECTOR4 crnr4;
    211. D3DXVECTOR4 crnr5;
    212. D3DXVECTOR4 crnr6;
    213. D3DXVECTOR4 crnr7;
    214. /*
    215. .5------8
    216. .' | .'|
    217. 6---+--7' |
    218. | | | |
    219. | ,4--+---3
    220. |.' | .'
    221. 1------2'
    222. 1 = min
    223. 8 = max
    224. */
    225. void updateBox(AxisAlignedBox* box_in)
    226. {
    227. this->crnr2 = D3DXVECTOR4(box_in->max.x, box_in->min.y, box_in->min.z, 0.0);
    228. this->crnr3 = D3DXVECTOR4(box_in->max.x, box_in->min.y, box_in->max.z, 0.0);
    229. this->crnr4 = D3DXVECTOR4(box_in->min.x, box_in->min.y, box_in->max.z, 0.0);
    230. this->crnr5 = D3DXVECTOR4(box_in->min.x, box_in->max.y, box_in->max.z, 0.0);
    231. this->crnr6 = D3DXVECTOR4(box_in->min.x, box_in->max.y, box_in->min.z, 0.0);
    232. this->crnr7 = D3DXVECTOR4(box_in->max.x, box_in->max.y, box_in->min.z, 0.0);
    233. this->min = box_in->min;
    234. this->max = box_in->max;
    235. }
    236. };
    237. struct LinearTransform_AABB
    238. {
    239. public:
    240. LinearTransform m_Transform;
    241. AxisAlignedBox m_Box;
    242. char _pad[0x200];
    243. };
    244. class ClientPlayerManager
    245. {
    246. public:
    247. };
    248. class ClientGameContext
    249. {
    250. public:
    251. char _0x0000[0x20];
    252. ClientPlayerManager* m_playerManager; //0x0020
    253. char _0x0028[0x40 - 8];
    254. ClientPlayerManager* m_clientPlayerManager; //0x0060
    255. static ClientGameContext* GetInstance()
    256. {
    257. return *(ClientGameContext**)(CLIENT_GAME_CONTEXT);
    258. }
    259. };
    260. class HealthComponent
    261. {
    262. public:
    263. char pad_0000[32]; //0x0000
    264. float m_Health; //0x0020
    265. float m_MaxHealth; //0x0024
    266. char pad_0028[24]; //0x0028
    267. float m_VehicleHealth; //0x0040
    268. char pad_00EA[168]; //0x00EA
    269. float m_VehicleMaxHealth; //0x00EC
    270. char pad_00F0[3922]; //0x00F0
    271. }; //Size: 0x1042
    272. class UpdatePoseResultData
    273. {
    274. public:
    275. class QuatTransform
    276. {
    277. public:
    278. D3DXVECTOR4 m_TransAndScale; //0x0000
    279. D3DXVECTOR4 m_Rotation; //0x0010
    280. };//Size=0x0020
    281. char _0x0000[0x20];
    282. class UpdatePoseResultData::QuatTransform* m_ActiveWorldTransforms; //0x0020
    283. class UpdatePoseResultData::QuatTransform* m_ActiveLocalTransforms; //0x0028
    284. int m_Slot; //0x0030
    285. int m_ReaderIndex; //0x0034
    286. bool m_ValidTransforms; //0x0038
    287. bool m_PoseUpdateEnabled; //0x0039
    288. bool m_PoseNeeded; //0x003A
    289. };
    290. class BoneCollisionComponent
    291. {
    292. public:
    293. UpdatePoseResultData m_ragdollTransforms; //0x0000
    294. };
    295. class VehicleEntityData;
    296. class ClientVehicleEntity
    297. {
    298. public:
    299. virtual class TypeInfo* GetType();
    300. virtual void Function1(); //
    301. virtual void Function2(); //
    302. virtual void Function3(); //
    303. virtual void Function4(); //
    304. virtual void Function5(); //
    305. virtual void Function6(); //
    306. virtual void Function7(); //
    307. virtual void Function8(); //
    308. virtual void Function9(); //
    309. virtual void Function10(); //
    310. virtual void Function11(); //
    311. virtual void Function12(); //
    312. virtual void Function13(); //
    313. virtual void Function14(); //
    314. virtual void Function15(); //
    315. virtual void Function16(); //
    316. virtual void Function17(); //
    317. virtual void Function18(); //
    318. virtual void Function19(); //
    319. virtual void Function20(); //
    320. virtual void Function21(); //
    321. virtual void Function22(); //
    322. virtual void Function23(); //
    323. virtual void Function24(); //
    324. virtual void Function25(); //
    325. virtual void GetTransformAABB(LinearTransform_AABB& mTransform);// 26
    326. VehicleEntityData* vehicleEntityData()
    327. {
    328. return *(VehicleEntityData**)((BYTE*)this + 0x38);
    329. };
    330. HealthComponent* healthcomponent()
    331. {
    332. return *(HealthComponent**)((BYTE*)this + 0x2E8);
    333. };
    334. };//Size: 0x1040
    335. class ClientSoldierEntity
    336. {
    337. public:
    338. void GetTransform(LinearTransform* OutMatrix)
    339. {
    340. DWORD_PTR m_collection = *(DWORD_PTR*)((DWORD_PTR)this + 0x40);
    341. unsigned __int8 _9 = *(unsigned __int8*)(m_collection + 9);
    342. unsigned __int8 _10 = *(unsigned __int8*)(m_collection + 10);
    343. DWORD_PTR ComponentCollectionOffset = 0x20 * (_10 + (2 * _9));
    344. *(LinearTransform*)OutMatrix = *(LinearTransform*)(m_collection + ComponentCollectionOffset + 0x10);
    345. }
    346. char pad_0000[744]; //0x0000
    347. class HealthComponent* healthcomponent; //0x02E8
    348. char pad_02F0[976]; //0x02F0
    349. float authorativeYaw; //0x06C0
    350. char pad_06C4[28]; //0x06C4
    351. class BoneCollisionComponent* bonecollisioncomponent; //0x06E0
    352. char pad_06E8[704]; //0x06E8
    353. int8_t poseType; //0x09A8
    354. char pad_09A9[207]; //0x09A9
    355. int8_t N0000019E; //0x0A78
    356. int8_t N00000264; //0x0A79
    357. int8_t N00000268; //0x0A7A
    358. int8_t occluded; //0x0A7B
    359. char pad_0A7C[532]; //0x0A7C
    360. D3DXVECTOR3 location; //0x0C90
    361. char pad_0C9C[936]; //0x0C9C
    362. bool IsValid()
    363. {
    364. return (this->healthcomponent->m_Health > 0.1f && this->healthcomponent->m_Health <= this->healthcomponent->m_MaxHealth);
    365. }
    366. bool IsDead()
    367. {
    368. return !(this->healthcomponent->m_Health > 0.1f);
    369. }
    370. bool IsVisible()
    371. {
    372. return (this->occluded == false);
    373. }
    374. AxisAlignedBox GetAABB()
    375. {
    376. AxisAlignedBox aabb = AxisAlignedBox();
    377. if (this->poseType == 0) // standing
    378. {
    379. aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);
    380. aabb.max = D3DXVECTOR4(0.350000f, 1.700000f, 0.350000f, 0);
    381. }
    382. if (this->poseType == 1) // crouching
    383. {
    384. aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);
    385. aabb.max = D3DXVECTOR4(0.350000f, 1.150000f, 0.350000f, 0);
    386. }
    387. if (this->poseType == 2) // prone
    388. {
    389. aabb.min = D3DXVECTOR4(-0.350000f, 0.000000f, -0.350000f, 0);
    390. aabb.max = D3DXVECTOR4(0.350000f, 0.400000f, 0.350000f, 0);
    391. }
    392. return aabb;
    393. }
    394. bool GetBonePos(int BoneId, D3DXVECTOR3* vOut);
    395. }; //Size: 0x1034
    396. class ClientPlayer
    397. {
    398. public:
    399. virtual ~ClientPlayer();
    400. virtual DWORD_PTR GetCharacterEntity(); //=> ClientSoldierEntity + 0x268
    401. virtual DWORD_PTR GetCharacterUserData(); //=> PlayerCharacterUserData
    402. virtual class EntryComponent* GetEntryComponent();
    403. virtual bool InVehicle();
    404. virtual unsigned int getId();
    405. char pad_0008[16]; //0x0008
    406. char* name; //0x0018
    407. char pad_0020[32]; //0x0020b
    408. char szName[8]; //0x0040
    409. char pad_0048[7168]; //0x0048
    410. uint8_t teamId; //0x1C48
    411. char pad_1C49[263]; //0x1C49
    412. fb::WeakPtr<ClientSoldierEntity> clientSoldierEntity; //0x1D50
    413. char pad_1D58[8]; //0x1D58
    414. fb::WeakPtr<ClientVehicleEntity> clientVehicleEntity; //0x1D60
    415. char pad_1D68[704]; //0x1D68
    416. }; //Size: 0x2028
    417. class RenderView
    418. {
    419. public:
    420. char pad_0000[1264]; //0x0000
    421. D3DXMATRIXA16 viewProj; //0x04F0
    422. char pad_0530[368]; //0x0530
    423. D3DXVECTOR3 cameraPos; //0x06A0
    424. char pad_06AC[4632]; //0x06AC
    425. }; //Size: 0x05C0
    426. class GameRenderer
    427. {
    428. public:
    429. char pad_0000[96]; //0x0000
    430. class RenderView* renderView; //0x0060
    431. char pad_0068[32]; //0x0068
    432. static GameRenderer* GetInstance()
    433. {
    434. return *(GameRenderer**)OFFSET_GAMERENDERER;
    435. }
    436. }; //Size: 0x0088
    437. enum BoneIds
    438. {
    439. BONE_Reference = 0x0,
    440. BONE_AITrajectory = 0x1,
    441. BONE_Hips = 0x2,
    442. BONE_Spine = 0x3,
    443. BONE_Spine1 = 0x4,
    444. BONE_Spine2 = 0x5,
    445. BONE_Neck = 0x6,
    446. BONE_Neck1 = 0x7,
    447. BONE_Head = 0x8,
    448. BONE_HeadEnd = 0x9,
    449. BONE_FACIAL_C_FacialRoot = 0xA,
    450. BONE_FACIAL_LOD1_C_Forehead = 0xB,
    451. BONE_FACIAL_LOD1_L_ForeheadIn = 0xC,
    452. BONE_FACIAL_LOD1_R_ForeheadIn = 0xD,
    453. BONE_FACIAL_LOD1_L_ForeheadMid = 0xE,
    454. BONE_FACIAL_LOD1_R_ForeheadMid = 0xF,
    455. BONE_FACIAL_LOD1_L_ForeheadOut = 0x10,
    456. BONE_FACIAL_LOD1_R_ForeheadOut = 0x11,
    457. BONE_FACIAL_LOD1_L_EyesackUpper = 0x12,
    458. BONE_FACIAL_LOD1_R_EyesackUpper = 0x13,
    459. BONE_FACIAL_LOD1_L_EyelidUpperFurrow = 0x14,
    460. BONE_FACIAL_LOD1_R_EyelidUpperFurrow = 0x15,
    461. BONE_FACIAL_LOD1_L_EyelidUpper = 0x16,
    462. BONE_FACIAL_LOD1_R_EyelidUpper = 0x17,
    463. BONE_FACIAL_LOD1_L_Eyeball = 0x18,
    464. BONE_FACIAL_LOD1_L_Pupil = 0x19,
    465. BONE_FACIAL_LOD1_R_Eyeball = 0x1A,
    466. BONE_FACIAL_LOD1_R_Pupil = 0x1B,
    467. BONE_FACIAL_LOD1_L_EyelidLower = 0x1C,
    468. BONE_FACIAL_LOD1_R_EyelidLower = 0x1D,
    469. BONE_FACIAL_LOD1_L_EyesackLower = 0x1E,
    470. BONE_FACIAL_LOD1_R_EyesackLower = 0x1F,
    471. BONE_FACIAL_LOD1_L_CheekInner = 0x20,
    472. BONE_FACIAL_LOD1_R_CheekInner = 0x21,
    473. BONE_FACIAL_LOD1_L_CheekOuter = 0x22,
    474. BONE_FACIAL_LOD1_R_CheekOuter = 0x23,
    475. BONE_FACIAL_LOD1_C_NoseBridge = 0x24,
    476. BONE_FACIAL_LOD1_L_NasolabialBulge = 0x25,
    477. BONE_FACIAL_LOD1_R_NasolabialBulge = 0x26,
    478. BONE_FACIAL_LOD1_L_NasolabialFurrow = 0x27,
    479. BONE_FACIAL_LOD1_R_NasolabialFurrow = 0x28,
    480. BONE_FACIAL_LOD1_L_CheekLower = 0x29,
    481. BONE_FACIAL_LOD1_R_CheekLower = 0x2A,
    482. BONE_FACIAL_LOD1_L_Ear = 0x2B,
    483. BONE_FACIAL_LOD1_R_Ear = 0x2C,
    484. BONE_FACIAL_LOD1_C_Nose = 0x2D,
    485. BONE_FACIAL_LOD1_C_NoseLower = 0x2E,
    486. BONE_FACIAL_LOD1_L_Nostril = 0x2F,
    487. BONE_FACIAL_LOD1_R_Nostril = 0x30,
    488. BONE_FACIAL_LOD1_C_Mouth = 0x31,
    489. BONE_FACIAL_LOD1_C_LipUpper = 0x32,
    490. BONE_FACIAL_LOD1_C_LipUpperInner = 0x33,
    491. BONE_FACIAL_LOD1_L_LipUpper = 0x34,
    492. BONE_FACIAL_LOD1_L_LipUpperInner = 0x35,
    493. BONE_FACIAL_LOD1_R_LipUpper = 0x36,
    494. BONE_FACIAL_LOD1_R_LipUpperInner = 0x37,
    495. BONE_FACIAL_LOD1_L_LipUpperOuter = 0x38,
    496. BONE_FACIAL_LOD1_L_LipUpperOuterInner = 0x39,
    497. BONE_FACIAL_LOD1_R_LipUpperOuter = 0x3A,
    498. BONE_FACIAL_LOD1_R_LipUpperOuterInner = 0x3B,
    499. BONE_FACIAL_LOD1_L_LipCorner = 0x3C,
    500. BONE_FACIAL_LOD1_L_LipCornerInner = 0x3D,
    501. BONE_FACIAL_LOD1_R_LipCorner = 0x3E,
    502. BONE_FACIAL_LOD1_R_LipCornerInner = 0x3F,
    503. BONE_FACIAL_LOD1_C_LipLower = 0x40,
    504. BONE_FACIAL_LOD1_C_LipLowerInner = 0x41,
    505. BONE_FACIAL_LOD1_L_LipLower = 0x42,
    506. BONE_FACIAL_LOD1_L_LipLowerInner = 0x43,
    507. BONE_FACIAL_LOD1_R_LipLower = 0x44,
    508. BONE_FACIAL_LOD1_R_LipLowerInner = 0x45,
    509. BONE_FACIAL_LOD1_L_LipLowerOuter = 0x46,
    510. BONE_FACIAL_LOD1_L_LipLowerOuterInner = 0x47,
    511. BONE_FACIAL_LOD1_R_LipLowerOuter = 0x48,
    512. BONE_FACIAL_LOD1_R_LipLowerOuterInner = 0x49,
    513. BONE_FACIAL_LOD1_C_Jaw = 0x4A,
    514. BONE_FACIAL_LOD1_C_Chin = 0x4B,
    515. BONE_FACIAL_LOD1_L_ChinSide = 0x4C,
    516. BONE_FACIAL_LOD1_R_ChinSide = 0x4D,
    517. BONE_FACIAL_LOD1_C_Tongue1 = 0x4E,
    518. BONE_FACIAL_LOD1_C_Tongue2 = 0x4F,
    519. BONE_FACIAL_LOD1_C_Tongue3 = 0x50,
    520. BONE_FACIAL_LOD1_C_Tongue4 = 0x51,
    521. BONE_FACIAL_LOD1_L_Masseter = 0x52,
    522. BONE_FACIAL_LOD1_R_Masseter = 0x53,
    523. BONE_FACIAL_LOD1_C_UnderChin = 0x54,
    524. BONE_FACIAL_LOD1_L_UnderChin = 0x55,
    525. BONE_FACIAL_LOD1_R_UnderChin = 0x56,
    526. BONE_Head_Prop = 0x57,
    527. BONE_Head_Phys = 0x58,
    528. BONE_FACIAL_C_Neck2Root = 0x59,
    529. BONE_FACIAL_LOD1_C_AdamsApple = 0x5A,
    530. BONE_HeadRoll = 0x5B,
    531. BONE_Neck_Phys = 0x5C,
    532. BONE_SpineX = 0x5D,
    533. BONE_Wep_Aim = 0x5E,
    534. BONE_SpineXRight = 0x5F,
    535. BONE_RightShoulder = 0x60,
    536. BONE_RightArm = 0x61,
    537. BONE_RightForeArm = 0x62,
    538. BONE_RightHand = 0x63,
    539. BONE_RightHandAttach = 0x64,
    540. BONE_RightHandIndex0 = 0x65,
    541. BONE_RightHandIndex1 = 0x66,
    542. BONE_RightHandIndex2 = 0x67,
    543. BONE_RightHandIndex3 = 0x68,
    544. BONE_RightHandIndex4 = 0x69,
    545. BONE_RightHandMiddle0 = 0x6A,
    546. BONE_RightHandMiddle1 = 0x6B,
    547. BONE_RightHandMiddle2 = 0x6C,
    548. BONE_RightHandMiddle3 = 0x6D,
    549. BONE_RightHandMiddle4 = 0x6E,
    550. BONE_RightHandThumb0 = 0x6F,
    551. BONE_RightHandThumb1 = 0x70,
    552. BONE_RightHandThumb2 = 0x71,
    553. BONE_RightHandThumb3 = 0x72,
    554. BONE_RightHandThumb4 = 0x73,
    555. BONE_RightHandPinky0 = 0x74,
    556. BONE_RightHandPinky1 = 0x75,
    557. BONE_RightHandPinky2 = 0x76,
    558. BONE_RightHandPinky3 = 0x77,
    559. BONE_RightHandPinky4 = 0x78,
    560. BONE_RightHandRing0 = 0x79,
    561. BONE_RightHandRing1 = 0x7A,
    562. BONE_RightHandRing2 = 0x7B,
    563. BONE_RightHandRing3 = 0x7C,
    564. BONE_RightHandRing4 = 0x7D,
    565. BONE_RightForeArmRoll = 0x7E,
    566. BONE_RightForeArmRoll1 = 0x7F,
    567. BONE_RightForeArmRoll2 = 0x80,
    568. BONE_RightForeArm_Upper = 0x81,
    569. BONE_RightForeArm_Lower = 0x82,
    570. BONE_RightElbowRoll = 0x83,
    571. BONE_RightArmRoll = 0x84,
    572. BONE_RightArmRoll1 = 0x85,
    573. BONE_RightArmBend = 0x86,
    574. BONE_RightShoulder_Phys = 0x87,
    575. BONE_SpineXLeft = 0x88,
    576. BONE_LeftShoulder = 0x89,
    577. BONE_LeftArm = 0x8A,
    578. BONE_LeftForeArm = 0x8B,
    579. BONE_LeftHand = 0x8C,
    580. BONE_LeftHandAttach = 0x8D,
    581. BONE_LeftHandIndex0 = 0x8E,
    582. BONE_LeftHandIndex1 = 0x8F,
    583. BONE_LeftHandIndex2 = 0x90,
    584. BONE_LeftHandIndex3 = 0x91,
    585. BONE_LeftHandIndex4 = 0x92,
    586. BONE_LeftHandMiddle0 = 0x93,
    587. BONE_LeftHandMiddle1 = 0x94,
    588. BONE_LeftHandMiddle2 = 0x95,
    589. BONE_LeftHandMiddle3 = 0x96,
    590. BONE_LeftHandMiddle4 = 0x97,
    591. BONE_LeftHandThumb0 = 0x98,
    592. BONE_LeftHandThumb1 = 0x99,
    593. BONE_LeftHandThumb2 = 0x9A,
    594. BONE_LeftHandThumb3 = 0x9B,
    595. BONE_LeftHandThumb4 = 0x9C,
    596. BONE_LeftHandPinky0 = 0x9D,
    597. BONE_LeftHandPinky1 = 0x9E,
    598. BONE_LeftHandPinky2 = 0x9F,
    599. BONE_LeftHandPinky3 = 0xA0,
    600. BONE_LeftHandPinky4 = 0xA1,
    601. BONE_LeftHandRing0 = 0xA2,
    602. BONE_LeftHandRing1 = 0xA3,
    603. BONE_LeftHandRing2 = 0xA4,
    604. BONE_LeftHandRing3 = 0xA5,
    605. BONE_LeftHandRing4 = 0xA6,
    606. BONE_LeftForeArmRoll = 0xA7,
    607. BONE_LeftForeArmRoll1 = 0xA8,
    608. BONE_LeftForeArmRoll2 = 0xA9,
    609. BONE_LeftForeArm_Upper = 0xAA,
    610. BONE_LeftForeArm_Lower = 0xAB,
    611. BONE_LeftElbowRoll = 0xAC,
    612. BONE_LeftArmRoll = 0xAD,
    613. BONE_LeftArmRoll1 = 0xAE,
    614. BONE_LeftArmBend = 0xAF,
    615. BONE_LeftShoulder_Phys = 0xB0,
    616. BONE_Wep_SpineX = 0xB1,
    617. BONE_Wep_Root = 0xB2,
    618. BONE_Wep_Align = 0xB3,
    619. BONE_Wep_Trigger = 0xB4,
    620. BONE_Wep_Slide = 0xB5,
    621. BONE_Wep_Grenade1 = 0xB6,
    622. BONE_Wep_Grenade2 = 0xB7,
    623. BONE_IK_Joint_LeftHand = 0xB8,
    624. BONE_IK_Joint_RightHand = 0xB9,
    625. BONE_Wep_Physic1 = 0xBA,
    626. BONE_Wep_Physic2 = 0xBB,
    627. BONE_Wep_Physic3 = 0xBC,
    628. BONE_Wep_Physic4 = 0xBD,
    629. BONE_Wep_Physic5 = 0xBE,
    630. BONE_Wep_Extra1 = 0xBF,
    631. BONE_Wep_Extra2 = 0xC0,
    632. BONE_Wep_Extra3 = 0xC1,
    633. BONE_Wep_Extra4 = 0xC2,
    634. BONE_Wep_Extra5 = 0xC3,
    635. BONE_Wep_FX = 0xC4,
    636. BONE_Wep_ButtStock = 0xC5,
    637. BONE_IK_Dyn_LeftHand = 0xC6,
    638. BONE_IK_Dyn_RightHand = 0xC7,
    639. BONE_Wep_Belt1 = 0xC8,
    640. BONE_Wep_Belt2 = 0xC9,
    641. BONE_Wep_Belt3 = 0xCA,
    642. BONE_Wep_Belt4 = 0xCB,
    643. BONE_Wep_Belt5 = 0xCC,
    644. BONE_Wep_Belt6 = 0xCD,
    645. BONE_Wep_Belt7 = 0xCE,
    646. BONE_Wep_Belt8 = 0xCF,
    647. BONE_Wep_Belt9 = 0xD0,
    648. BONE_Wep_Belt10 = 0xD1,
    649. BONE_Wep_Mag = 0xD2,
    650. BONE_Wep_Mag_Ammo = 0xD3,
    651. BONE_Wep_Mag_Extra1 = 0xD4,
    652. BONE_Wep_Scope1 = 0xD5,
    653. BONE_Wep_Scope2 = 0xD6,
    654. BONE_Wep_Bipod1 = 0xD7,
    655. BONE_Wep_Bipod2 = 0xD8,
    656. BONE_Wep_Bipod3 = 0xD9,
    657. BONE_Wep_Belt_Out1 = 0xDA,
    658. BONE_Wep_Belt_Out2 = 0xDB,
    659. BONE_Wep_Belt_Out3 = 0xDC,
    660. BONE_Wep_Belt_Out4 = 0xDD,
    661. BONE_Wep_Belt_Out5 = 0xDE,
    662. BONE_Wep_Belt_Out6 = 0xDF,
    663. BONE_Wep_Belt_Out7 = 0xE0,
    664. BONE_Wep_Belt_Out8 = 0xE1,
    665. BONE_Wep_Belt_Out9 = 0xE2,
    666. BONE_Wep_Belt_Out10 = 0xE3,
    667. BONE_Wep_Charm1 = 0xE4,
    668. BONE_Spine2_Phys = 0xE5,
    669. BONE_RightArmpit = 0xE6,
    670. BONE_RightDeltoidBulge = 0xE7,
    671. BONE_LeftArmpit = 0xE8,
    672. BONE_LeftDeltoidBulge = 0xE9,
    673. BONE_BackPackAnchor = 0xEA,
    674. BONE_BackPackRoot = 0xEB,
    675. BONE_BackPackPhys = 0xEC,
    676. BONE_Spine1_Phys = 0xED,
    677. BONE_Spine_Phys = 0xEE,
    678. BONE_LeftUpLeg = 0xEF,
    679. BONE_LeftKneeUp = 0xF0,
    680. BONE_LeftUpLegRoll = 0xF1,
    681. BONE_LeftUpLegRoll_Phys = 0xF2,
    682. BONE_LeftKneeRoll = 0xF3,
    683. BONE_LeftKneeUp_Phys = 0xF4,
    684. BONE_LeftLeg = 0xF5,
    685. BONE_LeftKneeLow = 0xF6,
    686. BONE_LeftKneeLow_Phys = 0xF7,
    687. BONE_LeftFoot = 0xF8,
    688. BONE_LeftToeBase = 0xF9,
    689. BONE_LeftToe = 0xFA,
    690. BONE_LeftFootAttach = 0xFB,
    691. BONE_LeftAnkle = 0xFC,
    692. BONE_LeftHipsRoll = 0xFD,
    693. BONE_RightUpLeg = 0xFE,
    694. BONE_RightKneeUp = 0xFF,
    695. BONE_RightUpLegRoll = 0x100,
    696. BONE_RightUpLegRoll_Phys = 0x101,
    697. BONE_RightKneeRoll = 0x102,
    698. BONE_RightKneeUp_Phys = 0x103,
    699. BONE_RightLeg = 0x104,
    700. BONE_RightKneeLow = 0x105,
    701. BONE_RightKneeLow_Phys = 0x106,
    702. BONE_RightFoot = 0x107,
    703. BONE_RightToeBase = 0x108,
    704. BONE_RightToe = 0x109,
    705. BONE_RightFootAttach = 0x10A,
    706. BONE_RightAnkle = 0x10B,
    707. BONE_RightHipsRoll = 0x10C,
    708. BONE_Hips_Phys = 0x10D,
    709. BONE_Trajectory = 0x10E,
    710. BONE_TrajectoryEnd = 0x10F,
    711. BONE_CameraBase = 0x110,
    712. BONE_CameraJoint = 0x111,
    713. BONE_WepRootOffset = 0x112,
    714. BONE_Connect = 0x113,
    715. BONE_ConnectEnd = 0x114,
    716. BONE_LeftFootPhaseEnd = 0x115,
    717. BONE_RightFootPhaseEnd = 0x116,
    718. BONE_RightAnkleEffectorAux = 0x117,
    719. BONE_LeftAnkleEffectorAux = 0x118,
    720. BONE_Wep_ProxyRoot = 0x119,
    721. BONE_Wep_Proxy1 = 0x11A,
    722. BONE_Wep_Proxy2 = 0x11B,
    723. BONE_Wep_ProxyExtra1 = 0x11C,
    724. BONE_Wep_ProxyExtra2 = 0x11D,
    725. BONE_SpineX_Driver = 0x11E,
    726. BONE_FacePosesAnimation = 0x11F
    727. };
    728. class VehicleEntityData
    729. {
    730. public:
    731. char pad_0000[816]; //0x0000
    732. char* m_NameSid; //0x0330
    733. char pad_0338[3336]; //0x0338
    734. }; //Size: 0x1040
    735. enum LootPickupType
    736. {
    737. LootPickupType_Weapon, //0x0000
    738. LootPickupType_Gadget, //0x0001
    739. LootPickupType_Health, //0x0002
    740. LootPickupType_Armor, //0x0003
    741. LootPickupType_Ammo, //0x0004
    742. LootPickupType_Sidearm, //0x0005
    743. LootPickupType_Melee, //0x0006
    744. LootPickupType_Throwable, //0x0007
    745. LootPickupType_Backpack, //0x0008
    746. LootPickupType_ArmorVest, //0x0009
    747. LootPickupType_COUNT, //0x000A
    748. LootPickupType_INVALID //0x000B
    749. };
    750. enum SharedAmmoType
    751. {
    752. SharedAmmoType_Pistol, //0x0000
    753. SharedAmmoType_SMG, //0x0001
    754. SharedAmmoType_LMG, //0x0002
    755. SharedAmmoType_Rifle, //0x0003
    756. SharedAmmoType_Shotgun, //0x0004
    757. SharedAmmoType_Sniper, //0x0005
    758. SharedAmmoType_COUNT //0x0006
    759. };
    760. enum WeaponClassEnum
    761. {
    762. wc12gauge, //0x0000
    763. wc338Magnum, //0x0001
    764. wc357Magnum, //0x0002
    765. wc44Magnum, //0x0003
    766. wc45cal, //0x0004
    767. wc46x30mm, //0x0005
    768. wc50cal, //0x0006
    769. wc545x45mmWP, //0x0007
    770. wc556x45mmNATO, //0x0008
    771. wc57x28mm, //0x0009
    772. wc58x42mm, //0x000A
    773. wc762x39mmWP, //0x000B
    774. wc762x51mmNATO, //0x000C
    775. wc762x54mmR, //0x000D
    776. wc9x19mm, //0x000E
    777. wc9x39mm, //0x000F
    778. wcAssault, //0x0010
    779. wcShotgun, //0x0011
    780. wcSmg, //0x0012
    781. wcLmg, //0x0013
    782. wcSniper, //0x0014
    783. wcUgl, //0x0015
    784. wcHgr, //0x0016
    785. wcAt, //0x0017
    786. wcATMine, //0x0018
    787. wcC4, //0x0019
    788. wcAutoInjector, //0x001A
    789. wcKnife, //0x001B
    790. wcBuff, //0x001C
    791. wcLaserDesignator, //0x001D
    792. wcLaserPainter, //0x001E
    793. wcMedKit, //0x001F
    794. wcMortarStrike, //0x0020
    795. wcPowerTool, //0x0021
    796. wcTracerDart, //0x0022
    797. wcRadioBeacon, //0x0023
    798. wcEodBot, //0x0024
    799. wcReconMav, //0x0025
    800. wcUGS, //0x0026
    801. wcUnarmed, //0x0027
    802. wcAmmoCrate, //0x0028
    803. wcCount, //0x0029
    804. wcNone //0x002A
    805. };
    806. };
    1. class ClientPlayer {
    2. public:
    3. virtual~ClientPlayer();
    4. virtual DWORD_PTR GetCharacterEntity(); //=> ClientSoldierEntity + 0x268
    5. virtual DWORD_PTR GetCharacterUserData(); //=> PlayerCharacterUserData
    6. virtual class EntryComponent* GetEntryComponent();
    7. virtual bool InVehicle();
    8. virtual unsigned int getId();
    9. char _0x0008[16];
    10. char* name; //0x0018
    11. char pad_0020[32]; //0x0020
    12. char szName[8]; //0x0040
    13. char pad_0048[7168]; //0x0048
    14. uint8_t teamId; //0x1C48
    15. char pad_1C49[7]; //0x0048
    16. ClientSoldierEntity* clientSoldierEntity; //0x1D50
    17. char pad_1D58[8]; //0x0048
    18. ClientVehicleEntity* clientVehicleEntity; //0x1D60
    19. };
    1. class ClientSoldierEntity {
    2. public:
    3. HealthComponent* healthcomponent; //0x02E8
    4. BoneCollisionComponent* BoneCollisionComponent//0x6E0
    5. uint8_t occluded; //0x0A7B
    6. uint8_t poseType; //0x09A8
    7. Vector location; //0xC88
    8. }; //Size: 0x104C

    已经完成

    1. class GameRenderer {
    2. public:
    3. char pad_0000[96]; //0x0000
    4. class RenderView* renderView; //0x0060
    5. char pad_0068[4112]; //0x0068
    6. static GameRenderer* GetInstance() {
    7. return *(GameRenderer**)OFFSET_GAMERENDERER;
    8. }
    9. }; //Size: 0x0088
    1. class RenderView
    2. {
    3. public:
    4. char _0x0000[312];
    5. float m_FovY; //0x0138
    6. float defaultFovY; //0x013C
    7. char _0x0140[48];
    8. DWORD m_dirtyFlags; //0x0170
    9. char _0x0174[364];
    10. float m_FovX; //0x02E0
    11. float m_depthToWidthRatio; //0x02E4
    12. float m_fovScale; //0x02E8
    13. float m_fovScaleSqr; //0x02EC
    14. Matrix4x4 m_viewMatrix; //0x02F0
    15. Matrix4x4 m_viewMatrixTranspose; //0x0330
    16. Matrix4x4 m_viewMatrixInverse; //0x0370
    17. Matrix4x4 m_ProjectionMatrix; //0x03B0
    18. Matrix4x4 N09CECBCA; //0x03F0
    19. Matrix4x4 N09CECBD2; //0x0430
    20. Matrix4x4 N09CF2713; //0x0470
    21. Matrix4x4 N05AA0ABA; //0x04B0
    22. Matrix4x4 m_ViewProj; //0x04F0
    23. };//Size: 0x0530
    1. class HealthComponent {
    2. public:
    3. char pad_0000[32]; //0x0000
    4. float m_Health; //0x0020
    5. float m_MaxHealth; //0x0024
    6. char pad_0028[24]; //0x0028
    7. float m_VehicleHealth; //0x0040
    8. //char pad_0044[4092]; //0x0044
    9. }; //Size: 0x0040
    1. class BoneCollisionComponent{
    2. public:
    3. UpdatePoseResultData m_ragdollTransforms; //0x0000
    4. };
    1. class UpdatePoseResultData{
    2. public:
    3. char _0x0000[0x20];
    4. class UpdatePoseResultData::QuatTransform* m_ActiveWorldTransforms; //0x0020
    5. class UpdatePoseResultData::QuatTransform* m_ActiveLocalTransforms; //0x0028
    6. int m_Slot; //0x0030
    7. int m_ReaderIndex; //0x0034
    8. bool m_ValidTransforms; //0x0038
    9. bool m_PoseUpdateEnabled; //0x0039
    10. bool m_PoseNeeded; //0x003A
    11. };
    1. class QuatTransform{
    2. public:
    3. Vec4 m_TransAndScale; //0x0000
    4. Vec4 m_Rotation; //0x0010
    5. };//Size=0x0020