This is some bone stuff that I used for boxes etc when I messed with PS2 a while ago, might have changed though was kinda a long time ago.
The bone positions obtained through the virtual is wrong in a depth way or something, they are good for boxes etc but inaccurate for aimbot.

credits to mattdog and Forza

 
Code:
class CActor
{
public:
virtual void Function0(); //
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 CSkeletonBase* GetSkeletonBase(); //
virtual void Function25(); //
virtual void Function26(); //
virtual void Function27(); //

char _0x0004[348];
CSkeletonBase* m_skeltonBase; //0x0160
char _0x0164[300];
char* m_actorType; //0x0290
char _0x0294[60];

};//Size=0x02D0


 
Code:
class CSkeletonBase
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void* GetUnk(); //+0x28
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual void Function8(); //
virtual void Function9(); // some random getbone shit
virtual void Function10(); //
virtual Vec4* GetBone( int iBone ); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //
virtual void Function16(); //
virtual int GetUnk2(); // +0x28 -> +0x30
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 Function26(); //
virtual void Function27(); //
virtual void Function28(); //
virtual void Function29(); //
virtual void Function30(); //
virtual void Function31(); //
virtual void Function32(); //
virtual void Function33(); //
virtual void Function34(); //
virtual void Function35(); //

char _0x0004[32];
CSkeleton* m_skeleton; //0x0024
CSomeClass* m_someClass; //0x0028
char _0x002C[148];

};//Size=0x00C0

class CSkeleton
{
public:
virtual void Function0(); //
virtual void Function1(); //
virtual void Function2(); //
virtual void Function3(); //
virtual void Function4(); //
virtual void Function5(); //
virtual void Function6(); //
virtual void Function7(); //
virtual CBones* GetBones(); //
virtual void Function9(); //
virtual void Function10(); //
virtual void Function11(); //
virtual void Function12(); //
virtual void Function13(); //
virtual void Function14(); //
virtual void Function15(); //

char _0x0004[8];
CBoneBase* m_boneBase; //0x000C
char _0x0010[112];

};//Size=0x0080

class CBoneBase
{
public:
char _0x0000[32];
CBones* m_bones; //0x0020
char _0x0024[8];
CBoneNames* m_boneNames; //0x002C
CBonePositions* m_bonePositions; //0x0030
char _0x0034[92];

};//Size=0x0090

class CBones
{
public:
__int32 Count; //0x0000
int* pIds; //0x0004
char _0x0008[56];

};//Size=0x0040

class CBoneNames
{
public:
char _0x0000[8];
int* pIds; //0x0008
DWORD* pOffsets; //0x000C
char* pNames; //0x0010
char _0x0014[12];

};//Size=0x0020

class CSomeClass
{
public:
char _0x0000[48];
__int32 m_someValue; //0x0030
char _0x0034[76];

};//Size=0x0080

class CBonePositions
{
public:
char _0x0000[448];

};//Size=0x01C0