aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ChatHandler.cpp
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-08-04 15:58:09 +0100
committerNay <dnpd.dd@gmail.com>2012-08-04 15:58:09 +0100
commit5518daa74b6db8852ca000ee4e3a3fee0418596b (patch)
treee7a6ab946285d1013d7dc9fd015e1348ab1e2630 /src/server/game/Handlers/ChatHandler.cpp
parent17e852d9b3c7a28a66934e7ec9d7ab00a770d06d (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-xsrc/server/game/Handlers/ChatHandler.cpp57
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;
}