aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/741_characters.sql4
-rw-r--r--sql/updates/741_world.sql10
-rw-r--r--src/game/Level1.cpp24
-rw-r--r--src/game/TicketHandler.cpp2
-rw-r--r--src/game/TicketMgr.cpp10
-rw-r--r--src/game/TicketMgr.h2
6 files changed, 33 insertions, 19 deletions
diff --git a/sql/updates/741_characters.sql b/sql/updates/741_characters.sql
new file mode 100644
index 00000000000..aeba6f8c9ac
--- /dev/null
+++ b/sql/updates/741_characters.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `gm_tickets` CHANGE `closed` `closed` tinyint(1) NOT NULL default '0';
+ALTER TABLE `gm_tickets` ADD `closed` bit(1) NOT NULL AFTER `timestamp`;
+ALTER TABLE `gm_tickets` ADD `assignedto` int(10) NOT NULL default '0' AFTER `timestamp`;
+
diff --git a/sql/updates/741_world.sql b/sql/updates/741_world.sql
new file mode 100644
index 00000000000..a93d4e2bd01
--- /dev/null
+++ b/sql/updates/741_world.sql
@@ -0,0 +1,10 @@
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket list','1','Displays a list of open GM tickets.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket onlinelist','1','Displays a list of open GM tickets whose owner is online.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket viewname','1','Usage: .ticket viewname $creatorname. \r\nReturns details about specified ticket. Ticket must be open and not deleted.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket viewid','1','Usage: .ticket viewid $ticketid.\r\nReturns details about specified ticket. Ticket must be open and not deleted.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket close','2','Usage: .ticket close $ticketid.\r\nCloses the specified ticket. Does not delete permanently.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket delete','3','Usage: .ticket delete $ticketid.\r\nDeletes the specified ticket permanently. Ticket must be closed first.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket assign','3','Usage: .ticket assign $ticketid $gmname.\r\nAssigns the specified ticket to the specified Game Master.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket unassign','3','Usage: .ticket unassign $ticketid.\r\nUnassigns the specified ticket from the current assigned Game Master.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('ticket comment','2','Usage: .ticket comment $ticketid $comment.\r\nAllows the adding or modifying of a comment to the specified ticket.');
+REPLACE INTO `command` (`name`,`security`,`help`) VALUES ('reload tickets','4','Usage: .reload tickets.\r\nReloads GM Tickets from the database and re-caches them into memory.');
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index 71356afb86a..00f0ec47ffd 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -272,7 +272,7 @@ bool ChatHandler::HandleGMTicketListCommand(const char* args)
SendSysMessage(LANG_COMMAND_TICKETSHOWLIST);
for(GmTicketList::iterator itr = ticketmgr.GM_TicketList.begin(); itr != ticketmgr.GM_TicketList.end(); ++itr)
{
- if((*itr)->closed)
+ if((*itr)->closed == 1)
continue;
std::stringstream message;
@@ -295,7 +295,7 @@ bool ChatHandler::HandleGMTicketListOnlineCommand(const char* args)
SendSysMessage(LANG_COMMAND_TICKETSHOWONLINELIST);
for(GmTicketList::iterator itr = ticketmgr.GM_TicketList.begin(); itr != ticketmgr.GM_TicketList.end(); ++itr)
{
- if((*itr)->closed || !objmgr.GetPlayer((*itr)->playerGuid))
+ if((*itr)->closed == 1 || !objmgr.GetPlayer((*itr)->playerGuid))
continue;
std::stringstream message;
@@ -380,22 +380,22 @@ bool ChatHandler::HandleGMTicketCloseByIdCommand(const char* args)
uint64 tguid = atoi(args);
GM_Ticket *ticket = ticketmgr.GetGMTicket(tguid);
- if(!ticket || ticket->closed)
+ if(!ticket || ticket->closed == 1)
{
SendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
- return true;
+ return false;
}
- if(ticket && ticket->assignedToGM != m_session->GetPlayer()->GetGUID())
+ if(ticket && ticket->assignedToGM != 0 && ticket->assignedToGM != m_session->GetPlayer()->GetGUID())
{
PSendSysMessage(LANG_COMMAND_TICKETCANNOTCLOSE, ticket->guid);
-
+ return false;
}
- sWorld.SendGMText(LANG_COMMAND_TICKETCLOSED, ticket->name, ticket->guid);
+ sWorld.SendGMText(LANG_COMMAND_TICKETCLOSED, ticket->name.c_str(), ticket->guid);
ticketmgr.RemoveGMTicket(ticket->guid);
Player *plr = objmgr.GetPlayer(ticket->playerGuid);
if(!plr || !plr->IsInWorld())
- return true;
+ return false;
// send abandon ticket
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
@@ -425,7 +425,7 @@ bool ChatHandler::HandleGMTicketAssignToCommand(const char* args)
std::string gmname;
GM_Ticket *ticket = ticketmgr.GetGMTicket(ticketGuid);
- if(!ticket || ticket->closed)
+ if(!ticket || ticket->closed == 1)
{
SendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
return true;
@@ -517,12 +517,12 @@ bool ChatHandler::HandleGMTicketCommentCommand(const char* args)
Player *cplr = m_session->GetPlayer();
GM_Ticket *ticket = ticketmgr.GetGMTicket(ticketGuid);
- if(!ticket || ticket->closed)
+ if(!ticket || ticket->closed == 1)
{
PSendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
return true;
}
- if(ticket->assignedToGM = 0 && ticket->assignedToGM != cplr->GetGUID())
+ if(ticket->assignedToGM == 0 && ticket->assignedToGM != cplr->GetGUID())
{
gmname = objmgr.GetPlayer(ticket->assignedToGM)->GetName();
PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->guid, gmname.c_str());
@@ -552,7 +552,7 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args)
PSendSysMessage(LANG_COMMAND_TICKETNOTEXIST, ticketGuid);
return true;
}
- if(!ticket->closed)
+ if(!ticket->closed == 1)
{
SendSysMessage(LANG_COMMAND_TICKETCLOSEFIRST);
return true;
diff --git a/src/game/TicketHandler.cpp b/src/game/TicketHandler.cpp
index ab00aa5f7f6..f3374332f79 100644
--- a/src/game/TicketHandler.cpp
+++ b/src/game/TicketHandler.cpp
@@ -60,7 +60,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
ticket->playerGuid = GetPlayer()->GetGUID();
ticket->message = ticketText;
ticket->timestamp = time(NULL);
- ticket->closed = false;
+ ticket->closed = 0;
ticket->assignedToGM = 0;
ticket->comment = "";
diff --git a/src/game/TicketMgr.cpp b/src/game/TicketMgr.cpp
index 212f9ff8059..0f1f7501e67 100644
--- a/src/game/TicketMgr.cpp
+++ b/src/game/TicketMgr.cpp
@@ -49,7 +49,7 @@ GM_Ticket* TicketMgr::GetGMTicketByPlayer(uint64 playerGuid)
{
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
{
- if((*i)->playerGuid == playerGuid && !(*i)->closed)
+ if((*i)->playerGuid == playerGuid && (*i)->closed == 0)
{
return (*i);
}
@@ -72,7 +72,7 @@ GM_Ticket* TicketMgr::GetGMTicketByName(const char* name)
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
{
- if((*i)->playerGuid == playerGuid && !(*i)->closed)
+ if((*i)->playerGuid == playerGuid && (*i)->closed == 0)
{
return (*i);
}
@@ -147,9 +147,9 @@ void TicketMgr::RemoveGMTicket(uint64 ticketGuid)
{
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
{
- if((*i)->guid == ticketGuid && !(*i)->closed)
+ if((*i)->guid == ticketGuid && (*i)->closed == 0)
{
- (*i)->closed = true;
+ (*i)->closed = 1;
SaveGMTicket((*i));
}
++i;
@@ -161,7 +161,7 @@ void TicketMgr::RemoveGMTicketByPlayer(uint64 playerGuid)
{
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
{
- if((*i)->playerGuid == playerGuid && !(*i)->closed)
+ if((*i)->playerGuid == playerGuid && (*i)->closed == 0)
{
(*i)->closed = true;
SaveGMTicket((*i));
diff --git a/src/game/TicketMgr.h b/src/game/TicketMgr.h
index 150ca4d2eff..e41be9db5c3 100644
--- a/src/game/TicketMgr.h
+++ b/src/game/TicketMgr.h
@@ -34,7 +34,7 @@ struct GM_Ticket
std::string name;
std::string message;
uint64 timestamp;
- bool closed;
+ uint16 closed;
uint64 assignedToGM;
std::string comment;
};