Channel::Channel(const std::string& name, uint32 channel_id) : m_announce(true), m_moderate(false), m_name(name), m_flags(0), m_channelId(channel_id) { // set special flags if built-in channel ChatChannelsEntry const* ch = GetChannelEntryFor(channel_id); if (ch) // it's built-in channel { channel_id = ch->ChannelID; // built-in channel m_announce = false; // no join/leave announces m_flags |= CHANNEL_FLAG_GENERAL; // for all built-in channels if (ch->flags & CHANNEL_DBC_FLAG_TRADE) // for trade channel m_flags |= CHANNEL_FLAG_TRADE; if (ch->flags & CHANNEL_DBC_FLAG_CITY_ONLY2) // for city only channels m_flags |= CHANNEL_FLAG_CITY; if (ch->flags & CHANNEL_DBC_FLAG_LFG) // for LFG channel m_flags |= CHANNEL_FLAG_LFG; else // for all other channels m_flags |= CHANNEL_FLAG_NOT_LFG; } else // it's custom channel { m_flags |= CHANNEL_FLAG_CUSTOM; } }
Channel::Channel(std::string _name, uint32 _channal_id) : name(_name), announce(true), channel_id(_channal_id), moderate(false), m_ownerGUID(0), password("") { // set special flags if built-in channel ChatChannelsEntry const* ch = GetChannelEntryFor(_channal_id); if(ch) { channel_id = ch->ChannelID; // built-in channel announce = false; // no join/leave announces } }
Channel::Channel(const std::string& name) : m_announce(true), m_moderate(false), m_name(name), m_flags(0), m_channelId(0), m_securityLevel(0), m_area_dependant(true), m_levelRestricted(true) { // set special flags if built-in channel ChatChannelsEntry const* ch = GetChannelEntryFor(name); if (ch) // it's built-in channel { m_channelId = ch->ChannelID; // only built-in channel have channel id != 0 m_announce = false; // no join/leave announces m_flags |= CHANNEL_FLAG_GENERAL; // for all built-in channels if (ch->flags & CHANNEL_DBC_FLAG_TRADE) // for trade channel m_flags |= CHANNEL_FLAG_TRADE; if (ch->flags & CHANNEL_DBC_FLAG_ZONE_DEP) // Determine if handled in Master or Node m_area_dependant = true; if (ch->flags & CHANNEL_DBC_FLAG_CITY_ONLY2) // for city only channels m_flags |= CHANNEL_FLAG_CITY; if (ch->flags & CHANNEL_DBC_FLAG_LFG) // for LFG channel m_flags |= CHANNEL_FLAG_LFG; else // for all other channels m_flags |= CHANNEL_FLAG_NOT_LFG; } else // it's custom channel { normalizePlayerName(m_name); if (m_name == u8"World") { m_flags |= CHANNEL_FLAG_GENERAL; m_announce = false; } else if (m_name == u8"China" || m_name == u8"中国") { m_flags |= CHANNEL_FLAG_CUSTOM; m_announce = false; } else { m_flags |= CHANNEL_FLAG_CUSTOM; m_levelRestricted = false; } } }
Channel::Channel(const std::string& name, uint32 channel_id) : m_announce(true), m_moderate(false), m_name(name), m_flags(0), m_channelId(channel_id), m_ownerGUID(0) { // set special flags if built-in channel ChatChannelsEntry const* ch = GetChannelEntryFor(channel_id); if(ch) // it's built-in channel { channel_id = ch->ChannelID; // built-in channel m_announce = false; // no join/leave announces m_flags |= CHANNEL_FLAG_GENERAL; // for all built-in channels if(ch->flags & CHANNEL_DBC_FLAG_TRADE) // for trade channel m_flags |= CHANNEL_FLAG_TRADE; if(ch->flags & CHANNEL_DBC_FLAG_CITY_ONLY2) // for city only channels m_flags |= CHANNEL_FLAG_CITY; if(ch->flags & CHANNEL_DBC_FLAG_LFG) // for LFG channel m_flags |= CHANNEL_FLAG_LFG; else // for all other channels m_flags |= CHANNEL_FLAG_NOT_LFG; } else // it's custom channel { // Disable announcements as default of our world channels std::string converted; converted.resize(name.size()); std::transform(name.begin(), name.end(), converted.begin(), ::tolower); if(converted.find("public") || converted.find("qstatus") || converted.find("trader")) m_announce = false; m_flags |= CHANNEL_FLAG_CUSTOM; } }
Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) : m_name(name), m_announce(true), m_moderate(false), m_channelId(channel_id), m_ownerGUID(0), m_password(""), m_flags(0) { m_Team = Team; // set special flags if built-in channel ChatChannelsEntry const* ch = GetChannelEntryFor(channel_id); if(ch) // it's built-in channel { channel_id = ch->ChannelID; // built-in channel m_announce = false; // no join/leave announces m_flags |= CHANNEL_FLAG_GENERAL; // for all built-in channels if(ch->flags & CHANNEL_DBC_FLAG_TRADE) // for trade channel m_flags |= CHANNEL_FLAG_TRADE; if(ch->flags & CHANNEL_DBC_FLAG_CITY_ONLY2) // for city only channels m_flags |= CHANNEL_FLAG_CITY; if(ch->flags & CHANNEL_DBC_FLAG_LFG) // for LFG channel m_flags |= CHANNEL_FLAG_LFG; else // for all other channels m_flags |= CHANNEL_FLAG_NOT_LFG; m_IsSaved = false; } else // it's custom channel { m_flags |= CHANNEL_FLAG_CUSTOM; //load not built in channel if saved QueryResult *result = CharacterDatabase.PQuery("SELECT m_name, m_team, m_announce, m_moderate, m_password, BannedList FROM channels WHERE m_name = '%s' AND m_team = '%u'", name.c_str(), m_Team); if (result)//load { Field *fields = result->Fetch(); const char* db_name = fields[0].GetString(); uint32 db_team = fields[1].GetUInt32(); m_announce = fields[2].GetBool(); m_moderate = fields[3].GetBool(); m_password = fields[4].GetString(); const char* db_BannedList = fields[5].GetString(); m_IsSaved = true; if(db_BannedList) { Tokens tokens = StrSplit(db_BannedList, " "); Tokens::iterator iter; for (iter = tokens.begin();iter != tokens.end(); ++iter) { uint64 banned_guid = atol((*iter).c_str()); if(banned_guid) { sLog.outDebug("Channel(%s) loaded banned guid: %u",name.c_str(), banned_guid); banned.insert(banned_guid); } } } }else{//save std::ostringstream ss; ss << "INSERT INTO channels (m_name,m_team,m_announce,m_moderate,m_password) VALUES ('" << name.c_str() << "','" << m_Team << "','1','0','')"; if(CharacterDatabase.PExecute( ss.str( ).c_str( ) )) { sLog.outDebug("New Channel(%s) saved", name.c_str()); m_IsSaved = true; } } } }