diff options
Diffstat (limited to 'src/server/game/Handlers/ChatHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 578 |
1 files changed, 295 insertions, 283 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 2daeeb9eef..07a37c37a0 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -32,7 +32,7 @@ #include "LuaEngine.h" #endif -void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) +void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) { uint32 type; uint32 lang; @@ -144,17 +144,17 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) case CHAT_MSG_RAID: case CHAT_MSG_GUILD: case CHAT_MSG_BATTLEGROUND: - // check if addon messages are disabled - if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL)) - { - recvData.rfinish(); - return; - } - - if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) - { - std::string msg; - recvData >> msg; + // check if addon messages are disabled + if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL)) + { + recvData.rfinish(); + return; + } + + if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) + { + std::string msg; + recvData >> msg; if (msg.empty()) return; @@ -166,27 +166,27 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) #endif } - break; + break; case CHAT_MSG_WHISPER: - // check if addon messages are disabled - if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL)) - { - recvData.rfinish(); - return; - } - - if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) - { - std::string to, msg; - recvData >> to >> msg; - if (msg.empty()) - return; - } - - break; + // check if addon messages are disabled + if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL)) + { + recvData.rfinish(); + return; + } + + if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) + { + std::string to, msg; + recvData >> to >> msg; + if (msg.empty()) + return; + } + + break; default: sLog->outError("Player %s (GUID: %u) sent a chatmessage with an invalid language/message type combination", - GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); + GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); recvData.rfinish(); return; @@ -208,29 +208,29 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) { switch (type) { - case CHAT_MSG_PARTY: - case CHAT_MSG_PARTY_LEADER: - case CHAT_MSG_RAID: - case CHAT_MSG_RAID_LEADER: - case CHAT_MSG_RAID_WARNING: - // allow two side chat at group channel if two side group allowed - if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP)) - lang = LANG_UNIVERSAL; - - specialMessageLimit = 35; - break; - case CHAT_MSG_GUILD: - case CHAT_MSG_OFFICER: - // allow two side chat at guild channel if two side guild allowed - if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD)) - lang = LANG_UNIVERSAL; + case CHAT_MSG_PARTY: + case CHAT_MSG_PARTY_LEADER: + case CHAT_MSG_RAID: + case CHAT_MSG_RAID_LEADER: + case CHAT_MSG_RAID_WARNING: + // allow two side chat at group channel if two side group allowed + if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP)) + lang = LANG_UNIVERSAL; + + specialMessageLimit = 35; + break; + case CHAT_MSG_GUILD: + case CHAT_MSG_OFFICER: + // allow two side chat at guild channel if two side guild allowed + if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD)) + lang = LANG_UNIVERSAL; - specialMessageLimit = 15; - break; - case CHAT_MSG_WHISPER: - if (sender->getLevel() >= 80) specialMessageLimit = 15; - break; + break; + case CHAT_MSG_WHISPER: + if (sender->getLevel() >= 80) + specialMessageLimit = 15; + break; } } // but overwrite it by SPELL_AURA_MOD_LANGUAGE auras (only single case used) @@ -318,8 +318,8 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) size_t found1 = msg.find("|Hquest"); if (found1 != std::string::npos) { - size_t found2 = msg.find(":", found1+8); - size_t found3 = msg.find("|", found1+8); + size_t found2 = msg.find(":", found1 + 8); + size_t found3 = msg.find("|", found1 + 8); if (found3 != std::string::npos) { if (found2 == std::string::npos) @@ -330,7 +330,8 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) } // prevent crash player - if (msg.find("| |Hquest") != std::string::npos) { + if (msg.find("| |Hquest") != std::string::npos) + { return; } @@ -341,255 +342,293 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) case CHAT_MSG_SAY: case CHAT_MSG_EMOTE: case CHAT_MSG_YELL: - { - // Prevent cheating - if (!sender->IsAlive()) - return; - - if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)); - return; - } + // Prevent cheating + if (!sender->IsAlive()) + return; - if (type == CHAT_MSG_SAY) - sender->Say(msg, lang); - else if (type == CHAT_MSG_EMOTE) - sender->TextEmote(msg); - else if (type == CHAT_MSG_YELL) - sender->Yell(msg, lang); - } break; - case CHAT_MSG_WHISPER: - { - if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)) - { - SendNotification(GetAcoreString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); - return; - } + if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)) + { + SendNotification(GetAcoreString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)); + return; + } - if (!normalizePlayerName(to)) - { - SendPlayerNotFoundNotice(to); - break; + if (type == CHAT_MSG_SAY) + sender->Say(msg, lang); + else if (type == CHAT_MSG_EMOTE) + sender->TextEmote(msg); + else if (type == CHAT_MSG_YELL) + sender->Yell(msg, lang); } - - Player* receiver = ObjectAccessor::FindPlayerByName(to, false); - bool senderIsPlayer = AccountMgr::IsPlayerAccount(GetSecurity()); - bool receiverIsPlayer = AccountMgr::IsPlayerAccount(receiver ? receiver->GetSession()->GetSecurity() : SEC_PLAYER); - if (!receiver || (senderIsPlayer && !receiverIsPlayer && !receiver->isAcceptWhispers() && !receiver->IsInWhisperWhiteList(sender->GetGUID()))) + break; + case CHAT_MSG_WHISPER: { - SendPlayerNotFoundNotice(to); - return; - } + if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)) + { + SendNotification(GetAcoreString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); + return; + } - if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT) && senderIsPlayer && receiverIsPlayer) - if (GetPlayer()->GetTeamId() != receiver->GetTeamId()) + if (!normalizePlayerName(to)) { - SendWrongFactionNotice(); + SendPlayerNotFoundNotice(to); + break; + } + + Player* receiver = ObjectAccessor::FindPlayerByName(to, false); + bool senderIsPlayer = AccountMgr::IsPlayerAccount(GetSecurity()); + bool receiverIsPlayer = AccountMgr::IsPlayerAccount(receiver ? receiver->GetSession()->GetSecurity() : SEC_PLAYER); + if (!receiver || (senderIsPlayer && !receiverIsPlayer && !receiver->isAcceptWhispers() && !receiver->IsInWhisperWhiteList(sender->GetGUID()))) + { + SendPlayerNotFoundNotice(to); return; } - // pussywizard: optimization - if (GetPlayer()->HasAura(1852) && !receiver->IsGameMaster()) - { - SendNotification(GetAcoreString(LANG_GM_SILENCE), GetPlayer()->GetName().c_str()); - return; - } + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT) && senderIsPlayer && receiverIsPlayer) + if (GetPlayer()->GetTeamId() != receiver->GetTeamId()) + { + SendWrongFactionNotice(); + return; + } + + // pussywizard: optimization + if (GetPlayer()->HasAura(1852) && !receiver->IsGameMaster()) + { + SendNotification(GetAcoreString(LANG_GM_SILENCE), GetPlayer()->GetName().c_str()); + return; + } - // If player is a Gamemaster and doesn't accept whisper, we auto-whitelist every player that the Gamemaster is talking to - if (!senderIsPlayer && !sender->isAcceptWhispers() && !sender->IsInWhisperWhiteList(receiver->GetGUID())) - sender->AddWhisperWhiteList(receiver->GetGUID()); + // If player is a Gamemaster and doesn't accept whisper, we auto-whitelist every player that the Gamemaster is talking to + if (!senderIsPlayer && !sender->isAcceptWhispers() && !sender->IsInWhisperWhiteList(receiver->GetGUID())) + sender->AddWhisperWhiteList(receiver->GetGUID()); - GetPlayer()->Whisper(msg, lang, receiver->GetGUID()); - } break; + GetPlayer()->Whisper(msg, lang, receiver->GetGUID()); + } + break; case CHAT_MSG_PARTY: case CHAT_MSG_PARTY_LEADER: - { - // if player is in battleground, he cannot say to battleground members by /p - Group* group = GetPlayer()->GetOriginalGroup(); - if (!group) { - group = sender->GetGroup(); - if (!group || group->isBGGroup()) - return; - } + // if player is in battleground, he cannot say to battleground members by /p + Group* group = GetPlayer()->GetOriginalGroup(); + if (!group) + { + group = sender->GetGroup(); + if (!group || group->isBGGroup()) + return; + } - if (type == CHAT_MSG_PARTY_LEADER && !group->IsLeader(sender->GetGUID())) - return; + if (type == CHAT_MSG_PARTY_LEADER && !group->IsLeader(sender->GetGUID())) + return; - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - ChatHandler::BuildChatPacket(data, ChatMsg(type), Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false, group->GetMemberGroup(GetPlayer()->GetGUID())); - } break; + WorldPacket data; + ChatHandler::BuildChatPacket(data, ChatMsg(type), Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false, group->GetMemberGroup(GetPlayer()->GetGUID())); + } + break; case CHAT_MSG_GUILD: - { - if (GetPlayer()->GetGuildId()) { - if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId())) + if (GetPlayer()->GetGuildId()) { - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, guild); + if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId())) + { + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, guild); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, guild)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, guild)) + return; #endif - guild->BroadcastToGuild(this, false, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL); + guild->BroadcastToGuild(this, false, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL); + } } } - } break; + break; case CHAT_MSG_OFFICER: - { - if (GetPlayer()->GetGuildId()) { - if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId())) + if (GetPlayer()->GetGuildId()) { - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, guild); + if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId())) + { + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, guild); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, guild)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, guild)) + return; #endif - guild->BroadcastToGuild(this, true, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL); + guild->BroadcastToGuild(this, true, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL); + } } } - } break; + break; case CHAT_MSG_RAID: - { - // if player is in battleground, he cannot say to battleground members by /ra - Group* group = GetPlayer()->GetOriginalGroup(); - if (!group) { - group = GetPlayer()->GetGroup(); - if (!group || group->isBGGroup() || !group->isRaidGroup()) - return; - } + // if player is in battleground, he cannot say to battleground members by /ra + Group* group = GetPlayer()->GetOriginalGroup(); + if (!group) + { + group = GetPlayer()->GetGroup(); + if (!group || group->isBGGroup() || !group->isRaidGroup()) + return; + } - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID, Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false); - } break; + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID, Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false); + } + break; case CHAT_MSG_RAID_LEADER: - { - // if player is in battleground, he cannot say to battleground members by /ra - Group* group = GetPlayer()->GetOriginalGroup(); - if (!group) { - group = GetPlayer()->GetGroup(); - if (!group || group->isBGGroup() || !group->isRaidGroup() || !group->IsLeader(sender->GetGUID())) - return; - } + // if player is in battleground, he cannot say to battleground members by /ra + Group* group = GetPlayer()->GetOriginalGroup(); + if (!group) + { + group = GetPlayer()->GetGroup(); + if (!group || group->isBGGroup() || !group->isRaidGroup() || !group->IsLeader(sender->GetGUID())) + return; + } - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_LEADER, Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false); - } break; + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_LEADER, Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false); + } + break; case CHAT_MSG_RAID_WARNING: - { - Group* group = GetPlayer()->GetGroup(); - if (!group || !group->isRaidGroup() || !(group->IsLeader(GetPlayer()->GetGUID()) || group->IsAssistant(GetPlayer()->GetGUID())) || group->isBGGroup()) - return; + { + Group* group = GetPlayer()->GetGroup(); + if (!group || !group->isRaidGroup() || !(group->IsLeader(GetPlayer()->GetGUID()) || group->IsAssistant(GetPlayer()->GetGUID())) || group->isBGGroup()) + return; - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - //in battleground, raid warning is sent only to players in battleground - code is ok - ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false); - } break; + WorldPacket data; + //in battleground, raid warning is sent only to players in battleground - code is ok + ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false); + } + break; case CHAT_MSG_BATTLEGROUND: - { - //battleground raid is always in Player->GetGroup(), never in GetOriginalGroup() - Group* group = GetPlayer()->GetGroup(); - if (!group || !group->isBGGroup()) - return; + { + //battleground raid is always in Player->GetGroup(), never in GetOriginalGroup() + Group* group = GetPlayer()->GetGroup(); + if (!group || !group->isBGGroup()) + return; - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - ChatHandler::BuildChatPacket(data, CHAT_MSG_BATTLEGROUND, Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false); - } break; + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_BATTLEGROUND, Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false); + } + break; case CHAT_MSG_BATTLEGROUND_LEADER: - { - // battleground raid is always in Player->GetGroup(), never in GetOriginalGroup() - Group* group = GetPlayer()->GetGroup(); - if (!group || !group->isBGGroup() || !group->IsLeader(GetPlayer()->GetGUID())) - return; + { + // battleground raid is always in Player->GetGroup(), never in GetOriginalGroup() + Group* group = GetPlayer()->GetGroup(); + if (!group || !group->isBGGroup() || !group->IsLeader(GetPlayer()->GetGUID())) + return; - sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); + sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group); #ifdef ELUNA - if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) - return; + if (!sEluna->OnChat(GetPlayer(), type, lang, msg, group)) + return; #endif - WorldPacket data; - ChatHandler::BuildChatPacket(data, CHAT_MSG_BATTLEGROUND_LEADER, Language(lang), sender, NULL, msg); - group->BroadcastPacket(&data, false); - } break; + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_BATTLEGROUND_LEADER, Language(lang), sender, NULL, msg); + group->BroadcastPacket(&data, false); + } + break; case CHAT_MSG_CHANNEL: - { - if (AccountMgr::IsPlayerAccount(GetSecurity())) { - if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)) + if (AccountMgr::IsPlayerAccount(GetSecurity())) { - SendNotification(GetAcoreString(LANG_CHANNEL_REQ), sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)); - return; + if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)) + { + SendNotification(GetAcoreString(LANG_CHANNEL_REQ), sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)); + return; + } } - } - if (ChannelMgr* cMgr = ChannelMgr::forTeam(sender->GetTeamId())) + if (ChannelMgr* cMgr = ChannelMgr::forTeam(sender->GetTeamId())) + { + if (Channel* chn = cMgr->GetChannel(channel, sender)) + { + sScriptMgr->OnPlayerChat(sender, type, lang, msg, chn); + +#ifdef ELUNA + if (!sEluna->OnChat(sender, type, lang, msg, chn)) + return; +#endif + chn->Say(sender->GetGUID(), msg.c_str(), lang); + } + } + } + break; + case CHAT_MSG_AFK: { - if (Channel* chn = cMgr->GetChannel(channel, sender)) + if (!sender->IsInCombat()) { - sScriptMgr->OnPlayerChat(sender, type, lang, msg, chn); + if (sender->isAFK()) // Already AFK + { + if (msg.empty()) + sender->ToggleAFK(); // Remove AFK + else + sender->autoReplyMsg = msg; // Update message + } + else // New AFK mode + { + sender->autoReplyMsg = msg.empty() ? GetAcoreString(LANG_PLAYER_AFK_DEFAULT) : msg; + + if (sender->isDND()) + sender->ToggleDND(); + + sender->ToggleAFK(); + } + sScriptMgr->OnPlayerChat(sender, type, lang, msg); #ifdef ELUNA - if (!sEluna->OnChat(sender, type, lang, msg, chn)) + if (!sEluna->OnChat(sender, type, lang, msg)) return; #endif - chn->Say(sender->GetGUID(), msg.c_str(), lang); } + break; } - } break; - case CHAT_MSG_AFK: - { - if (!sender->IsInCombat()) + case CHAT_MSG_DND: { - if (sender->isAFK()) // Already AFK + if (sender->isDND()) // Already DND { if (msg.empty()) - sender->ToggleAFK(); // Remove AFK + sender->ToggleDND(); // Remove DND else - sender->autoReplyMsg = msg; // Update message + sender->autoReplyMsg = msg; // Update message } - else // New AFK mode + else // New DND mode { - sender->autoReplyMsg = msg.empty() ? GetAcoreString(LANG_PLAYER_AFK_DEFAULT) : msg; + sender->autoReplyMsg = msg.empty() ? GetAcoreString(LANG_PLAYER_DND_DEFAULT) : msg; - if (sender->isDND()) - sender->ToggleDND(); + if (sender->isAFK()) + sender->ToggleAFK(); - sender->ToggleAFK(); + sender->ToggleDND(); } sScriptMgr->OnPlayerChat(sender, type, lang, msg); @@ -597,42 +636,15 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData) if (!sEluna->OnChat(sender, type, lang, msg)) return; #endif + break; } - break; - } - case CHAT_MSG_DND: - { - if (sender->isDND()) // Already DND - { - if (msg.empty()) - sender->ToggleDND(); // Remove DND - else - sender->autoReplyMsg = msg; // Update message - } - else // New DND mode - { - sender->autoReplyMsg = msg.empty() ? GetAcoreString(LANG_PLAYER_DND_DEFAULT) : msg; - - if (sender->isAFK()) - sender->ToggleAFK(); - - sender->ToggleDND(); - } - - sScriptMgr->OnPlayerChat(sender, type, lang, msg); -#ifdef ELUNA - if (!sEluna->OnChat(sender, type, lang, msg)) - return; -#endif - break; - } default: sLog->outError("CHAT: unknown message type %u, lang: %u", type, lang); break; } } -void WorldSession::HandleEmoteOpcode(WorldPacket & recvData) +void WorldSession::HandleEmoteOpcode(WorldPacket& recvData) { if (!GetPlayer()->IsAlive() || GetPlayer()->HasUnitState(UNIT_STATE_DIED)) return; @@ -655,35 +667,35 @@ namespace acore { class EmoteChatBuilder { - public: - EmoteChatBuilder(Player const& player, uint32 text_emote, uint32 emote_num, Unit const* target) - : i_player(player), i_text_emote(text_emote), i_emote_num(emote_num), i_target(target) {} + public: + EmoteChatBuilder(Player const& player, uint32 text_emote, uint32 emote_num, Unit const* target) + : i_player(player), i_text_emote(text_emote), i_emote_num(emote_num), i_target(target) {} - void operator()(WorldPacket& data, LocaleConstant loc_idx) - { - std::string const name(i_target ? i_target->GetNameForLocaleIdx(loc_idx) : ""); - uint32 namlen = name.size(); - - data.Initialize(SMSG_TEXT_EMOTE, 20 + namlen); - data << i_player.GetGUID(); - data << uint32(i_text_emote); - data << uint32(i_emote_num); - data << uint32(namlen); - if (namlen > 1) - data << name; - else - data << uint8(0x00); - } + void operator()(WorldPacket& data, LocaleConstant loc_idx) + { + std::string const name(i_target ? i_target->GetNameForLocaleIdx(loc_idx) : ""); + uint32 namlen = name.size(); + + data.Initialize(SMSG_TEXT_EMOTE, 20 + namlen); + data << i_player.GetGUID(); + data << uint32(i_text_emote); + data << uint32(i_emote_num); + data << uint32(namlen); + if (namlen > 1) + data << name; + else + data << uint8(0x00); + } - private: - Player const& i_player; - uint32 i_text_emote; - uint32 i_emote_num; - Unit const* i_target; + private: + Player const& i_player; + uint32 i_text_emote; + uint32 i_emote_num; + Unit const* i_target; }; } // namespace acore -void WorldSession::HandleTextEmoteOpcode(WorldPacket & recvData) +void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData) { if (!GetPlayer()->IsAlive()) return; @@ -726,8 +738,8 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket & recvData) // Only allow text-emotes for "dead" entities (feign death included) if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) break; - GetPlayer()->HandleEmoteCommand(emote_anim); - break; + GetPlayer()->HandleEmoteCommand(emote_anim); + break; } Unit* unit = ObjectAccessor::GetUnit(*_player, guid); @@ -768,7 +780,7 @@ void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recvData) player->GetSession()->SendPacket(&data); } -void WorldSession::HandleChannelDeclineInvite(WorldPacket &recvPacket) +void WorldSession::HandleChannelDeclineInvite(WorldPacket& recvPacket) { // used only with EXTRA_LOGS UNUSED(recvPacket); @@ -780,14 +792,14 @@ void WorldSession::HandleChannelDeclineInvite(WorldPacket &recvPacket) void WorldSession::SendPlayerNotFoundNotice(std::string const& name) { - WorldPacket data(SMSG_CHAT_PLAYER_NOT_FOUND, name.size()+1); + WorldPacket data(SMSG_CHAT_PLAYER_NOT_FOUND, name.size() + 1); data << name; SendPacket(&data); } void WorldSession::SendPlayerAmbiguousNotice(std::string const& name) { - WorldPacket data(SMSG_CHAT_PLAYER_AMBIGUOUS, name.size()+1); + WorldPacket data(SMSG_CHAT_PLAYER_AMBIGUOUS, name.size() + 1); data << name; SendPacket(&data); } |