diff options
author | Warpten <vertozor@gmail.com> | 2015-05-27 17:23:04 +0200 |
---|---|---|
committer | Warpten <vertozor@gmail.com> | 2015-05-27 17:23:04 +0200 |
commit | 8c7540219984ddaa973710371792bd9ef292f5dc (patch) | |
tree | a9debd86fc99cd516cc0f09adbee2802815f4e63 /src | |
parent | fe52844012b45483c49af4fa16b4da17a1e5a5b0 (diff) | |
parent | b5aebf40a8a6f4b480ba2e877451db2ac3dac968 (diff) |
Merge pull request #14778 from DJScias/addonprefix
Core/PacketsIO: Updated and enabled SMSG_CHANNEL_NOTIFY, CMSG_CHAT_RE…
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.h | 18 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 6 |
5 files changed, 42 insertions, 18 deletions
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index e3df4f5a15d..4204278d514 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -233,3 +233,15 @@ WorldPacket const* WorldPackets::Chat::ChatServerMessage::Write() return &_worldPacket; } + +void WorldPackets::Chat::ChatRegisterAddonPrefixes::Read() +{ + int32 count; + _worldPacket >> count; + + for (int32 i = 0; i < count; ++i) + { + uint32 lenghts = _worldPacket.ReadBits(5); + Prefixes.push_back(_worldPacket.ReadString(lenghts)); + } +} diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 3bfac840ecc..c8bb038ce19 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -250,6 +250,24 @@ namespace WorldPackets int32 MessageID = 0; std::string StringParam; }; + + class ChatRegisterAddonPrefixes final : public ClientPacket + { + public: + ChatRegisterAddonPrefixes(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_REGISTER_ADDON_PREFIXES, std::move(packet)) { } + + void Read() override; + + std::vector<std::string> Prefixes; + }; + + class ChatUnregisterAllAddonPrefixes final : public ClientPacket + { + public: + ChatUnregisterAllAddonPrefixes(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, std::move(packet)) { } + + void Read() override { } + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 48cbf7caed2..3a2397eabdc 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -309,10 +309,10 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHAT_MESSAGE_SAY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode); DEFINE_HANDLER(CMSG_CHAT_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessageWhisper, &WorldSession::HandleChatMessageWhisperOpcode); DEFINE_HANDLER(CMSG_CHAT_MESSAGE_YELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode); + DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatRegisterAddonPrefixes, &WorldSession::HandleAddonRegisteredPrefixesOpcode); DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REPORT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode); + DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatUnregisterAllAddonPrefixes, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode); DEFINE_HANDLER(CMSG_CHECK_RAF_EMAIL_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); @@ -991,7 +991,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_JOINED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_LEFT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index fa557616450..650e100f514 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -913,31 +913,23 @@ bool WorldSession::IsAddonRegistered(const std::string& prefix) const return itr != _registeredAddonPrefixes.end(); } -void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet +void WorldSession::HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& /*packet*/) // empty packet { _registeredAddonPrefixes.clear(); } -void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket) +void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet) { - // This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES + // This is always sent after CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES - uint32 count = recvPacket.ReadBits(25); - - if (count > REGISTERED_ADDON_PREFIX_SOFTCAP) + if (packet.Prefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) { // if we have hit the softcap (64) nothing should be filtered _filterAddonMessages = false; - recvPacket.rfinish(); return; } - std::vector<uint8> lengths(count); - for (uint32 i = 0; i < count; ++i) - lengths[i] = recvPacket.ReadBits(5); - - for (uint32 i = 0; i < count; ++i) - _registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i])); + _registeredAddonPrefixes.insert(_registeredAddonPrefixes.end(), packet.Prefixes.begin(), packet.Prefixes.end()); if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen { diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 11b4298f227..8f74a8900b0 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -186,6 +186,8 @@ namespace WorldPackets class ChatMessageEmote; class CTextEmote; class EmoteClient; + class ChatRegisterAddonPrefixes; + class ChatUnregisterAllAddonPrefixes; } namespace Combat @@ -1312,8 +1314,8 @@ class WorldSession void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet); void HandleChatIgnoredOpcode(WorldPacket& recvPacket); - void HandleUnregisterAddonPrefixesOpcode(WorldPacket& recvPacket); - void HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket); + void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet); + void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet); void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& packet); void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient& packet); |