From 66c1ea2a34cf820f26ff39f73d260680040d6472 Mon Sep 17 00:00:00 2001 From: AlterEgo Date: Wed, 6 Dec 2023 23:05:36 -0600 Subject: [PATCH] Update CMSG_SET_VEHICLE_REC_ID_ACK and structure Signed-off-by: AlterEgo --- src/server/game/Handlers/VehicleHandler.cpp | 19 +++++++++++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 2 +- src/server/game/Server/Protocol/Opcodes.h | 2 +- src/server/game/Server/WorldSession.h | 1 + 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp index 4bbfa3e1b6d..d88757f325e 100644 --- a/src/server/game/Handlers/VehicleHandler.cpp +++ b/src/server/game/Handlers/VehicleHandler.cpp @@ -226,3 +226,22 @@ void WorldSession::HandleRequestVehicleExit(WorldPacket& /*recvData*/) } } } + +void WorldSession::HandleMoveSetVehicleRecAck(WorldPacket& recvData) +{ + SF_LOG_DEBUG("network", "WORLD: Recvd CMSG_SET_VEHICLE_REC_ID_ACK"); + + static MovementStatusElements const vehicleIdExtra = MSEExtraInt32; + Movement::ExtraMovementStatusElement extras(&vehicleIdExtra); + MovementInfo movementInfo; + GetPlayer()->ReadMovementInfo(recvData, &movementInfo, &extras); + + uint32 vehicleId = extras.Data.extraInt32Data; + + ObjectGuid vehicleGuid = GetPlayer()->GetGUID(); + WorldPacket data(SMSG_SET_VEHICLE_REC_ID, 8 + 4); + data.WriteGuidMask(vehicleGuid, 5, 7, 2, 1, 4, 0, 3, 6); + data.WriteGuidBytes(vehicleGuid, 5, 7, 4, 6, 2, 1, 3, 0); + data << uint32(vehicleId); + GetPlayer()->SendMessageToSet(&data, true); +} diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d4b518d8d27..1d9d529f84b 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -413,6 +413,7 @@ void OpcodeTable::InitializeClientTable() DEFINE_OPCODE_HANDLER(CMSG_SET_TITLE, 0x03C7, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTitleOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_SET_TRADE_GOLD, 0x14E3, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_SET_TRADE_ITEM, 0x03D5, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode ); // 5.4.8 18414 + DEFINE_OPCODE_HANDLER(CMSG_SET_VEHICLE_REC_ID_ACK, 0x185B, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveSetVehicleRecAck ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_SET_WATCHED_FACTION, 0x06C9, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetWatchedFactionOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_SHOWING_CLOAK, 0x02F2, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingCloakOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_SHOWING_HELM, 0x126B, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingHelmOpcode ); // 5.4.8 18414 @@ -606,7 +607,6 @@ void OpcodeTable::InitializeClientTable() DEFINE_OPCODE_HANDLER(CMSG_SET_PREFERED_CEMETERY, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER(CMSG_SET_RELATIVE_POSITION, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER(CMSG_SET_TRADE_CURRENCY, 0x0C44, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_OPCODE_HANDLER(CMSG_SET_VEHICLE_REC_ID_ACK, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER(CMSG_STOP_DANCE, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER(CMSG_SUBMIT_COMPLAIN, 0x030D, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER(CMSG_SUSPEND_TOKEN, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 2657dfe86d5..c4bd9910ab7 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -491,6 +491,7 @@ enum Opcodes CMSG_SET_TITLE, CMSG_SET_TRADE_GOLD, CMSG_SET_TRADE_ITEM, + CMSG_SET_VEHICLE_REC_ID_ACK, CMSG_SET_WATCHED_FACTION, CMSG_SHOP_CATEGORY, CMSG_SHOWING_CLOAK, @@ -1219,7 +1220,6 @@ enum Opcodes CMSG_SET_PREFERED_CEMETERY, CMSG_SET_RELATIVE_POSITION, CMSG_SET_TRADE_CURRENCY, - CMSG_SET_VEHICLE_REC_ID_ACK, CMSG_STOP_DANCE, CMSG_SUBMIT_COMPLAIN, CMSG_SUSPEND_TOKEN, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index a11c8e058bf..ad1d1ef88df 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -655,6 +655,7 @@ class WorldSession void HandleMoveNotActiveMover(WorldPacket& recvData); void HandleDismissControlledVehicle(WorldPacket& recvData); void HandleRequestVehicleExit(WorldPacket& recvData); + void HandleMoveSetVehicleRecAck(WorldPacket& recvData); void HandleChangeSeatsOnControlledVehicle(WorldPacket& recvData); void HandleMoveTimeSkippedOpcode(WorldPacket& recvData);