aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorclick <none@none>2010-11-14 00:29:34 +0100
committerclick <none@none>2010-11-14 00:29:34 +0100
commitc0536f374abcd64d3e7e5b68fb570edffc2f23df (patch)
treed5fc3f02ed4fed987b59594d03cbae03e96f0e63 /src
parent9ba52c474bc236406c8f8562c7db3f3316bcfabc (diff)
Core: Allow toggling ticketsystem on/off by config-setting (patch by leak)
Closes issue 4744. --HG-- branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Chat/Commands/TicketCommands.cpp5
-rwxr-xr-xsrc/server/game/Miscellaneous/Language.h4
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/TicketHandler.cpp5
-rwxr-xr-xsrc/server/game/Tickets/TicketMgr.h7
-rwxr-xr-xsrc/server/game/World/World.cpp5
-rwxr-xr-xsrc/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist6
7 files changed, 31 insertions, 2 deletions
diff --git a/src/server/game/Chat/Commands/TicketCommands.cpp b/src/server/game/Chat/Commands/TicketCommands.cpp
index 81b4a475ab4..018e4da0ad6 100755
--- a/src/server/game/Chat/Commands/TicketCommands.cpp
+++ b/src/server/game/Chat/Commands/TicketCommands.cpp
@@ -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;
}
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index 876cef6cfbd..12e5bff8d47 100755
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -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,
diff --git a/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp b/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp
index 8a42be87f4a..2e05078f51d 100755
--- a/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp
@@ -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);
diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h
index e91c0763ae6..9ff32616dc2 100755
--- a/src/server/game/Tickets/TicketMgr.h
+++ b/src/server/game/Tickets/TicketMgr.h
@@ -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)
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 30fd869def1..a0199a4d2d4 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -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();
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 92e53e7ef82..d442ad18442 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -161,6 +161,7 @@ enum WorldBoolConfigs
CONFIG_CHATLOG_BGROUND,
CONFIG_DUNGEON_FINDER_ENABLE,
CONFIG_AUTOBROADCAST,
+ CONFIG_ALLOW_TICKETS,
BOOL_CONFIG_VALUE_COUNT
};
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 3f6f6d75636..814e7073deb 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -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