本文整理汇总了C++中channelMgr函数的典型用法代码示例。如果您正苦于以下问题:C++ channelMgr函数的具体用法?C++ channelMgr怎么用?C++ channelMgr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了channelMgr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CHECK_PACKET_SIZE
void WorldSession::HandleChannelUnmoderator(WorldPacket& recvPacket)
{
sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp;
recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp;
if(!normalizePlayerName(otp))
return;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if(Channel *chn = cMgr->GetChannel(channelname, _player))
chn->UnsetModerator(_player->GetGUID(), otp.c_str());
}
开发者ID:yunishaa,项目名称:mangos-112,代码行数:21,代码来源:ChannelHandler.cpp
示例2: time
void WorldSession::HandleChannelKick(WorldPacket& recvPacket)
{
time_t now = time(NULL);
if (now - timeLastChannelKickCommand < 5)
return;
else
timeLastChannelKickCommand = now;
sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcode());
uint32 channelLength = recvPacket.ReadBits(8);
uint32 nameLength = recvPacket.ReadBits(7);
std::string otp = recvPacket.ReadString(nameLength);
std::string channelname = recvPacket.ReadString(channelLength);
if (!normalizePlayerName(otp))
return;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channelname, _player))
chn->Kick(_player->GetGUID(), otp.c_str());
}
开发者ID:3DViking,项目名称:MistCore,代码行数:22,代码来源:ChannelHandler.cpp
示例3: GetAreaEntryByAreaID
void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcodeEnum());
uint32 channel_id;
std::string pass, channelname;
recvPacket.read_skip<uint8>();
recvPacket.read_skip<uint8>();
recvPacket >> channel_id;
if (channel_id)
{
ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(channel_id);
if (!channel)
return;
AreaTableEntry const* current_zone = GetAreaEntryByAreaID(_player->GetZoneId());
if (!current_zone)
return;
if (!_player->CanJoinConstantChannelInZone(channel, current_zone))
return;
}
recvPacket >> channelname;
recvPacket >> pass;
if (channelname.empty())
return;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
cMgr->team = _player->GetTeam();
if (Channel *chn = cMgr->GetJoinChannel(channelname, channel_id))
chn->Join(_player->GetGUID(), pass.c_str());
}
}
开发者ID:CorpVin,项目名称:SkyFireEMU_420,代码行数:39,代码来源:ChannelHandler.cpp
示例4: HandleJoinChannel
void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
{
sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
uint32 channel_id;
uint8 unknown1, unknown2;
std::string channelname, pass;
recvPacket >> channel_id >> unknown1 >> unknown2;
recvPacket >> channelname;
if (channelname.empty())
return;
recvPacket >> pass;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
cMgr->team = _player->GetTeam();
if (Channel *chn = cMgr->GetJoinChannel(channelname, channel_id))
chn->Join(_player->GetGUID(), pass.c_str());
}
}
开发者ID:Ickybad,项目名称:diamondcore2,代码行数:22,代码来源:ChannelHandler.cpp
示例5: HandleGetChannelMemberCount
void WorldSession::HandleGetChannelMemberCount(WorldPacket &recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcode());
std::string channelname;
recvPacket >> channelname;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
if (Channel* chn = cMgr->GetChannel(channelname, _player))
{
WorldPacket data(SMSG_CHANNEL_MEMBER_COUNT, chn->GetName().size()+1+1+4);
data << chn->GetName();
data << uint8(chn->GetFlags());
data << uint32(chn->GetNumPlayers());
SendPacket(&data);
}
}
}
开发者ID:Expery,项目名称:Core,代码行数:22,代码来源:ChannelHandler.cpp
示例6: time
//Checked
void WorldSession::HandleChannelPassword(WorldPacket& recvPacket)
{
time_t now = time(NULL);
if (now - timeLastChannelPassCommand < 5)
return;
else
timeLastChannelPassCommand = now;
sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcode());
uint32 passLength = recvPacket.ReadBits(7);
uint32 nameLength = recvPacket.ReadBits(7);
recvPacket.FlushBits();
std::string pass = recvPacket.ReadString(passLength);
std::string channelname = recvPacket.ReadString(nameLength);
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channelname, _player))
chn->Password(_player->GetGUID(), pass.c_str());
}
开发者ID:Expery,项目名称:Core,代码行数:23,代码来源:ChannelHandler.cpp
示例7: DEBUG_LOG
void WorldSession::HandleJoinChannelOpcode(WorldPacket& recvPacket)
{
DEBUG_LOG("WORLD: Received opcode %s (%u, 0x%X)", recvPacket.GetOpcodeName(), recvPacket.GetOpcode(), recvPacket.GetOpcode());
uint32 channel_id;
std::string channelname, pass;
recvPacket >> channel_id;
recvPacket.ReadBit(); // has voice
recvPacket.ReadBit(); // zone update
uint8 channelLength = recvPacket.ReadBits(8);
uint8 passwordLength = recvPacket.ReadBits(8);
channelname = recvPacket.ReadString(channelLength);
pass = recvPacket.ReadString(passwordLength);
if (channelname.empty())
return;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetJoinChannel(channelname, channel_id)) // channel id seems to be useless but must be checked for LFG
chn->Join(_player->GetObjectGuid(), pass.c_str());
}
开发者ID:Adeer,项目名称:server,代码行数:23,代码来源:ChannelHandler.cpp
示例8: Send_WoW_Channel
// This function will construct and send a packet to all players
// on the given channel ingame. (previuosly found in world.cpp)
// it loops thru all sessions and checks if they are on the channel
// if so construct a packet and send it.
void IRCClient::Send_WoW_Channel(const char *channel, std::string chat)
{
if(!(strlen(channel) > 0))
return;
#ifdef USE_UTF8
std::string chat2 = chat;
if(ConvertUTF8(chat2.c_str(), chat2))
chat = chat2;
#endif
HashMapHolder<Player>::MapType& m = sObjectAccessor->GetPlayers();
for(HashMapHolder<Player>::MapType::iterator itr = m.begin(); itr != m.end(); ++itr)
{
if (itr->second && itr->second->GetSession()->GetPlayer() && itr->second->GetSession()->GetPlayer()->IsInWorld())
{
if(ChannelMgr* cMgr = channelMgr(itr->second->GetSession()->GetPlayer()->GetTeam()))
{
if(Channel *chn = cMgr->GetChannel(channel, itr->second->GetSession()->GetPlayer()))
{
WorldPacket data;
data.Initialize(SMSG_MESSAGECHAT);
data << (uint8)CHAT_MSG_CHANNEL;
data << (uint32)LANG_UNIVERSAL;
data << (uint64)0;
data << (uint32)0;
data << channel;
data << (uint64)0;
data << (uint32) (strlen(chat.c_str()) + 1);
data << IRCcol2WoW(chat.c_str());
data << (uint8)0;
itr->second->GetSession()->SendPacket(&data);
}
}
}
}
}
开发者ID:814077430,项目名称:ArkCORE,代码行数:41,代码来源:IRCIO.cpp
示例9: CHECK_PACKET_SIZE
void WorldSession::HandleChannelJoin(WorldPacket& recvPacket)
{
sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 4+1+1+1);
uint32 channel_id;
uint8 unknown1, unknown2;
std::string channelname, pass;
recvPacket >> channel_id >> unknown1 >> unknown2;
recvPacket >> channelname;
if(channelname.empty())
return;
// recheck
CHECK_PACKET_SIZE(recvPacket, 4+1+1+(channelname.size()+1)+1);
recvPacket >> pass;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if(Channel *chn = cMgr->GetJoinChannel(channelname, channel_id))
chn->Join(_player->GetGUID(), pass.c_str());
}
开发者ID:Actionfox,项目名称:mangos,代码行数:24,代码来源:ChannelHandler.cpp
示例10: DEBUG_LOG
//.........这里部分代码省略.........
return;
WorldPacket data;
ChatHandler::FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND, lang, msg.c_str());
group->BroadcastPacket(&data, false);
} break;
case CHAT_MSG_BATTLEGROUND_LEADER:
{
std::string msg;
recv_data >> msg;
if (!processChatmessageFurtherAfterSecurityChecks(msg, lang))
return;
if (msg.empty())
break;
// battleground raid is always in Player->GetGroup(), never in GetOriginalGroup()
Group* group = GetPlayer()->GetGroup();
if (!group || !group->isBGGroup() || !group->IsLeader(GetPlayer()->GetObjectGuid()))
return;
WorldPacket data;
ChatHandler::FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND_LEADER, lang, msg.c_str());
group->BroadcastPacket(&data, false);
} break;
case CHAT_MSG_CHANNEL:
{
std::string channel, msg;
recv_data >> channel;
recv_data >> msg;
if (!processChatmessageFurtherAfterSecurityChecks(msg, lang))
return;
if (msg.empty())
break;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channel, _player))
chn->Say(_player->GetObjectGuid(), msg.c_str(), lang);
} break;
case CHAT_MSG_AFK:
{
std::string msg;
recv_data >> msg;
if (!_player->isInCombat())
{
if (_player->isAFK()) // Already AFK
{
if (msg.empty())
_player->ToggleAFK(); // Remove AFK
else
_player->autoReplyMsg = msg; // Update message
}
else // New AFK mode
{
_player->autoReplyMsg = msg.empty() ? GetMangosString(LANG_PLAYER_AFK_DEFAULT) : msg;
if (_player->isDND())
_player->ToggleDND();
_player->ToggleAFK();
}
}
break;
}
case CHAT_MSG_DND:
{
std::string msg;
recv_data >> msg;
if (_player->isDND()) // Already DND
{
if (msg.empty())
_player->ToggleDND(); // Remove DND
else
_player->autoReplyMsg = msg; // Update message
}
else // New DND mode
{
_player->autoReplyMsg = msg.empty() ? GetMangosString(LANG_PLAYER_DND_DEFAULT) : msg;
if (_player->isAFK())
_player->ToggleAFK();
_player->ToggleDND();
}
break;
}
default:
sLog.outError("CHAT: unknown message type %u, lang: %u", type, lang);
break;
}
}
开发者ID:LeFroid,项目名称:mangos-one-old-,代码行数:101,代码来源:ChatHandler.cpp
示例11: CHECK_PACKET_SIZE
//.........这里部分代码省略.........
if(msg.empty())
break;
Group *group = GetPlayer()->GetGroup();
if(!group || !group->isRaidGroup())
return;
WorldPacket data;
ChatHandler::FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND, lang, "", 0, msg.c_str(),NULL);
group->BroadcastPacket(&data);
} break;
case CHAT_MSG_BATTLEGROUND_LEADER:
{
std::string msg="";
recv_data >> msg;
// strip invisible characters for non-addon messages
if (lang != LANG_ADDON && sWorld.getConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING))
stripLineInvisibleChars(msg);
if(msg.empty())
break;
Group *group = GetPlayer()->GetGroup();
if(!group || !group->isRaidGroup() || !group->IsLeader(GetPlayer()->GetGUID()))
return;
WorldPacket data;
ChatHandler::FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND_LEADER, lang, "", 0, msg.c_str(),NULL);
group->BroadcastPacket(&data);
} break;
case CHAT_MSG_CHANNEL:
{
std::string channel = "", msg = "";
recv_data >> channel;
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(channel.size()+1)+1);
recv_data >> msg;
// strip invisible characters for non-addon messages
if (lang != LANG_ADDON && sWorld.getConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING))
stripLineInvisibleChars(msg);
if(msg.empty())
break;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
if(Channel *chn = cMgr->GetChannel(channel,_player))
chn->Say(_player->GetGUID(),msg.c_str(),lang);
}
} break;
case CHAT_MSG_AFK:
{
std::string msg;
recv_data >> msg;
if((msg.empty() || !_player->isAFK()) && !_player->isInCombat() )
{
if(!_player->isAFK())
{
if(msg.empty())
msg = objmgr.GetMangosString(LANG_PLAYER_AFK_DEFAULT,GetSessionLocaleIndex());
_player->afkMsg = msg;
}
_player->ToggleAFK();
if(_player->isAFK() && _player->isDND())
_player->ToggleDND();
}
} break;
case CHAT_MSG_DND:
{
std::string msg;
recv_data >> msg;
if(msg.empty() || !_player->isDND())
{
if(!_player->isDND())
{
if(msg.empty())
msg = objmgr.GetMangosString(LANG_PLAYER_DND_DEFAULT,GetSessionLocaleIndex());
_player->dndMsg = msg;
}
_player->ToggleDND();
if(_player->isDND() && _player->isAFK())
_player->ToggleAFK();
}
} break;
default:
sLog.outError("CHAT: unknown message type %u, lang: %u", type, lang);
break;
}
}
开发者ID:Artea,项目名称:mangos-svn,代码行数:101,代码来源:ChatHandler.cpp
示例12: SendData
void IrcBot::ParseCommand(std::string nickName, char const* cmd, std::vector<char const*> args)
{
if (!stricmp(cmd, "channel"))
{
if (args.size() < 2)
SendData(PRIVMSG, "Not enough arguments! !channel HOOKED_CHANNEL message");
else if (!IsChannelHooked(args[0]))
SendData(PRIVMSG, "Channel is not hooked!");
else
{
std::stringstream ss;
for (_itr = args.begin()+1; _itr != args.end(); _itr++)
ss << *_itr << " ";
std::string temp = ss.str();
if (ChannelMgr* cMgr = channelMgr(0))
{
if (Channel* chn = cMgr->GetChannel(args[0], 0, false))
chn->SayFromIRC(nickName.c_str(), temp.c_str());
}
}
}
else if (!stricmp(cmd, "hook"))
{
if (args.size() < 1)
SendData(PRIVMSG, "Not enough arguments! !hook CHANNEL_TO_HOOK");
else if (IsChannelHooked(args[0]))
SendData(PRIVMSG, "Channel is already hooked!");
else
{
if (HookChannel(args[0]))
SendData(PRIVMSG, "Channel successfully hooked!");
else
SendData(PRIVMSG, error_msg.c_str());
}
}
else if (!stricmp(cmd, "unhook"))
{
if (args.size() < 1)
SendData(PRIVMSG, "Not enough arguments! !unhook CHANNEL_TO_UNHOOK");
else
{
if (UnhookChannel(args[0]))
SendData(PRIVMSG, "Channel successfully unhooked!");
else
SendData(PRIVMSG, error_msg.c_str());
}
}
else if (!stricmp(cmd, "hooked"))
{
if (_hookedChannels.size() <= 0)
SendData(PRIVMSG, "No channels are hooked!");
else
{
std::stringstream ss;
ss << "The following channels are hooked:\n";
for (_itr = _hookedChannels.begin(); _itr != _hookedChannels.end(); _itr++)
{
ss << " - " << *_itr << "\n";
}
ss << "End of List";
std::string temp = ss.str();
SendData(PRIVMSG, temp.c_str());
}
}
else if (!stricmp(cmd, "restart"))
{
if (args.size() < 1)
SendData(PRIVMSG, "Not enough arguments! !restart [irc | core]");
else if (!stricmp(args[0], "irc"))
{
// Just disconnect, the master function will automatically
// restart the irc once it disconnects
Disconnect();
}
else if (!stricmp(args[0], "core"))
{
int restartTime = 10; // Default time 10 seconds if not supplied.
if (args.size() < 2)
sWorld->ShutdownServ(restartTime, SHUTDOWN_MASK_RESTART, RESTART_EXIT_CODE);
else
sWorld->ShutdownServ((int)args[1], SHUTDOWN_MASK_RESTART, RESTART_EXIT_CODE);
}
else
SendData(PRIVMSG, "Invalid argument! !restart [irc | core]");
}
}
开发者ID:sk3tche,项目名称:TrinityCore,代码行数:86,代码来源:IRC.cpp
示例13: DEBUG_LOG
void WorldSession::HandleJoinChannelOpcode(WorldPacket& recvPacket)
{
DEBUG_LOG("WORLD: Received opcode %s (%u, 0x%X)", recvPacket.GetOpcodeName(), recvPacket.GetOpcode(), recvPacket.GetOpcode());
std::string channelName, pass;
recvPacket >> channelName;
if (channelName.empty())
{ return; }
recvPacket >> pass;
uint32 channelId = 0;
char tmpStr[255];
// Current player area id
const uint32 playerZoneId = _player->GetZoneId();
const uint32 stormwindZoneID = 1519;
const uint32 ironforgeZoneID = 1537;
const uint32 darnassusZoneID = 1657;
const uint32 orgrimmarZoneID = 1637;
const uint32 thunderbluffZoneID = 1638;
const uint32 undercityZoneID = 1497;
uint32 cityLookupAreaID = playerZoneId; // Used to lookup for channels which support cross-city-chat
// Area id of "Cities"
const uint32 citiesZoneID = 3459;
// Channel ID of the trade channel since this only applies to it
const uint32 tradeChannelID = 2;
const uint32 guildRecruitmentChannelID = 25;
// Check if we are inside of a city
if (playerZoneId == stormwindZoneID ||
playerZoneId == ironforgeZoneID ||
playerZoneId == darnassusZoneID ||
playerZoneId == orgrimmarZoneID ||
playerZoneId == thunderbluffZoneID ||
playerZoneId == undercityZoneID)
{
// Use cities instead of the player id
cityLookupAreaID = citiesZoneID;
}
//TODO: This doesn't seem like the right way to do it, but the client doesn't send any ID of the channel, and it's needed
for (uint32 i = 0; i < sChatChannelsStore.GetNumRows(); ++i)
{
ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(i);
AreaTableEntry const* area = sAreaStore.LookupEntry(
(channel->ChannelID == tradeChannelID || channel->ChannelID == guildRecruitmentChannelID) ? cityLookupAreaID : playerZoneId);
if (area && channel)
{
snprintf(tmpStr, 255, channel->pattern[GetSessionDbcLocale()], area->area_name[GetSessionDbcLocale()]);
//With a format string
if (strcmp(tmpStr, channelName.c_str()) == 0
//Without one, used for ie: World Defense
|| strcmp(channel->pattern[0], channelName.c_str()) == 0)
{
channelId = channel->ChannelID;
break;
}
}
}
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
//the channel id needs to be checkd for lfg (explanation?)
if (Channel* chn = cMgr->GetJoinChannel(channelName))
chn->Join(_player, pass.c_str());
}
开发者ID:Chuck5ta,项目名称:server,代码行数:71,代码来源:ChannelHandler.cpp
示例14: CHECK_PACKET_SIZE
//.........这里部分代码省略.........
group->BroadcastPacket(&data);
GetPlayer()->UpdateSpeakTime();
} break;
case CHAT_MSG_RAID_WARN:
{
std::string msg="";
recv_data >> msg;
Group *group = GetPlayer()->groupInfo.group;
if(!group || !group->isRaidGroup() || !group->IsLeader(GetPlayer()->GetGUID()))
return;
WorldPacket data;
sChatHandler.FillMessageData(&data, this, CHAT_MSG_RAID_WARN, lang, "", 0, msg.c_str());
group->BroadcastPacket(&data);
GetPlayer()->UpdateSpeakTime();
} break;
case CHAT_MSG_BATTLEGROUND_CHAT:
{
std::string msg="";
recv_data >> msg;
Group *group = GetPlayer()->groupInfo.group;
if(!group || !group->isRaidGroup())
return;
WorldPacket data;
sChatHandler.FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND_CHAT, lang, "", 0, msg.c_str());
group->BroadcastPacket(&data);
GetPlayer()->UpdateSpeakTime();
} break;
case CHAT_MSG_BATTLEGROUND_LEADER:
{
std::string msg="";
recv_data >> msg;
Group *group = GetPlayer()->groupInfo.group;
if(!group || !group->isRaidGroup() || !group->IsLeader(GetPlayer()->GetGUID()))
return;
WorldPacket data;
sChatHandler.FillMessageData(&data, this, CHAT_MSG_BATTLEGROUND_LEADER, lang, "", 0, msg.c_str());
group->BroadcastPacket(&data);
GetPlayer()->UpdateSpeakTime();
} break;
case CHAT_MSG_CHANNEL:
{
std::string channel = "", msg = "";
recv_data >> channel;
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(channel.size()+1)+1);
recv_data >> msg;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
if(Channel *chn = cMgr->GetChannel(channel,_player))
{
chn->Say(_player->GetGUID(),msg.c_str(),lang);
GetPlayer()->UpdateSpeakTime();
}
}
} break;
case CHAT_MSG_AFK:
{
std::string msg;
recv_data >> msg;
_player->afkMsg = msg;
if((msg.size() == 0 || !_player->isAFK()) && !_player->isInCombat() )
{
_player->ToggleAFK();
if(_player->isAFK() && _player->isDND())
_player->ToggleDND();
}
} break;
case CHAT_MSG_DND:
{
std::string msg;
recv_data >> msg;
GetPlayer()->dndMsg = msg;
if(msg.size() == 0 || !GetPlayer()->isDND())
{
GetPlayer()->ToggleDND();
if(GetPlayer()->isDND() && GetPlayer()->isAFK())
GetPlayer()->ToggleAFK();
}
} break;
default:
sLog.outError("CHAT: unknown msg type %u, lang: %u", type, lang);
}
}
开发者ID:Artea,项目名称:mangos-svn,代码行数:101,代码来源:ChatHandler.cpp
示例15: GetPlayer
//.........这里部分代码省略.........
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());
GetPlayer()->Whisper(msg, lang, receiver->GetGUID());
if (sLogon->getBoolConfig(CONFIG_CHATLOG_WHISPER))
sLog->outChat("[WHISPER] Player %s tells %s: %s", GetPlayer()->GetName(), receiver ? receiver->GetName() : "<unknown>", msg.c_str());
if (lang != LANG_ADDON)
{
if (!AccountMgr::IsVIPorPlayer(GetSecurity()))
sGMQualityManager->OnGMChat(ChatMsg(type), sender, msg, to);
else
sGMQualityManager->OnPlayerChat(ChatMsg(type), sender, msg, to);
}
break;
}
case CHAT_MSG_CHANNEL:
{
if ((channel.compare("GLaDOS") == 0) || (channel.compare("GM") == 0))
{
if (AccountMgr::IsVIPorPlayer(GetSecurity()))
return;
if (ChatHandler(this).ParseCommands(msg.c_str()) > 0)
return;
}
else
{
if (GetPlayer() && GetPlayer()->getLevel() < 10)
return;
if (GetAntiSpamCounter() > LOGON_DOS_STRIKE_LIMIT || sLogon->CheckForSpam(msg))
{
IncAntiSpamCounter();
SendFakeChannelNotification(channel, msg, lang);
return;
}
if (sLogon->getBoolConfig(CONFIG_CHATLOG_CHANNEL))
sLog->outChat("[CHANNEL] Player %s tells Channel [%s]: %s", GetPlayer()->GetName(), channel.c_str(), msg.c_str());
if (strContains(channel, " - ", false) || strContains(channel, "SucheNachGruppe", false))
{
SendPacketToNode(&recv_data); //Send if the Channel is not on our LogonServer
return;
}
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
{
if (Channel* chn = cMgr->GetChannel(channel, _player))
chn->Say(_player->GetGUID(), msg.c_str(), lang);
}
}
break;
}
case CHAT_MSG_AFK:
{
if ((msg.empty() || !_player->isAFK())) //&& !_player->isInCombat())
{
if (!_player->isAFK())
{
if (msg.empty())
msg = GetTrinityString(LANG_PLAYER_AFK_DEFAULT);
_player->afkMsg = msg;
}
_player->ToggleAFK();
if (_player->isAFK() && _player->isDND())
_player->ToggleDND();
}
break;
}
case CHAT_MSG_DND:
{
if (msg.empty() || !_player->isDND())
{
if (!_player->isDND())
{
if (msg.empty())
msg = GetTrinityString(LANG_PLAYER_DND_DEFAULT);
_player->dndMsg = msg;
}
_player->ToggleDND();
if (_player->isDND() && _player->isAFK())
_player->ToggleAFK();
}
break;
}
default:
sLog->outError("CHAT: unknown message type %u, lang: %u", type, lang);
break;
}
}
开发者ID:Allowed,项目名称:Strawberry335,代码行数:101,代码来源:ChatHandler.cpp
注:本文中的channelMgr函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论