From eb94d787613370f4fc1a2100c033a0cd414b9244 Mon Sep 17 00:00:00 2001 From: balrok Date: Sun, 1 Nov 2009 10:20:04 -0500 Subject: [PATCH] [8805] fix freeze with repeatingly calls at logout + HandleMoveWorldportAckOpcode starts in WorldSession::logout inside while(isTeleportedFar)... through coord won't get ever valid there - it will call itself all the time --- src/game/MovementHandler.cpp | 5 +++++ src/shared/revision_nr.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 74951decf..7f7ef94d9 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -50,6 +50,11 @@ void WorldSession::HandleMoveWorldportAckOpcode() // possible errors in the coordinate validity check if(!MapManager::IsValidMapCoord(loc.mapid, loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation)) { + sLog.outError("WorldSession::HandleMoveWorldportAckOpcode: player got's teleported far to a not valid location. (map:%u, x:%f, y:%f, z:%f) We log him out and don't save him..", loc.mapid, loc.coord_x, loc.coord_y, loc.coord_z); + // stop teleportation else we would try this again in the beginning of WorldSession::LogoutPlayer... + GetPlayer()->SetSemaphoreTeleportFar(false); + // player don't gets saved - so his coords will stay at the point where + // he was last saved LogoutPlayer(false); return; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 83da1e7c8..93fd9866e 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8804" + #define REVISION_NR "8805" #endif // __REVISION_NR_H__