diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2017-07-25 19:59:59 +0200 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2017-07-25 20:00:13 +0200 |
| commit | 98aa7806c44d37dd97268f456a0fad684fb3da18 (patch) | |
| tree | 796a55b747e5e9bc3228adc687b83b71393ac50a /src | |
| parent | 2875bea3f1fc1e649af0ff8435fe2ddf040e0c4f (diff) | |
Core/Player: Always set flight state change packets for players, even if their latest MovementInfo doesn't indicate it's needed (the MI might be outdated). Fixes a player flight exploit and closes #20079.
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a41581d6c53..9d9323e8d3f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26266,9 +26266,6 @@ bool Player::SetDisableGravity(bool disable, bool packetOnly /*= false*/) bool Player::SetCanFly(bool apply, bool packetOnly /*= false*/) { - if (!packetOnly && !Unit::SetCanFly(apply)) - return false; - if (!apply) SetFallInformation(0, GetPositionZ()); @@ -26277,11 +26274,16 @@ bool Player::SetCanFly(bool apply, bool packetOnly /*= false*/) data << uint32(0); //! movement counter SendDirectMessage(&data); - data.Initialize(MSG_MOVE_UPDATE_CAN_FLY, 64); - data << GetPackGUID(); - BuildMovementPacket(&data); - SendMessageToSet(&data, false); - return true; + if (packetOnly || Unit::SetCanFly(apply)) + { + data.Initialize(MSG_MOVE_UPDATE_CAN_FLY, 64); + data << GetPackGUID(); + BuildMovementPacket(&data); + SendMessageToSet(&data, false); + return true; + } + else + return false; } bool Player::SetHover(bool apply, bool packetOnly /*= false*/) |
