Core: Allow toggling ticketsystem on/off by config-setting (patch by leak)

Closes issue 4744.

--HG--
branch : trunk
This commit is contained in:
click
2010-11-14 00:29:34 +01:00
parent 9ba52c474b
commit c0536f374a
9 changed files with 37 additions and 2 deletions
+2
View File
@@ -27752,6 +27752,8 @@ INSERT INTO `trinity_string` (`entry`,`content_default`,`content_loc1`,`content_
(1331, 'The Frostwolf General is Dead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(1332, 'The Stormpike General is Dead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(1333, 'The Battle for Alterac Valley begins in 2 minutes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(1134, 'Sending tickets is allowed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(1135, 'Sending tickets is not allowed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(2000, '|cff00ff00New ticket from|r|cffff00ff %s.|r |cff00ff00Ticket entry:|r|cffff00ff %d.|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(2001, '|cff00ff00Character|r|cffff00ff %s |r|cff00ff00edited his/her ticket:|r|cffff00ff %d.|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(2002, '|cff00ff00Character|r|cffff00ff %s |r|cff00ff00abandoned ticket entry:|r|cffff00ff %d.|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
@@ -0,0 +1,4 @@
DELETE FROM `trinity_string` WHERE `entry` IN (1134, 1135);
INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES
(1134, 'Sending tickets is allowed.'),
(1135, 'Sending tickets is not allowed.');
@@ -436,6 +436,11 @@ bool ChatHandler::HandleGMTicketReloadCommand(const char* /* args */)
bool ChatHandler::HandleToggleGMTicketSystem(const char* /* args */)
{
sTicketMgr.SetStatus(!sTicketMgr.GetStatus());
if(sTicketMgr.GetStatus())
PSendSysMessage(LANG_ALLOW_TICKETS);
else
PSendSysMessage(LANG_DISALLOW_TICKETS);
return true;
}
+3 -1
View File
@@ -797,7 +797,9 @@ enum TrinityStrings
LANG_BANLIST_MATCHINGCHARACTER = 1131,
LANG_BANLIST_CHARACTERS = 1132,
LANG_BANLIST_CHARACTERS_HEADER = 1133,
// Room for more level 3 1134-1199 not used
LANG_ALLOW_TICKETS = 1134,
LANG_DISALLOW_TICKETS = 1135,
// Room for more level 3 1136-1199 not used
// Debug commands
LANG_CINEMATIC_NOT_EXIST = 1200,
@@ -28,6 +28,10 @@
void WorldSession::HandleGMTicketCreateOpcode(WorldPacket & recv_data)
{
// Don't accept tickets if the ticket queue is disabled. (Ticket UI is greyed out but not fully dependable)
if (sTicketMgr.GetStatus() == GMTICKET_QUEUE_STATUS_DISABLED)
return;
if (GetPlayer()->getLevel() < sWorld.getIntConfig(CONFIG_TICKET_LEVEL_REQ))
{
SendNotification(GetTrinityString(LANG_TICKET_REQ), sWorld.getIntConfig(CONFIG_TICKET_LEVEL_REQ));
@@ -144,6 +148,7 @@ void WorldSession::HandleGMTicketGetTicketOpcode(WorldPacket & /*recv_data*/)
void WorldSession::HandleGMTicketSystemStatusOpcode(WorldPacket & /*recv_data*/)
{
WorldPacket data(SMSG_GMTICKET_SYSTEMSTATUS, 4);
// Note: This only disables the ticket UI at client side and is not fully reliable
// are we sure this is a uint32? Should ask Zor
data << uint32(sTicketMgr.GetStatus() ? GMTICKET_QUEUE_STATUS_ENABLED : GMTICKET_QUEUE_STATUS_DISABLED);
SendPacket(&data);
+6 -1
View File
@@ -28,7 +28,7 @@
// from blizzard lua
enum GMTicketSystemStatus
{
GMTICKET_QUEUE_STATUS_DISABLED = -1,
GMTICKET_QUEUE_STATUS_DISABLED = 0,
GMTICKET_QUEUE_STATUS_ENABLED = 1,
};
@@ -134,6 +134,11 @@ public:
uint64 GetOpenTicketCount() { return m_openTickets; }
uint64 GetNextSurveyID() { return ++m_GMSurveyID; }
void Initialize()
{
SetStatus(sWorld.getBoolConfig(CONFIG_ALLOW_TICKETS));
}
GM_Ticket *GetOldestOpenGMTicket()
{
for (GmTicketList::const_iterator i = m_GMTicketList.begin(); i != m_GMTicketList.end(); ++i)
+5
View File
@@ -400,6 +400,9 @@ void World::LoadConfigSettings(bool reload)
SetPlayerAmountLimit(sConfig.GetIntDefault("PlayerLimit", 100));
SetMotd(sConfig.GetStringDefault("Motd", "Welcome to a Trinity Core Server."));
///- Read ticket system setting from the config file
m_bool_configs[CONFIG_ALLOW_TICKETS] = sConfig.GetBoolDefault("AllowTickets", true);
///- Get string for new logins (newly created characters)
SetNewCharString(sConfig.GetStringDefault("PlayerStart.String", ""));
@@ -1670,6 +1673,8 @@ void World::SetInitialWorldSettings()
sLog.outString("Starting Arena Season...");
sGameEventMgr.StartArenaSeason();
sTicketMgr.Initialize();
sLog.outString("Loading World States..."); // must be loaded before battleground and outdoor PvP
LoadWorldStates();
+1
View File
@@ -161,6 +161,7 @@ enum WorldBoolConfigs
CONFIG_CHATLOG_BGROUND,
CONFIG_DUNGEON_FINDER_ENABLE,
CONFIG_AUTOBROADCAST,
CONFIG_ALLOW_TICKETS,
BOOL_CONFIG_VALUE_COUNT
};
@@ -957,6 +957,11 @@ ChatLogTimestamp = 0
# The maximum number of results a .lookup command can return
# Default: 0 - unlimited
#
# AllowTickets
# Allow/disallow sending new tickets.
# Default: 1 (true)
# 0 (false)
#
###############################################################################
GameType = 0
@@ -1020,6 +1025,7 @@ BeepAtStart = 1
Motd = "Welcome to a Trinity Core server."
Server.LoginInfo = 0
Command.LookupMaxResults = 0
AllowTickets = 1
###############################################################################
# PLAYER INTERACTION