Hi guys,
I urge you, not to use the method of x = pObject + x_offset because that is not reflecting the real implementation.
Method A (preferred):
Code:
class CWoWPos
{
public:
float x;
float y;
float z;
};
class OBJECT_STRUCT
{
public:
virtual void Function0()=0;
virtual void Function1()=0;
virtual void Function2()=0;
virtual void Function3()=0;
virtual void Function4()=0;
virtual void Function5()=0;
virtual void Function6()=0;
virtual void Function7()=0;
virtual void Function8()=0;
virtual void Function9_GetPosition(CWoWPos & MyPos)=0;
virtual float Function10_GetFacing()=0;
...
use the virtual function 9 and 10 to read position and facing from objects. That method works for EVERYTHING.
or use Method B :
Code:
class CMovementInfo
{
public:
char unknown0[16]; //0x0000
float x; // 0x10
float y; // 0x14
float z; // 0x18
float unknown1c; // 0x1c
float direction; // 0x20
float tilt; // 0x24
float unknown[4]; // 0x28
OBJECT_GUID TransportGuid; //0x0038
DWORD NewIn3_1; //0x0040
DWORD MoveFlags; //0x0044
};
enum MovementFlags
{
MOVEFLAG_MOVE_FORWARD = 0x01,
MOVEFLAG_MOVE_BACKWARD = 0x02,
MOVEFLAG_STRAFE_LEFT = 0x04,
MOVEFLAG_STRAFE_RIGHT = 0x08,
MOVEFLAG_TURN_LEFT = 0x10,
MOVEFLAG_TURN_RIGHT = 0x20,
MOVEFLAG_PITCH_DOWN = 0x40,
MOVEFLAG_PITCH_UP = 0x80,
};
class OBJECT_STRUCT
{
public:
...
CMovementInfo* m_pMovementInfo; // at pObject + 0xD8 !!!!
...
};
Greetings
Apollo