Through DB you can now disable password changing by non-gm's simply by changing m_public to 0. Make channels public by default.
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1 @@
|
||||
ALTER TABLE channels ADD COLUMN m_public tinyint(1) NOT NULL DEFAULT 1 AFTER m_moderate;
|
||||
@@ -0,0 +1 @@
|
||||
INSERT INTO trinity_string (entry, content_default) VALUES (5022, "Channel password not changed due to channel being marked public. GM Powers required.");
|
||||
+15
-5
@@ -53,7 +53,7 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team)
|
||||
//load not built in channel if saved
|
||||
std::string _name(name);
|
||||
CharacterDatabase.escape_string(_name);
|
||||
QueryResult_AutoPtr 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);
|
||||
QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT m_name, m_team, m_announce, m_moderate, m_public, 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();
|
||||
@@ -61,8 +61,9 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team)
|
||||
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_public = fields[4].GetBool();
|
||||
m_password = fields[5].GetString();
|
||||
const char* db_BannedList = fields[6].GetString();
|
||||
|
||||
m_IsSaved = true;
|
||||
|
||||
@@ -84,8 +85,8 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team)
|
||||
else // save
|
||||
{
|
||||
// _name is already escaped at this point.
|
||||
if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_password) "
|
||||
"VALUES ('%s', '%u', '1', '0', '')", _name.c_str(), m_Team))
|
||||
if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_public, m_password) "
|
||||
"VALUES ('%s', '%u', '1', '0', '1', '')", _name.c_str(), m_Team))
|
||||
{
|
||||
sLog.outDebug("New Channel(%s) saved", name.c_str());
|
||||
m_IsSaved = true;
|
||||
@@ -360,11 +361,20 @@ void Channel::UnBan(uint64 good, const char *badname)
|
||||
|
||||
void Channel::Password(uint64 p, const char *pass)
|
||||
{
|
||||
std::string plName;
|
||||
uint32 sec = 0;
|
||||
Player *plr = objmgr.GetPlayer(p);
|
||||
if(plr)
|
||||
sec = plr->GetSession()->GetSecurity();
|
||||
|
||||
if(!m_public && sec <= SEC_MODERATOR)
|
||||
{
|
||||
plName = plr->GetName();
|
||||
normalizePlayerName(plName);
|
||||
PSendSysMessage(LANG_CHANNEL_NOT_PUBLIC, plName.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
if(!IsOn(p))
|
||||
{
|
||||
WorldPacket data;
|
||||
|
||||
@@ -153,6 +153,7 @@ class Channel
|
||||
BannedList banned;
|
||||
bool m_announce;
|
||||
bool m_moderate;
|
||||
bool m_public;
|
||||
std::string m_name;
|
||||
std::string m_password;
|
||||
uint8 m_flags;
|
||||
|
||||
+2
-1
@@ -877,7 +877,8 @@ enum TrinityStrings
|
||||
LANG_MOUNTABLE = 5019,
|
||||
LANG_NPCINFO_PHASEMASK = 5020,
|
||||
LANG_NPCINFO_ARMOR = 5021,
|
||||
// Room for more Trinity strings 5022-9999
|
||||
LANG_CHANNEL_NOT_PUBLIC = 5022,
|
||||
// Room for more Trinity strings 5023-9999
|
||||
// Used for GM Announcements
|
||||
LANG_GM_BROADCAST = 6613,
|
||||
LANG_GM_NOTIFY = 6614,
|
||||
|
||||
@@ -8587,7 +8587,7 @@ bool ObjectMgr::IsVendorItemValid( uint32 vendor_entry, uint32 item_id, int32 ma
|
||||
return false;
|
||||
}
|
||||
|
||||
if(vItems->GetItemCount() > MAX_VENDOR_ITEMS)
|
||||
if(vItems->GetItemCount() >= MAX_VENDOR_ITEMS)
|
||||
{
|
||||
if(pl)
|
||||
ChatHandler(pl).SendSysMessage(LANG_COMMAND_ADDVENDORITEMITEMS);
|
||||
|
||||
Reference in New Issue
Block a user