If you happen to remember skeletal esp code i posted, i improved it a little bit.
enum Bones_t { BONE_PELVIS, BONE_LEFT_THIGH, BONE_LEFT_CALF, BONE_LEFT_FOOT, BONE_LEFT_TOE, BONE_RIGHT_THIGH, BONE_RIGHT_CALF, BONE_RIGHT_FOOT, BONE_RIGHT_TOE, BONE_SPINE, BONE_SPINE1, BONE_SPINE3, BONE_SPINE4, BONE_NECK, BONE_HEAD, BONE_LEFT_CLAVICLE, BONE_LEFT_UPPER_ARM, BONE_LEFT_FOREARM, BONE_LEFT_HAND, BONE_LEFT_FINGER2, BONE_LEFT_FINGER21, BONE_LEFT_FINGER22, BONE_LEFT_FINGER1, BONE_LEFT_FINGER11, BONE_LEFT_FINGER12, BONE_LEFT_FINGER0, BONE_LEFT_FINGER01, BONE_LEFT_FINGER02, BONE_RIGHT_CLAVICLE, BONE_RIGHT_UPPER_ARM, BONE_RIGHT_FOREARM, BONE_RIGHT_HAND, BONE_RIGHT_FINGER2, BONE_RIGHT_FINGER21, BONE_RIGHT_FINGER22, BONE_RIGHT_FINGER1, BONE_RIGHT_FINGER11, BONE_RIGHT_FINGER12, BONE_RIGHT_FINGER0, BONE_RIGHT_FINGER01, BONE_RIGHT_FINGER02, BONE_RIGHT_WRIST, BONE_LEFT_WRIST, BONE_LEFT_ULNA, BONE_RIGHT_ULNA, BONE_WEAPON_BONE, BONE_WEAPON_BONE_RIGHT_HAND, BONE_WEAPON_BONE_LEFT_HAND, BONE_WEAPON_BONE_CLIP, BONE_FORWARD }; Vector CSPlayer::GetBoneVector( int iBoneNum ) { QAngle qAngle; Vector vBoneVec; matrix3x4_t pMatrix[MAXSTUDIOBONES]; if( this->SetupBones( pMatrix, MAXSTUDIOBONES, BONE_USED_BY_HITBOX, GetTickCount() )) MatrixAngles( pMatrix[ iBoneNum ], qAngle, vBoneVec ); return vBoneVec; } VOID WINAPI DrawSkeleton( LPDIRECT3DDEVICE9 lpDevice, CSPlayer *pBasePlayer ) { Vector vBoneVec[32]; for( size_t i = 1; i < 32; i++ ) // skipping BONE_PELVIS { if( i == BONE_SPINE || i == BONE_SPINE4 || i == BONE_LEFT_CLAVICLE || i == BONE_RIGHT_CLAVICLE || i == BONE_LEFT_FINGER2 || i == BONE_LEFT_FINGER21 || i == BONE_LEFT_FINGER22 || i == BONE_LEFT_FINGER1 || i == BONE_LEFT_FINGER11 || i == BONE_LEFT_FINGER12 || i == BONE_LEFT_FINGER0 || i == BONE_LEFT_FINGER01 || i == BONE_LEFT_FINGER02 ) continue; WorldToScreen( pBasePlayer->GetBoneVector( i ), vBoneVec[i] ); } DrawLine( vBoneVec[BONE_LEFT_UPPER_ARM].x, vBoneVec[BONE_LEFT_UPPER_ARM].y, vBoneVec[BONE_LEFT_HAND].x, vBoneVec[BONE_LEFT_HAND].y ); DrawLine( vBoneVec[BONE_LEFT_HAND].x, vBoneVec[BONE_LEFT_HAND].y, vBoneVec[BONE_RIGHT_UPPER_ARM].x, vBoneVec[BONE_RIGHT_UPPER_ARM].y); DrawLine( vBoneVec[BONE_RIGHT_UPPER_ARM].x, vBoneVec[BONE_RIGHT_UPPER_ARM].y, vBoneVec[BONE_RIGHT_FOREARM].x, vBoneVec[BONE_RIGHT_FOREARM].y); DrawLine( vBoneVec[BONE_RIGHT_FOREARM].x, vBoneVec[BONE_RIGHT_FOREARM].y, vBoneVec[BONE_RIGHT_HAND].x, vBoneVec[BONE_RIGHT_HAND].y); DrawLine( vBoneVec[BONE_LEFT_FOREARM].x, vBoneVec[BONE_LEFT_FOREARM].y, vBoneVec[BONE_LEFT_UPPER_ARM].x, vBoneVec[BONE_LEFT_UPPER_ARM].y ); DrawLine( vBoneVec[BONE_LEFT_UPPER_ARM].x, vBoneVec[BONE_LEFT_UPPER_ARM].y, vBoneVec[BONE_HEAD].x, vBoneVec[BONE_HEAD].y ); DrawLine( vBoneVec[BONE_HEAD].x, vBoneVec[BONE_HEAD].y, vBoneVec[BONE_NECK].x, vBoneVec[BONE_NECK].y ); DrawLine( vBoneVec[BONE_NECK].x, vBoneVec[BONE_NECK].y, vBoneVec[BONE_SPINE3].x, vBoneVec[BONE_SPINE3].y); DrawLine( vBoneVec[BONE_SPINE3].x, vBoneVec[BONE_SPINE3].y, vBoneVec[BONE_SPINE1].x, vBoneVec[BONE_SPINE1].y ); DrawLine( vBoneVec[BONE_SPINE1].x, vBoneVec[BONE_SPINE1].y, vBoneVec[BONE_RIGHT_THIGH].x, vBoneVec[BONE_RIGHT_THIGH].y ); DrawLine( vBoneVec[BONE_RIGHT_THIGH].x, vBoneVec[BONE_RIGHT_THIGH].y, vBoneVec[BONE_LEFT_THIGH].x, vBoneVec[BONE_LEFT_THIGH].y ); DrawLine( vBoneVec[BONE_LEFT_THIGH].x, vBoneVec[BONE_LEFT_THIGH].y, vBoneVec[BONE_LEFT_CALF].x, vBoneVec[BONE_LEFT_CALF].y ); DrawLine( vBoneVec[BONE_LEFT_CALF].x, vBoneVec[BONE_LEFT_CALF].y, vBoneVec[BONE_LEFT_FOOT].x, vBoneVec[BONE_LEFT_FOOT].y ); DrawLine( vBoneVec[BONE_LEFT_FOOT].x, vBoneVec[BONE_LEFT_FOOT].y, vBoneVec[BONE_LEFT_TOE].x, vBoneVec[BONE_LEFT_TOE].y ); DrawLine( vBoneVec[BONE_LEFT_THIGH].x, vBoneVec[BONE_LEFT_THIGH].y, vBoneVec[BONE_RIGHT_CALF].x, vBoneVec[BONE_RIGHT_CALF].y ); DrawLine( vBoneVec[BONE_RIGHT_CALF].x, vBoneVec[BONE_RIGHT_CALF].y, vBoneVec[BONE_RIGHT_FOOT].x, vBoneVec[BONE_RIGHT_FOOT].y ); DrawLine( vBoneVec[BONE_RIGHT_FOOT].x, vBoneVec[BONE_RIGHT_FOOT].y, vBoneVec[BONE_RIGHT_TOE].x, vBoneVec[BONE_RIGHT_TOE].y ); FillARGB( lpDevice, vBoneVec[BONE_HEAD].x, vBoneVec[BONE_HEAD].y, 2, 2, D3DCOLOR_ARGB( pBasePlayer->GetTeamColor().a(), pBasePlayer->GetTeamColor().r(), pBasePlayer->GetTeamColor().g(), pBasePlayer->GetTeamColor().b() )); }
have fun! Call it in your ESP loop after you have valid entities you wish to draw at. CSPlayer is my custom derived class from C_BasePlayer so you have to modify code LITTLE BIT ( few fucking lines lol ) to make it work with your hack.
Credits still are same: Floxy, Tetsuo, everyone who has actually contributed at HL2 bone/hitbox related stuff,
Takedown since he told me the order he draws his lines for hitboxes long time ago when i asked, i just wrote this myself and converted hitboxes to corresponding bones. This should anway be done with hitboxes.
Comment