mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
net: send CMSG_MOVE_FLIGHT_ACK in response to SMSG_MOVE_SET/UNSET_FLIGHT
SMSG_MOVE_SET_FLIGHT and SMSG_MOVE_UNSET_FLIGHT were previously consumed silently without sending the required ack. Most server implementations expect CMSG_MOVE_FLIGHT_ACK before toggling the FLYING movement flag on the player; without it the server may not grant or revoke flight state. Also updates movementInfo.flags so subsequent movement packets reflect the FLYING flag correctly.
This commit is contained in:
parent
71cabddbd6
commit
ca141bb131
1 changed files with 8 additions and 2 deletions
|
|
@ -5540,10 +5540,16 @@ void GameHandler::handlePacket(network::Packet& packet) {
|
|||
case Opcode::SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY:
|
||||
case Opcode::SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY:
|
||||
case Opcode::SMSG_MOVE_SET_COLLISION_HGT:
|
||||
case Opcode::SMSG_MOVE_SET_FLIGHT:
|
||||
case Opcode::SMSG_MOVE_UNSET_FLIGHT:
|
||||
packet.setReadPos(packet.getSize());
|
||||
break;
|
||||
case Opcode::SMSG_MOVE_SET_FLIGHT:
|
||||
handleForceMoveFlagChange(packet, "SET_FLIGHT", Opcode::CMSG_MOVE_FLIGHT_ACK,
|
||||
static_cast<uint32_t>(MovementFlags::FLYING), true);
|
||||
break;
|
||||
case Opcode::SMSG_MOVE_UNSET_FLIGHT:
|
||||
handleForceMoveFlagChange(packet, "UNSET_FLIGHT", Opcode::CMSG_MOVE_FLIGHT_ACK,
|
||||
static_cast<uint32_t>(MovementFlags::FLYING), false);
|
||||
break;
|
||||
|
||||
default:
|
||||
// In pre-world states we need full visibility (char create/login handshakes).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue