diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 00fffaf179..e11f49c6b9 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -175,10 +175,7 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) data >> movementInfo.gravityModifier; for (uint32 i = 0; i < removeMovementForcesCount; ++i) - { - ObjectGuid guid; - data >> guid; - } + data >> WorldPackets::Ignored; data >> WorldPackets::OptionalInit(movementInfo.standingOnGameObjectGUID); bool hasTransport = data.ReadBit(); diff --git a/src/server/game/Server/Packets/PacketOperators.h b/src/server/game/Server/Packets/PacketOperators.h index 08f204ea6c..78d7a70ebb 100644 --- a/src/server/game/Server/Packets/PacketOperators.h +++ b/src/server/game/Server/Packets/PacketOperators.h @@ -495,6 +495,33 @@ namespace WorldPackets inline DataReaderWriter Data(std::span& value) { return { value }; } } + + template + struct IgnoredReaderWriter + { + friend inline ByteBuffer& operator<<(ByteBuffer& data, IgnoredReaderWriter const& /*unused*/) + { + data << T(); + return data; + } + + friend inline ByteBuffer& operator>>(ByteBuffer& data, IgnoredReaderWriter const& /*unused*/) + { + if constexpr (ByteBufferNumeric) + { + data.read_skip(); + } + else + { + T dummy; + data >> dummy; + } + return data; + } + }; + + template + inline constexpr IgnoredReaderWriter Ignored; } #endif // TRINITYCORE_PACKET_OPERATORS_H