aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql2
-rw-r--r--sql/updates/10431_world_trinity_string.sql4
-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
9 files changed, 37 insertions, 2 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 120e47ae6d1..d75ba033309 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -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),
diff --git a/sql/updates/10431_world_trinity_string.sql b/sql/updates/10431_world_trinity_string.sql
new file mode 100644
index 00000000000..227fb43fd4d
--- /dev/null
+++ b/sql/updates/10431_world_trinity_string.sql
@@ -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.');
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