diff options
author | jackpoz <giacomopoz@gmail.com> | 2013-09-26 20:03:39 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2013-09-26 20:09:50 +0200 |
commit | 2cca3982d4dd87be452ab13332dd809e02d2a24b (patch) | |
tree | cb9c1e6bd75f4b7ad6955d3a3371f27e14bb4341 /src/server/game/Handlers/MovementHandler.cpp | |
parent | 06c3813e56950db09033718f28dc68524f98a6b4 (diff) |
Core/Movement: Port Ascent r1637 http://sourceforge.net/p/ascentemubackup/code/1637/ to TrinityCore
Port some movement packet fixes, taking into account client/server connection lag.
Credits to original author, check http://sourceforge.net/p/ascentemubackup/code/1637/ for more details.
MOVEMENT_PACKET_TIME_DELAY default value is currently set to 0, feel free to set it to different values and report feedback.
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 7a17e715063..1faa68b6ea4 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -31,6 +31,8 @@ #include "InstanceSaveMgr.h" #include "ObjectMgr.h" +#define MOVEMENT_PACKET_TIME_DELAY 0 + void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/) { TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK."); @@ -359,11 +361,15 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) plrMover->SetInWater(!plrMover->IsInWater() || plrMover->GetBaseMap()->IsUnderWater(movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY(), movementInfo.pos.GetPositionZ())); } + uint32 mstime = getMSTime(); /*----------------------*/ + if(m_clientTimeDelay == 0) + m_clientTimeDelay = mstime - movementInfo.time; /* process position-change */ WorldPacket data(opcode, recvData.size()); - movementInfo.time = getMSTime(); + movementInfo.time = movementInfo.time + m_clientTimeDelay + MOVEMENT_PACKET_TIME_DELAY; + movementInfo.guid = mover->GetGUID(); WriteMovementInfo(&data, &movementInfo); mover->SendMessageToSet(&data, _player); |