aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 13a39e98122..1d4de33e6d0 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2260,22 +2260,12 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
if (!GetSession()->PlayerLogout())
{
// send transfer packets
- WorldPacket data(SMSG_TRANSFER_PENDING, (4+4+4));
+ WorldPacket data(SMSG_TRANSFER_PENDING, 4 + 4 + 4);
data << uint32(mapid);
if (m_transport)
- {
data << m_transport->GetEntry() << GetMapId();
- }
- GetSession()->SendPacket(&data);
-
- data.Initialize(SMSG_NEW_WORLD, (20));
- if (m_transport)
- data << (uint32)mapid << m_movementInfo.t_pos.PositionXYZOStream();
- else
- data << (uint32)mapid << (float)x << (float)y << (float)z << (float)orientation;
GetSession()->SendPacket(&data);
- SendSavedInstances();
}
// remove from old map now
@@ -2301,6 +2291,19 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
// if the player is saved before worldportack (at logout for example)
// this will be used instead of the current location in SaveToDB
+ if (!GetSession()->PlayerLogout())
+ {
+ WorldPacket data(SMSG_NEW_WORLD, 4 + 4 + 4 + 4 + 4);
+ data << uint32(mapid);
+ if (m_transport)
+ data << m_movementInfo.t_pos.PositionXYZOStream();
+ else
+ data << m_teleport_dest.PositionXYZOStream();
+
+ GetSession()->SendPacket(&data);
+ SendSavedInstances();
+ }
+
// move packet sent by client always after far teleport
// code for finish transfer to new map called in WorldSession::HandleMoveWorldportAckOpcode at client packet
SetSemaphoreTeleportFar(true);