diff options
Diffstat (limited to 'src/game/TicketHandler.cpp')
-rw-r--r-- | src/game/TicketHandler.cpp | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/src/game/TicketHandler.cpp b/src/game/TicketHandler.cpp new file mode 100644 index 00000000000..2a0fa4760b6 --- /dev/null +++ b/src/game/TicketHandler.cpp @@ -0,0 +1,186 @@ +/* + * Copyright (C) 2005-2008 MaNGOS + * + * Copyright (C) 2008 Trinity + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Language.h" +#include "ObjectAccessor.h" +#include "WorldPacket.h" +#include "Common.h" +#include "Log.h" +#include "ObjectAccessor.h" +#include "Player.h" +#include "Chat.h" +#include "TicketMgr.h" +#include "World.h" +#include "Chat.h" + + +void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data ) +{ + // always do a packet check + CHECK_PACKET_SIZE(recv_data, 4*4+1+2*4); + + uint32 map; + float x, y, z; + std::string ticketText = ""; + std::string ticketText2 = ""; + GM_Ticket *ticket = new GM_Ticket; + + WorldPacket data(SMSG_GMTICKET_CREATE, 4); + + // recv Data + recv_data >> map; + recv_data >> x; + recv_data >> y; + recv_data >> z; + recv_data >> ticketText; + + // get additional data + recv_data >> ticketText2; + + // assign values + ticket->name = GetPlayer()->GetName(); + ticket->guid = ticketmgr.GenerateTicketID(); + ticket->playerGuid = GetPlayer()->GetGUID(); + ticket->message = ticketText; + ticket->timestamp = time(NULL); + ticket->closed = false; + ticket->assignedToGM = 0; + ticket->comment = ""; + + // remove ticket by player, shouldn't happen + ticketmgr.RemoveGMTicketByPlayer(GetPlayer()->GetGUID()); + + // add ticket + ticketmgr.AddGMTicket(ticket, false); + + // Response - no errors + data << uint32(2); + + // Send ticket creation + SendPacket(&data); + + sWorld.SendGMText(LANG_COMMAND_TICKETNEW, ticket->name.c_str(), ticket->guid); + +} + +void WorldSession::HandleGMTicketUpdateOpcode( WorldPacket & recv_data) +{ + // always do a packet check + CHECK_PACKET_SIZE(recv_data,1); + + std::string message = ""; + time_t t = time(NULL); + + WorldPacket data(SMSG_GMTICKET_UPDATETEXT, 4); + + // recv Data + recv_data >> message; + + // Update Ticket + GM_Ticket *ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()); + + // Check if player has a GM Ticket yet + if(!ticket) + { + // Response - error couldnt find existing Ticket + data << uint32(1); + + // Send packet + SendPacket(&data); + return; + } + + ticket->message = message; + ticket->timestamp = (uint32)t; + + ticketmgr.UpdateGMTicket(ticket); + + // Response - no errors + data << uint32(2); + + // Send packet + SendPacket(&data); + + sWorld.SendGMText(LANG_COMMAND_TICKETUPDATED, GetPlayer()->GetName(), ticket->guid); + +} + +void WorldSession::HandleGMTicketDeleteOpcode( WorldPacket & /*recv_data*/) +{ + // NO recv_data, NO packet check size + + GM_Ticket* ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()); + + // Remove Tickets from Player + ticketmgr.RemoveGMTicketByPlayer(GetPlayer()->GetGUID()); + + // Response - no errors + WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4); + data << uint32(9); + // Send Packet + SendPacket(&data); + + sWorld.SendGMText(LANG_COMMAND_TICKETPLAYERABANDON, GetPlayer()->GetName(), ticket->guid ); +} + +void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/) +{ + // NO recv_data NO packet size check + + WorldPacket data(SMSG_GMTICKET_GETTICKET, 400); + + // get Current Ticket + GM_Ticket *ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()); + + // check for existing ticket + if(!ticket) + { + data << uint32(10); + // send packet + SendPacket(&data); + return; + } + + // Send current Ticket + data << uint32(6); // unk ? + data << ticket->message.c_str(); + + SendPacket(&data); + + +} + +void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/) +{ + // NO recv_data NO packet size check + + WorldPacket data(SMSG_GMTICKET_SYSTEMSTATUS, 4); + + // Response - System is working Fine + + // No need for checks, ticket system is active + // in case of disactivity, this should be set to (0) + + data << uint32(1); + + + // Send Packet + SendPacket(&data); +}
\ No newline at end of file |