diff options
author | Luzifix <luzifix19@gmail.com> | 2015-03-12 23:23:16 +0100 |
---|---|---|
committer | Luzifix <luzifix19@gmail.com> | 2015-03-14 15:09:44 +0100 |
commit | b3a8e13c1e2fef61a2bddde010d75a8c4c8c07f5 (patch) | |
tree | 5eac180ab55fe13f386b942820696237dd33ff3a | |
parent | 04020e717c1303bb9b175bad63d4ce155c810e88 (diff) |
Core/PacketIO: updated and enabled CMSG_SET_TITLE
Thx @DJScias for help
-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 69ffb8a7502..dcb63b8921b 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -426,3 +426,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 b185fc3301e..ad26e8036d0 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -580,6 +580,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 79f9a599074..d16ed845c9b 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 c7ea26b7adf..a4ae4830587 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; } @@ -1201,7 +1202,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); |