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:
p0wer
2010-02-23 21:09:55 -06:00
parent 50e878acba
commit 98b72c5299
6 changed files with 21 additions and 7 deletions
+1
View File
@@ -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
View File
@@ -53,7 +53,7 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team)
//load not built in channel if saved //load not built in channel if saved
std::string _name(name); std::string _name(name);
CharacterDatabase.escape_string(_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 if (result)//load
{ {
Field *fields = result->Fetch(); 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(); uint32 db_team = fields[1].GetUInt32();
m_announce = fields[2].GetBool(); m_announce = fields[2].GetBool();
m_moderate = fields[3].GetBool(); m_moderate = fields[3].GetBool();
m_password = fields[4].GetString(); m_public = fields[4].GetBool();
const char* db_BannedList = fields[5].GetString(); m_password = fields[5].GetString();
const char* db_BannedList = fields[6].GetString();
m_IsSaved = true; m_IsSaved = true;
@@ -84,8 +85,8 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team)
else // save else // save
{ {
// _name is already escaped at this point. // _name is already escaped at this point.
if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_password) " if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_public, m_password) "
"VALUES ('%s', '%u', '1', '0', '')", _name.c_str(), m_Team)) "VALUES ('%s', '%u', '1', '0', '1', '')", _name.c_str(), m_Team))
{ {
sLog.outDebug("New Channel(%s) saved", name.c_str()); sLog.outDebug("New Channel(%s) saved", name.c_str());
m_IsSaved = true; m_IsSaved = true;
@@ -360,11 +361,20 @@ void Channel::UnBan(uint64 good, const char *badname)
void Channel::Password(uint64 p, const char *pass) void Channel::Password(uint64 p, const char *pass)
{ {
std::string plName;
uint32 sec = 0; uint32 sec = 0;
Player *plr = objmgr.GetPlayer(p); Player *plr = objmgr.GetPlayer(p);
if(plr) if(plr)
sec = plr->GetSession()->GetSecurity(); 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)) if(!IsOn(p))
{ {
WorldPacket data; WorldPacket data;
+1
View File
@@ -153,6 +153,7 @@ class Channel
BannedList banned; BannedList banned;
bool m_announce; bool m_announce;
bool m_moderate; bool m_moderate;
bool m_public;
std::string m_name; std::string m_name;
std::string m_password; std::string m_password;
uint8 m_flags; uint8 m_flags;
+2 -1
View File
@@ -877,7 +877,8 @@ enum TrinityStrings
LANG_MOUNTABLE = 5019, LANG_MOUNTABLE = 5019,
LANG_NPCINFO_PHASEMASK = 5020, LANG_NPCINFO_PHASEMASK = 5020,
LANG_NPCINFO_ARMOR = 5021, 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 // Used for GM Announcements
LANG_GM_BROADCAST = 6613, LANG_GM_BROADCAST = 6613,
LANG_GM_NOTIFY = 6614, LANG_GM_NOTIFY = 6614,
+1 -1
View File
@@ -8587,7 +8587,7 @@ bool ObjectMgr::IsVendorItemValid( uint32 vendor_entry, uint32 item_id, int32 ma
return false; return false;
} }
if(vItems->GetItemCount() > MAX_VENDOR_ITEMS) if(vItems->GetItemCount() >= MAX_VENDOR_ITEMS)
{ {
if(pl) if(pl)
ChatHandler(pl).SendSysMessage(LANG_COMMAND_ADDVENDORITEMITEMS); ChatHandler(pl).SendSysMessage(LANG_COMMAND_ADDVENDORITEMITEMS);