diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-04 15:58:09 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-04 15:58:09 +0100 |
commit | 5518daa74b6db8852ca000ee4e3a3fee0418596b (patch) | |
tree | e7a6ab946285d1013d7dc9fd015e1348ab1e2630 /src/server/game/Handlers/ChatHandler.cpp | |
parent | 17e852d9b3c7a28a66934e7ec9d7ab00a770d06d (diff) |
Core/Chat: Send addon prefix in addon messages
Correct structure of some CMSG_MESSAGECHAT_ADDON_x opcodes
Fix a compile error in HandleReforgeItemOpcode
Diffstat (limited to 'src/server/game/Handlers/ChatHandler.cpp')
-rwxr-xr-x | src/server/game/Handlers/ChatHandler.cpp | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 41e9664b69f..2cbab68266e 100755 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -180,7 +180,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) // LANG_ADDON should not be changed nor be affected by flood control else { - // send in universal language if player in .gmon mode (ignore spell effects) + // send in universal language if player in .gm on mode (ignore spell effects) if (sender->isGameMaster()) lang = LANG_UNIVERSAL; else @@ -538,23 +538,41 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) return; } - uint32 msgLen = recvData.ReadBits(9); - uint32 prefixLen = recvData.ReadBits(5); - std::string message = ""; - std::string prefix = ""; - std::string targetName = ""; + std::string message; + std::string prefix; + std::string targetName; - if (type == CHAT_MSG_WHISPER) - { - uint32 targetLen = recvData.ReadBits(10); - message = recvData.ReadString(msgLen); - prefix = recvData.ReadString(prefixLen); - targetName = recvData.ReadString(targetLen); - } - else + switch (type) { - message = recvData.ReadString(msgLen); - prefix = recvData.ReadString(prefixLen); + case CHAT_MSG_WHISPER: + { + uint32 msgLen = recvData.ReadBits(9); + uint32 prefixLen = recvData.ReadBits(5); + uint32 targetLen = recvData.ReadBits(10); + message = recvData.ReadString(msgLen); + prefix = recvData.ReadString(prefixLen); + targetName = recvData.ReadString(targetLen); + break; + } + case CHAT_MSG_PARTY: + case CHAT_MSG_RAID: + case CHAT_MSG_OFFICER: + { + uint32 prefixLen = recvData.ReadBits(5); + uint32 msgLen = recvData.ReadBits(9); + prefix = recvData.ReadString(prefixLen); + message = recvData.ReadString(msgLen); + break; + } + case CHAT_MSG_GUILD: + case CHAT_MSG_BATTLEGROUND: + { + uint32 msgLen = recvData.ReadBits(9); + uint32 prefixLen = recvData.ReadBits(5); + message = recvData.ReadString(msgLen); + prefix = recvData.ReadString(prefixLen); + break; + } } // Logging enabled? @@ -585,10 +603,11 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) break; } case CHAT_MSG_GUILD: + case CHAT_MSG_OFFICER: { if (sender->GetGuildId()) if (Guild* guild = sGuildMgr->GetGuildById(sender->GetGuildId())) - guild->BroadcastToGuild(this, false, message, LANG_ADDON); + guild->BroadcastAddonToGuild(this, type == CHAT_MSG_OFFICER, message, prefix); break; } case CHAT_MSG_WHISPER: @@ -599,7 +618,7 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) if (!receiver) break; - sender->Whisper(message, LANG_ADDON, receiver->GetGUID()); + sender->WhisperAddon(message, prefix, receiver->GetGUID()); break; } // Messages sent to "RAID" while in a party will get delivered to "PARTY" @@ -612,7 +631,7 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) break; WorldPacket data; - ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL); + ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL, prefix.c_str()); group->BroadcastPacket(&data, true, -1, group->GetMemberGroup(sender->GetGUID())); break; } |