From d968a0457bbaaa277356c05e90f83b88f2d30da9 Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 31 Dec 2008 15:26:51 -0600 Subject: *Fix gm_tickets sql. By Machiavelli. --HG-- branch : trunk --- sql/updates/725_characters.sql | 2 +- sql/updates/739_characters.sql | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 sql/updates/739_characters.sql (limited to 'sql/updates') diff --git a/sql/updates/725_characters.sql b/sql/updates/725_characters.sql index c875bf9399c..6be4ef0e4cf 100644 --- a/sql/updates/725_characters.sql +++ b/sql/updates/725_characters.sql @@ -3,4 +3,4 @@ ALTER TABLE gm_tickets CHANGE `guid` `playerGuid` int(11) unsigned NOT NULL defa ALTER TABLE gm_tickets CHANGE `ticket_id` `guid` int(11) unsigned NOT NULL default '0'; ALTER TABLE gm_tickets CHANGE `ticket_text` `message` text(0) NOT NULL; ALTER TABLE gm_tickets CHANGE `ticket_lastchange` `timestamp` int(10) NOT NULL default '0'; -ALTER TABLE gm_tickets ADD( `closed` bit(1) NOT NULL, `assignedto` int(10) NOT NULL default '0', `comment` text(0) NOT NULL default ''); \ No newline at end of file +ALTER TABLE gm_tickets ADD( `closed` bit(1) NOT NULL, `assignedto` int(10) NOT NULL default '0'); \ No newline at end of file diff --git a/sql/updates/739_characters.sql b/sql/updates/739_characters.sql new file mode 100644 index 00000000000..3cbcca9837b --- /dev/null +++ b/sql/updates/739_characters.sql @@ -0,0 +1 @@ +ALTER TABLE gm_tickets ADD `comment` text(0) NOT NULL; \ No newline at end of file -- cgit v1.2.3 From 68015c4e94eff0ae5fd0c165e09d88a97fd9cefd Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Thu, 1 Jan 2009 18:25:56 +0100 Subject: * Fix Crash issue caused by closing a ticket. * Fix potential crash issue caused by improper datatype, SQL included to alter column (Thanks Paradox) --HG-- branch : trunk --- sql/updates/741_characters.sql | 4 ++++ sql/updates/741_world.sql | 10 ++++++++++ src/game/Level1.cpp | 24 ++++++++++++------------ src/game/TicketHandler.cpp | 2 +- src/game/TicketMgr.cpp | 10 +++++----- src/game/TicketMgr.h | 2 +- 6 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 sql/updates/741_characters.sql create mode 100644 sql/updates/741_world.sql (limited to 'sql/updates') 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; }; -- cgit v1.2.3 From 657b4257b2bf476d5655c692fa47a294da1edf5e Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Thu, 1 Jan 2009 20:25:14 +0100 Subject: * Fix obsolete string parsing * Change trinity_string entry * Fix improper syntax error messages * Fix crash issue when commenting a ticket * By Machiavelli --HG-- branch : trunk --- sql/updates/725_characters.sql | 3 +-- sql/updates/747_world.sql | 1 + src/game/Level1.cpp | 12 +++++------- 3 files changed, 7 insertions(+), 9 deletions(-) create mode 100644 sql/updates/747_world.sql (limited to 'sql/updates') diff --git a/sql/updates/725_characters.sql b/sql/updates/725_characters.sql index 6be4ef0e4cf..17a87769b12 100644 --- a/sql/updates/725_characters.sql +++ b/sql/updates/725_characters.sql @@ -2,5 +2,4 @@ ALTER TABLE `character_ticket` RENAME TO `gm_tickets`; ALTER TABLE gm_tickets CHANGE `guid` `playerGuid` int(11) unsigned NOT NULL default '0'; ALTER TABLE gm_tickets CHANGE `ticket_id` `guid` int(11) unsigned NOT NULL default '0'; ALTER TABLE gm_tickets CHANGE `ticket_text` `message` text(0) NOT NULL; -ALTER TABLE gm_tickets CHANGE `ticket_lastchange` `timestamp` int(10) NOT NULL default '0'; -ALTER TABLE gm_tickets ADD( `closed` bit(1) NOT NULL, `assignedto` int(10) NOT NULL default '0'); \ No newline at end of file +ALTER TABLE gm_tickets CHANGE `ticket_lastchange` `timestamp` int(10) NOT NULL default '0'; \ No newline at end of file diff --git a/sql/updates/747_world.sql b/sql/updates/747_world.sql new file mode 100644 index 00000000000..b526781b141 --- /dev/null +++ b/sql/updates/747_world.sql @@ -0,0 +1 @@ +UPDATE `trinity_string` SET `content_default`='Ticket %d is already assigned.' WHERE (`entry`='2008'); \ No newline at end of file diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 00f0ec47ffd..1566d16c66c 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -419,7 +419,7 @@ bool ChatHandler::HandleGMTicketAssignToCommand(const char* args) std::string targm = targetgm; if(!normalizePlayerName(targm)) - return false; + return true; Player *cplr = m_session->GetPlayer(); std::string gmname; @@ -503,7 +503,7 @@ bool ChatHandler::HandleGMTicketUnAssignCommand(const char* args) bool ChatHandler::HandleGMTicketCommentCommand(const char* args) { - if(!args) + if(!*args) return false; char* tguid = strtok((char*)args, " "); @@ -513,7 +513,6 @@ bool ChatHandler::HandleGMTicketCommentCommand(const char* args) if(!comment) return false; - std::string gmname; Player *cplr = m_session->GetPlayer(); GM_Ticket *ticket = ticketmgr.GetGMTicket(ticketGuid); @@ -522,10 +521,9 @@ bool ChatHandler::HandleGMTicketCommentCommand(const char* args) 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()); + PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->guid); return true; } @@ -549,7 +547,7 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args) if(!ticket) { - PSendSysMessage(LANG_COMMAND_TICKETNOTEXIST, ticketGuid); + SendSysMessage(LANG_COMMAND_TICKETNOTEXIST); return true; } if(!ticket->closed == 1) -- cgit v1.2.3 From 95d6015cb0b4801fca2a617d5d2209091433f750 Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Thu, 1 Jan 2009 20:53:49 +0100 Subject: *Support for quest 8490 --HG-- branch : trunk --- sql/updates/748_world_scripts.sql | 3 +++ .../scripts/zone/eversong_woods/eversong_woods.cpp | 16 ++++------------ 2 files changed, 7 insertions(+), 12 deletions(-) create mode 100644 sql/updates/748_world_scripts.sql (limited to 'sql/updates') diff --git a/sql/updates/748_world_scripts.sql b/sql/updates/748_world_scripts.sql new file mode 100644 index 00000000000..484c71f3199 --- /dev/null +++ b/sql/updates/748_world_scripts.sql @@ -0,0 +1,3 @@ +update creature_template set scriptname='npc_infused_crystal', flags_extra=0 where entry=16364; +update quest_template set specialflags=2, reqcreatureorgoid1=1, reqcreatureorgocount1=1 where entry=8490; +delete from creature where id=17086; \ No newline at end of file diff --git a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp index be74291fe3d..1126352de8c 100644 --- a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp +++ b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp @@ -672,25 +672,21 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI void Reset() { - EndTimer = 60000; + EndTimer = 0; Completed = false; - Progress = true; + Progress = false; PlayerGUID = 0; - WaveTimer = 1000; + WaveTimer = 0; } void Aggro(Unit* who){} void MoveInLineOfSight(Unit* who) { - PlayerGUID = who->GetGUID(); - error_log("MoveLos"); - if( who->GetTypeId() == TYPEID_PLAYER && !m_creature->canStartAttack(who) ) + if( who->GetTypeId() == TYPEID_PLAYER && !m_creature->canStartAttack(who) && !Progress) { - error_log("TypeId check"); if( ((Player*)who)->GetQuestStatus(QUEST_POWERING_OUR_DEFENSES) == QUEST_STATUS_INCOMPLETE ) { - error_log("Queststaus"); float Radius = 10.0; if( m_creature->IsWithinDistInMap(who, Radius) ) { @@ -698,7 +694,6 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI WaveTimer = 1000; EndTimer = 60000; Progress = true; - error_log("Event started"); } } } @@ -730,11 +725,9 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); if(player) ((Player*)player)->CompleteQuest(QUEST_POWERING_OUR_DEFENSES); - error_log("quest complete"); } m_creature->DealDamage(m_creature,m_creature->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); m_creature->RemoveCorpse(); - error_log("EndTimer done"); }else EndTimer -= diff; if(WaveTimer < diff && !Completed && Progress) @@ -746,7 +739,6 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI m_creature->SummonCreature(MOB_ENRAGED_WRAITH, SpawnLocations[ran2].x, SpawnLocations[ran2].y, SpawnLocations[ran2].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000); m_creature->SummonCreature(MOB_ENRAGED_WRAITH, SpawnLocations[ran3].x, SpawnLocations[ran3].y, SpawnLocations[ran3].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000); WaveTimer = 30000; - error_log("Wave summon"); }else WaveTimer -= diff; } }; -- cgit v1.2.3