I don't know what I am doing wrong but calling some vtable funcs crash my game.
Example:
Code:
bool GetBonePosition(CBaseEntity* pPlayer, Vector& Hitbox, int Bone)
{
matrix3x4_t MatrixArray[128];
float Time = Interfaces.Engine->GetLastTimeStamp();
if (Time < 0.001f)
return false;
if (!pPlayer->SetupBones(&MatrixArray[0], 128, 0x00000100, Time))
return false;
matrix3x4_t HitboxMatrix = MatrixArray[Bone];
Hitbox = Vector(HitboxMatrix[0][3], HitboxMatrix[1][3], HitboxMatrix[2][3]);
return true;
}
// CALLED WITH
Vector vHead(0,0,0);
if (!GetBonePosition(Enemy,vHead,6))
continue;
Setup Bone Code:
Code:
bool SetupBones(matrix3x4_t *pBoneToWorldOut, int nMaxBones, int boneMask, float currentTime)
{
void *pRenderable = (void*)(this + 0x4);
typedef bool(__thiscall* OriginalFn)(PVOID, matrix3x4_t*, int, int, float);
return ((OriginalFn)VMT.GetFunction(pRenderable, 16))(pRenderable, pBoneToWorldOut, nMaxBones, boneMask, currentTime);
}
The offset I use for GetLastTimeStamp is:
GetLastTimeStamp = 14;
Anything wrong here?