* Ticket system update;
- Add map, x, y, z coordinate data to ticket upon creation - Add command .go ticket to teleport to the coordinates where the ticket was created - Move InitTicketID() to the class constructor instead of at every LoadGMTickets call - Minor code cleanup --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
ALTER TABLE `gm_tickets` ADD COLUMN `map` INT NOT NULL DEFAULT '0' AFTER `createtime`;
|
||||||
|
ALTER TABLE `gm_tickets` ADD COLUMN `posX` FLOAT NOT NULL DEFAULT '0' AFTER `map`;
|
||||||
|
ALTER TABLE `gm_tickets` ADD COLUMN `posY` FLOAT NOT NULL DEFAULT '0' AFTER `posX`;
|
||||||
|
ALTER TABLE `gm_tickets` ADD COLUMN `posZ` FLOAT NOT NULL DEFAULT '0' AFTER `posY`;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
insert into `command` (`name`, `security`, `help`) values('go ticket','1','Syntax: .go ticket #ticketid\r\nTeleports the user to the location where $ticketid was created.');
|
||||||
@@ -181,6 +181,7 @@ ChatCommand * ChatHandler::getCommandTable()
|
|||||||
{ "creature", SEC_MODERATOR, false, &ChatHandler::HandleGoCreatureCommand, "", NULL },
|
{ "creature", SEC_MODERATOR, false, &ChatHandler::HandleGoCreatureCommand, "", NULL },
|
||||||
{ "object", SEC_MODERATOR, false, &ChatHandler::HandleGoObjectCommand, "", NULL },
|
{ "object", SEC_MODERATOR, false, &ChatHandler::HandleGoObjectCommand, "", NULL },
|
||||||
{ "trigger", SEC_MODERATOR, false, &ChatHandler::HandleGoTriggerCommand, "", NULL },
|
{ "trigger", SEC_MODERATOR, false, &ChatHandler::HandleGoTriggerCommand, "", NULL },
|
||||||
|
{ "ticket", SEC_MODERATOR, false, &ChatHandler::HandleGoTicketCommand, "", NULL },
|
||||||
{ "graveyard", SEC_MODERATOR, false, &ChatHandler::HandleGoGraveyardCommand, "", NULL },
|
{ "graveyard", SEC_MODERATOR, false, &ChatHandler::HandleGoGraveyardCommand, "", NULL },
|
||||||
{ "zonexy", SEC_MODERATOR, false, &ChatHandler::HandleGoZoneXYCommand, "", NULL },
|
{ "zonexy", SEC_MODERATOR, false, &ChatHandler::HandleGoZoneXYCommand, "", NULL },
|
||||||
{ "xy", SEC_MODERATOR, false, &ChatHandler::HandleGoXYCommand, "", NULL },
|
{ "xy", SEC_MODERATOR, false, &ChatHandler::HandleGoXYCommand, "", NULL },
|
||||||
|
|||||||
@@ -442,6 +442,7 @@ class ChatHandler
|
|||||||
bool HandleDeMorphCommand(const char* args);
|
bool HandleDeMorphCommand(const char* args);
|
||||||
bool HandleGoCreatureCommand(const char* args);
|
bool HandleGoCreatureCommand(const char* args);
|
||||||
bool HandleGoObjectCommand(const char* args);
|
bool HandleGoObjectCommand(const char* args);
|
||||||
|
bool HandleGoTicketCommand(const char* args);
|
||||||
bool HandleGoTriggerCommand(const char* args);
|
bool HandleGoTriggerCommand(const char* args);
|
||||||
bool HandleGoGraveyardCommand(const char* args);
|
bool HandleGoGraveyardCommand(const char* args);
|
||||||
|
|
||||||
|
|||||||
+43
-1
@@ -34,7 +34,7 @@
|
|||||||
#include "SpellMgr.h"
|
#include "SpellMgr.h"
|
||||||
#include "PoolHandler.h"
|
#include "PoolHandler.h"
|
||||||
#include "AccountMgr.h"
|
#include "AccountMgr.h"
|
||||||
//#include "GMTicketMgr.h"
|
#include "TicketMgr.h"
|
||||||
#include "WaypointManager.h"
|
#include "WaypointManager.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
@@ -158,6 +158,48 @@ bool ChatHandler::HandleUnmuteCommand(const char* args)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ChatHandler::HandleGoTicketCommand(const char * args)
|
||||||
|
{
|
||||||
|
if(!*args)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char *cstrticket_id = strtok((char*)args, " ");
|
||||||
|
|
||||||
|
if(!cstrticket_id)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
uint64 ticket_id = atoi(cstrticket_id);
|
||||||
|
if(!ticket_id)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
GM_Ticket *ticket = ticketmgr.GetGMTicket(ticket_id);
|
||||||
|
if(!ticket)
|
||||||
|
{
|
||||||
|
SendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float x, y, z;
|
||||||
|
int mapid;
|
||||||
|
|
||||||
|
x = ticket->pos_x;
|
||||||
|
y = ticket->pos_y;
|
||||||
|
z = ticket->pos_z;
|
||||||
|
mapid = ticket->map;
|
||||||
|
|
||||||
|
Player* _player = m_session->GetPlayer();
|
||||||
|
if(_player->isInFlight())
|
||||||
|
{
|
||||||
|
_player->GetMotionMaster()->MovementExpired();
|
||||||
|
_player->m_taxi.ClearTaxiDestinations();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_player->SaveRecallPosition();
|
||||||
|
|
||||||
|
_player->TeleportTo(mapid, x, y, z, 1, 0);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleGoTriggerCommand(const char* args)
|
bool ChatHandler::HandleGoTriggerCommand(const char* args)
|
||||||
{
|
{
|
||||||
Player* _player = m_session->GetPlayer();
|
Player* _player = m_session->GetPlayer();
|
||||||
|
|||||||
@@ -61,6 +61,10 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
|
|||||||
ticket->playerGuid = GetPlayer()->GetGUID();
|
ticket->playerGuid = GetPlayer()->GetGUID();
|
||||||
ticket->message = ticketText;
|
ticket->message = ticketText;
|
||||||
ticket->createtime = time(NULL);
|
ticket->createtime = time(NULL);
|
||||||
|
ticket->map = map;
|
||||||
|
ticket->pos_x = x;
|
||||||
|
ticket->pos_y = y;
|
||||||
|
ticket->pos_z = z;
|
||||||
ticket->timestamp = time(NULL);
|
ticket->timestamp = time(NULL);
|
||||||
ticket->closed = 0;
|
ticket->closed = 0;
|
||||||
ticket->assignedToGM = 0;
|
ticket->assignedToGM = 0;
|
||||||
@@ -189,4 +193,3 @@ void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/
|
|||||||
// Send Packet
|
// Send Packet
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-11
@@ -92,14 +92,10 @@ void TicketMgr::DeleteGMTicketPermanently(uint64 ticketGuid)
|
|||||||
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
|
for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();)
|
||||||
{
|
{
|
||||||
if((*i)->guid == ticketGuid)
|
if((*i)->guid == ticketGuid)
|
||||||
{
|
|
||||||
i = GM_TicketList.erase(i);
|
i = GM_TicketList.erase(i);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// delete database record
|
// delete database record
|
||||||
CharacterDatabase.PExecute("DELETE FROM `gm_tickets` WHERE guid= '%u'", ticketGuid);
|
CharacterDatabase.PExecute("DELETE FROM `gm_tickets` WHERE guid= '%u'", ticketGuid);
|
||||||
@@ -108,10 +104,9 @@ void TicketMgr::DeleteGMTicketPermanently(uint64 ticketGuid)
|
|||||||
|
|
||||||
void TicketMgr::LoadGMTickets()
|
void TicketMgr::LoadGMTickets()
|
||||||
{
|
{
|
||||||
InitTicketID();
|
|
||||||
// Delete all out of object holder
|
// Delete all out of object holder
|
||||||
GM_TicketList.clear();
|
GM_TicketList.clear();
|
||||||
QueryResult *result = CharacterDatabase.Query( "SELECT `guid`, `playerGuid`, `name`, `message`, `createtime`, `timestamp`, `closed`, `assignedto`, `comment` FROM `gm_tickets`" );
|
QueryResult *result = CharacterDatabase.Query( "SELECT `guid`, `playerGuid`, `name`, `message`, `createtime`, `map`, `posX`, `posY`, `posZ`, `timestamp`, `closed`, `assignedto`, `comment` FROM `gm_tickets`" );
|
||||||
GM_Ticket *ticket;
|
GM_Ticket *ticket;
|
||||||
|
|
||||||
if(!result)
|
if(!result)
|
||||||
@@ -127,10 +122,13 @@ void TicketMgr::LoadGMTickets()
|
|||||||
ticket->name = fields[2].GetString();
|
ticket->name = fields[2].GetString();
|
||||||
ticket->message = fields[3].GetString();
|
ticket->message = fields[3].GetString();
|
||||||
ticket->createtime = fields[4].GetUInt64();
|
ticket->createtime = fields[4].GetUInt64();
|
||||||
ticket->timestamp = fields[5].GetUInt64();
|
ticket->pos_x = fields[5].GetFloat();
|
||||||
ticket->closed = fields[6].GetUInt64();
|
ticket->pos_y = fields[6].GetFloat();
|
||||||
ticket->assignedToGM = fields[7].GetUInt64();
|
ticket->pos_z = fields[7].GetFloat();
|
||||||
ticket->comment = fields[8].GetString();
|
ticket->timestamp = fields[8].GetUInt64();
|
||||||
|
ticket->closed = fields[9].GetUInt64();
|
||||||
|
ticket->assignedToGM = fields[10].GetUInt64();
|
||||||
|
ticket->comment = fields[11].GetString();
|
||||||
|
|
||||||
AddGMTicket(ticket, true);
|
AddGMTicket(ticket, true);
|
||||||
|
|
||||||
@@ -173,12 +171,16 @@ void TicketMgr::SaveGMTicket(GM_Ticket* ticket)
|
|||||||
std::string msg = ticket->message;
|
std::string msg = ticket->message;
|
||||||
CharacterDatabase.escape_string(msg);
|
CharacterDatabase.escape_string(msg);
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "REPLACE INTO `gm_tickets` (`guid`, `playerGuid`, `name`, `message`, `createtime`, `timestamp`, `closed`, `assignedto`, `comment`) VALUES('";
|
ss << "REPLACE INTO `gm_tickets` (`guid`, `playerGuid`, `name`, `message`, `createtime`, `map`, `posX`, `posY`, `posZ`, `timestamp`, `closed`, `assignedto`, `comment`) VALUES('";
|
||||||
ss << ticket->guid << "', '";
|
ss << ticket->guid << "', '";
|
||||||
ss << ticket->playerGuid << "', '";
|
ss << ticket->playerGuid << "', '";
|
||||||
ss << ticket->name << "', '";
|
ss << ticket->name << "', '";
|
||||||
ss << msg << "', '" ;
|
ss << msg << "', '" ;
|
||||||
ss << ticket->createtime << "', '";
|
ss << ticket->createtime << "', '";
|
||||||
|
ss << ticket->map << "', '";
|
||||||
|
ss << ticket->pos_x << "', '";
|
||||||
|
ss << ticket->pos_y << "', '";
|
||||||
|
ss << ticket->pos_z << "', '";
|
||||||
ss << ticket->timestamp << "', '";
|
ss << ticket->timestamp << "', '";
|
||||||
ss << ticket->closed << "', '";
|
ss << ticket->closed << "', '";
|
||||||
ss << ticket->assignedToGM << "', '";
|
ss << ticket->assignedToGM << "', '";
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ struct GM_Ticket
|
|||||||
uint64 guid;
|
uint64 guid;
|
||||||
uint64 playerGuid;
|
uint64 playerGuid;
|
||||||
std::string name;
|
std::string name;
|
||||||
|
float pos_x;
|
||||||
|
float pos_y;
|
||||||
|
float pos_z;
|
||||||
|
uint32 map;
|
||||||
std::string message;
|
std::string message;
|
||||||
uint64 createtime;
|
uint64 createtime;
|
||||||
uint64 timestamp;
|
uint64 timestamp;
|
||||||
@@ -46,7 +50,7 @@ typedef std::list<GM_Ticket*> GmTicketList
|
|||||||
class TicketMgr
|
class TicketMgr
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TicketMgr(){m_ticketid = 1;} //constructor
|
TicketMgr(){ InitTicketID();} //constructor
|
||||||
~TicketMgr(){} //destructor
|
~TicketMgr(){} //destructor
|
||||||
|
|
||||||
// Object Holder
|
// Object Holder
|
||||||
|
|||||||
Reference in New Issue
Block a user