mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Chat: Fixed addon chat messages using C_ChatInfo.SendAddonMessageLogged
Closes #22926
This commit is contained in:
@@ -749,7 +749,7 @@ void Channel::Say(ObjectGuid const& guid, std::string const& what, uint32 lang)
|
||||
SendToAll(builder, !playerInfo.IsModerator() ? guid : ObjectGuid::Empty);
|
||||
}
|
||||
|
||||
void Channel::AddonSay(ObjectGuid const& guid, std::string const& prefix, std::string const& what) const
|
||||
void Channel::AddonSay(ObjectGuid const& guid, std::string const& prefix, std::string const& what, bool isLogged) const
|
||||
{
|
||||
if (what.empty())
|
||||
return;
|
||||
@@ -777,10 +777,10 @@ void Channel::AddonSay(ObjectGuid const& guid, std::string const& prefix, std::s
|
||||
|
||||
WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
|
||||
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
|
||||
packet->Initialize(CHAT_MSG_CHANNEL, LANG_ADDON, player, player, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
|
||||
packet->Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, player, player, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
|
||||
else
|
||||
{
|
||||
packet->Initialize(CHAT_MSG_CHANNEL, LANG_ADDON, nullptr, nullptr, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
|
||||
packet->Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, nullptr, nullptr, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
|
||||
packet->SenderGUID = guid;
|
||||
packet->TargetGUID = guid;
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ class TC_GAME_API Channel
|
||||
void List(Player const* player);
|
||||
void Announce(Player const* player);
|
||||
void Say(ObjectGuid const& guid, std::string const& what, uint32 lang) const;
|
||||
void AddonSay(ObjectGuid const& guid, std::string const& prefix, std::string const& what) const;
|
||||
void AddonSay(ObjectGuid const& guid, std::string const& prefix, std::string const& what, bool isLogged) const;
|
||||
void DeclineInvite(Player const* player);
|
||||
void Invite(Player const* player, std::string const& newp);
|
||||
void JoinNotify(Player const* player);
|
||||
|
||||
@@ -21479,16 +21479,16 @@ void Player::TextEmote(std::string const& text, WorldObject const* /*= nullptr*/
|
||||
SendMessageToSetInRange(packet.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true, !GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT));
|
||||
}
|
||||
|
||||
void Player::WhisperAddon(std::string const& text, const std::string& prefix, Player* receiver)
|
||||
void Player::WhisperAddon(std::string const& text, std::string const& prefix, bool isLogged, Player* receiver)
|
||||
{
|
||||
std::string _text(text);
|
||||
sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, uint32(LANG_ADDON), _text, receiver);
|
||||
sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, uint32(isLogged ? LANG_ADDON_LOGGED : LANG_ADDON), _text, receiver);
|
||||
|
||||
if (!receiver->GetSession()->IsAddonRegistered(prefix))
|
||||
return;
|
||||
|
||||
WorldPackets::Chat::Chat packet;
|
||||
packet.Initialize(CHAT_MSG_WHISPER, LANG_ADDON, this, this, text, 0, "", DEFAULT_LOCALE, prefix);
|
||||
packet.Initialize(CHAT_MSG_WHISPER, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, this, this, text, 0, "", DEFAULT_LOCALE, prefix);
|
||||
receiver->SendDirectMessage(packet.Write());
|
||||
}
|
||||
|
||||
|
||||
@@ -1161,7 +1161,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
/// Handles whispers from Addons and players based on sender, receiver's guid and language.
|
||||
void Whisper(std::string const& text, Language language, Player* receiver, bool = false) override;
|
||||
void Whisper(uint32 textId, Player* target, bool isBossWhisper = false) override;
|
||||
void WhisperAddon(std::string const& text, std::string const& prefix, Player* receiver);
|
||||
void WhisperAddon(std::string const& text, std::string const& prefix, bool isLogged, Player* receiver);
|
||||
|
||||
/*********************************************************/
|
||||
/*** STORAGE SYSTEM ***/
|
||||
|
||||
@@ -2566,12 +2566,12 @@ void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, std::strin
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::string const& msg, std::string const& prefix) const
|
||||
void Guild::BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::string const& msg, std::string const& prefix, bool isLogged) const
|
||||
{
|
||||
if (session && session->GetPlayer() && _HasRankRight(session->GetPlayer(), officerOnly ? GR_RIGHT_OFFCHATSPEAK : GR_RIGHT_GCHATSPEAK))
|
||||
{
|
||||
WorldPackets::Chat::Chat packet;
|
||||
packet.Initialize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, LANG_ADDON, session->GetPlayer(), nullptr, msg, 0, "", DEFAULT_LOCALE, prefix);
|
||||
packet.Initialize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, session->GetPlayer(), nullptr, msg, 0, "", DEFAULT_LOCALE, prefix);
|
||||
WorldPacket const* data = packet.Write();
|
||||
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
if (Player* player = itr->second->FindPlayer())
|
||||
|
||||
@@ -816,7 +816,7 @@ class TC_GAME_API Guild
|
||||
|
||||
// Broadcasts
|
||||
void BroadcastToGuild(WorldSession* session, bool officerOnly, std::string const& msg, uint32 language = LANG_UNIVERSAL) const;
|
||||
void BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::string const& msg, std::string const& prefix) const;
|
||||
void BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::string const& msg, std::string const& prefix, bool isLogged) const;
|
||||
void BroadcastPacketToRank(WorldPacket const* packet, uint8 rankId) const;
|
||||
void BroadcastPacket(WorldPacket const* packet) const;
|
||||
void BroadcastPacketIfTrackingAchievement(WorldPacket const* packet, uint32 criteriaId) const;
|
||||
|
||||
@@ -413,15 +413,16 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
|
||||
|
||||
void WorldSession::HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage)
|
||||
{
|
||||
HandleChatAddonMessage(chatAddonMessage.Params.Type, chatAddonMessage.Params.Prefix, chatAddonMessage.Params.Text);
|
||||
HandleChatAddonMessage(chatAddonMessage.Params.Type, chatAddonMessage.Params.Prefix, chatAddonMessage.Params.Text, chatAddonMessage.Params.IsLogged);
|
||||
}
|
||||
|
||||
void WorldSession::HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted)
|
||||
{
|
||||
HandleChatAddonMessage(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text, chatAddonMessageTargeted.Target);
|
||||
HandleChatAddonMessage(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text,
|
||||
chatAddonMessageTargeted.Params.IsLogged, chatAddonMessageTargeted.Target);
|
||||
}
|
||||
|
||||
void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target /*= ""*/)
|
||||
void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target /*= ""*/)
|
||||
{
|
||||
Player* sender = GetPlayer();
|
||||
|
||||
@@ -439,7 +440,7 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:
|
||||
{
|
||||
if (sender->GetGuildId())
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(sender->GetGuildId()))
|
||||
guild->BroadcastAddonToGuild(this, type == CHAT_MSG_OFFICER, text, prefix);
|
||||
guild->BroadcastAddonToGuild(this, type == CHAT_MSG_OFFICER, text, prefix, isLogged);
|
||||
break;
|
||||
}
|
||||
case CHAT_MSG_WHISPER:
|
||||
@@ -454,7 +455,7 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:
|
||||
if (!receiver)
|
||||
break;
|
||||
|
||||
sender->WhisperAddon(text, prefix, receiver);
|
||||
sender->WhisperAddon(text, prefix, isLogged, receiver);
|
||||
break;
|
||||
}
|
||||
// Messages sent to "RAID" while in a party will get delivered to "PARTY"
|
||||
@@ -478,14 +479,14 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:
|
||||
}
|
||||
|
||||
WorldPackets::Chat::Chat packet;
|
||||
packet.Initialize(type, LANG_ADDON, sender, nullptr, text, 0, "", DEFAULT_LOCALE, prefix);
|
||||
packet.Initialize(type, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, sender, nullptr, text, 0, "", DEFAULT_LOCALE, prefix);
|
||||
group->BroadcastAddonMessagePacket(packet.Write(), prefix, true, subGroup, sender->GetGUID());
|
||||
break;
|
||||
}
|
||||
case CHAT_MSG_CHANNEL:
|
||||
{
|
||||
if (Channel* chn = ChannelMgr::GetChannelForPlayerByNamePart(target, sender))
|
||||
chn->AddonSay(sender->GetGUID(), prefix, text.c_str());
|
||||
chn->AddonSay(sender->GetGUID(), prefix, text.c_str(), isLogged);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -1453,7 +1453,7 @@ class TC_GAME_API WorldSession
|
||||
void HandleChatMessage(ChatMsg type, uint32 lang, std::string msg, std::string target = "");
|
||||
void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage);
|
||||
void HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted);
|
||||
void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target = "");
|
||||
void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target = "");
|
||||
void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK);
|
||||
void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND);
|
||||
void HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageEmote& chatMessageEmote);
|
||||
|
||||
Reference in New Issue
Block a user