Created
December 21, 2011 15:42
-
-
Save DDuarte/1506469 to your computer and use it in GitHub Desktop.
CMSG_MESSAGECHAT_ADDON_X
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) | |
{ | |
Player* sender = GetPlayer(); | |
ChatMsg type; | |
switch (recvData.GetOpcode()) | |
{ | |
case CMSG_MESSAGECHAT_ADDON_BATTLEGROUND: | |
type = CHAT_MSG_BATTLEGROUND; | |
break; | |
case CMSG_MESSAGECHAT_ADDON_GUILD: | |
type = CHAT_MSG_GUILD; | |
break; | |
case CMSG_MESSAGECHAT_ADDON_PARTY: | |
type = CHAT_MSG_PARTY; | |
break; | |
case CMSG_MESSAGECHAT_ADDON_RAID: | |
type = CHAT_MSG_RAID; | |
break; | |
case CMSG_MESSAGECHAT_ADDON_WHISPER: | |
type = CHAT_MSG_WHISPER; | |
break; | |
default: | |
sLog->outDetail("HandleAddonMessagechatOpcode: Unknown addon chat opcode (%u)", recvData.GetOpcode()); | |
recvData.hexlike(); | |
return; | |
} | |
std::string message = ""; | |
std::string prefix = ""; | |
std::string targetName = ""; | |
if (type == CHAT_MSG_WHISPER) | |
recvData >> prefix >> targetName >> message; | |
else | |
recvData >> message >> prefix; | |
// Logging enabled? | |
if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) | |
{ | |
if (message.empty()) | |
return; | |
sScriptMgr->OnPlayerChat(sender, uint32(CHAT_MSG_ADDON), LANG_ADDON, message); | |
} | |
// Disabled addon channel? | |
if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL)) | |
return; | |
switch (type) | |
{ | |
case CHAT_MSG_BATTLEGROUND: | |
{ | |
Group* group = sender->GetGroup(); | |
if (!group || !group->isBGGroup()) | |
return; | |
WorldPacket data; | |
ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL); | |
group->BroadcastPacket(&data, false); | |
break; | |
} | |
case CHAT_MSG_GUILD: | |
{ | |
if (sender->GetGuildId()) | |
if (Guild* guild = sGuildMgr->GetGuildById(sender->GetGuildId())) | |
guild->BroadcastToGuild(this, false, message, LANG_ADDON); | |
break; | |
} | |
case CHAT_MSG_WHISPER: | |
{ | |
if (!normalizePlayerName(targetName)) | |
break; | |
Player* receiver = sObjectAccessor->FindPlayerByName(targetName.c_str()); | |
if (!receiver) | |
break; | |
sender->Whisper(message, LANG_ADDON, receiver->GetGUID()); | |
break; | |
} | |
// Messages sent to "RAID" while in a party will get delivered to "PARTY" | |
case CHAT_MSG_PARTY: | |
case CHAT_MSG_RAID: | |
{ | |
Group* group = sender->GetGroup(); | |
if (!group || group->isBGGroup()) | |
break; | |
WorldPacket data; | |
ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL); | |
group->BroadcastPacket(&data, true, -1, group->GetMemberGroup(sender->GetGUID())); | |
break; | |
} | |
default: | |
{ | |
sLog->outError("HandleAddonMessagechatOpcode: unknown addon message type %u", type); | |
break; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment