diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-06-27 00:10:53 +0200 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-06-27 00:10:53 +0200 |
commit | 5864a2e151a18f95222fdb08784b5e7312c89e7f (patch) | |
tree | 187137afd455c4e512c05de7f47f430509f641e7 /src | |
parent | 6ce529aff3250a80cb0b2f935a181aa61ae62f7f (diff) |
Core/Packets: Add some additional movementflag filtering to eliminate some packet spoof attempts.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 7a00d92a71c..8fd4430a72c 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -760,6 +760,30 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi) // it will freeze clients that receive this player's movement info. if (mi->HasMovementFlag(MOVEMENTFLAG_ROOT)) mi->flags &= ~MOVEMENTFLAG_ROOT; + + // Cannot hover and jump at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && mi->HasMovementFlag(MOVEMENTFLAG_JUMPING)) + mi->flags &= ~MOVEMENTFLAG_JUMPING; + + // Cannot ascend and descend at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_ASCENDING) && mi->HasMovementFlag(MOVEMENTFLAG_DESCENDING)) + mi->flags &= ~(MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING); + + // Cannot move left and right at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_RIGHT)) + mi->flags &= ~(MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT); + + // Cannot strafe left and right at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_RIGHT)) + mi->flags &= ~(MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT); + + // Cannot pitch up and down at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_PITCH_UP) && mi->HasMovementFlag(MOVEMENTFLAG_PITCH_DOWN)) + mi->flags &= ~(MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN); + + // Cannot move forwards and backwards at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_FORWARD) && mi->HasMovementFlag(MOVEMENTFLAG_BACKWARD)) + mi->flags &= ~(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD); } void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi) |