bool ChatHandler::HandleGMListIngameCommand(char* /*args*/) { std::list< std::pair<std::string, bool> > names; { HashMapHolder<Player>::ReadGuard g(HashMapHolder<Player>::GetLock()); HashMapHolder<Player>::MapType& m = sObjectAccessor.GetPlayers(); for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr) { AccountTypes itr_sec = itr->second->GetSession()->GetSecurity(); if ((itr->second->isGameMaster() || (itr_sec > SEC_PLAYER && itr_sec <= (AccountTypes)sWorld.getConfig(CONFIG_UINT32_GM_LEVEL_IN_GM_LIST))) && (!m_session || itr->second->IsVisibleGloballyFor(m_session->GetPlayer()))) names.push_back(std::make_pair<std::string, bool>(GetNameLink(itr->second), itr->second->isAcceptWhispers())); } } if (!names.empty()) { SendSysMessage(LANG_GMS_ON_SRV); char const* accepts = GetBlizzLikeString(LANG_GM_ACCEPTS_WHISPER); char const* not_accept = GetBlizzLikeString(LANG_GM_NO_WHISPER); for (std::list<std::pair< std::string, bool> >::const_iterator iter = names.begin(); iter != names.end(); ++iter) PSendSysMessage("%s - %s", iter->first.c_str(), iter->second ? accepts : not_accept); } else SendSysMessage(LANG_GMS_NOT_LOGGED); return true; }
void WorldSession::SendNotification(int32 string_id,...) { char const* format = GetBlizzLikeString(string_id); if (format) { va_list ap; char szStr [1024]; szStr[0] = '\0'; va_start(ap, string_id); vsnprintf(szStr, 1024, format, ap); va_end(ap); WorldPacket data(SMSG_NOTIFICATION, (strlen(szStr)+1)); data << szStr; SendPacket(&data); } }
void WorldSession::SendBattleGroundOrArenaJoinError(uint8 err) { WorldPacket data; int32 msg; switch (err) { case BG_JOIN_ERR_OFFLINE_MEMBER: msg = LANG_BG_GROUP_OFFLINE_MEMBER; break; case BG_JOIN_ERR_GROUP_TOO_MANY: msg = LANG_BG_GROUP_TOO_LARGE; break; case BG_JOIN_ERR_MIXED_FACTION: msg = LANG_BG_GROUP_MIXED_FACTION; break; case BG_JOIN_ERR_MIXED_LEVELS: msg = LANG_BG_GROUP_MIXED_LEVELS; break; case BG_JOIN_ERR_GROUP_MEMBER_ALREADY_IN_QUEUE: msg = LANG_BG_GROUP_MEMBER_ALREADY_IN_QUEUE; break; case BG_JOIN_ERR_GROUP_DESERTER: msg = LANG_BG_GROUP_MEMBER_DESERTER; break; case BG_JOIN_ERR_ALL_QUEUES_USED: msg = LANG_BG_GROUP_MEMBER_NO_FREE_QUEUE_SLOTS; break; case BG_JOIN_ERR_GROUP_NOT_ENOUGH: case BG_JOIN_ERR_MIXED_ARENATEAM: default: return; break; } ChatHandler::FillMessageData(&data, NULL, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_UNIVERSAL, NULL, 0, GetBlizzLikeString(msg), NULL); SendPacket(&data); return; }