From 3695accf5023516d05a028adc3d339053044a499 Mon Sep 17 00:00:00 2001 From: click Date: Tue, 17 Aug 2010 11:49:53 +0200 Subject: [PATCH] Core: Add support for reloading gossip_scripts + add missing SQL for earlier inserted commands (gossip_menu and gossip_menu_option) Thanks to Kaelima Fixes issue 2433 --HG-- branch : trunk --- sql/base/world_database.sql | 3 +++ sql/updates/9427_world_command.sql | 5 +++++ src/server/game/Chat/Chat.cpp | 1 + src/server/game/Chat/Chat.h | 1 + src/server/game/Chat/Commands/Level3.cpp | 21 +++++++++++++++++++++ 5 files changed, 31 insertions(+) create mode 100644 sql/updates/9427_world_command.sql diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 16ecbc9399..6099d56ce9 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -584,6 +584,9 @@ INSERT INTO `command` VALUES ('reload gameobject_scripts',3,'Syntax: .reload gameobject_scripts\nReload gameobject_scripts table.'), ('reload game_graveyard_zone',3,'Syntax: .reload game_graveyard_zone\nReload game_graveyard_zone table.'), ('reload game_tele',3,'Syntax: .reload game_tele\nReload game_tele table.'), +('reload gossip_menu',3,'Syntax: .reload gossip_menu\nReload gossip_menu table.'), +('reload gossip_menu_option',3,'Syntax: .reload gossip_menu_option\nReload gossip_menu_option table.'), +('reload gossip_scripts',3,'Syntax: .reload gossip_scripts\nReload gossip_scripts table.'), ('reload gm_tickets',3,'Syntax: .reload gm_tickets\nReload gm_tickets table.'), ('reload item_enchantment_template',3,'Syntax: .reload item_enchantment_template\nReload item_enchantment_template table.'), ('reload item_loot_template',3,'Syntax: .reload item_loot_template\nReload item_loot_template table.'), diff --git a/sql/updates/9427_world_command.sql b/sql/updates/9427_world_command.sql new file mode 100644 index 0000000000..3f294a387c --- /dev/null +++ b/sql/updates/9427_world_command.sql @@ -0,0 +1,5 @@ +DELETE FROM `command` WHERE `name` IN ('reload gossip_menu','reload gossip_menu_option','reload gossip_scripts'); +INSERT INTO `command` (`name`,`security`,`help`) VALUES +('reload gossip_menu',3, 'Syntax: .reload gossip_menu\nReload gossip_menu table.'), +('reload gossip_menu_option',3, 'Syntax: .reload gossip_menu_option\nReload gossip_menu_option table.'), +('reload gossip_scripts',3, 'Syntax: .reload gossip_scripts\nReload gossip_scripts table.'), diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 26a8da94ec..9ee79281e5 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -487,6 +487,7 @@ ChatCommand * ChatHandler::getCommandTable() { "gameobject_scripts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadGameObjectScriptsCommand, "", NULL }, { "gossip_menu", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadGossipMenuCommand, "", NULL }, { "gossip_menu_option", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadGossipMenuOptionCommand, "", NULL }, + { "gossip_scripts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadGossipScriptsCommand, "", NULL }, { "item_enchantment_template", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadItemEnchantementsCommand, "", NULL }, { "item_loot_template", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadLootTemplatesItemCommand, "", NULL }, { "item_set_names", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadItemSetNamesCommand, "", NULL }, diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index d4fd0dc303..630a8668e4 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -381,6 +381,7 @@ class ChatHandler bool HandleReloadGameTeleCommand(const char* args); bool HandleReloadGossipMenuCommand(const char* args); bool HandleReloadGossipMenuOptionCommand(const char* args); + bool HandleReloadGossipScriptsCommand(const char* args); bool HandleReloadGOQuestRelationsCommand(const char* args); bool HandleReloadGOQuestInvRelationsCommand(const char* args); bool HandleReloadItemEnchantementsCommand(const char* args); diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index b1eb5aac6f..b56c97d988 100644 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -143,6 +143,7 @@ bool ChatHandler::HandleReloadAllScriptsCommand(const char*) sLog.outString("Re-Loading Scripts..."); HandleReloadGameObjectScriptsCommand("a"); + HandleReloadGossipScriptsCommand("a"); HandleReloadEventScriptsCommand("a"); HandleReloadQuestEndScriptsCommand("a"); HandleReloadQuestStartScriptsCommand("a"); @@ -818,6 +819,26 @@ bool ChatHandler::HandleReloadItemSetNamesCommand(const char*) return true; } +bool ChatHandler::HandleReloadGossipScriptsCommand(const char* arg) +{ + if (sWorld.IsScriptScheduled()) + { + SendSysMessage("DB scripts used currently, please attempt reload later."); + SetSentErrorMessage(true); + return false; + } + + if (*arg != 'a') + sLog.outString("Re-Loading Scripts from `gossip_scripts`..."); + + sObectMgr.LoadGossipScripts(); + + if (*arg != 'a') + SendGlobalGMSysMessage("DB table `gossip_scripts` reloaded."); + + return true; +} + bool ChatHandler::HandleReloadGameObjectScriptsCommand(const char* arg) { if (sWorld.IsScriptScheduled())