aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2021-06-17 11:35:50 +0200
committerGiacomo Pozzoni <giacomopoz@gmail.com>2021-06-17 11:35:50 +0200
commite6557834316fa6231c08bb22865faa0e489a64e4 (patch)
treeb8e831c5fc10817824d17e3284f23f8cedaa67d9 /src
parent32fd44d2aa6b1386922df07bc4b803e2d0aeaba1 (diff)
Core/Movement: Wrap recent kicks about a setting and improve logs.
Wrap recent kicks added related to speed change ack packets around the same "AntiCheat.PendingMoveChangesTimeoutTime" setting used by other anti-cheat kicks. Log more details about why a kick was triggered.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index ddfd2468a4d..96fc23c8495 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -518,17 +518,37 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData)
case MovementChangeType::SPEED_CHANGE_FLIGHT_BACK_SPEED: moveTypeSent = MOVE_FLIGHT_BACK; break;
case MovementChangeType::RATE_CHANGE_PITCH: moveTypeSent = MOVE_PITCH_RATE; break;
default:
- TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack",
- _player->GetName().c_str(), _player->GetSession()->GetAccountId());
- _player->GetSession()->KickPlayer("incorrect data returned in an ack");
+ TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack. movementChangeType: %u",
+ _player->GetName().c_str(), _player->GetSession()->GetAccountId(), static_cast<uint32>(AsUnderlyingType(changeType)));
+ if (sWorld->getIntConfig(CONFIG_PENDING_MOVE_CHANGES_TIMEOUT) != 0)
+ _player->GetSession()->KickPlayer("incorrect movementChangeType returned in an ack");
return;
}
- if (pendingChange.movementCounter != movementCounter || std::fabs(speedSent - speedReceived) > 0.01f || moveTypeSent!= move_type)
+ if (pendingChange.movementCounter != movementCounter)
{
- TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack",
- _player->GetName().c_str(), _player->GetSession()->GetAccountId());
- _player->GetSession()->KickPlayer("incorrect data returned in an ack");
+ TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack. pendingChange.movementCounter: %u, movementCounter: %u",
+ _player->GetName().c_str(), _player->GetSession()->GetAccountId(), pendingChange.movementCounter, movementCounter);
+ if (sWorld->getIntConfig(CONFIG_PENDING_MOVE_CHANGES_TIMEOUT) != 0)
+ _player->GetSession()->KickPlayer("incorrect movementCounter returned in an ack");
+ return;
+ }
+
+ if (std::fabs(speedSent - speedReceived) > 0.01f)
+ {
+ TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack. speedSent - speedReceived: %f",
+ _player->GetName().c_str(), _player->GetSession()->GetAccountId(), std::fabs(speedSent - speedReceived));
+ if (sWorld->getIntConfig(CONFIG_PENDING_MOVE_CHANGES_TIMEOUT) != 0)
+ _player->GetSession()->KickPlayer("incorrect speed returned in an ack");
+ return;
+ }
+
+ if (moveTypeSent != move_type)
+ {
+ TC_LOG_INFO("cheat", "WorldSession::HandleForceSpeedChangeAck: Player %s from account id %u kicked for incorrect data returned in an ack. moveTypeSent: %u, move_type: %u",
+ _player->GetName().c_str(), _player->GetSession()->GetAccountId(), static_cast<uint32>(AsUnderlyingType(moveTypeSent)), static_cast<uint32>(AsUnderlyingType(move_type)));
+ if (sWorld->getIntConfig(CONFIG_PENDING_MOVE_CHANGES_TIMEOUT) != 0)
+ _player->GetSession()->KickPlayer("incorrect moveType returned in an ack");
return;
}