Core/Players: Fixed naked bug for players, original idea by BThallid
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user