diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
5 files changed, 24 insertions, 11 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 2759b4f2f5e..13b60d571d3 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1146,23 +1146,20 @@ void WorldSession::HandleFarSightOpcode(WorldPacket& recvData) GetPlayer()->UpdateVisibilityForPlayer(); } -void WorldSession::HandleSetTitleOpcode(WorldPacket& recvData) +void WorldSession::HandleSetTitleOpcode(WorldPackets::Character::SetTitle& packet) { TC_LOG_DEBUG("network", "CMSG_SET_TITLE"); - - int32 title; - recvData >> title; - + // -1 at none - if (title > 0 && title < MAX_TITLE_INDEX) + if (packet.TitleID > 0 && packet.TitleID < MAX_TITLE_INDEX) { - if (!GetPlayer()->HasTitle(title)) + if (!GetPlayer()->HasTitle(packet.TitleID)) return; } else - title = 0; + packet.TitleID = 0; - GetPlayer()->SetUInt32Value(PLAYER_CHOSEN_TITLE, title); + GetPlayer()->SetUInt32Value(PLAYER_CHOSEN_TITLE, packet.TitleID); } void WorldSession::HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet) diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 388a54219a4..010183ed56e 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -423,3 +423,8 @@ void WorldPackets::Character::ShowingHelm::Read() { ShowHelm = _worldPacket.ReadBit(); } + +void WorldPackets::Character::SetTitle::Read() +{ + _worldPacket >> TitleID; +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index f88e46586bf..3cbf969f4d3 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -576,6 +576,16 @@ namespace WorldPackets bool ShowHelm = false; }; + + class SetTitle final : public ClientPacket + { + public: + SetTitle(WorldPacket&& packet) : ClientPacket(CMSG_SET_TITLE, std::move(packet)) { } + + void Read() override; + + int32 TitleID = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 0211732d312..d0187793acc 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -777,7 +777,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SET_SPECIALIZATION, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Talent::SetSpecialization, &WorldSession::HandleSetSpecializationOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TAXI_BENCHMARK_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTaxiBenchmarkOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TITLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTitleOpcode ); + DEFINE_HANDLER(CMSG_SET_TITLE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetTitle, &WorldSession::HandleSetTitleOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_CURRENCY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_GOLD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode ); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3088ef7f64a..c93c3cfcc33 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -121,6 +121,7 @@ namespace WorldPackets class PlayedTimeClient; class ShowingCloak; class ShowingHelm; + class SetTitle; enum class LoginFailureReason : uint8; } @@ -1203,7 +1204,7 @@ class WorldSession void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty); void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty); void HandleMoveSetCanFlyAckOpcode(WorldPacket& recvData); - void HandleSetTitleOpcode(WorldPacket& recvData); + void HandleSetTitleOpcode(WorldPackets::Character::SetTitle& packet); void HandleRealmSplitOpcode(WorldPacket& recvData); void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet); void HandleWhoisOpcode(WorldPackets::Who::WhoIsRequest& packet); |