MCPcopy Create free account
hub / github.com/EQEmu/EQEmu / ChannelMessageSend

Method ChannelMessageSend

zone/client.cpp:1688–1772  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1686}
1687
1688void Client::ChannelMessageSend(
1689 const char *from,
1690 const char *to,
1691 uint8 channel_id,
1692 uint8 language_id,
1693 uint8 language_skill,
1694 const char *message,
1695 ...
1696)
1697{
1698 if (
1699 (channel_id == ChatChannel_Petition && Admin() < AccountStatus::QuestTroupe) ||
1700 (channel_id == ChatChannel_GMSAY && !GetGM())
1701 ) {
1702 return;
1703 }
1704
1705 va_list argptr;
1706 char buffer[4096];
1707 char message_sender[64];
1708
1709 va_start(argptr, message);
1710 vsnprintf(buffer, 4096, message, argptr);
1711 va_end(argptr);
1712
1713 EQApplicationPacket app(OP_ChannelMessage, sizeof(ChannelMessage_Struct) + strlen(buffer) + 1);
1714
1715 auto* cm = (ChannelMessage_Struct *) app.pBuffer;
1716
1717 if (from == 0) {
1718 strcpy(cm->sender, "ZServer");
1719 } else if (from[0] == 0) {
1720 strcpy(cm->sender, "ZServer");
1721 } else {
1722 CleanMobName(from, message_sender);
1723 strcpy(cm->sender, message_sender);
1724 }
1725
1726 if (to != 0) {
1727 strcpy((char *) cm->targetname, to);
1728 } else if (channel_id == ChatChannel_Tell) {
1729 strcpy(cm->targetname, m_pp.name);
1730 } else {
1731 cm->targetname[0] = 0;
1732 }
1733
1734 uint8 listener_skill;
1735
1736 const bool is_valid_language = EQ::ValueWithin(language_id, Language::CommonTongue, Language::Unknown27);
1737
1738 if (is_valid_language) {
1739 listener_skill = m_pp.languages[language_id];
1740 cm->language = listener_skill < 24 ? Language::Unknown27 : language_id;
1741 } else {
1742 listener_skill = m_pp.languages[Language::CommonTongue];
1743 cm->language = Language::CommonTongue;
1744 }
1745

Callers 7

ItemSayMethod · 0.80
GroupMessageMethod · 0.80
HandleMessageMethod · 0.80
ChannelMessageMethod · 0.80
GroupMessageMethod · 0.80
Perl_QuestItem_ItemSayFunction · 0.80

Calls 2

ValueWithinFunction · 0.85
CleanMobNameFunction · 0.50

Tested by

no test coverage detected