diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-12 09:10:38 -0700 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-12 09:10:38 -0700 |
commit | 706f3fa7d74fa5f1937b63da5de394031e7f5e88 (patch) | |
tree | fbf2baf6b8f334b237105a7812b9cef4aec787ea | |
parent | 4396df127c84e305a2c1fb4713e374e7570c3934 (diff) | |
parent | fcbc45ec231d77458040fa539abebc5a3e9f3083 (diff) |
Merge pull request #7346 from cyberbrest/pull11
[434][Object] Fix Freezes at loading chars and at teleportation (and by transport too;))
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 197fc7ddc1e..fb26bbc7b37 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2103,6 +2103,8 @@ void Player::SendTeleportPacket(Position &oldPos) bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options) { + orientation = MapManager::NormalizeOrientation(orientation); + if (!MapManager::IsValidMapCoord(mapid, x, y, z, orientation)) { sLog->outError(LOG_FILTER_MAPS, "TeleportTo: invalid map (%d) or invalid coordinates (X: %f, Y: %f, Z: %f, O: %f) given when teleporting player (GUID: %u, name: %s, map: %d, X: %f, Y: %f, Z: %f, O: %f).", @@ -16699,7 +16701,11 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) // init saved position, and fix it later if problematic uint32 transGUID = uint32(fields[31].GetUInt32()); - Relocate(fields[12].GetFloat(), fields[13].GetFloat(), fields[14].GetFloat(), fields[16].GetFloat()); + + // used orientation 0-2pi range. Check for safe. + float orientation = MapManager::NormalizeOrientation(fields[16].GetFloat()); + Relocate(fields[12].GetFloat(), fields[13].GetFloat(), fields[14].GetFloat(), orientation); + uint32 mapId = fields[15].GetUInt16(); uint32 instanceId = fields[54].GetUInt32(); |