aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <none@none>2009-07-28 16:26:05 +0200
committerQAston <none@none>2009-07-28 16:26:05 +0200
commitcf0d8a2b035a60ed0fc9a70df8d2d4d9b3a598ea (patch)
tree92cccb0e47ec34635da03b348f17549c8740affd /src
parent288fe6ef218d90c5c9f7161335e5feaa60268b83 (diff)
*Fix alt+f4 exploit in instances.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/WorldSession.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp
index a7bcfef4ab9..1390fd6a830 100644
--- a/src/game/WorldSession.cpp
+++ b/src/game/WorldSession.cpp
@@ -313,13 +313,7 @@ void WorldSession::LogoutPlayer(bool Save)
///- Teleport to home if the player is in an invalid instance
if(!_player->m_InstanceValid && !_player->isGameMaster())
- {
_player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());
- //this is a bad place to call for far teleport because we need player to be in world for successful logout
- //maybe we should implement delayed far teleport logout?
- while(_player->IsBeingTeleportedFar())
- HandleMoveWorldportAckOpcode();
- }
sOutdoorPvPMgr.HandlePlayerLeaveZone(_player,_player->GetZoneId());
@@ -332,6 +326,11 @@ void WorldSession::LogoutPlayer(bool Save)
}
}
+ // Repop at GraveYard or other player far teleport will prevent saving player because of not present map
+ // Teleport player immediately for correct player save
+ while(_player->IsBeingTeleportedFar())
+ HandleMoveWorldportAckOpcode();
+
///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members
Guild *guild = objmgr.GetGuildById(_player->GetGuildId());
if(guild)