Code:
UINT GetNodeTransform( INT *Obj, UINT hNode, Transform *Trans )
{
__asm
{
MOV ECX, DWORD PTR DS:[ 0x379EF524 ] ;update it from NA version
MOV EDX, DWORD PTR DS:[ ECX ]
MOV EDX, DWORD PTR DS:[ EDX + 0x40 ]
PUSH 1
PUSH Trans
PUSH hNode
PUSH Obj
CALL EDX
}
}
usage:
Code:
struct Transform
{
D3DXVECTOR3 Pos;
unsigned char Space[0x100];
};
Transform HeadPosition;
GetNodeTransform( Player->Object /*Player Object*/, 8 /*Node Number*/, &HeadPosition /*Vec3 buffer*/ );
node number is the same of crossfire ...
Code:
//Gellin method...
#define ADDR_CLIENTFX 0x0006BF34
void SetLocalPlayerPosition( D3DXVECTOR3 Pos )
{
DWORD dwClass = *(DWORD*)( (DWORD)GetModuleHandle( "ClientFX.fxd" ) + ADDR_CLIENTFX );
if( dwClass == NULL )
return;
*(float*)( dwClass + 0xC8 ) = Pos.x;
*(float*)( dwClass + 0xCC ) = Pos.y;
*(float*)( dwClass + 0xD0 ) = Pos.z;
}