diff options
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 78557ce513..45172030fe 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -28,7 +28,7 @@ #define MOVEMENT_PACKET_TIME_DELAY 0 -void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/) +void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket& /*recvData*/) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK."); @@ -238,7 +238,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData) sLog->outStaticDebug("Guid " UI64FMTD, guid); #endif #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - sLog->outStaticDebug("Flags %u, time %u", flags, time/IN_MILLISECONDS); + sLog->outStaticDebug("Flags %u, time %u", flags, time / IN_MILLISECONDS); #endif Player* plMover = _player->m_mover->ToPlayer(); @@ -261,7 +261,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData) // xinef: teleport pets if they are not unsummoned if (Pet* pet = plMover->GetPet()) { - if (!pet->IsWithinDist3d(plMover, plMover->GetMap()->GetVisibilityRange()-5.0f)) + if (!pet->IsWithinDist3d(plMover, plMover->GetMap()->GetVisibilityRange() - 5.0f)) pet->NearTeleportTo(plMover->GetPositionX(), plMover->GetPositionY(), plMover->GetPositionZ(), pet->GetOrientation()); } @@ -293,11 +293,11 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData) plMover->GetMotionMaster()->ReinitializeMovement(); // pussywizard: client forgets about losing control, resend it - if (plMover->HasUnitState(UNIT_STATE_FLEEING|UNIT_STATE_CONFUSED) || plMover->IsCharmed()) // only in such cases SetClientControl(self, false) is sent + if (plMover->HasUnitState(UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED) || plMover->IsCharmed()) // only in such cases SetClientControl(self, false) is sent plMover->SetClientControl(plMover, false, true); } -void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) +void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) { uint16 opcode = recvData.GetOpcode(); @@ -320,7 +320,8 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) recvData.readPackGUID(guid); // prevent tampered movement data - if (!guid || guid != mover->GetGUID()) { + if (!guid || guid != mover->GetGUID()) + { recvData.rfinish(); // prevent warnings spam return; } @@ -336,7 +337,8 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) movementInfo.guid = guid; ReadMovementInfo(recvData, &movementInfo); - if (!movementInfo.pos.IsPositionValid()) { + if (!movementInfo.pos.IsPositionValid()) + { recvData.rfinish(); // prevent warnings spam return; } @@ -352,14 +354,14 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) // transports size limited // (also received at zeppelin leave by some reason with t_* as absolute in continent coordinates, can be safely skipped) if (movementInfo.transport.pos.GetPositionX() > 75.0f || movementInfo.transport.pos.GetPositionY() > 75.0f || movementInfo.transport.pos.GetPositionZ() > 75.0f || - movementInfo.transport.pos.GetPositionX() < -75.0f || movementInfo.transport.pos.GetPositionY() < -75.0f || movementInfo.transport.pos.GetPositionZ() < -75.0f) + movementInfo.transport.pos.GetPositionX() < -75.0f || movementInfo.transport.pos.GetPositionY() < -75.0f || movementInfo.transport.pos.GetPositionZ() < -75.0f) { recvData.rfinish(); // prevent warnings spam return; } if (!acore::IsValidMapCoord(movementInfo.pos.GetPositionX() + movementInfo.transport.pos.GetPositionX(), movementInfo.pos.GetPositionY() + movementInfo.transport.pos.GetPositionY(), - movementInfo.pos.GetPositionZ() + movementInfo.transport.pos.GetPositionZ(), movementInfo.pos.GetOrientation() + movementInfo.transport.pos.GetOrientation())) + movementInfo.pos.GetPositionZ() + movementInfo.transport.pos.GetPositionZ(), movementInfo.pos.GetOrientation() + movementInfo.transport.pos.GetOrientation())) { recvData.rfinish(); // prevent warnings spam return; @@ -509,7 +511,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) } } -void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData) +void WorldSession::HandleForceSpeedChangeAck(WorldPacket& recvData) { uint32 opcode = recvData.GetOpcode(); #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) @@ -550,15 +552,42 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData) switch (opcode) { - case CMSG_FORCE_WALK_SPEED_CHANGE_ACK: move_type = MOVE_WALK; force_move_type = MOVE_WALK; break; - case CMSG_FORCE_RUN_SPEED_CHANGE_ACK: move_type = MOVE_RUN; force_move_type = MOVE_RUN; break; - case CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK: move_type = MOVE_RUN_BACK; force_move_type = MOVE_RUN_BACK; break; - case CMSG_FORCE_SWIM_SPEED_CHANGE_ACK: move_type = MOVE_SWIM; force_move_type = MOVE_SWIM; break; - case CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK: move_type = MOVE_SWIM_BACK; force_move_type = MOVE_SWIM_BACK; break; - case CMSG_FORCE_TURN_RATE_CHANGE_ACK: move_type = MOVE_TURN_RATE; force_move_type = MOVE_TURN_RATE; break; - case CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK: move_type = MOVE_FLIGHT; force_move_type = MOVE_FLIGHT; break; - case CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK: move_type = MOVE_FLIGHT_BACK; force_move_type = MOVE_FLIGHT_BACK; break; - case CMSG_FORCE_PITCH_RATE_CHANGE_ACK: move_type = MOVE_PITCH_RATE; force_move_type = MOVE_PITCH_RATE; break; + case CMSG_FORCE_WALK_SPEED_CHANGE_ACK: + move_type = MOVE_WALK; + force_move_type = MOVE_WALK; + break; + case CMSG_FORCE_RUN_SPEED_CHANGE_ACK: + move_type = MOVE_RUN; + force_move_type = MOVE_RUN; + break; + case CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK: + move_type = MOVE_RUN_BACK; + force_move_type = MOVE_RUN_BACK; + break; + case CMSG_FORCE_SWIM_SPEED_CHANGE_ACK: + move_type = MOVE_SWIM; + force_move_type = MOVE_SWIM; + break; + case CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK: + move_type = MOVE_SWIM_BACK; + force_move_type = MOVE_SWIM_BACK; + break; + case CMSG_FORCE_TURN_RATE_CHANGE_ACK: + move_type = MOVE_TURN_RATE; + force_move_type = MOVE_TURN_RATE; + break; + case CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK: + move_type = MOVE_FLIGHT; + force_move_type = MOVE_FLIGHT; + break; + case CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK: + move_type = MOVE_FLIGHT_BACK; + force_move_type = MOVE_FLIGHT_BACK; + break; + case CMSG_FORCE_PITCH_RATE_CHANGE_ACK: + move_type = MOVE_PITCH_RATE; + force_move_type = MOVE_PITCH_RATE; + break; default: sLog->outError("WorldSession::HandleForceSpeedChangeAck: Unknown move type opcode: %u", opcode); return; @@ -578,19 +607,19 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData) if (_player->GetSpeed(move_type) > newspeed) // must be greater - just correct { sLog->outError("%sSpeedChange player %s is NOT correct (must be %f instead %f), force set to correct value", - move_type_name[move_type], _player->GetName().c_str(), _player->GetSpeed(move_type), newspeed); + move_type_name[move_type], _player->GetName().c_str(), _player->GetSpeed(move_type), newspeed); _player->SetSpeed(move_type, _player->GetSpeedRate(move_type), true); } else // must be lesser - cheating { sLog->outBasic("Player %s from account id %u kicked for incorrect speed (must be %f instead %f)", - _player->GetName().c_str(), GetAccountId(), _player->GetSpeed(move_type), newspeed); + _player->GetName().c_str(), GetAccountId(), _player->GetSpeed(move_type), newspeed); KickPlayer("Incorrect speed"); } } } -void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recvData) +void WorldSession::HandleSetActiveMoverOpcode(WorldPacket& recvData) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_SET_ACTIVE_MOVER"); @@ -606,7 +635,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recvData) } } -void WorldSession::HandleMoveNotActiveMover(WorldPacket &recvData) +void WorldSession::HandleMoveNotActiveMover(WorldPacket& recvData) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_MOVE_NOT_ACTIVE_MOVER"); @@ -637,7 +666,7 @@ void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recvData*/) GetPlayer()->SendMessageToSet(&data, false); } -void WorldSession::HandleMoveKnockBackAck(WorldPacket & recvData) +void WorldSession::HandleMoveKnockBackAck(WorldPacket& recvData) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_KNOCK_BACK_ACK"); @@ -739,7 +768,7 @@ void WorldSession::HandleMoveTimeSkippedOpcode(WorldPacket& recvData) #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_MOVE_TIME_SKIPPED"); #endif - + uint64 guid; uint32 timeSkipped; recvData.readPackGUID(guid); |