diff options
| author | Intel <chemicstry@gmail.com> | 2014-11-30 23:33:16 +0200 |
|---|---|---|
| committer | Intel <chemicstry@gmail.com> | 2014-11-30 23:35:12 +0200 |
| commit | e65590fa6999c321db435c9c24eb7557a6f8d955 (patch) | |
| tree | 48c742c2fb6e802b584e333839cc585e098ba876 /src/server/game/Entities/Unit | |
| parent | 06bb904b2e6f6f11368c5d025e3afbdb81d9ca6a (diff) | |
Core/Packets: Added SMSG_MOVE_TELEPORT, SMSG_MOVE_UPDATE_TELEPORT, CMSG_MOVE_TELEPORT_ACK packets
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 65 |
1 files changed, 15 insertions, 50 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 802ebba5ef5..6a41a304639 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10766,7 +10766,7 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced) // Send notification to other players WorldPackets::Movement::MoveUpdateSpeed packet(moveTypeToOpcode[mtype][2]); - packet.movementInfo = m_movementInfo; + packet.movementInfo = &m_movementInfo; packet.Speed = rate; SendMessageToSet(packet.Write(), false); } @@ -15805,61 +15805,26 @@ void Unit::SendTeleportPacket(Position& pos) ObjectGuid guid = GetGUID(); ObjectGuid transGuid = GetTransGUID(); - WorldPacket data(SMSG_MOVE_UPDATE_TELEPORT, 38); - WriteMovementInfo(data); + WorldPackets::Movement::MoveUpdateTeleport packet; + packet.movementInfo = &m_movementInfo; if (GetTypeId() == TYPEID_PLAYER) { - WorldPacket data2(SMSG_MOVE_TELEPORT, 38); - data2.WriteBit(guid[6]); - data2.WriteBit(guid[0]); - data2.WriteBit(guid[3]); - data2.WriteBit(guid[2]); - data2.WriteBit(0); // unknown - data2.WriteBit(!transGuid.IsEmpty()); - data2.WriteBit(guid[1]); + WorldPackets::Movement::MoveTeleport selfPacket; + + selfPacket.MoverGUID = guid; + if (!transGuid.IsEmpty()) { - data2.WriteBit(transGuid[1]); - data2.WriteBit(transGuid[3]); - data2.WriteBit(transGuid[2]); - data2.WriteBit(transGuid[5]); - data2.WriteBit(transGuid[0]); - data2.WriteBit(transGuid[7]); - data2.WriteBit(transGuid[6]); - data2.WriteBit(transGuid[4]); + selfPacket.TransportGUID.Value = transGuid; + selfPacket.TransportGUID.HasValue = true; } - data2.WriteBit(guid[4]); - data2.WriteBit(guid[7]); - data2.WriteBit(guid[5]); - data2.FlushBits(); - if (!transGuid.IsEmpty()) - { - data2.WriteByteSeq(transGuid[6]); - data2.WriteByteSeq(transGuid[5]); - data2.WriteByteSeq(transGuid[1]); - data2.WriteByteSeq(transGuid[7]); - data2.WriteByteSeq(transGuid[0]); - data2.WriteByteSeq(transGuid[2]); - data2.WriteByteSeq(transGuid[4]); - data2.WriteByteSeq(transGuid[3]); - } - - data2 << uint32(0); // counter - data2.WriteByteSeq(guid[1]); - data2.WriteByteSeq(guid[2]); - data2.WriteByteSeq(guid[3]); - data2.WriteByteSeq(guid[5]); - data2 << float(GetPositionX()); - data2.WriteByteSeq(guid[4]); - data2 << float(GetOrientation()); - data2.WriteByteSeq(guid[7]); - data2 << float(GetPositionZMinusOffset()); - data2.WriteByteSeq(guid[0]); - data2.WriteByteSeq(guid[6]); - data2 << float(GetPositionY()); - ToPlayer()->SendDirectMessage(&data2); // Send the MSG_MOVE_TELEPORT packet to self. + selfPacket.Pos.Relocate(GetPositionX(), GetPositionY(), GetPositionZMinusOffset()); + selfPacket.Facing = GetOrientation(); + selfPacket.SequenceIndex = m_movementCounter++; + + ToPlayer()->SendDirectMessage(selfPacket.Write()); } // Relocate the player/creature to its old position, so we can broadcast to nearby players correctly @@ -15869,7 +15834,7 @@ void Unit::SendTeleportPacket(Position& pos) Relocate(&oldPos); // Broadcast the packet to everyone except self. - SendMessageToSet(&data, false); + SendMessageToSet(packet.Write(), false); } bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool teleport) |
