aboutsummaryrefslogtreecommitdiff
path: root/src/game/TicketHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/TicketHandler.cpp')
-rw-r--r--src/game/TicketHandler.cpp46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/game/TicketHandler.cpp b/src/game/TicketHandler.cpp
index cedafe964f0..d193f85ef3e 100644
--- a/src/game/TicketHandler.cpp
+++ b/src/game/TicketHandler.cpp
@@ -28,6 +28,14 @@
void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
{
CHECK_PACKET_SIZE(recv_data, 4*4+1+2*4);
+
+ if(GM_Ticket *ticket = objmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()))
+ {
+ WorldPacket data( SMSG_GMTICKET_CREATE, 4 );
+ data << uint32(1); // 1 - You already have GM ticket
+ SendPacket( &data );
+ return;
+ }
uint32 map;
float x, y, z;
@@ -105,24 +113,22 @@ void WorldSession::HandleGMTicketDeleteOpcode( WorldPacket & /*recv_data*/)
sWorld.SendGMText(LANG_COMMAND_TICKETPLAYERABANDON, GetPlayer()->GetName(), ticket->guid );
objmgr.RemoveGMTicket(ticket, GetPlayer()->GetGUID(), false);
+ SendGMTicketGetTicket(0x0A, 0);
}
}
void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/)
{
- WorldPacket data(SMSG_GMTICKET_GETTICKET, 400);
+ WorldPacket data( SMSG_QUERY_TIME_RESPONSE, 4+4 );
+ data << (uint32)time(NULL);
+ data << (uint32)0;
+ SendPacket( &data );
GM_Ticket *ticket = objmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID());
-
- if(!ticket)
- {
- data << uint32(10);
- SendPacket(&data);
- return;
- }
- data << uint32(6);
- data << ticket->message.c_str();
- SendPacket(&data);
+ if(ticket)
+ SendGMTicketGetTicket(0x06, ticket->message.c_str());
+ else
+ SendGMTicketGetTicket(0x0A, 0);
}
@@ -132,3 +138,21 @@ void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/
data << uint32(1);
SendPacket(&data);
}
+
+void WorldSession::SendGMTicketGetTicket(uint32 status, char const* text)
+{
+ int len = text ? strlen(text) : 0;
+ WorldPacket data( SMSG_GMTICKET_GETTICKET, (4+len+1+4+2+4+4) );
+ data << uint32(status); // standard 0x0A, 0x06 if text present
+ if(status == 6)
+ {
+ data << text; // ticket text
+ data << uint8(0x7); // ticket category
+ data << float(0); // tickets in queue?
+ data << float(0); // if > "tickets in queue" then "We are currently experiencing a high volume of petitions."
+ data << float(0); // 0 - "Your ticket will be serviced soon", 1 - "Wait time currently unavailable"
+ data << uint8(0); // if == 2 and next field == 1 then "Your ticket has been escalated"
+ data << uint8(0); // const
+ }
+ SendPacket( &data );
+}