mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
More work on update packets
This commit is contained in:
parent
a8f7f57065
commit
42a8ae3752
11 changed files with 83 additions and 60 deletions
|
|
@ -33,8 +33,8 @@ Corpse::Corpse(CorpseType type) : WorldObject()
|
||||||
{
|
{
|
||||||
m_objectType |= TYPEMASK_CORPSE;
|
m_objectType |= TYPEMASK_CORPSE;
|
||||||
m_objectTypeId = TYPEID_CORPSE;
|
m_objectTypeId = TYPEID_CORPSE;
|
||||||
// 2.3.2 - 0x58
|
// 3.1.0 - 0x148
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION);
|
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_UNK1);
|
||||||
|
|
||||||
m_valuesCount = CORPSE_END;
|
m_valuesCount = CORPSE_END;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ DynamicObject::DynamicObject() : WorldObject()
|
||||||
{
|
{
|
||||||
m_objectType |= TYPEMASK_DYNAMICOBJECT;
|
m_objectType |= TYPEMASK_DYNAMICOBJECT;
|
||||||
m_objectTypeId = TYPEID_DYNAMICOBJECT;
|
m_objectTypeId = TYPEID_DYNAMICOBJECT;
|
||||||
// 2.3.2 - 0x58
|
// 3.1.0 - 0x48
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION);
|
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HAS_POSITION);
|
||||||
|
|
||||||
m_valuesCount = DYNAMICOBJECT_END;
|
m_valuesCount = DYNAMICOBJECT_END;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,8 @@ GameObject::GameObject() : WorldObject()
|
||||||
{
|
{
|
||||||
m_objectType |= TYPEMASK_GAMEOBJECT;
|
m_objectType |= TYPEMASK_GAMEOBJECT;
|
||||||
m_objectTypeId = TYPEID_GAMEOBJECT;
|
m_objectTypeId = TYPEID_GAMEOBJECT;
|
||||||
// 2.3.2 - 0x58
|
// 3.1.0 - 0x348
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION);
|
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_UNK1 | UPDATEFLAG_UNK2);
|
||||||
|
|
||||||
m_valuesCount = GAMEOBJECT_END;
|
m_valuesCount = GAMEOBJECT_END;
|
||||||
m_respawnTime = 0;
|
m_respawnTime = 0;
|
||||||
|
|
|
||||||
|
|
@ -233,8 +233,8 @@ Item::Item( )
|
||||||
{
|
{
|
||||||
m_objectType |= TYPEMASK_ITEM;
|
m_objectType |= TYPEMASK_ITEM;
|
||||||
m_objectTypeId = TYPEID_ITEM;
|
m_objectTypeId = TYPEID_ITEM;
|
||||||
// 2.3.2 - 0x18
|
// 3.1.0 - 0x08
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID);
|
m_updateFlag = UPDATEFLAG_LOWGUID;
|
||||||
|
|
||||||
m_valuesCount = ITEM_END;
|
m_valuesCount = ITEM_END;
|
||||||
m_slot = 0;
|
m_slot = 0;
|
||||||
|
|
|
||||||
|
|
@ -302,17 +302,17 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags, uint32 flags2
|
||||||
*data << uint32(getMSTime()); // time (in milliseconds)
|
*data << uint32(getMSTime()); // time (in milliseconds)
|
||||||
|
|
||||||
// position
|
// position
|
||||||
*data << ((WorldObject *)this)->GetPositionX();
|
*data << ((WorldObject*)this)->GetPositionX();
|
||||||
*data << ((WorldObject *)this)->GetPositionY();
|
*data << ((WorldObject*)this)->GetPositionY();
|
||||||
*data << ((WorldObject *)this)->GetPositionZ();
|
*data << ((WorldObject*)this)->GetPositionZ();
|
||||||
*data << ((WorldObject *)this)->GetOrientation();
|
*data << ((WorldObject*)this)->GetOrientation();
|
||||||
|
|
||||||
// 0x00000200
|
// 0x00000200
|
||||||
if(flags2 & MOVEMENTFLAG_ONTRANSPORT)
|
if(flags2 & MOVEMENTFLAG_ONTRANSPORT)
|
||||||
{
|
{
|
||||||
if(GetTypeId() == TYPEID_PLAYER)
|
if(GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
*data << (uint64)((Player*)this)->GetTransport()->GetGUID();
|
data->append(((Player*)this)->GetTransport()->GetPackGUID());
|
||||||
*data << (float)((Player*)this)->GetTransOffsetX();
|
*data << (float)((Player*)this)->GetTransOffsetX();
|
||||||
*data << (float)((Player*)this)->GetTransOffsetY();
|
*data << (float)((Player*)this)->GetTransOffsetY();
|
||||||
*data << (float)((Player*)this)->GetTransOffsetZ();
|
*data << (float)((Player*)this)->GetTransOffsetZ();
|
||||||
|
|
@ -470,14 +470,14 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags, uint32 flags2
|
||||||
{
|
{
|
||||||
if(flags & UPDATEFLAG_UNK1)
|
if(flags & UPDATEFLAG_UNK1)
|
||||||
{
|
{
|
||||||
*data << uint8(0); // PGUID
|
*data << uint8(0); // unk PGUID!
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionX();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionY();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionZ();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionX();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionY();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetPositionZ();
|
||||||
*data << float(0);
|
*data << ((WorldObject*)this)->GetOrientation();
|
||||||
*data << float(0);
|
*data << float(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -585,7 +585,22 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags, uint32 flags2
|
||||||
// 0x200
|
// 0x200
|
||||||
if(flags & UPDATEFLAG_UNK2)
|
if(flags & UPDATEFLAG_UNK2)
|
||||||
{
|
{
|
||||||
*data << uint64(0);
|
// may be precalculate it?
|
||||||
|
int64 rotation = 0;
|
||||||
|
float ang = ((WorldObject *)this)->GetOrientation();
|
||||||
|
|
||||||
|
float f_rot1 = sin(ang / 2.0f);
|
||||||
|
int64 i_rot1 = f_rot1 / atan(pow(2.0f, -20.0f));
|
||||||
|
rotation |= (i_rot1 << 43 >> 43) & 0x00000000001FFFFF;
|
||||||
|
|
||||||
|
//float f_rot2 = sin(0.0f / 2.0f);
|
||||||
|
//int64 i_rot2 = f_rot2 / atan(pow(2.0f, -20.0f));
|
||||||
|
//rotation |= (((i_rot2 << 22) >> 32) >> 11) & 0x000003FFFFE00000;
|
||||||
|
|
||||||
|
//float f_rot3 = sin(0.0f / 2.0f);
|
||||||
|
//int64 i_rot3 = f_rot3 / atan(pow(2.0f, -21.0f));
|
||||||
|
//rotation |= (i_rot3 >> 42) & 0x7FFFFC0000000000;
|
||||||
|
*data << uint64(rotation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1228,21 +1228,25 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
|
||||||
/*0x4AF*/ { "UMSG_UNKNOWN_1199", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4AF*/ { "UMSG_UNKNOWN_1199", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B0*/ { "UMSG_UNKNOWN_1200", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B0*/ { "UMSG_UNKNOWN_1200", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B1*/ { "UMSG_UNKNOWN_1201", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B1*/ { "UMSG_UNKNOWN_1201", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B2*/ { "CMSG_UNKNOWN_1202", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B2*/ { "SMSG_UNKNOWN_1202", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4B3*/ { "SMSG_UNKNOWN_1203", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4B3*/ { "UMSG_UNKNOWN_1203", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B4*/ { "CMSG_LFG_SET_ROLES", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B4*/ { "UMSG_UNKNOWN_1204", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B5*/ { "UMSG_UNKNOWN_1205", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B5*/ { "SMSG_UNKNOWN_1205", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4B6*/ { "CMSG_UNKNOWN_1206", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B6*/ { "CMSG_UNKNOWN_1206", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B7*/ { "SMSG_UNKNOWN_1207", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4B7*/ { "SMSG_UNKNOWN_1207", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4B8*/ { "SMSG_UNKNOWN_1208", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4B8*/ { "CMSG_LFG_SET_ROLES", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4B9*/ { "CMSG_UNKNOWN_1209", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4B9*/ { "UMSG_UNKNOWN_1209", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4BA*/ { "CMSG_UNKNOWN_1210", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4BA*/ { "CMSG_UNKNOWN_1210", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4BB*/ { "SMSG_UNKNOWN_1211", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4BB*/ { "SMSG_UNKNOWN_1211", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4BC*/ { "SMSG_UNKNOWN_1212", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4BC*/ { "SMSG_UNKNOWN_1212", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4BD*/ { "CMSG_UNKNOWN_1213", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4BD*/ { "CMSG_UNKNOWN_1213", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4BE*/ { "CMSG_UNKNOWN_1214", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4BE*/ { "CMSG_UNKNOWN_1214", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4BF*/ { "UMSG_UNKNOWN_1215", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4BF*/ { "SMSG_UNKNOWN_1215", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4C0*/ { "UMSG_UNKNOWN_1216", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4C0*/ { "SMSG_UNKNOWN_1216", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4C1*/ { "UMSG_UNKNOWN_1217", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4C1*/ { "CMSG_UNKNOWN_1217", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
/*0x4C2*/ { "UMSG_UNKNOWN_1218", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4C2*/ { "CMSG_UNKNOWN_1218", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4C3*/ { "UMSG_UNKNOWN_1219", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4C4*/ { "UMSG_UNKNOWN_1220", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4C5*/ { "UMSG_UNKNOWN_1221", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4C6*/ { "UMSG_UNKNOWN_1222", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1236,24 +1236,28 @@ enum Opcodes
|
||||||
UMSG_UNKNOWN_1199 = 0x4AF, // not found
|
UMSG_UNKNOWN_1199 = 0x4AF, // not found
|
||||||
UMSG_UNKNOWN_1200 = 0x4B0, // not found
|
UMSG_UNKNOWN_1200 = 0x4B0, // not found
|
||||||
UMSG_UNKNOWN_1201 = 0x4B1, // not found
|
UMSG_UNKNOWN_1201 = 0x4B1, // not found
|
||||||
CMSG_UNKNOWN_1202 = 0x4B2, // CMSG, uint32
|
SMSG_UNKNOWN_1202 = 0x4B2, // refund something
|
||||||
SMSG_UNKNOWN_1203 = 0x4B3, // SMSG, string+float
|
CMSG_UNKNOWN_1203 = 0x4B3, // refund request?
|
||||||
CMSG_LFG_SET_ROLES = 0x4B4, // CMSG, empty, lua: SetLFGRoles
|
CMSG_UNKNOWN_1204 = 0x4B4, // lua: ContainerRefundItemPurchase
|
||||||
UMSG_UNKNOWN_1205 = 0x4B5, // not found
|
SMSG_UNKNOWN_1205 = 0x4B5, // refund something
|
||||||
CMSG_UNKNOWN_1206 = 0x4B6, // CMSG, uint64, lua: CalendarContextEventSignUp
|
CMSG_UNKNOWN_1206 = 0x4B6, // CMSG, uint32
|
||||||
SMSG_UNKNOWN_1207 = 0x4B7, // SMSG, calendar related
|
SMSG_UNKNOWN_1207 = 0x4B7, // SMSG, string+float
|
||||||
SMSG_UNKNOWN_1208 = 0x4B8, // SMSG, equipment manager list?
|
CMSG_LFG_SET_ROLES = 0x4B8, // CMSG, empty, lua: SetLFGRoles
|
||||||
CMSG_UNKNOWN_1209 = 0x4B9, // CMSG, lua: SaveEquipmentSet
|
UMSG_UNKNOWN_1209 = 0x4B9, // not found
|
||||||
CMSG_UNKNOWN_1210 = 0x4BA, // CMSG
|
CMSG_UNKNOWN_1210 = 0x4BA, // CMSG, uint64, lua: CalendarContextEventSignUp
|
||||||
SMSG_UNKNOWN_1211 = 0x4BB, // SMSG, uint64, uint8, 3 x float
|
SMSG_UNKNOWN_1211 = 0x4BB, // SMSG, calendar related
|
||||||
SMSG_UNKNOWN_1212 = 0x4BC, // SMSG, talents related
|
SMSG_UNKNOWN_1212 = 0x4BC, // SMSG, equipment manager list?
|
||||||
CMSG_UNKNOWN_1213 = 0x4BD, // CMSG, lua: LearnPreviewTalents
|
CMSG_UNKNOWN_1213 = 0x4BD, // CMSG, lua: SaveEquipmentSet
|
||||||
CMSG_UNKNOWN_1214 = 0x4BE, // CMSG, lua: LearnPreviewTalents
|
CMSG_UNKNOWN_1214 = 0x4BE, // CMSG
|
||||||
UMSG_UNKNOWN_1215 = 0x4BF, // not found
|
SMSG_UNKNOWN_1215 = 0x4BF, // SMSG, uint64, uint8, 3 x float
|
||||||
UMSG_UNKNOWN_1216 = 0x4C0, // not found
|
SMSG_UNKNOWN_1216 = 0x4C0, // SMSG, talents related
|
||||||
UMSG_UNKNOWN_1217 = 0x4C1, // not found
|
CMSG_UNKNOWN_1217 = 0x4C1, // CMSG, lua: LearnPreviewTalents
|
||||||
UMSG_UNKNOWN_1218 = 0x4C2, // not found
|
CMSG_UNKNOWN_1218 = 0x4C2, // CMSG, lua: LearnPreviewTalents
|
||||||
NUM_MSG_TYPES = 0x4C3
|
UMSG_UNKNOWN_1219 = 0x4C3, // not found
|
||||||
|
UMSG_UNKNOWN_1220 = 0x4C4, // not found
|
||||||
|
UMSG_UNKNOWN_1221 = 0x4C5, // not found
|
||||||
|
UMSG_UNKNOWN_1222 = 0x4C6, // not found
|
||||||
|
NUM_MSG_TYPES = 0x4C7
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Player state
|
/// Player state
|
||||||
|
|
|
||||||
|
|
@ -134,8 +134,8 @@ void MapManager::LoadTransports()
|
||||||
|
|
||||||
Transport::Transport() : GameObject()
|
Transport::Transport() : GameObject()
|
||||||
{
|
{
|
||||||
// 2.3.2 - 0x5A
|
// 3.1.0 - 0x34A
|
||||||
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION);
|
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_LOWGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_UNK1 | UPDATEFLAG_UNK2);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags)
|
bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags)
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ class Transport : private GameObject
|
||||||
using GameObject::GetPositionZ;
|
using GameObject::GetPositionZ;
|
||||||
using GameObject::BuildCreateUpdateBlockForPlayer;
|
using GameObject::BuildCreateUpdateBlockForPlayer;
|
||||||
using GameObject::BuildOutOfRangeUpdateBlock;
|
using GameObject::BuildOutOfRangeUpdateBlock;
|
||||||
|
using GameObject::GetPackGUID;
|
||||||
|
|
||||||
bool Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags);
|
bool Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags);
|
||||||
bool GenerateWaypoints(uint32 pathid, std::set<uint32> &mapids);
|
bool GenerateWaypoints(uint32 pathid, std::set<uint32> &mapids);
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,8 @@ Unit::Unit()
|
||||||
{
|
{
|
||||||
m_objectType |= TYPEMASK_UNIT;
|
m_objectType |= TYPEMASK_UNIT;
|
||||||
m_objectTypeId = TYPEID_UNIT;
|
m_objectTypeId = TYPEID_UNIT;
|
||||||
// 2.3.2 - 0x70
|
// 3.1.0 - 0x60
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION);
|
m_updateFlag = (UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION);
|
||||||
|
|
||||||
m_attackTimer[BASE_ATTACK] = 0;
|
m_attackTimer[BASE_ATTACK] = 0;
|
||||||
m_attackTimer[OFF_ATTACK] = 0;
|
m_attackTimer[OFF_ATTACK] = 0;
|
||||||
|
|
@ -265,14 +265,14 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 ty
|
||||||
data.append(GetPackGUID());
|
data.append(GetPackGUID());
|
||||||
data << uint8(0); // new in 3.1
|
data << uint8(0); // new in 3.1
|
||||||
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
||||||
data << getMSTime();
|
data << uint32(getMSTime());
|
||||||
|
|
||||||
data << uint8(type); // unknown
|
data << uint8(type); // unknown
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case 0: // normal packet
|
case 0: // normal packet
|
||||||
break;
|
break;
|
||||||
case 1: // stop packet
|
case 1: // stop packet (raw pos?)
|
||||||
SendMessageToSet( &data, true );
|
SendMessageToSet( &data, true );
|
||||||
return;
|
return;
|
||||||
case 2: // facing spot, not used currently
|
case 2: // facing spot, not used currently
|
||||||
|
|
@ -281,16 +281,15 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 ty
|
||||||
data << float(0);
|
data << float(0);
|
||||||
break;
|
break;
|
||||||
case 3: // not used currently
|
case 3: // not used currently
|
||||||
data << uint64(0); // probably target guid
|
data << uint64(0); // probably target guid (facing target?)
|
||||||
break;
|
break;
|
||||||
case 4: // not used currently
|
case 4: // not used currently
|
||||||
data << float(0); // facing angle
|
data << float(0); // facing angle
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Movement Flags (0x0 = walk, 0x100 = run, 0x200 = fly/swim)
|
|
||||||
data << uint32(MovementFlags);
|
data << uint32(MovementFlags);
|
||||||
data << Time; // Time in between points
|
data << uint32(Time); // Time in between points
|
||||||
data << uint32(1); // 1 single waypoint
|
data << uint32(1); // 1 single waypoint
|
||||||
data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B
|
data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
Vehicle::Vehicle() : Creature(), m_vehicleId(0)
|
Vehicle::Vehicle() : Creature(), m_vehicleId(0)
|
||||||
{
|
{
|
||||||
m_isVehicle = true;
|
m_isVehicle = true;
|
||||||
m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_VEHICLE);
|
m_updateFlag = (UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_VEHICLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vehicle::~Vehicle()
|
Vehicle::~Vehicle()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue