From cf0d8a2b035a60ed0fc9a70df8d2d4d9b3a598ea Mon Sep 17 00:00:00 2001 From: QAston Date: Tue, 28 Jul 2009 16:26:05 +0200 Subject: *Fix alt+f4 exploit in instances. --HG-- branch : trunk --- src/game/WorldSession.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/game') 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) -- cgit v1.2.3