diff options
author | megamage <none@none> | 2009-06-18 20:28:16 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-18 20:28:16 -0500 |
commit | 9008c0a838e84f79d961e11d450550466ebc3743 (patch) | |
tree | 82dd23ed05deabd7de62b801fe463bc41bc38268 /src/game/TicketHandler.cpp | |
parent | e0553121f276be21d0c8162b79d1a87f814d0ee3 (diff) | |
parent | ee6126dd50db4875acc9aee7b13f2215e965b084 (diff) |
*Merge.
--HG--
branch : trunk
Diffstat (limited to 'src/game/TicketHandler.cpp')
-rw-r--r-- | src/game/TicketHandler.cpp | 46 |
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 ); +} |