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

View File

@@ -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;
}

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,

View File

@@ -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);

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)

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();

View File

@@ -161,6 +161,7 @@ enum WorldBoolConfigs
CONFIG_CHATLOG_BGROUND,
CONFIG_DUNGEON_FINDER_ENABLE,
CONFIG_AUTOBROADCAST,
CONFIG_ALLOW_TICKETS,
BOOL_CONFIG_VALUE_COUNT
};

View File

@@ -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