aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorclick <none@none>2010-11-16 21:27:25 +0100
committerclick <none@none>2010-11-16 21:27:25 +0100
commit95e956a0b5145ad0a260557ce9ae1290cdacad2d (patch)
tree383a6b273e31ab72e352d2394ab951c1d5b20ec2 /src
parente87223b453f1f958b077d9f98234d4cb9fc71557 (diff)
Core/Scripts: Convert more commands over to CommandScripts (moves gobject, honor, quest, reload, titles and wp commands to scripts) - Patch by Paradox
(Also fixes a minor visual error on GM-listings (gm ingame/gm list) when the respective user had an R in his/her name). Closes issue 4792. --HG-- branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Chat/Chat.cpp175
-rwxr-xr-xsrc/server/game/Chat/Chat.h140
-rwxr-xr-xsrc/server/game/Chat/Commands/Debugcmds.cpp23
-rwxr-xr-xsrc/server/game/Chat/Commands/Level2.cpp1713
-rwxr-xr-xsrc/server/game/Chat/Commands/Level3.cpp1388
-rwxr-xr-xsrc/server/game/Chat/Commands/TicketCommands.cpp6
-rwxr-xr-xsrc/server/game/Scripting/ScriptLoader.cpp13
-rw-r--r--src/server/scripts/CMakeLists.txt1
-rw-r--r--src/server/scripts/Commands/CMakeLists.txt13
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp14
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp677
-rw-r--r--src/server/scripts/Commands/cs_honor.cpp120
-rw-r--r--src/server/scripts/Commands/cs_quest.cpp260
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp1302
-rw-r--r--src/server/scripts/Commands/cs_titles.cpp250
-rw-r--r--src/server/scripts/Commands/cs_wp.cpp981
16 files changed, 3626 insertions, 3450 deletions
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 2aaa3992572..b23f2c824e9 100755
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -160,22 +160,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
- static ChatCommand gobjectCommandTable[] =
- {
- { "activate", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleActivateObjectCommand>, "", NULL },
- { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectAddCommand>, "", NULL },
- { "delete", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectDeleteCommand>, "", NULL },
- { "info", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectInfoCommand>, "", NULL },
- { "move", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectMoveCommand>, "", NULL },
- { "near", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectNearCommand>, "", NULL },
- { "state", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectStateCommand>, "", NULL },
- { "setphase", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectPhaseCommand>, "", NULL },
- { "target", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectTargetCommand>, "", NULL },
- { "tempadd", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTempGameObjectCommand>, "", NULL },
- { "turn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectTurnCommand>, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
-
static ChatCommand groupCommandTable[] =
{
{ "leader", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleGroupLeaderCommand>, "", NULL },
@@ -194,14 +178,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
- static ChatCommand honorCommandTable[] =
- {
- { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleHonorAddCommand>, "", NULL },
- { "addkill", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleHonorAddKillCommand>, "", NULL },
- { "update", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleHonorUpdateCommand>, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
-
static ChatCommand instanceCommandTable[] =
{
{ "listbinds", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleInstanceListBindsCommand>, "", NULL },
@@ -264,124 +240,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
- static ChatCommand questCommandTable[] =
- {
- { "add", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleQuestAdd>, "", NULL },
- { "complete", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleQuestComplete>, "", NULL },
- { "remove", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleQuestRemove>, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
-
- static ChatCommand reloadCommandTable[] =
- {
- { "all", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllCommand>, "", NULL },
- { "all_achievement",SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllAchievementCommand>,"", NULL },
- { "all_area", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllAreaCommand>, "", NULL },
- { "all_eventai", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllEventAICommand>, "", NULL },
- { "all_gossips", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllGossipsCommand>, "", NULL },
- { "all_item", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllItemCommand>, "", NULL },
- { "all_locales", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllLocalesCommand>, "", NULL },
- { "all_loot", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllLootCommand>, "", NULL },
- { "all_npc", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllNpcCommand>, "", NULL },
- { "all_quest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllQuestCommand>, "", NULL },
- { "all_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllScriptsCommand>, "", NULL },
- { "all_spell", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAllSpellCommand>, "", NULL },
-
- { "config", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadConfigCommand>, "", NULL },
-
- { "access_requirement", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAccessRequirementCommand>, "", NULL },
- { "achievement_criteria_data", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAchievementCriteriaDataCommand>, "", NULL },
- { "achievement_reward", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAchievementRewardCommand>, "", NULL },
- { "areatrigger_involvedrelation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadQuestAreaTriggersCommand>, "", NULL },
- { "areatrigger_tavern", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAreaTriggerTavernCommand>, "", NULL },
- { "areatrigger_teleport", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAreaTriggerTeleportCommand>, "", NULL },
- { "autobroadcast", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAutobroadcastCommand>, "", NULL },
- { "command", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadCommandCommand>, "", NULL },
- { "conditions", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadConditions>, "", NULL },
- { "creature_text", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadCreatureText>, "", NULL },
- { "creature_ai_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadEventAIScriptsCommand>, "", NULL },
- { "creature_ai_summons", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadEventAISummonsCommand>, "", NULL },
- { "creature_ai_texts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadEventAITextsCommand>, "", NULL },
- { "creature_involvedrelation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadCreatureQuestInvRelationsCommand>,"",NULL },
- { "creature_linked_respawn", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleReloadCreatureLinkedRespawnCommand>, "", NULL },
- { "creature_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesCreatureCommand>, "", NULL },
- { "creature_onkill_reputation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadOnKillReputationCommand>, "", NULL },
- { "creature_questrelation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadCreatureQuestRelationsCommand>, "", NULL },
- { "creature_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadCreatureTemplateCommand>, "", NULL },
- //{ "db_script_string", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadDbScriptStringCommand>, "", NULL },
- { "disables", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadDisablesCommand>, "", NULL },
- { "disenchant_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesDisenchantCommand>, "", NULL },
- { "event_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadEventScriptsCommand>, "", NULL },
- { "fishing_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesFishingCommand>, "", NULL },
- { "game_graveyard_zone", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGameGraveyardZoneCommand>, "", NULL },
- { "game_tele", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGameTeleCommand>, "", NULL },
- { "gameobject_involvedrelation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGOQuestInvRelationsCommand>, "", NULL },
- { "gameobject_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesGameobjectCommand>, "", NULL },
- { "gameobject_questrelation", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGOQuestRelationsCommand>, "", NULL },
- { "gameobject_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGameObjectScriptsCommand>, "", NULL },
- { "gossip_menu", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGossipMenuCommand>, "", NULL },
- { "gossip_menu_option", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGossipMenuOptionCommand>, "", NULL },
- { "gossip_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadGossipScriptsCommand>, "", NULL },
- { "item_enchantment_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadItemEnchantementsCommand>, "", NULL },
- { "item_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesItemCommand>, "", NULL },
- { "item_set_names", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadItemSetNamesCommand>, "", NULL },
- { "lfg_dungeon_encounters", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLfgEncountersCommand>, "", NULL },
- { "lfg_dungeon_rewards", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLfgRewardsCommand>, "", NULL },
- { "locales_achievement_reward", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesAchievementRewardCommand>,"", NULL },
- { "locales_creature", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesCreatureCommand>, "", NULL },
- { "locales_gameobject", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesGameobjectCommand>, "", NULL },
- { "locales_gossip_menu_option", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesGossipMenuOptionCommand>, "", NULL },
- { "locales_item", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesItemCommand>, "", NULL },
- { "locales_item_set_name", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesItemSetNameCommand>, "", NULL },
- { "locales_npc_text", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesNpcTextCommand>, "", NULL },
- { "locales_page_text", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesPageTextCommand>, "", NULL },
- { "locales_points_of_interest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesPointsOfInterestCommand>, "", NULL },
- { "locales_quest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesQuestCommand>, "", NULL },
- { "mail_level_reward", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadMailLevelRewardCommand>, "", NULL },
- { "mail_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesMailCommand>, "", NULL },
- { "milling_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesMillingCommand>, "", NULL },
- { "npc_gossip", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadNpcGossipCommand>, "", NULL },
- { "npc_spellclick_spells", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellClickSpellsCommand>, "",NULL},
- { "npc_trainer", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadNpcTrainerCommand>, "", NULL },
- { "npc_vendor", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadNpcVendorCommand>, "", NULL },
- { "page_text", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadPageTextsCommand>, "", NULL },
- { "pickpocketing_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesPickpocketingCommand>,"",NULL},
- { "points_of_interest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadPointsOfInterestCommand>, "", NULL },
- { "prospecting_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesProspectingCommand>,"", NULL },
- { "quest_end_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadQuestEndScriptsCommand>, "", NULL },
- { "quest_poi", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadQuestPOICommand>, "", NULL },
- { "quest_start_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadQuestStartScriptsCommand>, "", NULL },
- { "quest_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadQuestTemplateCommand>, "", NULL },
- { "reference_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesReferenceCommand>, "", NULL },
- { "reserved_name", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadReservedNameCommand>, "", NULL },
- { "reputation_reward_rate", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadReputationRewardRateCommand>, "", NULL },
- { "reputation_spillover_template",SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadReputationRewardRateCommand>, "", NULL },
- { "smart_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSmartScripts>, "", NULL },
- { "skill_discovery_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSkillDiscoveryTemplateCommand>, "", NULL },
- { "skill_extra_item_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSkillExtraItemTemplateCommand>, "", NULL },
- { "skill_fishing_base_level", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSkillFishingBaseLevelCommand>, "", NULL },
- { "skinning_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesSkinningCommand>, "", NULL },
- { "spell_required", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellRequiredCommand>, "", NULL },
- { "spell_area", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellAreaCommand>, "", NULL },
- { "spell_bonus_data", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellBonusesCommand>, "", NULL },
- { "spell_group", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellGroupsCommand>, "", NULL },
- { "spell_learn_spell", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellLearnSpellCommand>, "", NULL },
- { "spell_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesSpellCommand>, "", NULL },
- { "spell_linked_spell", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellLinkedSpellCommand>, "", NULL },
- { "spell_pet_auras", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellPetAurasCommand>, "", NULL },
- { "spell_proc_event", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellProcEventCommand>, "", NULL },
- { "spell_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellScriptsCommand>, "", NULL },
- { "spell_target_position", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellTargetPositionCommand>, "", NULL },
- { "spell_threats", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellThreatsCommand>, "", NULL },
- { "spell_group_stack_rules", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadSpellGroupStackRulesCommand>, "", NULL },
- { "trinity_string", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadTrinityStringCommand>, "", NULL },
- { "auctions", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAuctionsCommand>, "", NULL },
- { "waypoint_scripts", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadWpScriptsCommand>, "", NULL },
- { "gm_tickets", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleGMTicketReloadCommand>, "", NULL },
-
- { NULL, 0, false, NULL, "", NULL }
- };
-
static ChatCommand resetCommandTable[] =
{
{ "achievements", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleResetAchievementsCommand>, "", NULL },
@@ -456,15 +314,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
- static ChatCommand titlesCommandTable[] =
- {
- { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTitlesAddCommand>, "", NULL },
- { "current", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTitlesCurrentCommand>, "", NULL },
- { "remove", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTitlesRemoveCommand>, "", NULL },
- { "setmask", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTitlesSetMaskCommand>, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
-
static ChatCommand unbanCommandTable[] =
{
{ "account", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleUnBanAccountCommand>, "", NULL },
@@ -474,17 +323,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
- static ChatCommand wpCommandTable[] =
- {
- { "show", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpShowCommand>, "", NULL },
- { "addwp", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpAddCommand>, "", NULL },
- { "load", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpLoadPathCommand>, "", NULL },
- { "modify", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpModifyCommand>, "", NULL },
- { "event", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpEventCommand>, "", NULL },
- { "unload", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWpUnLoadPathCommand>, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
-
static ChatCommand ticketResponseCommandTable[] =
{
{ "append", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGMTicketResponseAppendCommand>, "", NULL },
@@ -515,12 +353,6 @@ ChatCommand * ChatHandler::getCommandTable()
static ChatCommand commandTable[] =
{
{ "character", SEC_GAMEMASTER, true, NULL, "", characterCommandTable},
- { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable },
- { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable },
- { "wp", SEC_GAMEMASTER, false, NULL, "", wpCommandTable },
- { "titles", SEC_GAMEMASTER, false, NULL, "", titlesCommandTable },
- { "quest", SEC_ADMINISTRATOR, false, NULL, "", questCommandTable },
- { "reload", SEC_ADMINISTRATOR, true, NULL, "", reloadCommandTable },
{ "list", SEC_ADMINISTRATOR, true, NULL, "", listCommandTable },
{ "lookup", SEC_ADMINISTRATOR, true, NULL, "", lookupCommandTable },
{ "pdump", SEC_ADMINISTRATOR, true, NULL, "", pdumpCommandTable },
@@ -533,7 +365,6 @@ ChatCommand * ChatHandler::getCommandTable()
{ "channel", SEC_ADMINISTRATOR, true, NULL, "", channelCommandTable },
{ "pet", SEC_GAMEMASTER, false, NULL, "", petCommandTable },
- { "loadpath", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleReloadAllPaths>, "", NULL },
{ "ticket", SEC_MODERATOR, false, NULL, "", ticketCommandTable },
{ "aura", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleAuraCommand>, "", NULL },
@@ -613,9 +444,9 @@ ChatCommand * ChatHandler::getCommandTable()
// can't use vector as vector storage is implementation-dependent, eg, there can be alignment gaps between elements
static ChatCommand* commandTableCache = 0;
- if (load_command_table)
+ if (LoadCommandTable())
{
- load_command_table = false;
+ SetLoadCommandTable(false);
{
// count total number of top-level commands
@@ -891,7 +722,7 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand *table, const char* text, co
}
}
// some commands have custom error messages. Don't send the default one in these cases.
- else if (!sentErrorMessage)
+ else if (!HasSentErrorMessage())
{
if (!table[i].Help.empty())
SendSysMessage(table[i].Help.c_str());
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h
index 5918e79237a..ceaf8548fe1 100755
--- a/src/server/game/Chat/Chat.h
+++ b/src/server/game/Chat/Chat.h
@@ -79,7 +79,6 @@ class ChatHandler
static ChatCommand* getCommandTable();
bool isValidChatMessage(const char* msg);
- bool HasSentErrorMessage() { return sentErrorMessage;}
void SendGlobalSysMessage(const char *str);
bool hasStringAbbr(const char* name, const char* part);
@@ -120,7 +119,10 @@ class ChatHandler
GameObject* GetNearbyGameObject();
GameObject* GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid,uint32 entry);
+ bool HasSentErrorMessage() { return sentErrorMessage;}
void SetSentErrorMessage(bool val){ sentErrorMessage = val;};
+ static bool LoadCommandTable() { return load_command_table;}
+ static void SetLoadCommandTable(bool val){ load_command_table = val;};
protected:
explicit ChatHandler() : m_session(NULL) {} // for CLI subclass
@@ -171,26 +173,12 @@ class ChatHandler
bool HandleBindSightCommand(const char* args);
bool HandleUnbindSightCommand(const char* args);
- bool HandleGameObjectAddCommand(const char* args);
- bool HandleGameObjectDeleteCommand(const char* args);
- bool HandleGameObjectInfoCommand(const char* args);
- bool HandleGameObjectMoveCommand(const char* args);
- bool HandleGameObjectNearCommand(const char* args);
- bool HandleGameObjectPhaseCommand(const char* args);
- bool HandleGameObjectStateCommand(const char* args);
- bool HandleGameObjectTargetCommand(const char* args);
- bool HandleGameObjectTurnCommand(const char* args);
-
bool HandleGuildCreateCommand(const char* args);
bool HandleGuildInviteCommand(const char* args);
bool HandleGuildUninviteCommand(const char* args);
bool HandleGuildRankCommand(const char* args);
bool HandleGuildDeleteCommand(const char* args);
- bool HandleHonorAddCommand(const char* args);
- bool HandleHonorAddKillCommand(const char* args);
- bool HandleHonorUpdateCommand(const char* args);
-
bool HandleInstanceListBindsCommand(const char* args);
bool HandleInstanceUnbindCommand(const char* args);
bool HandleInstanceStatsCommand(const char* args);
@@ -222,115 +210,6 @@ class ChatHandler
bool HandlePDumpLoadCommand(const char *args);
bool HandlePDumpWriteCommand(const char *args);
- bool HandleQuestAdd(const char * args);
- bool HandleQuestRemove(const char * args);
- bool HandleQuestComplete(const char * args);
-
- bool HandleReloadAllCommand(const char* args);
- bool HandleReloadAllAchievementCommand(const char* args);
- bool HandleReloadAllAreaCommand(const char* args);
- bool HandleReloadAllGossipsCommand(const char* args);
- bool HandleReloadAllItemCommand(const char* args);
- bool HandleReloadAllLootCommand(const char* args);
- bool HandleReloadAllNpcCommand(const char* args);
- bool HandleReloadAllQuestCommand(const char* args);
- bool HandleReloadAllScriptsCommand(const char* args);
- bool HandleReloadAllEventAICommand(const char* args);
- bool HandleReloadAllSpellCommand(const char* args);
- bool HandleReloadAllLocalesCommand(const char* args);
-
- bool HandleReloadConfigCommand(const char* args);
-
- bool HandleReloadAccessRequirementCommand(const char* args);
- bool HandleReloadAchievementCriteriaDataCommand(const char* args);
- bool HandleReloadAchievementRewardCommand(const char* args);
- bool HandleReloadAreaTriggerTavernCommand(const char* args);
- bool HandleReloadAreaTriggerTeleportCommand(const char* args);
- bool HandleReloadAutobroadcastCommand(const char* args);
- bool HandleReloadEventScriptsCommand(const char* args);
- bool HandleReloadEventAITextsCommand(const char* args);
- bool HandleReloadEventAISummonsCommand(const char* args);
- bool HandleReloadEventAIScriptsCommand(const char* args);
- bool HandleReloadCommandCommand(const char* args);
- bool HandleReloadOnKillReputationCommand(const char* args);
- bool HandleReloadCreatureTemplateCommand(const char* args);
- bool HandleReloadCreatureQuestRelationsCommand(const char* args);
- bool HandleReloadCreatureQuestInvRelationsCommand(const char* args);
- bool HandleReloadCreatureLinkedRespawnCommand(const char* args);
- bool HandleReloadDbScriptStringCommand(const char* args);
- bool HandleReloadGameGraveyardZoneCommand(const char* args);
- bool HandleReloadGameObjectScriptsCommand(const char* args);
- 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);
- bool HandleReloadItemSetNamesCommand(const char* args);
- bool HandleReloadLfgEncountersCommand(const char* args);
- bool HandleReloadLfgRewardsCommand(const char* args);
- bool HandleReloadLocalesAchievementRewardCommand(const char* args);
- bool HandleReloadLocalesCreatureCommand(const char* args);
- bool HandleReloadLocalesGameobjectCommand(const char* args);
- bool HandleReloadLocalesGossipMenuOptionCommand(const char* args);
- bool HandleReloadLocalesItemCommand(const char* args);
- bool HandleReloadLocalesItemSetNameCommand(const char* args);
- bool HandleReloadLocalesNpcTextCommand(const char* args);
- bool HandleReloadLocalesPageTextCommand(const char* args);
- bool HandleReloadLocalesPointsOfInterestCommand(const char* args);
- bool HandleReloadLocalesQuestCommand(const char* args);
-// bool HandleReloadAuctionsCommand(const char* args);
- bool HandleReloadLootTemplatesCreatureCommand(const char* args);
- bool HandleReloadLootTemplatesDisenchantCommand(const char* args);
- bool HandleReloadLootTemplatesFishingCommand(const char* args);
- bool HandleReloadLootTemplatesGameobjectCommand(const char* args);
- bool HandleReloadLootTemplatesItemCommand(const char* args);
- bool HandleReloadLootTemplatesMailCommand(const char* args);
- bool HandleReloadMailLevelRewardCommand(const char* args);
- bool HandleReloadLootTemplatesMillingCommand(const char* args);
- bool HandleReloadLootTemplatesPickpocketingCommand(const char* args);
- bool HandleReloadLootTemplatesProspectingCommand(const char* args);
- bool HandleReloadLootTemplatesReferenceCommand(const char* args);
- bool HandleReloadLootTemplatesSkinningCommand(const char* args);
- bool HandleReloadLootTemplatesSpellCommand(const char* args);
- bool HandleReloadTrinityStringCommand(const char* args);
- bool HandleReloadNpcGossipCommand(const char* args);
- bool HandleReloadNpcTrainerCommand(const char* args);
- bool HandleReloadNpcVendorCommand(const char* args);
- bool HandleReloadPageTextsCommand(const char* args);
- bool HandleReloadPointsOfInterestCommand(const char* args);
- bool HandleReloadSpellClickSpellsCommand(const char* args);
- bool HandleReloadQuestAreaTriggersCommand(const char* args);
- bool HandleReloadQuestEndScriptsCommand(const char* args);
- bool HandleReloadQuestPOICommand(const char* args);
- bool HandleReloadQuestStartScriptsCommand(const char* args);
- bool HandleReloadQuestTemplateCommand(const char* args);
- bool HandleReloadReservedNameCommand(const char*);
- bool HandleReloadReputationRewardRateCommand(const char* args);
- bool HandleReloadReputationSpilloverTemplateCommand(const char* args);
- bool HandleReloadSkillDiscoveryTemplateCommand(const char* args);
- bool HandleReloadSkillExtraItemTemplateCommand(const char* args);
- bool HandleReloadSkillFishingBaseLevelCommand(const char* args);
- bool HandleReloadSpellRequiredCommand(const char* args);
- bool HandleReloadSpellAreaCommand(const char* args);
- bool HandleReloadSpellGroupsCommand(const char* args);
- bool HandleReloadSpellLearnSpellCommand(const char* args);
- bool HandleReloadSpellLinkedSpellCommand(const char* args);
- bool HandleReloadSpellProcEventCommand(const char* args);
- bool HandleReloadSpellBonusesCommand(const char* args);
- bool HandleReloadSpellScriptsCommand(const char* args);
- bool HandleReloadSpellTargetPositionCommand(const char* args);
- bool HandleReloadSpellThreatsCommand(const char* args);
- bool HandleReloadSpellPetAurasCommand(const char* args);
- bool HandleReloadDisablesCommand(const char* args);
- bool HandleReloadSpellGroupStackRulesCommand(const char* args);
- bool HandleReloadAuctionsCommand(const char* args);
- bool HandleReloadWpScriptsCommand(const char* args);
- bool HandleReloadConditions(const char* args);
- bool HandleReloadCreatureText(const char* args);
- bool HandleReloadSmartScripts(const char* args);
-
bool HandleResetAchievementsCommand(const char * args);
bool HandleResetAllCommand(const char * args);
bool HandleResetHonorCommand(const char * args);
@@ -361,24 +240,11 @@ class ChatHandler
bool HandleServerSetLogFileLevelCommand(const char* args);
bool HandleServerSetDiffTimeCommand(const char* args);
- bool HandleTitlesAddCommand(const char* args);
- bool HandleTitlesCurrentCommand(const char* args);
- bool HandleTitlesRemoveCommand(const char* args);
- bool HandleTitlesSetMaskCommand(const char* args);
-
bool HandleUnBanAccountCommand(const char* args);
bool HandleUnBanAccountByCharCommand(const char* args);
bool HandleUnBanCharacterCommand(const char* args);
bool HandleUnBanIPCommand(const char* args);
- bool HandleWpAddCommand(const char* args);
- bool HandleWpLoadPathCommand(const char* args);
- bool HandleWpUnLoadPathCommand(const char* args);
- bool HandleWpModifyCommand(const char* args);
- bool HandleWpEventCommand(const char* args);
- bool HandleWpShowCommand(const char* args);
- bool HandleReloadAllPaths(const char *args);
-
bool HandleHelpCommand(const char* args);
bool HandleCommandsCommand(const char* args);
bool HandleStartCommand(const char* args);
diff --git a/src/server/game/Chat/Commands/Debugcmds.cpp b/src/server/game/Chat/Commands/Debugcmds.cpp
index c831fde2ecd..691dab52911 100755
--- a/src/server/game/Chat/Commands/Debugcmds.cpp
+++ b/src/server/game/Chat/Commands/Debugcmds.cpp
@@ -16,25 +16,4 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Common.h"
-#include "DatabaseEnv.h"
-#include "WorldPacket.h"
-#include "Vehicle.h"
-#include "Player.h"
-#include "Opcodes.h"
-#include "Chat.h"
-#include "Log.h"
-#include "Unit.h"
-#include "GossipDef.h"
-#include "Language.h"
-#include "BattlegroundMgr.h"
-#include <fstream>
-#include "ObjectMgr.h"
-#include "Cell.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "SpellMgr.h"
-#include "ScriptMgr.h"
-
-// This file is deprecated \ No newline at end of file
+// This file is deprecated
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp
index e291957cd13..3c7adbb4d5f 100755
--- a/src/server/game/Chat/Commands/Level2.cpp
+++ b/src/server/game/Chat/Commands/Level2.cpp
@@ -136,442 +136,6 @@ bool ChatHandler::HandleUnmuteCommand(const char* args)
return true;
}
-bool ChatHandler::HandleGameObjectTargetCommand(const char* args)
-{
- Player* pl = m_session->GetPlayer();
- QueryResult result;
- GameEventMgr::ActiveEvents const& activeEventsList = sGameEventMgr.GetActiveEventList();
- if (*args)
- {
- // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject_entry");
- if (!cId)
- return false;
-
- uint32 id = atol(cId);
-
- if (id)
- result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE map = '%i' AND id = '%u' ORDER BY order_ ASC LIMIT 1",
- pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(), pl->GetMapId(),id);
- else
- {
- std::string name = cId;
- WorldDatabase.escape_string(name);
- result = WorldDatabase.PQuery(
- "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ "
- "FROM gameobject,gameobject_template WHERE gameobject_template.entry = gameobject.id AND map = %i AND name "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'")" ORDER BY order_ ASC LIMIT 1",
- pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(), pl->GetMapId(),name.c_str());
- }
- }
- else
- {
- std::ostringstream eventFilter;
- eventFilter << " AND (event IS NULL ";
- bool initString = true;
-
- for (GameEventMgr::ActiveEvents::const_iterator itr = activeEventsList.begin(); itr != activeEventsList.end(); ++itr)
- {
- if (initString)
- {
- eventFilter << "OR event IN (" <<*itr;
- initString =false;
- }
- else
- eventFilter << "," << *itr;
- }
-
- if (!initString)
- eventFilter << "))";
- else
- eventFilter << ")";
-
- result = WorldDatabase.PQuery("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseMask, "
- "(POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ FROM gameobject "
- "LEFT OUTER JOIN game_event_gameobject on gameobject.guid=game_event_gameobject.guid WHERE map = '%i' %s ORDER BY order_ ASC LIMIT 10",
- m_session->GetPlayer()->GetPositionX(), m_session->GetPlayer()->GetPositionY(), m_session->GetPlayer()->GetPositionZ(), m_session->GetPlayer()->GetMapId(),eventFilter.str().c_str());
- }
-
- if (!result)
- {
- SendSysMessage(LANG_COMMAND_TARGETOBJNOTFOUND);
- return true;
- }
-
- bool found = false;
- float x, y, z, o;
- uint32 lowguid, id;
- uint16 mapid, phase;
- uint32 pool_id;
-
- do
- {
- Field *fields = result->Fetch();
- lowguid = fields[0].GetUInt32();
- id = fields[1].GetUInt32();
- x = fields[2].GetFloat();
- y = fields[3].GetFloat();
- z = fields[4].GetFloat();
- o = fields[5].GetFloat();
- mapid = fields[6].GetUInt16();
- phase = fields[7].GetUInt16();
- pool_id = sPoolMgr.IsPartOfAPool<GameObject>(lowguid);
- if (!pool_id || sPoolMgr.IsSpawnedObject<GameObject>(lowguid))
- found = true;
- } while (result->NextRow() && (!found));
-
- if (!found)
- {
- PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
- return false;
- }
-
- GameObjectInfo const* goI = sObjectMgr.GetGameObjectInfo(id);
-
- if (!goI)
- {
- PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
- return false;
- }
-
- GameObject* target = m_session->GetPlayer()->GetMap()->GetGameObject(MAKE_NEW_GUID(lowguid,id,HIGHGUID_GAMEOBJECT));
-
- PSendSysMessage(LANG_GAMEOBJECT_DETAIL, lowguid, goI->name, lowguid, id, x, y, z, mapid, o, phase);
-
- if (target)
- {
- int32 curRespawnDelay = int32(target->GetRespawnTimeEx()-time(NULL));
- if (curRespawnDelay < 0)
- curRespawnDelay = 0;
-
- std::string curRespawnDelayStr = secsToTimeString(curRespawnDelay,true);
- std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(),true);
-
- PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(),curRespawnDelayStr.c_str());
- }
- return true;
-}
-
-//delete object by selection or guid
-bool ChatHandler::HandleGameObjectDeleteCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* obj = NULL;
-
- // by DB guid
- if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
- obj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
-
- if (!obj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- uint64 owner_guid = obj->GetOwnerGUID();
- if (owner_guid)
- {
- Unit* owner = ObjectAccessor::GetUnit(*m_session->GetPlayer(),owner_guid);
- if (!owner || !IS_PLAYER_GUID(owner_guid))
- {
- PSendSysMessage(LANG_COMMAND_DELOBJREFERCREATURE, GUID_LOPART(owner_guid), obj->GetGUIDLow());
- SetSentErrorMessage(true);
- return false;
- }
-
- owner->RemoveGameObject(obj,false);
- }
-
- obj->SetRespawnTime(0); // not save respawn time
- obj->Delete();
- obj->DeleteFromDB();
-
- PSendSysMessage(LANG_COMMAND_DELOBJMESSAGE, obj->GetGUIDLow());
-
- return true;
-}
-
-//turn selected object
-bool ChatHandler::HandleGameObjectTurnCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* obj = NULL;
-
- // by DB guid
- if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
- obj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
-
- if (!obj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- char* po = strtok(NULL, " ");
- float o;
-
- if (po)
- {
- o = (float)atof(po);
- }
- else
- {
- Player *chr = m_session->GetPlayer();
- o = chr->GetOrientation();
- }
-
- obj->Relocate(obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ(), o);
- obj->UpdateRotationFields();
- obj->DestroyForNearbyPlayers();
- obj->UpdateObjectVisibility();
-
- obj->SaveToDB();
- obj->Refresh();
-
- PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, obj->GetGUIDLow(), obj->GetGOInfo()->name, obj->GetGUIDLow(), o);
-
- return true;
-}
-
-//move selected object
-bool ChatHandler::HandleGameObjectMoveCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* obj = NULL;
-
- // by DB guid
- if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
- obj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
-
- if (!obj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- char* px = strtok(NULL, " ");
- char* py = strtok(NULL, " ");
- char* pz = strtok(NULL, " ");
-
- if (!px)
- {
- Player *chr = m_session->GetPlayer();
- obj->Relocate(chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), obj->GetOrientation());
- obj->DestroyForNearbyPlayers();
- obj->UpdateObjectVisibility();
- }
- else
- {
- if (!py || !pz)
- return false;
-
- float x = (float)atof(px);
- float y = (float)atof(py);
- float z = (float)atof(pz);
-
- if (!MapManager::IsValidMapCoord(obj->GetMapId(),x,y,z))
- {
- PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,obj->GetMapId());
- SetSentErrorMessage(true);
- return false;
- }
-
- obj->Relocate(x, y, z, obj->GetOrientation());
- obj->DestroyForNearbyPlayers();
- obj->UpdateObjectVisibility();
- }
-
- obj->SaveToDB();
- obj->Refresh();
-
- PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, obj->GetGUIDLow(), obj->GetGOInfo()->name, obj->GetGUIDLow());
-
- return true;
-}
-
-//spawn go
-bool ChatHandler::HandleGameObjectAddCommand(const char* args)
-{
- if (!*args)
- return false;
-
- // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject_entry");
- if (!cId)
- return false;
-
- uint32 id = atol(cId);
- if (!id)
- return false;
-
- char* spawntimeSecs = strtok(NULL, " ");
-
- const GameObjectInfo *gInfo = sObjectMgr.GetGameObjectInfo(id);
-
- if (!gInfo)
- {
- PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
- SetSentErrorMessage(true);
- return false;
- }
-
- if (gInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(gInfo->displayId))
- {
- // report to DB errors log as in loading case
- sLog.outErrorDb("Gameobject (Entry %u GoType: %u) have invalid displayId (%u), not spawned.",id, gInfo->type, gInfo->displayId);
- PSendSysMessage(LANG_GAMEOBJECT_HAVE_INVALID_DATA,id);
- SetSentErrorMessage(true);
- return false;
- }
-
- Player *chr = m_session->GetPlayer();
- float x = float(chr->GetPositionX());
- float y = float(chr->GetPositionY());
- float z = float(chr->GetPositionZ());
- float o = float(chr->GetOrientation());
- Map *map = chr->GetMap();
-
- GameObject* pGameObj = new GameObject;
- uint32 db_lowGUID = sObjectMgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT);
-
- if (!pGameObj->Create(db_lowGUID, gInfo->id, map, chr->GetPhaseMaskForSpawn(), x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
- {
- delete pGameObj;
- return false;
- }
-
- if (spawntimeSecs)
- {
- uint32 value = atoi((char*)spawntimeSecs);
- pGameObj->SetRespawnTime(value);
- //sLog.outDebug("*** spawntimeSecs: %d", value);
- }
-
- // fill the gameobject data and save to the db
- pGameObj->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()),chr->GetPhaseMaskForSpawn());
-
- // this will generate a new guid if the object is in an instance
- if (!pGameObj->LoadFromDB(db_lowGUID, map))
- {
- delete pGameObj;
- return false;
- }
-
- sLog.outDebug(GetTrinityString(LANG_GAMEOBJECT_CURRENT), gInfo->name, db_lowGUID, x, y, z, o);
-
- map->Add(pGameObj);
-
- // TODO: is it really necessary to add both the real and DB table guid here ?
- sObjectMgr.AddGameobjectToGrid(db_lowGUID, sObjectMgr.GetGOData(db_lowGUID));
-
- PSendSysMessage(LANG_GAMEOBJECT_ADD,id,gInfo->name,db_lowGUID,x,y,z);
- return true;
-}
-
-//set pahsemask for selected object
-bool ChatHandler::HandleGameObjectPhaseCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* obj = NULL;
-
- // by DB guid
- if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
- obj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
-
- if (!obj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- char* phaseStr = strtok (NULL, " ");
- uint32 phasemask = phaseStr? atoi(phaseStr) : 0;
- if (phasemask == 0)
- {
- SendSysMessage(LANG_BAD_VALUE);
- SetSentErrorMessage(true);
- return false;
- }
-
- obj->SetPhaseMask(phasemask,true);
- obj->SaveToDB();
- return true;
-}
-
-bool ChatHandler::HandleGameObjectNearCommand(const char* args)
-{
- float distance = (!*args) ? 10.0f : (float)(atof(args));
- uint32 count = 0;
-
- Player* pl = m_session->GetPlayer();
- QueryResult result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, map, "
- "(POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ "
- "FROM gameobject WHERE map='%u' AND (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) <= '%f' ORDER BY order_",
- pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),
- pl->GetMapId(),pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),distance*distance);
-
- if (result)
- {
- do
- {
- Field *fields = result->Fetch();
- uint32 guid = fields[0].GetUInt32();
- uint32 entry = fields[1].GetUInt32();
- float x = fields[2].GetFloat();
- float y = fields[3].GetFloat();
- float z = fields[4].GetFloat();
- int mapid = fields[5].GetUInt16();
-
- GameObjectInfo const * gInfo = sObjectMgr.GetGameObjectInfo(entry);
-
- if (!gInfo)
- continue;
-
- PSendSysMessage(LANG_GO_LIST_CHAT, guid, entry, guid, gInfo->name, x, y, z, mapid);
-
- ++count;
- } while (result->NextRow());
- }
-
- PSendSysMessage(LANG_COMMAND_NEAROBJMESSAGE,distance,count);
- return true;
-}
-
bool ChatHandler::HandleGUIDCommand(const char* /*args*/)
{
uint64 guid = m_session->GetPlayer()->GetSelection();
@@ -754,45 +318,6 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args)
return true;
}
-//show info of gameobject
-bool ChatHandler::HandleGameObjectInfoCommand(const char* args)
-{
- uint32 entry = 0;
- uint32 type = 0;
- uint32 displayid = 0;
- std::string name;
- uint32 lootId = 0;
-
- if (!*args)
- {
- if (WorldObject * obj = getSelectedObject())
- entry = obj->GetEntry();
- }
- else
- entry = atoi((char*)args);
-
- GameObjectInfo const* goinfo = sObjectMgr.GetGameObjectInfo(entry);
-
- if (!goinfo)
- return false;
-
- type = goinfo->type;
- displayid = goinfo->displayId;
- name = goinfo->name;
- if (type == GAMEOBJECT_TYPE_CHEST)
- lootId = goinfo->chest.lootId;
- else if (type == GAMEOBJECT_TYPE_FISHINGHOLE)
- lootId = goinfo->fishinghole.lootId;
-
- PSendSysMessage(LANG_GOINFO_ENTRY, entry);
- PSendSysMessage(LANG_GOINFO_TYPE, type);
- PSendSysMessage(LANG_GOINFO_LOOTID, lootId);
- PSendSysMessage(LANG_GOINFO_DISPLAYID, displayid);
- PSendSysMessage(LANG_GOINFO_NAME, name.c_str());
-
- return true;
-}
-
//show info of player
bool ChatHandler::HandlePInfoCommand(const char* args)
{
@@ -920,931 +445,6 @@ bool ChatHandler::HandlePInfoCommand(const char* args)
return true;
}
-/////WAYPOINT COMMANDS
-
-/**
- * Add a waypoint to a creature.
- *
- * The user can either select an npc or provide its GUID.
- *
- * The user can even select a visual waypoint - then the new waypoint
- * is placed *after* the selected one - this makes insertion of new
- * waypoints possible.
- *
- * eg:
- * .wp add 12345
- * -> adds a waypoint to the npc with the GUID 12345
- *
- * .wp add
- * -> adds a waypoint to the currently selected creature
- *
- *
- * @param args if the user did not provide a GUID, it is NULL
- *
- * @return true - command did succeed, false - something went wrong
- */
-bool ChatHandler::HandleWpAddCommand(const char* args)
-{
- sLog.outDebug("DEBUG: HandleWpAddCommand");
-
- // optional
- char* path_number = NULL;
- uint32 pathid = 0;
-
- if (*args)
- path_number = strtok((char*)args, " ");
-
- uint32 point = 0;
- Creature* target = getSelectedCreature();
-
- if (!path_number)
- {
- if (target)
- pathid = target->GetWaypointPath();
- else
- {
- QueryResult result = WorldDatabase.Query("SELECT MAX(id) FROM waypoint_data");
- uint32 maxpathid = result->Fetch()->GetInt32();
- pathid = maxpathid+1;
- sLog.outDebug("DEBUG: HandleWpAddCommand - New path started.");
- PSendSysMessage("%s%s|r", "|cff00ff00", "New path started.");
- }
- }
- else
- pathid = atoi(path_number);
-
- // path_id -> ID of the Path
- // point -> number of the waypoint (if not 0)
-
- if (!pathid)
- {
- sLog.outDebug("DEBUG: HandleWpAddCommand - Current creature haven't loaded path.");
- PSendSysMessage("%s%s|r", "|cffff33ff", "Current creature haven't loaded path.");
- return true;
- }
-
- sLog.outDebug("DEBUG: HandleWpAddCommand - point == 0");
-
- QueryResult result = WorldDatabase.PQuery("SELECT MAX(point) FROM waypoint_data WHERE id = '%u'",pathid);
-
- if (result)
- point = (*result)[0].GetUInt32();
-
- Player* player = m_session->GetPlayer();
- //Map *map = player->GetMap();
-
- WorldDatabase.PExecute("INSERT INTO waypoint_data (id, point, position_x, position_y, position_z) VALUES ('%u','%u','%f', '%f', '%f')",
- pathid, point+1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
-
- PSendSysMessage("%s%s%u%s%u%s|r", "|cff00ff00", "PathID: |r|cff00ffff", pathid, "|r|cff00ff00: Waypoint |r|cff00ffff", point+1,"|r|cff00ff00 created. ");
- return true;
-} // HandleWpAddCommand
-
-bool ChatHandler::HandleWpLoadPathCommand(const char *args)
-{
- if (!*args)
- return false;
-
- // optional
- char* path_number = NULL;
-
- if (*args)
- path_number = strtok((char*)args, " ");
-
- uint32 pathid = 0;
- uint32 guidlow = 0;
- Creature* target = getSelectedCreature();
-
- // Did player provide a path_id?
- if (!path_number)
- sLog.outDebug("DEBUG: HandleWpLoadPathCommand - No path number provided");
-
- if (!target)
- {
- SendSysMessage(LANG_SELECT_CREATURE);
- SetSentErrorMessage(true);
- return false;
- }
-
- if (target->GetEntry() == 1)
- {
- PSendSysMessage("%s%s|r", "|cffff33ff", "You want to load path to a waypoint? Aren't you?");
- SetSentErrorMessage(true);
- return false;
- }
-
- pathid = atoi(path_number);
-
- if (!pathid)
- {
- PSendSysMessage("%s%s|r", "|cffff33ff", "No vallid path number provided.");
- return true;
- }
-
- guidlow = target->GetDBTableGUIDLow();
- QueryResult result = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = '%u'",guidlow);
-
- if (result)
- WorldDatabase.PExecute("UPDATE creature_addon SET path_id = '%u' WHERE guid = '%u'", pathid, guidlow);
- else
- WorldDatabase.PExecute("INSERT INTO creature_addon(guid,path_id) VALUES ('%u','%u')", guidlow, pathid);
-
- WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE, guidlow);
-
- target->LoadPath(pathid);
- target->SetDefaultMovementType(WAYPOINT_MOTION_TYPE);
- target->GetMotionMaster()->Initialize();
- target->MonsterSay("Path loaded.",0,0);
-
- return true;
-}
-
-bool ChatHandler::HandleReloadAllPaths(const char* args)
-{
- if (!*args)
- return false;
-
- uint32 id = atoi(args);
-
- if (!id)
- return false;
-
- PSendSysMessage("%s%s|r|cff00ffff%u|r", "|cff00ff00", "Loading Path: ", id);
- sWaypointMgr->UpdatePath(id);
- return true;
-}
-
-bool ChatHandler::HandleWpUnLoadPathCommand(const char * /*args*/)
-{
- uint32 guidlow = 0;
- Creature* target = getSelectedCreature();
-
- if (!target)
- {
- PSendSysMessage("%s%s|r", "|cff33ffff", "You must select target.");
- return true;
- }
-
- if (target->GetCreatureAddon())
- {
- if (target->GetCreatureAddon()->path_id != 0)
- {
- WorldDatabase.PExecute("DELETE FROM creature_addon WHERE guid = %u", target->GetGUIDLow());
- target->UpdateWaypointID(0);
- WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", IDLE_MOTION_TYPE, guidlow);
- target->LoadPath(0);
- target->SetDefaultMovementType(IDLE_MOTION_TYPE);
- target->GetMotionMaster()->MoveTargetedHome();
- target->GetMotionMaster()->Initialize();
- target->MonsterSay("Path unloaded.",0,0);
- return true;
- }
- PSendSysMessage("%s%s|r", "|cffff33ff", "Target have no loaded path.");
- }
- return true;
-}
-
-bool ChatHandler::HandleWpEventCommand(const char* args)
-{
- if (!*args)
- return false;
-
- char* show_str = strtok((char*)args, " ");
- std::string show = show_str;
-
- // Check
- if ((show != "add") && (show != "mod") && (show != "del") && (show != "listid")) return false;
-
- char* arg_id = strtok(NULL, " ");
- uint32 id = 0;
-
- if (show == "add")
- {
- if (arg_id)
- id = atoi(arg_id);
-
- if (id)
- {
- QueryResult result = WorldDatabase.PQuery("SELECT id FROM waypoint_scripts WHERE guid = %u", id);
-
- if (!result)
- {
- WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id);
- PSendSysMessage("%s%s%u|r", "|cff00ff00", "Wp Event: New waypoint event added: ", id);
- }
- else
- PSendSysMessage("|cff00ff00Wp Event: You have choosed an existing waypoint script guid: %u|r", id);
- }
- else
- {
- QueryResult result = WorldDatabase.Query("SELECT MAX(guid) FROM waypoint_scripts");
- id = result->Fetch()->GetUInt32();
- WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id+1);
- PSendSysMessage("%s%s%u|r", "|cff00ff00","Wp Event: New waypoint event added: |r|cff00ffff", id+1);
- }
-
- return true;
- }
-
- if (show == "listid")
- {
- if (!arg_id)
- {
- PSendSysMessage("%s%s|r", "|cff33ffff","Wp Event: You must provide waypoint script id.");
- return true;
- }
-
- id = atoi(arg_id);
-
- uint32 a2, a3, a4, a5, a6;
- float a8, a9, a10, a11;
- char const* a7;
-
- QueryResult result = WorldDatabase.PQuery("SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = %u", id);
-
- if (!result)
- {
- PSendSysMessage("%s%s%u|r", "|cff33ffff", "Wp Event: No waypoint scripts found on id: ", id);
- return true;
- }
-
- Field *fields;
-
- do
- {
- fields = result->Fetch();
- a2 = fields[0].GetUInt32();
- a3 = fields[1].GetUInt32();
- a4 = fields[2].GetUInt32();
- a5 = fields[3].GetUInt32();
- a6 = fields[4].GetUInt32();
- a7 = fields[5].GetCString();
- a8 = fields[6].GetFloat();
- a9 = fields[7].GetFloat();
- a10 = fields[8].GetFloat();
- a11 = fields[9].GetFloat();
-
- PSendSysMessage("|cffff33ffid:|r|cff00ffff %u|r|cff00ff00, guid: |r|cff00ffff%u|r|cff00ff00, delay: |r|cff00ffff%u|r|cff00ff00, command: |r|cff00ffff%u|r|cff00ff00, datalong: |r|cff00ffff%u|r|cff00ff00, datalong2: |r|cff00ffff%u|r|cff00ff00, datatext: |r|cff00ffff%s|r|cff00ff00, posx: |r|cff00ffff%f|r|cff00ff00, posy: |r|cff00ffff%f|r|cff00ff00, posz: |r|cff00ffff%f|r|cff00ff00, orientation: |r|cff00ffff%f|r", id, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
- }
- while (result->NextRow());
- }
-
- if (show == "del")
- {
- id = atoi(arg_id);
-
- QueryResult result = WorldDatabase.PQuery("SELECT guid FROM waypoint_scripts WHERE guid = %u", id);
-
- if (result)
- {
- WorldDatabase.PExecute("DELETE FROM waypoint_scripts WHERE guid = %u", id);
- PSendSysMessage("%s%s%u|r","|cff00ff00","Wp Event: Waypoint script removed: ", id);
- }
- else
- PSendSysMessage("|cffff33ffWp Event: ERROR: you have selected a non existing script: %u|r", id);
-
- return true;
- }
-
- if (show == "mod")
- {
- if (!arg_id)
- {
- SendSysMessage("|cffff33ffERROR: Waypoint script guid not present.|r");
- return true;
- }
-
- id = atoi(arg_id);
-
- if (!id)
- {
- SendSysMessage("|cffff33ffERROR: No vallid waypoint script id not present.|r");
- return true;
- }
-
- char* arg_2 = strtok(NULL," ");
-
- if (!arg_2)
- {
- SendSysMessage("|cffff33ffERROR: No argument present.|r");
- return true;
- }
-
- std::string arg_string = arg_2;
-
- if ((arg_string != "setid") && (arg_string != "delay") && (arg_string != "command")
- && (arg_string != "datalong") && (arg_string != "datalong2") && (arg_string != "dataint") && (arg_string != "posx")
- && (arg_string != "posy") && (arg_string != "posz") && (arg_string != "orientation"))
- {
- SendSysMessage("|cffff33ffERROR: No valid argument present.|r");
- return true;
- }
-
- char* arg_3;
- std::string arg_str_2 = arg_2;
- arg_3 = strtok(NULL," ");
-
- if (!arg_3)
- {
- SendSysMessage("|cffff33ffERROR: No additional argument present.|r");
- return true;
- }
-
- float coord;
-
- if (arg_str_2 == "setid")
- {
- uint32 newid = atoi(arg_3);
- PSendSysMessage("%s%s|r|cff00ffff%u|r|cff00ff00%s|r|cff00ffff%u|r","|cff00ff00","Wp Event: Wypoint scipt guid: ", newid," id changed: ", id);
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET id='%u' WHERE guid='%u'",
- newid, id); return true;
- }
- else
- {
- QueryResult result = WorldDatabase.PQuery("SELECT id FROM waypoint_scripts WHERE guid='%u'",id);
-
- if (!result)
- {
- SendSysMessage("|cffff33ffERROR: You have selected an non existing waypoint script guid.|r");
- return true;
- }
-
- if (arg_str_2 == "posx")
- {
- coord = (float)(atof(arg_3));
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET x='%f' WHERE guid='%u'",
- coord, id);
- PSendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff %u|r|cff00ff00 position_x updated.|r", id);
- return true;
- }
- else if (arg_str_2 == "posy")
- {
- coord = (float)(atof(arg_3));
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET y='%f' WHERE guid='%u'",
- coord, id);
- PSendSysMessage("|cff00ff00Waypoint script: %u position_y updated.|r", id);
- return true;
- }
- else if (arg_str_2 == "posz")
- {
- coord = (float)(atof(arg_3));
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET z='%f' WHERE guid='%u'",
- coord, id);
- PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 position_z updated.|r", id);
- return true;
- }
- else if (arg_str_2 == "orientation")
- {
- coord = (float)(atof(arg_3));
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET o='%f' WHERE guid='%u'",
- coord, id);
- PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 orientation updated.|r", id);
- return true;
- }
- else if (arg_str_2 == "dataint")
- {
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%u' WHERE guid='%u'",
- arg_2, atoi(arg_3), id);
- PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 dataint updated.|r", id);
- return true;
- }
- else
- {
- std::string arg_str_3 = arg_3;
- WorldDatabase.escape_string(arg_str_3);
- WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%s' WHERE guid='%u'",
- arg_2, arg_str_3.c_str(), id);
- }
- }
- PSendSysMessage("%s%s|r|cff00ffff%u:|r|cff00ff00 %s %s|r","|cff00ff00","Waypoint script:", id, arg_2,"updated.");
- }
- return true;
-}
-
-bool ChatHandler::HandleWpModifyCommand(const char* args)
-{
- sLog.outDebug("DEBUG: HandleWpModifyCommand");
-
- if (!*args)
- return false;
-
- // first arg: add del text emote spell waittime move
- char* show_str = strtok((char*)args, " ");
- if (!show_str)
- {
- return false;
- }
-
- std::string show = show_str;
- // Check
- // Remember: "show" must also be the name of a column!
- if ((show != "delay") && (show != "action") && (show != "action_chance")
- && (show != "move_flag") && (show != "del") && (show != "move") && (show != "wpadd")
-)
- {
- return false;
- }
-
- // Next arg is: <PATHID> <WPNUM> <ARGUMENT>
- char* arg_str = NULL;
-
- // Did user provide a GUID
- // or did the user select a creature?
- // -> variable lowguid is filled with the GUID of the NPC
- uint32 pathid = 0;
- uint32 point = 0;
- uint32 wpGuid = 0;
- Creature* target = getSelectedCreature();
-
- if (!target || target->GetEntry() != VISUAL_WAYPOINT)
- {
- SendSysMessage("|cffff33ffERROR: You must select a waypoint.|r");
- return false;
- }
-
- sLog.outDebug("DEBUG: HandleWpModifyCommand - User did select an NPC");
- // The visual waypoint
- Creature* wpCreature = NULL;
- wpGuid = target->GetGUIDLow();
-
- // Did the user select a visual spawnpoint?
- if (wpGuid)
- wpCreature = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
- // attempt check creature existence by DB data
- else
- {
- PSendSysMessage(LANG_WAYPOINT_CREATNOTFOUND, wpGuid);
- return false;
- }
- // User did select a visual waypoint?
- // Check the creature
- if (wpCreature->GetEntry() == VISUAL_WAYPOINT)
- {
- QueryResult result = WorldDatabase.PQuery("SELECT id, point FROM waypoint_data WHERE wpguid = %u", wpGuid);
-
- if (!result)
- {
- sLog.outDebug("DEBUG: HandleWpModifyCommand - No waypoint found - used 'wpguid'");
-
- PSendSysMessage(LANG_WAYPOINT_NOTFOUNDSEARCH, target->GetGUIDLow());
- // Select waypoint number from database
- // Since we compare float values, we have to deal with
- // some difficulties.
- // Here we search for all waypoints that only differ in one from 1 thousand
- // (0.001) - There is no other way to compare C++ floats with mySQL floats
- // See also: http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
- const char* maxDIFF = "0.01";
- result = WorldDatabase.PQuery("SELECT id, point FROM waypoint_data WHERE (abs(position_x - %f) <= %s) and (abs(position_y - %f) <= %s) and (abs(position_z - %f) <= %s)",
- wpCreature->GetPositionX(), maxDIFF, wpCreature->GetPositionY(), maxDIFF, wpCreature->GetPositionZ(), maxDIFF);
- if (!result)
- {
- PSendSysMessage(LANG_WAYPOINT_NOTFOUNDDBPROBLEM, wpGuid);
- return true;
- }
- }
- sLog.outDebug("DEBUG: HandleWpModifyCommand - After getting wpGuid");
-
- do
- {
- Field *fields = result->Fetch();
- pathid = fields[0].GetUInt32();
- point = fields[1].GetUInt32();
- }
- while (result->NextRow());
-
- // We have the waypoint number and the GUID of the "master npc"
- // Text is enclosed in "<>", all other arguments not
- arg_str = strtok((char*)NULL, " ");
- }
-
- sLog.outDebug("DEBUG: HandleWpModifyCommand - Parameters parsed - now execute the command");
-
- // Check for argument
- if (show != "del" && show != "move" && arg_str == NULL)
- {
- PSendSysMessage(LANG_WAYPOINT_ARGUMENTREQ, show_str);
- return false;
- }
-
- if (show == "del" && target)
- {
- PSendSysMessage("|cff00ff00DEBUG: wp modify del, PathID: |r|cff00ffff%u|r", pathid);
-
- // wpCreature
- Creature* wpCreature = NULL;
-
- if (wpGuid != 0)
- {
- wpCreature = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
- wpCreature->CombatStop();
- wpCreature->DeleteFromDB();
- wpCreature->AddObjectToRemoveList();
- }
-
- WorldDatabase.PExecute("DELETE FROM waypoint_data WHERE id='%u' AND point='%u'",
- pathid, point);
- WorldDatabase.PExecute("UPDATE waypoint_data SET point=point-1 WHERE id='%u' AND point>'%u'",
- pathid, point);
-
- PSendSysMessage(LANG_WAYPOINT_REMOVED);
- return true;
- } // del
-
- if (show == "move" && target)
- {
- PSendSysMessage("|cff00ff00DEBUG: wp move, PathID: |r|cff00ffff%u|r", pathid);
-
- Player *chr = m_session->GetPlayer();
- Map *map = chr->GetMap();
- {
- // wpCreature
- Creature* wpCreature = NULL;
- // What to do:
- // Move the visual spawnpoint
- // Respawn the owner of the waypoints
- if (wpGuid != 0)
- {
- wpCreature = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
- wpCreature->CombatStop();
- wpCreature->DeleteFromDB();
- wpCreature->AddObjectToRemoveList();
- // re-create
- Creature* wpCreature2 = new Creature;
- if (!wpCreature2->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), VISUAL_WAYPOINT, 0, 0, chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), chr->GetOrientation()))
- {
- PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
- delete wpCreature2;
- return false;
- }
-
- wpCreature2->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
- wpCreature2->LoadFromDB(wpCreature2->GetDBTableGUIDLow(), map);
- map->Add(wpCreature2);
- //sMapMgr.GetMap(npcCreature->GetMapId())->Add(wpCreature2);
- }
-
- WorldDatabase.PExecute("UPDATE waypoint_data SET position_x = '%f',position_y = '%f',position_z = '%f' where id = '%u' AND point='%u'",
- chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), pathid, point);
-
- PSendSysMessage(LANG_WAYPOINT_CHANGED);
- }
- return true;
- } // move
-
- const char *text = arg_str;
-
- if (text == 0)
- {
- // show_str check for present in list of correct values, no sql injection possible
- WorldDatabase.PExecute("UPDATE waypoint_data SET %s=NULL WHERE id='%u' AND point='%u'",
- show_str, pathid, point);
- }
- else
- {
- // show_str check for present in list of correct values, no sql injection possible
- std::string text2 = text;
- WorldDatabase.escape_string(text2);
- WorldDatabase.PExecute("UPDATE waypoint_data SET %s='%s' WHERE id='%u' AND point='%u'",
- show_str, text2.c_str(), pathid, point);
- }
-
- PSendSysMessage(LANG_WAYPOINT_CHANGED_NO, show_str);
- return true;
-}
-
-bool ChatHandler::HandleWpShowCommand(const char* args)
-{
- sLog.outDebug("DEBUG: HandleWpShowCommand");
-
- if (!*args)
- return false;
-
- // first arg: on, off, first, last
- char* show_str = strtok((char*)args, " ");
- if (!show_str)
- return false;
-
- // second arg: GUID (optional, if a creature is selected)
- char* guid_str = strtok((char*)NULL, " ");
- sLog.outDebug("DEBUG: HandleWpShowCommand: show_str: %s guid_str: %s", show_str, guid_str);
-
- uint32 pathid = 0;
- Creature* target = getSelectedCreature();
-
- // Did player provide a PathID?
-
- if (!guid_str)
- {
- sLog.outDebug("DEBUG: HandleWpShowCommand: !guid_str");
- // No PathID provided
- // -> Player must have selected a creature
-
- if (!target)
- {
- SendSysMessage(LANG_SELECT_CREATURE);
- SetSentErrorMessage(true);
- return false;
- }
-
- pathid = target->GetWaypointPath();
- }
- else
- {
- sLog.outDebug("|cff00ff00DEBUG: HandleWpShowCommand: PathID provided|r");
- // PathID provided
- // Warn if player also selected a creature
- // -> Creature selection is ignored <-
- if (target)
- SendSysMessage(LANG_WAYPOINT_CREATSELECTED);
-
- pathid = atoi((char*)guid_str);
- }
-
- sLog.outDebug("DEBUG: HandleWpShowCommand: danach");
-
- std::string show = show_str;
- uint32 Maxpoint;
-
- sLog.outDebug("DEBUG: HandleWpShowCommand: PathID: %u", pathid);
-
- //PSendSysMessage("wpshow - show: %s", show);
-
- // Show info for the selected waypoint
- if (show == "info")
- {
- // Check if the user did specify a visual waypoint
- if (target->GetEntry() != VISUAL_WAYPOINT)
- {
- PSendSysMessage(LANG_WAYPOINT_VP_SELECT);
- SetSentErrorMessage(true);
- return false;
- }
-
- QueryResult result = WorldDatabase.PQuery("SELECT id, point, delay, move_flag, action, action_chance FROM waypoint_data WHERE wpguid = %u", target->GetGUIDLow());
-
- if (!result)
- {
- SendSysMessage(LANG_WAYPOINT_NOTFOUNDDBPROBLEM);
- return true;
- }
-
- SendSysMessage("|cff00ffffDEBUG: wp show info:|r");
- do
- {
- Field *fields = result->Fetch();
- pathid = fields[0].GetUInt32();
- uint32 point = fields[1].GetUInt32();
- uint32 delay = fields[2].GetUInt32();
- uint32 flag = fields[3].GetUInt32();
- uint32 ev_id = fields[4].GetUInt32();
- uint32 ev_chance = fields[5].GetUInt32();
-
- PSendSysMessage("|cff00ff00Show info: for current point: |r|cff00ffff%u|r|cff00ff00, Path ID: |r|cff00ffff%u|r", point, pathid);
- PSendSysMessage("|cff00ff00Show info: delay: |r|cff00ffff%u|r", delay);
- PSendSysMessage("|cff00ff00Show info: Move flag: |r|cff00ffff%u|r", flag);
- PSendSysMessage("|cff00ff00Show info: Waypoint event: |r|cff00ffff%u|r", ev_id);
- PSendSysMessage("|cff00ff00Show info: Event chance: |r|cff00ffff%u|r", ev_chance);
- }
- while (result->NextRow());
-
- return true;
- }
-
- if (show == "on")
- {
- QueryResult result = WorldDatabase.PQuery("SELECT point, position_x,position_y,position_z FROM waypoint_data WHERE id = '%u'", pathid);
-
- if (!result)
- {
- SendSysMessage("|cffff33ffPath no found.|r");
- SetSentErrorMessage(true);
- return false;
- }
-
- PSendSysMessage("|cff00ff00DEBUG: wp on, PathID: |cff00ffff%u|r", pathid);
-
- // Delete all visuals for this NPC
- QueryResult result2 = WorldDatabase.PQuery("SELECT wpguid FROM waypoint_data WHERE id = '%u' and wpguid <> 0", pathid);
-
- if (result2)
- {
- bool hasError = false;
- do
- {
- Field *fields = result2->Fetch();
- uint32 wpguid = fields[0].GetUInt32();
- Creature* pCreature = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpguid,VISUAL_WAYPOINT,HIGHGUID_UNIT));
-
- if (!pCreature)
- {
- PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, wpguid);
- hasError = true;
- WorldDatabase.PExecute("DELETE FROM creature WHERE guid = '%u'", wpguid);
- }
- else
- {
- pCreature->CombatStop();
- pCreature->DeleteFromDB();
- pCreature->AddObjectToRemoveList();
- }
-
- }
- while (result2->NextRow());
-
- if (hasError)
- {
- PSendSysMessage(LANG_WAYPOINT_TOOFAR1);
- PSendSysMessage(LANG_WAYPOINT_TOOFAR2);
- PSendSysMessage(LANG_WAYPOINT_TOOFAR3);
- }
- }
-
- do
- {
- Field *fields = result->Fetch();
- uint32 point = fields[0].GetUInt32();
- float x = fields[1].GetFloat();
- float y = fields[2].GetFloat();
- float z = fields[3].GetFloat();
-
- uint32 id = VISUAL_WAYPOINT;
-
- Player *chr = m_session->GetPlayer();
- Map *map = chr->GetMap();
- float o = chr->GetOrientation();
-
- Creature* wpCreature = new Creature;
- if (!wpCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
- {
- PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
- delete wpCreature;
- return false;
- }
-
- sLog.outDebug("DEBUG: UPDATE waypoint_data SET wpguid = '%u' WHERE id = '%u' and point = '%u'", wpCreature->GetGUIDLow(), pathid, point);
- // set "wpguid" column to the visual waypoint
- WorldDatabase.PExecute("UPDATE waypoint_data SET wpguid = '%u' WHERE id = '%u' and point = '%u'", wpCreature->GetGUIDLow(), pathid, point);
-
- wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
- wpCreature->LoadFromDB(wpCreature->GetDBTableGUIDLow(),map);
- map->Add(wpCreature);
-
- if (target)
- {
- wpCreature->SetDisplayId(target->GetDisplayId());
- wpCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
- wpCreature->SetLevel(point > STRONG_MAX_LEVEL ? STRONG_MAX_LEVEL : point);
- }
- }
- while (result->NextRow());
-
- SendSysMessage("|cff00ff00Showing the current creature's path.|r");
- return true;
- }
-
- if (show == "first")
- {
- PSendSysMessage("|cff00ff00DEBUG: wp first, GUID: %u|r", pathid);
-
- QueryResult result = WorldDatabase.PQuery("SELECT position_x,position_y,position_z FROM waypoint_data WHERE point='1' AND id = '%u'",pathid);
- if (!result)
- {
- PSendSysMessage(LANG_WAYPOINT_NOTFOUND, pathid);
- SetSentErrorMessage(true);
- return false;
- }
-
- Field *fields = result->Fetch();
- float x = fields[0].GetFloat();
- float y = fields[1].GetFloat();
- float z = fields[2].GetFloat();
- uint32 id = VISUAL_WAYPOINT;
-
- Player *chr = m_session->GetPlayer();
- float o = chr->GetOrientation();
- Map *map = chr->GetMap();
-
- Creature* pCreature = new Creature;
- if (!pCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT),map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
- {
- PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
- delete pCreature;
- return false;
- }
-
- pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map);
- map->Add(pCreature);
-
- if (target)
- {
- pCreature->SetDisplayId(target->GetDisplayId());
- pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
- }
-
- return true;
- }
-
- if (show == "last")
- {
- PSendSysMessage("|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff%u|r", pathid);
-
- QueryResult result = WorldDatabase.PQuery("SELECT MAX(point) FROM waypoint_data WHERE id = '%u'",pathid);
- if (result)
- Maxpoint = (*result)[0].GetUInt32();
- else
- Maxpoint = 0;
-
- result = WorldDatabase.PQuery("SELECT position_x,position_y,position_z FROM waypoint_data WHERE point ='%u' AND id = '%u'",Maxpoint, pathid);
- if (!result)
- {
- PSendSysMessage(LANG_WAYPOINT_NOTFOUNDLAST, pathid);
- SetSentErrorMessage(true);
- return false;
- }
- Field *fields = result->Fetch();
- float x = fields[0].GetFloat();
- float y = fields[1].GetFloat();
- float z = fields[2].GetFloat();
- uint32 id = VISUAL_WAYPOINT;
-
- Player *chr = m_session->GetPlayer();
- float o = chr->GetOrientation();
- Map *map = chr->GetMap();
-
- Creature* pCreature = new Creature;
- if (!pCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
- {
- PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id);
- delete pCreature;
- return false;
- }
-
- pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map);
- map->Add(pCreature);
-
- if (target)
- {
- pCreature->SetDisplayId(target->GetDisplayId());
- pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
- }
-
- return true;
- }
-
- if (show == "off")
- {
- QueryResult result = WorldDatabase.PQuery("SELECT guid FROM creature WHERE id = '%u'", 1);
- if (!result)
- {
- SendSysMessage(LANG_WAYPOINT_VP_NOTFOUND);
- SetSentErrorMessage(true);
- return false;
- }
- bool hasError = false;
- do
- {
- Field *fields = result->Fetch();
- uint32 guid = fields[0].GetUInt32();
- Creature* pCreature = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(guid,VISUAL_WAYPOINT,HIGHGUID_UNIT));
- if (!pCreature)
- {
- PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, guid);
- hasError = true;
- WorldDatabase.PExecute("DELETE FROM creature WHERE guid = '%u'", guid);
- }
- else
- {
- pCreature->CombatStop();
- pCreature->DeleteFromDB();
- pCreature->AddObjectToRemoveList();
- }
- }
- while (result->NextRow());
- // set "wpguid" column to "empty" - no visual waypoint spawned
- WorldDatabase.PExecute("UPDATE waypoint_data SET wpguid = '0'");
- //WorldDatabase.PExecute("UPDATE creature_movement SET wpguid = '0' WHERE wpguid <> '0'");
-
- if (hasError)
- {
- PSendSysMessage(LANG_WAYPOINT_TOOFAR1);
- PSendSysMessage(LANG_WAYPOINT_TOOFAR2);
- PSendSysMessage(LANG_WAYPOINT_TOOFAR3);
- }
-
- SendSysMessage(LANG_WAYPOINT_VP_ALLREMOVED);
- return true;
- }
-
- PSendSysMessage("|cffff33ffDEBUG: wpshow - no valid command found|r");
- return true;
-}
-
-//////////// WAYPOINT COMMANDS //
-
//rename characters
bool ChatHandler::HandleCharacterRenameCommand(const char* args)
{
@@ -2000,64 +600,6 @@ bool ChatHandler::HandleCharacterReputationCommand(const char* args)
return true;
}
-bool ChatHandler::HandleHonorAddCommand(const char* args)
-{
- if (!*args)
- return false;
-
- Player *target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_PLAYER_NOT_FOUND);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- uint32 amount = (uint32)atoi(args);
- target->RewardHonor(NULL, 1, amount);
- return true;
-}
-
-bool ChatHandler::HandleHonorAddKillCommand(const char* /*args*/)
-{
- Unit *target = getSelectedUnit();
- if (!target)
- {
- SendSysMessage(LANG_PLAYER_NOT_FOUND);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (target->GetTypeId() == TYPEID_PLAYER && HasLowerSecurity((Player*)target, 0))
- return false;
-
- m_session->GetPlayer()->RewardHonor(target, 1);
- return true;
-}
-
-bool ChatHandler::HandleHonorUpdateCommand(const char* /*args*/)
-{
- Player *target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_PLAYER_NOT_FOUND);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- target->UpdateHonorFields();
- return true;
-}
-
bool ChatHandler::HandleLookupEventCommand(const char* args)
{
if (!*args)
@@ -2463,73 +1005,6 @@ bool ChatHandler::HandlePetTpCommand(const char *args)
return true;
}
-bool ChatHandler::HandleActivateObjectCommand(const char *args)
-{
- if (!*args)
- return false;
-
- char* cId = extractKeyFromLink((char*)args,"Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* obj = NULL;
-
- // by DB guid
- if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
- obj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
-
- if (!obj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- // Activate
- obj->SetLootState(GO_READY);
- obj->UseDoorOrButton(10000);
-
- PSendSysMessage("Object activated!");
-
- return true;
-}
-
-// add go, temp only
-bool ChatHandler::HandleTempGameObjectCommand(const char* args)
-{
- if (!*args)
- return false;
- char* charID = strtok((char*)args, " ");
- if (!charID)
- return false;
-
- Player *chr = m_session->GetPlayer();
-
- char* spawntime = strtok(NULL, " ");
- uint32 spawntm = 300;
-
- if (spawntime)
- spawntm = atoi((char*)spawntime);
-
- float x = chr->GetPositionX();
- float y = chr->GetPositionY();
- float z = chr->GetPositionZ();
- float ang = chr->GetOrientation();
-
- float rot2 = sin(ang/2);
- float rot3 = cos(ang/2);
-
- uint32 id = atoi(charID);
-
- chr->SummonGameObject(id,x,y,z,ang,0,0,rot2,rot3,spawntm);
-
- return true;
-}
-
bool ChatHandler::HandleLookupTitleCommand(const char* args)
{
if (!*args)
@@ -2613,149 +1088,6 @@ bool ChatHandler::HandleLookupTitleCommand(const char* args)
return true;
}
-bool ChatHandler::HandleTitlesAddCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
- char* id_p = extractKeyFromLink((char*)args,"Htitle");
- if (!id_p)
- return false;
-
- int32 id = atoi(id_p);
- if (id <= 0)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- Player * target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
- if (!titleInfo)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- std::string tNameLink = GetNameLink(target);
-
- char const* targetName = target->GetName();
- char titleNameStr[80];
- snprintf(titleNameStr,80,titleInfo->name[GetSessionDbcLocale()],targetName);
-
- target->SetTitle(titleInfo);
- PSendSysMessage(LANG_TITLE_ADD_RES, id, titleNameStr, tNameLink.c_str());
-
- return true;
-}
-
-bool ChatHandler::HandleTitlesRemoveCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
- char* id_p = extractKeyFromLink((char*)args,"Htitle");
- if (!id_p)
- return false;
-
- int32 id = atoi(id_p);
- if (id <= 0)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- Player * target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
- if (!titleInfo)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- target->SetTitle(titleInfo,true);
-
- std::string tNameLink = GetNameLink(target);
-
- char const* targetName = target->GetName();
- char titleNameStr[80];
- snprintf(titleNameStr,80,titleInfo->name[GetSessionDbcLocale()],targetName);
-
- PSendSysMessage(LANG_TITLE_REMOVE_RES, id, titleNameStr, tNameLink.c_str());
-
- if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE)))
- {
- target->SetUInt32Value(PLAYER_CHOSEN_TITLE,0);
- PSendSysMessage(LANG_CURRENT_TITLE_RESET, tNameLink.c_str());
- }
-
- return true;
-}
-
-//Edit Player KnownTitles
-bool ChatHandler::HandleTitlesSetMaskCommand(const char* args)
-{
- if (!*args)
- return false;
-
- uint64 titles = 0;
-
- sscanf((char*)args, UI64FMTD, &titles);
-
- Player *target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- uint64 titles2 = titles;
-
- for (uint32 i = 1; i < sCharTitlesStore.GetNumRows(); ++i)
- if (CharTitlesEntry const* tEntry = sCharTitlesStore.LookupEntry(i))
- titles2 &= ~(uint64(1) << tEntry->bit_index);
-
- titles &= ~titles2; // remove not existed titles
-
- target->SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES, titles);
- SendSysMessage(LANG_DONE);
-
- if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE)))
- {
- target->SetUInt32Value(PLAYER_CHOSEN_TITLE,0);
- PSendSysMessage(LANG_CURRENT_TITLE_RESET,GetNameLink(target).c_str());
- }
-
- return true;
-}
-
bool ChatHandler::HandleCharacterTitlesCommand(const char* args)
{
if (!*args)
@@ -2795,48 +1127,3 @@ bool ChatHandler::HandleCharacterTitlesCommand(const char* args)
}
return true;
}
-
-bool ChatHandler::HandleTitlesCurrentCommand(const char* args)
-{
- // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
- char* id_p = extractKeyFromLink((char*)args,"Htitle");
- if (!id_p)
- return false;
-
- int32 id = atoi(id_p);
- if (id <= 0)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- Player * target = getSelectedPlayer();
- if (!target)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check online security
- if (HasLowerSecurity(target, 0))
- return false;
-
- CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
- if (!titleInfo)
- {
- PSendSysMessage(LANG_INVALID_TITLE_ID, id);
- SetSentErrorMessage(true);
- return false;
- }
-
- std::string tNameLink = GetNameLink(target);
-
- target->SetTitle(titleInfo); // to be sure that title now known
- target->SetUInt32Value(PLAYER_CHOSEN_TITLE,titleInfo->bit_index);
-
- PSendSysMessage(LANG_TITLE_CURRENT_RES, id, titleInfo->name[GetSessionDbcLocale()], tNameLink.c_str());
-
- return true;
-}
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp
index 521d8e287cd..bfb6c79768c 100755
--- a/src/server/game/Chat/Commands/Level3.cpp
+++ b/src/server/game/Chat/Commands/Level3.cpp
@@ -61,1131 +61,6 @@
#include "CreatureTextMgr.h"
#include "SmartAI.h"
-//reload commands
-bool ChatHandler::HandleReloadAllCommand(const char*)
-{
- HandleReloadSkillFishingBaseLevelCommand("");
-
- HandleReloadAllAchievementCommand("");
- HandleReloadAllAreaCommand("");
- HandleReloadAllEventAICommand("");
- HandleReloadAllLootCommand("");
- HandleReloadAllNpcCommand("");
- HandleReloadAllQuestCommand("");
- HandleReloadAllSpellCommand("");
- HandleReloadAllItemCommand("");
- HandleReloadAllGossipsCommand("");
- HandleReloadAllLocalesCommand("");
-
- HandleReloadAccessRequirementCommand("");
- HandleReloadMailLevelRewardCommand("");
- HandleReloadCommandCommand("");
- HandleReloadReservedNameCommand("");
- HandleReloadTrinityStringCommand("");
- HandleReloadGameTeleCommand("");
-
- HandleReloadAutobroadcastCommand("");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllAchievementCommand(const char*)
-{
- HandleReloadAchievementCriteriaDataCommand("");
- HandleReloadAchievementRewardCommand("");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllAreaCommand(const char*)
-{
- //HandleReloadQuestAreaTriggersCommand(""); -- reloaded in HandleReloadAllQuestCommand
- HandleReloadAreaTriggerTeleportCommand("");
- HandleReloadAreaTriggerTavernCommand("");
- HandleReloadGameGraveyardZoneCommand("");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllLootCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables...");
- LoadLootTables();
- SendGlobalGMSysMessage("DB tables `*_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadAllNpcCommand(const char* args)
-{
- if(*args != 'a') // will be reloaded from all_gossips
- HandleReloadNpcGossipCommand("a");
- HandleReloadNpcTrainerCommand("a");
- HandleReloadNpcVendorCommand("a");
- HandleReloadPointsOfInterestCommand("a");
- HandleReloadSpellClickSpellsCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllQuestCommand(const char* /*args*/)
-{
- HandleReloadQuestAreaTriggersCommand("a");
- HandleReloadQuestPOICommand("a");
- HandleReloadQuestTemplateCommand("a");
-
- sLog.outString("Re-Loading Quests Relations...");
- sObjectMgr.LoadQuestRelations();
- SendGlobalGMSysMessage("DB tables `*_questrelation` and `*_involvedrelation` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllScriptsCommand(const char*)
-{
- if (sWorld.IsScriptScheduled())
- {
- PSendSysMessage("DB scripts used currently, please attempt reload later.");
- SetSentErrorMessage(true);
- return false;
- }
-
- sLog.outString("Re-Loading Scripts...");
- HandleReloadGameObjectScriptsCommand("a");
- HandleReloadGossipScriptsCommand("a");
- HandleReloadEventScriptsCommand("a");
- HandleReloadQuestEndScriptsCommand("a");
- HandleReloadQuestStartScriptsCommand("a");
- HandleReloadSpellScriptsCommand("a");
- SendGlobalGMSysMessage("DB tables `*_scripts` reloaded.");
- HandleReloadDbScriptStringCommand("a");
- HandleReloadWpScriptsCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllEventAICommand(const char*)
-{
- HandleReloadEventAITextsCommand("a");
- HandleReloadEventAISummonsCommand("a");
- HandleReloadEventAIScriptsCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllSpellCommand(const char*)
-{
- HandleReloadSkillDiscoveryTemplateCommand("a");
- HandleReloadSkillExtraItemTemplateCommand("a");
- HandleReloadSpellRequiredCommand("a");
- HandleReloadSpellAreaCommand("a");
- HandleReloadSpellGroupsCommand("a");
- HandleReloadSpellLearnSpellCommand("a");
- HandleReloadSpellLinkedSpellCommand("a");
- HandleReloadSpellProcEventCommand("a");
- HandleReloadSpellBonusesCommand("a");
- HandleReloadSpellTargetPositionCommand("a");
- HandleReloadSpellThreatsCommand("a");
- HandleReloadSpellGroupStackRulesCommand("a");
- HandleReloadSpellPetAurasCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllGossipsCommand(const char* args)
-{
- HandleReloadGossipMenuCommand("a");
- HandleReloadGossipMenuOptionCommand("a");
- if(*args != 'a') // already reload from all_scripts
- HandleReloadGossipScriptsCommand("a");
- HandleReloadNpcGossipCommand("a");
- HandleReloadPointsOfInterestCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllItemCommand(const char*)
-{
- HandleReloadPageTextsCommand("a");
- HandleReloadItemEnchantementsCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadAllLocalesCommand(const char* /*args*/)
-{
- HandleReloadLocalesAchievementRewardCommand("a");
- HandleReloadLocalesCreatureCommand("a");
- HandleReloadLocalesGameobjectCommand("a");
- HandleReloadLocalesGossipMenuOptionCommand("a");
- HandleReloadLocalesItemCommand("a");
- HandleReloadLocalesNpcTextCommand("a");
- HandleReloadLocalesPageTextCommand("a");
- HandleReloadLocalesPointsOfInterestCommand("a");
- HandleReloadLocalesQuestCommand("a");
- return true;
-}
-
-bool ChatHandler::HandleReloadConfigCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading config settings...");
- sWorld.LoadConfigSettings(true);
- sMapMgr.InitializeVisibilityDistanceInfo();
- SendGlobalGMSysMessage("World config settings reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAccessRequirementCommand(const char*)
-{
- sLog.outString("Re-Loading Access Requirement definitions...");
- sObjectMgr.LoadAccessRequirements();
- SendGlobalGMSysMessage("DB table `access_requirement` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAchievementCriteriaDataCommand(const char*)
-{
- sLog.outString("Re-Loading Additional Achievement Criteria Data...");
- sAchievementMgr.LoadAchievementCriteriaData();
- SendGlobalGMSysMessage("DB table `achievement_criteria_data` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAchievementRewardCommand(const char*)
-{
- sLog.outString("Re-Loading Achievement Reward Data...");
- sAchievementMgr.LoadRewards();
- SendGlobalGMSysMessage("DB table `achievement_reward` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAreaTriggerTavernCommand(const char*)
-{
- sLog.outString("Re-Loading Tavern Area Triggers...");
- sObjectMgr.LoadTavernAreaTriggers();
- SendGlobalGMSysMessage("DB table `areatrigger_tavern` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAreaTriggerTeleportCommand(const char*)
-{
- sLog.outString("Re-Loading AreaTrigger teleport definitions...");
- sObjectMgr.LoadAreaTriggerTeleports();
- SendGlobalGMSysMessage("DB table `areatrigger_teleport` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAutobroadcastCommand(const char*)
-{
- sLog.outString("Re-Loading Autobroadcast...");
- sWorld.LoadAutobroadcasts();
- SendGlobalGMSysMessage("DB table `autobroadcast` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCommandCommand(const char*)
-{
- load_command_table = true;
- SendGlobalGMSysMessage("DB table `command` will be reloaded at next chat command use.");
- return true;
-}
-
-bool ChatHandler::HandleReloadOnKillReputationCommand(const char*)
-{
- sLog.outString("Re-Loading creature award reputation definitions...");
- sObjectMgr.LoadReputationOnKill();
- SendGlobalGMSysMessage("DB table `creature_onkill_reputation` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCreatureTemplateCommand(const char* args)
-{
- if (!*args)
- return false;
-
- uint32 entry = (uint32) atoi((char*)args);
- QueryResult result = WorldDatabase.PQuery("SELECT difficulty_entry_1,difficulty_entry_2,difficulty_entry_3,KillCredit1,KillCredit2,modelid1,modelid2,modelid3,modelid4,name,subname,IconName,gossip_menu_id,minlevel,maxlevel,exp,faction_A,faction_H,npcflag,speed_walk,speed_run,scale,rank,mindmg,maxdmg,dmgschool,attackpower,dmg_multiplier,baseattacktime,rangeattacktime,unit_class,unit_flags,dynamicflags,family,trainer_type,trainer_spell,trainer_class,trainer_race,minrangedmg,maxrangedmg,rangedattackpower,type,type_flags,lootid,pickpocketloot,skinloot,resistance1,resistance2,resistance3,resistance4,resistance5,resistance6,spell1,spell2,spell3,spell4,spell5,spell6,spell7,spell8,PetSpellDataId,VehicleId,mingold,maxgold,AIName,MovementType,InhabitType,Health_mod,Mana_mod,Armor_mod,RacialLeader,questItem1,questItem2,questItem3,questItem4,questItem5,questItem6,movementId,RegenHealth,equipment_id,mechanic_immune_mask,flags_extra,ScriptName FROM creature_template WHERE entry = %u", entry);
- if (!result)
- {
- PSendSysMessage(LANG_COMMAND_CREATURETEMPLATE_NOTFOUND, entry);
- SetSentErrorMessage(true);
- return false;
- }
-
- CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo>(entry);
- if (!cInfo)
- {
- PSendSysMessage(LANG_COMMAND_CREATURESTORAGE_NOTFOUND, entry);
- SetSentErrorMessage(true);
- return false;
- }
-
- sLog.outString("Reloading creature template entry %u", entry);
-
- Field *fields = result->Fetch();
-
- const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[0] = fields[0].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[1] = fields[1].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[2] = fields[2].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->KillCredit[0] = fields[3].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->KillCredit[1] = fields[4].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->Modelid1 = fields[5].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->Modelid2 = fields[6].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->Modelid3 = fields[7].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->Modelid4 = fields[8].GetUInt32();
- size_t len = 0;
- if (const char* temp = fields[9].GetCString())
- {
- delete[] cInfo->Name;
- len = strlen(temp)+1;
- const_cast<CreatureInfo*>(cInfo)->Name = new char[len];
- strncpy(cInfo->Name, temp, len);
- }
- if (const char* temp = fields[10].GetCString())
- {
- delete[] cInfo->SubName;
- len = strlen(temp)+1;
- const_cast<CreatureInfo*>(cInfo)->SubName = new char[len];
- strncpy(cInfo->SubName, temp, len);
- }
- if (const char* temp = fields[11].GetCString())
- {
- delete[] cInfo->IconName;
- len = strlen(temp)+1;
- const_cast<CreatureInfo*>(cInfo)->IconName = new char[len];
- strncpy(cInfo->IconName, temp, len);
- }
- const_cast<CreatureInfo*>(cInfo)->GossipMenuId = fields[12].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->minlevel = fields[13].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->maxlevel = fields[14].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->expansion = fields[15].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->faction_A = fields[16].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->faction_H = fields[17].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->npcflag = fields[18].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->speed_walk = fields[19].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->speed_run = fields[20].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->scale = fields[21].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->rank = fields[22].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->mindmg = fields[23].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->maxdmg = fields[24].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->dmgschool = fields[25].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->attackpower = fields[26].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->dmg_multiplier = fields[27].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->baseattacktime = fields[28].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->rangeattacktime = fields[29].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->unit_class = fields[30].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->unit_flags = fields[31].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->dynamicflags = fields[32].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->family = fields[33].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->trainer_type = fields[34].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->trainer_spell = fields[35].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->trainer_class = fields[36].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->trainer_race = fields[37].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->minrangedmg = fields[38].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->maxrangedmg = fields[39].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->rangedattackpower = fields[40].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->type = fields[41].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->type_flags = fields[42].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->lootid = fields[43].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->pickpocketLootId = fields[44].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->SkinLootId = fields[45].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance1 = fields[46].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance2 = fields[47].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance3 = fields[48].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance4 = fields[49].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance5 = fields[50].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->resistance6 = fields[51].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[0] = fields[52].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[1] = fields[53].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[2] = fields[54].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[3] = fields[55].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[4] = fields[56].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[5] = fields[57].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[6] = fields[58].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->spells[7] = fields[59].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->PetSpellDataId = fields[60].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->VehicleId = fields[61].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->mingold = fields[62].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->maxgold = fields[63].GetUInt32();
- if (const char* temp = fields[64].GetCString())
- {
- delete[] cInfo->AIName;
- len = strlen(temp)+1;
- const_cast<CreatureInfo*>(cInfo)->AIName = new char[len];
- strncpy(const_cast<char*>(cInfo->AIName), temp, len);
- }
- const_cast<CreatureInfo*>(cInfo)->MovementType = fields[65].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->InhabitType = fields[66].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->ModHealth = fields[67].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->ModMana = fields[68].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->ModArmor = fields[69].GetFloat();
- const_cast<CreatureInfo*>(cInfo)->RacialLeader = fields[70].GetBool();
- const_cast<CreatureInfo*>(cInfo)->questItems[0] = fields[71].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->questItems[1] = fields[72].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->questItems[2] = fields[73].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->questItems[3] = fields[74].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->questItems[4] = fields[75].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->questItems[5] = fields[76].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->movementId = fields[77].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->RegenHealth = fields[78].GetBool();
- const_cast<CreatureInfo*>(cInfo)->equipmentId = fields[79].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->MechanicImmuneMask = fields[80].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->flags_extra = fields[81].GetUInt32();
- const_cast<CreatureInfo*>(cInfo)->ScriptID = sObjectMgr.GetScriptId(fields[82].GetCString());
-
- sObjectMgr.CheckCreatureTemplate(cInfo);
-
- SendGlobalGMSysMessage("Creature template reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCreatureQuestRelationsCommand(const char*)
-{
- sLog.outString("Loading Quests Relations... (`creature_questrelation`)");
- sObjectMgr.LoadCreatureQuestRelations();
- SendGlobalGMSysMessage("DB table `creature_questrelation` (creature quest givers) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCreatureLinkedRespawnCommand(const char * /*args*/)
-{
- sLog.outString("Loading Linked Respawns... (`creature_linked_respawn`)");
- sObjectMgr.LoadCreatureLinkedRespawn();
- SendGlobalGMSysMessage("DB table `creature_linked_respawn` (creature linked respawns) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCreatureQuestInvRelationsCommand(const char*)
-{
- sLog.outString("Loading Quests Relations... (`creature_involvedrelation`)");
- sObjectMgr.LoadCreatureInvolvedRelations();
- SendGlobalGMSysMessage("DB table `creature_involvedrelation` (creature quest takers) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadGossipMenuCommand(const char*)
-{
- sLog.outString("Re-Loading `gossip_menu` Table!");
- sObjectMgr.LoadGossipMenu();
- SendGlobalGMSysMessage("DB table `gossip_menu` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadGossipMenuOptionCommand(const char*)
-{
- sLog.outString("Re-Loading `gossip_menu_option` Table!");
- sObjectMgr.LoadGossipMenuItems();
- SendGlobalGMSysMessage("DB table `gossip_menu_option` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadGOQuestRelationsCommand(const char*)
-{
- sLog.outString("Loading Quests Relations... (`gameobject_questrelation`)");
- sObjectMgr.LoadGameobjectQuestRelations();
- SendGlobalGMSysMessage("DB table `gameobject_questrelation` (gameobject quest givers) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadGOQuestInvRelationsCommand(const char*)
-{
- sLog.outString("Loading Quests Relations... (`gameobject_involvedrelation`)");
- sObjectMgr.LoadGameobjectInvolvedRelations();
- SendGlobalGMSysMessage("DB table `gameobject_involvedrelation` (gameobject quest takers) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadQuestAreaTriggersCommand(const char*)
-{
- sLog.outString("Re-Loading Quest Area Triggers...");
- sObjectMgr.LoadQuestAreaTriggers();
- SendGlobalGMSysMessage("DB table `areatrigger_involvedrelation` (quest area triggers) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadQuestTemplateCommand(const char*)
-{
- sLog.outString("Re-Loading Quest Templates...");
- sObjectMgr.LoadQuests();
- SendGlobalGMSysMessage("DB table `quest_template` (quest definitions) reloaded.");
-
- /// dependent also from `gameobject` but this table not reloaded anyway
- sLog.outString("Re-Loading GameObjects for quests...");
- sObjectMgr.LoadGameObjectForQuests();
- SendGlobalGMSysMessage("Data GameObjects for quests reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesCreatureCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`creature_loot_template`)");
- LoadLootTemplates_Creature();
- LootTemplates_Creature.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `creature_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesDisenchantCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`disenchant_loot_template`)");
- LoadLootTemplates_Disenchant();
- LootTemplates_Disenchant.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `disenchant_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesFishingCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`fishing_loot_template`)");
- LoadLootTemplates_Fishing();
- LootTemplates_Fishing.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `fishing_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesGameobjectCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`gameobject_loot_template`)");
- LoadLootTemplates_Gameobject();
- LootTemplates_Gameobject.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `gameobject_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesItemCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`item_loot_template`)");
- LoadLootTemplates_Item();
- LootTemplates_Item.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `item_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesMillingCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`milling_loot_template`)");
- LoadLootTemplates_Milling();
- LootTemplates_Milling.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `milling_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesPickpocketingCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`pickpocketing_loot_template`)");
- LoadLootTemplates_Pickpocketing();
- LootTemplates_Pickpocketing.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `pickpocketing_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesProspectingCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`prospecting_loot_template`)");
- LoadLootTemplates_Prospecting();
- LootTemplates_Prospecting.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `prospecting_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesMailCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`mail_loot_template`)");
- LoadLootTemplates_Mail();
- LootTemplates_Mail.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `mail_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesReferenceCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`reference_loot_template`)");
- LoadLootTemplates_Reference();
- SendGlobalGMSysMessage("DB table `reference_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesSkinningCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`skinning_loot_template`)");
- LoadLootTemplates_Skinning();
- LootTemplates_Skinning.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `skinning_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadLootTemplatesSpellCommand(const char*)
-{
- sLog.outString("Re-Loading Loot Tables... (`spell_loot_template`)");
- LoadLootTemplates_Spell();
- LootTemplates_Spell.CheckLootRefs();
- SendGlobalGMSysMessage("DB table `spell_loot_template` reloaded.");
- sConditionMgr.LoadConditions(true);
- return true;
-}
-
-bool ChatHandler::HandleReloadTrinityStringCommand(const char*)
-{
- sLog.outString("Re-Loading trinity_string Table!");
- sObjectMgr.LoadTrinityStrings();
- SendGlobalGMSysMessage("DB table `trinity_string` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadNpcGossipCommand(const char*)
-{
- sLog.outString("Re-Loading `npc_gossip` Table!");
- sObjectMgr.LoadNpcTextId();
- SendGlobalGMSysMessage("DB table `npc_gossip` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadNpcTrainerCommand(const char*)
-{
- sLog.outString("Re-Loading `npc_trainer` Table!");
- sObjectMgr.LoadTrainerSpell();
- SendGlobalGMSysMessage("DB table `npc_trainer` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadNpcVendorCommand(const char*)
-{
- sLog.outString("Re-Loading `npc_vendor` Table!");
- sObjectMgr.LoadVendors();
- SendGlobalGMSysMessage("DB table `npc_vendor` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadPointsOfInterestCommand(const char*)
-{
- sLog.outString("Re-Loading `points_of_interest` Table!");
- sObjectMgr.LoadPointsOfInterest();
- SendGlobalGMSysMessage("DB table `points_of_interest` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadQuestPOICommand(const char*)
-{
- sLog.outString( "Re-Loading Quest POI ..." );
- sObjectMgr.LoadQuestPOI();
- SendGlobalGMSysMessage("DB Table `quest_poi` and `quest_poi_points` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellClickSpellsCommand(const char*)
-{
- sLog.outString("Re-Loading `npc_spellclick_spells` Table!");
- sObjectMgr.LoadNPCSpellClickSpells();
- SendGlobalGMSysMessage("DB table `npc_spellclick_spells` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadReservedNameCommand(const char*)
-{
- sLog.outString("Loading ReservedNames... (`reserved_name`)");
- sObjectMgr.LoadReservedPlayersNames();
- SendGlobalGMSysMessage("DB table `reserved_name` (player reserved names) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadReputationRewardRateCommand(const char*)
-{
- sLog.outString( "Re-Loading `reputation_reward_rate` Table!" );
- sObjectMgr.LoadReputationRewardRate();
- SendGlobalSysMessage("DB table `reputation_reward_rate` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadReputationSpilloverTemplateCommand(const char*)
-{
- sLog.outString( "Re-Loading `reputation_spillover_template` Table!" );
- sObjectMgr.LoadReputationSpilloverTemplate();
- SendGlobalSysMessage("DB table `reputation_spillover_template` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSkillDiscoveryTemplateCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading Skill Discovery Table...");
- LoadSkillDiscoveryTable();
- SendGlobalGMSysMessage("DB table `skill_discovery_template` (recipes discovered at crafting) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSkillExtraItemTemplateCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading Skill Extra Item Table...");
- LoadSkillExtraItemTable();
- SendGlobalGMSysMessage("DB table `skill_extra_item_template` (extra item creation when crafting) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSkillFishingBaseLevelCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading Skill Fishing base level requirements...");
- sObjectMgr.LoadFishingBaseSkillLevel();
- SendGlobalGMSysMessage("DB table `skill_fishing_base_level` (fishing base level for zone/subzone) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellAreaCommand(const char*)
-{
- sLog.outString("Re-Loading SpellArea Data...");
- sSpellMgr.LoadSpellAreas();
- SendGlobalGMSysMessage("DB table `spell_area` (spell dependences from area/quest/auras state) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellRequiredCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Required Data... ");
- sSpellMgr.LoadSpellRequired();
- SendGlobalGMSysMessage("DB table `spell_required` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellGroupsCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Groups...");
- sSpellMgr.LoadSpellGroups();
- SendGlobalGMSysMessage("DB table `spell_group` (spell groups) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellLearnSpellCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Learn Spells...");
- sSpellMgr.LoadSpellLearnSpells();
- SendGlobalGMSysMessage("DB table `spell_learn_spell` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellLinkedSpellCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Linked Spells...");
- sSpellMgr.LoadSpellLinked();
- SendGlobalGMSysMessage("DB table `spell_linked_spell` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellProcEventCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Proc Event conditions...");
- sSpellMgr.LoadSpellProcEvents();
- SendGlobalGMSysMessage("DB table `spell_proc_event` (spell proc trigger requirements) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellBonusesCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Bonus Data...");
- sSpellMgr.LoadSpellBonusess();
- SendGlobalGMSysMessage("DB table `spell_bonus_data` (spell damage/healing coefficients) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellTargetPositionCommand(const char*)
-{
- sLog.outString("Re-Loading Spell target coordinates...");
- sSpellMgr.LoadSpellTargetPositions();
- SendGlobalGMSysMessage("DB table `spell_target_position` (destination coordinates for spell targets) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellThreatsCommand(const char*)
-{
- sLog.outString("Re-Loading Aggro Spells Definitions...");
- sSpellMgr.LoadSpellThreats();
- SendGlobalGMSysMessage("DB table `spell_threat` (spell aggro definitions) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellGroupStackRulesCommand(const char*)
-{
- sLog.outString("Re-Loading Spell Group Stack Rules...");
- sSpellMgr.LoadSpellGroupStackRules();
- SendGlobalGMSysMessage("DB table `spell_group_stack_rules` (spell stacking definitions) reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellPetAurasCommand(const char*)
-{
- sLog.outString("Re-Loading Spell pet auras...");
- sSpellMgr.LoadSpellPetAuras();
- SendGlobalGMSysMessage("DB table `spell_pet_auras` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadPageTextsCommand(const char*)
-{
- sLog.outString("Re-Loading Page Texts...");
- sObjectMgr.LoadPageTexts();
- SendGlobalGMSysMessage("DB table `page_texts` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadItemEnchantementsCommand(const char*)
-{
- sLog.outString("Re-Loading Item Random Enchantments Table...");
- LoadRandomEnchantmentsTable();
- SendGlobalGMSysMessage("DB table `item_enchantment_template` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadItemSetNamesCommand(const char*)
-{
- sLog.outString("Re-Loading Item set names...");
- LoadRandomEnchantmentsTable();
- SendGlobalGMSysMessage("DB table `item_set_names` reloaded.");
- 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`...");
-
- sObjectMgr.LoadGossipScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `gossip_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadGameObjectScriptsCommand(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 `gameobject_scripts`...");
-
- sObjectMgr.LoadGameObjectScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `gameobject_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadEventScriptsCommand(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 `event_scripts`...");
-
- sObjectMgr.LoadEventScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `event_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadWpScriptsCommand(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 `waypoint_scripts`...");
-
- sObjectMgr.LoadWaypointScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `waypoint_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadEventAITextsCommand(const char* /*args*/)
-{
-
- sLog.outString("Re-Loading Texts from `creature_ai_texts`...");
- sEventAIMgr.LoadCreatureEventAI_Texts();
- SendGlobalGMSysMessage("DB table `creature_ai_texts` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadEventAISummonsCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading Summons from `creature_ai_summons`...");
- sEventAIMgr.LoadCreatureEventAI_Summons();
- SendGlobalGMSysMessage("DB table `creature_ai_summons` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadEventAIScriptsCommand(const char* /*args*/)
-{
- sLog.outString("Re-Loading Scripts from `creature_ai_scripts`...");
- sEventAIMgr.LoadCreatureEventAI_Scripts();
- SendGlobalGMSysMessage("DB table `creature_ai_scripts` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadQuestEndScriptsCommand(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 `quest_end_scripts`...");
-
- sObjectMgr.LoadQuestEndScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `quest_end_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadQuestStartScriptsCommand(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 `quest_start_scripts`...");
-
- sObjectMgr.LoadQuestStartScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `quest_start_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadSpellScriptsCommand(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 `spell_scripts`...");
-
- sObjectMgr.LoadSpellScripts();
-
- if (*arg != 'a')
- SendGlobalGMSysMessage("DB table `spell_scripts` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadDbScriptStringCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Script strings from `db_script_string`...");
- sObjectMgr.LoadDbScriptStrings();
- SendGlobalGMSysMessage("DB table `db_script_string` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadGameGraveyardZoneCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Graveyard-zone links...");
-
- sObjectMgr.LoadGraveyardZones();
-
- SendGlobalGMSysMessage("DB table `game_graveyard_zone` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadGameTeleCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Game Tele coordinates...");
-
- sObjectMgr.LoadGameTele();
-
- SendGlobalGMSysMessage("DB table `game_tele` reloaded.");
-
- return true;
-}
-
-bool ChatHandler::HandleReloadDisablesCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading disables table...");
- sDisableMgr.LoadDisables();
- sLog.outString("Checking quest disables...");
- sDisableMgr.CheckQuestDisables();
- SendGlobalGMSysMessage("DB table `disables` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesAchievementRewardCommand(const char*)
-{
- sLog.outString("Re-Loading Locales Achievement Reward Data...");
- sAchievementMgr.LoadRewardLocales();
- SendGlobalGMSysMessage("DB table `locales_achievement_reward` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLfgEncountersCommand(const char*)
-{
- sLog.outString("Re-Loading dungeon encounter lfg associations...");
- sLFGMgr.LoadDungeonEncounters();
- SendGlobalGMSysMessage("DB table `lfg_dungeon_encounters` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLfgRewardsCommand(const char*)
-{
- sLog.outString("Re-Loading lfg dungeon rewards...");
- sLFGMgr.LoadRewards();
- SendGlobalGMSysMessage("DB table `lfg_dungeon_rewards` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesCreatureCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Creature ...");
- sObjectMgr.LoadCreatureLocales();
- SendGlobalGMSysMessage("DB table `locales_creature` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesGameobjectCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Gameobject ... ");
- sObjectMgr.LoadGameObjectLocales();
- SendGlobalGMSysMessage("DB table `locales_gameobject` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesGossipMenuOptionCommand(const char* /*arg*/)
-{
- sLog.outString( "Re-Loading Locales Gossip Menu Option ... ");
- sObjectMgr.LoadGossipMenuItemsLocales();
- SendGlobalGMSysMessage("DB table `locales_gossip_menu_option` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesItemCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Item ... ");
- sObjectMgr.LoadItemLocales();
- SendGlobalGMSysMessage("DB table `locales_item` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesItemSetNameCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Item set name... ");
- sObjectMgr.LoadItemSetNameLocales();
- SendGlobalGMSysMessage("DB table `locales_item_set_name` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesNpcTextCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales NPC Text ... ");
- sObjectMgr.LoadNpcTextLocales();
- SendGlobalGMSysMessage("DB table `locales_npc_text` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesPageTextCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Page Text ... ");
- sObjectMgr.LoadPageTextLocales();
- SendGlobalGMSysMessage("DB table `locales_page_text` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesPointsOfInterestCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Points Of Interest ... ");
- sObjectMgr.LoadPointOfInterestLocales();
- SendGlobalGMSysMessage("DB table `locales_points_of_interest` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Locales Quest ... ");
- sObjectMgr.LoadQuestLocales();
- SendGlobalGMSysMessage("DB table `locales_quest` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadMailLevelRewardCommand(const char* /*arg*/)
-{
- sLog.outString("Re-Loading Player level dependent mail rewards...");
- sObjectMgr.LoadMailLevelRewards();
- SendGlobalGMSysMessage("DB table `mail_level_reward` reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadAuctionsCommand(const char * /*args*/)
-{
- ///- Reload dynamic data tables from the database
- sLog.outString("Re-Loading Auctions...");
- sAuctionMgr.LoadAuctionItems();
- sAuctionMgr.LoadAuctions();
- SendGlobalGMSysMessage("Auctions reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadConditions(const char* /*args*/)
-{
- sLog.outString("Re-Loading Conditions...");
- sConditionMgr.LoadConditions(true);
- SendGlobalGMSysMessage("Conditions reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadCreatureText(const char* /*args*/)
-{
- sLog.outString("Re-Loading Creature Texts...");
- sCreatureTextMgr.LoadCreatureTexts();
- SendGlobalGMSysMessage("Creature Texts reloaded.");
- return true;
-}
-
-bool ChatHandler::HandleReloadSmartScripts(const char* /*args*/)
-{
- sLog.outString("Re-Loading Smart Scripts...");
- sSmartScriptMgr.LoadSmartAIFromDB();
- SendGlobalGMSysMessage("Smart Scripts reloaded.");
- return true;
-}
-
bool ChatHandler::HandleMaxSkillCommand(const char* /*args*/)
{
Player* SelectedPlayer = getSelectedPlayer();
@@ -1784,65 +659,6 @@ bool ChatHandler::HandleListObjectCommand(const char *args)
return true;
}
-bool ChatHandler::HandleGameObjectStateCommand(const char *args)
-{
- // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args, "Hgameobject");
- if (!cId)
- return false;
-
- uint32 lowguid = atoi(cId);
- if (!lowguid)
- return false;
-
- GameObject* gobj = NULL;
-
- if (GameObjectData const* goData = sObjectMgr.GetGOData(lowguid))
- gobj = GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid, goData->id);
-
- if (!gobj)
- {
- PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
- SetSentErrorMessage(true);
- return false;
- }
-
- char* ctype = strtok(NULL, " ");
- if (!ctype)
- return false;
-
- int32 type = atoi(ctype);
- if (type < 0)
- {
- if (type == -1)
- gobj->SendObjectDeSpawnAnim(gobj->GetGUID());
- else if (type == -2)
- {
- return false;
- }
- return true;
- }
-
- char* cstate = strtok(NULL, " ");
- if (!cstate)
- return false;
-
- int32 state = atoi(cstate);
-
- if (type < 4)
- gobj->SetByteValue(GAMEOBJECT_BYTES_1, type, state);
- else if (type == 4)
- {
- WorldPacket data(SMSG_GAMEOBJECT_CUSTOM_ANIM,8+4);
- data << gobj->GetGUID();
- data << (uint32)(state);
- gobj->SendMessageToSet(&data, true);
- }
- PSendSysMessage("Set gobject type %d state %d", type, state);
-
- return true;
-}
-
bool ChatHandler::HandleListCreatureCommand(const char *args)
{
if (!*args)
@@ -4033,210 +2849,6 @@ bool ChatHandler::HandleServerIdleShutDownCommand(const char *args)
return true;
}
-bool ChatHandler::HandleQuestAdd(const char *args)
-{
- Player* player = getSelectedPlayer();
- if (!player)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // .addquest #entry'
- // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hquest");
- if (!cId)
- return false;
-
- uint32 entry = atol(cId);
-
- Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
-
- if (!pQuest)
- {
- PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND,entry);
- SetSentErrorMessage(true);
- return false;
- }
-
- // check item starting quest (it can work incorrectly if added without item in inventory)
- for (uint32 id = 0; id < sItemStorage.MaxEntry; id++)
- {
- ItemPrototype const *pProto = sItemStorage.LookupEntry<ItemPrototype>(id);
- if (!pProto)
- continue;
-
- if (pProto->StartQuest == entry)
- {
- PSendSysMessage(LANG_COMMAND_QUEST_STARTFROMITEM, entry, pProto->ItemId);
- SetSentErrorMessage(true);
- return false;
- }
- }
-
- // ok, normal (creature/GO starting) quest
- if (player->CanAddQuest(pQuest, true))
- {
- player->AddQuest(pQuest, NULL);
-
- if (player->CanCompleteQuest(entry))
- player->CompleteQuest(entry);
- }
-
- return true;
-}
-
-bool ChatHandler::HandleQuestRemove(const char *args)
-{
- Player* player = getSelectedPlayer();
- if (!player)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // .removequest #entry'
- // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hquest");
- if (!cId)
- return false;
-
- uint32 entry = atol(cId);
-
- Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
-
- if (!pQuest)
- {
- PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, entry);
- SetSentErrorMessage(true);
- return false;
- }
-
- // remove all quest entries for 'entry' from quest log
- for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot)
- {
- uint32 quest = player->GetQuestSlotQuestId(slot);
- if (quest == entry)
- {
- player->SetQuestSlot(slot,0);
-
- // we ignore unequippable quest items in this case, its' still be equipped
- player->TakeQuestSourceItem(quest, false);
- }
- }
-
- // set quest status to not started (will updated in DB at next save)
- player->SetQuestStatus(entry, QUEST_STATUS_NONE);
-
- // reset rewarded for restart repeatable quest
- player->getQuestStatusMap()[entry].m_rewarded = false;
-
- SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
- return true;
-}
-
-bool ChatHandler::HandleQuestComplete(const char *args)
-{
- Player* player = getSelectedPlayer();
- if (!player)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
-
- // .quest complete #entry
- // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
- char* cId = extractKeyFromLink((char*)args,"Hquest");
- if (!cId)
- return false;
-
- uint32 entry = atol(cId);
-
- Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
-
- // If player doesn't have the quest
- if (!pQuest || player->GetQuestStatus(entry) == QUEST_STATUS_NONE)
- {
- PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, entry);
- SetSentErrorMessage(true);
- return false;
- }
-
- // Add quest items for quests that require items
- for (uint8 x = 0; x < QUEST_ITEM_OBJECTIVES_COUNT; ++x)
- {
- uint32 id = pQuest->ReqItemId[x];
- uint32 count = pQuest->ReqItemCount[x];
- if (!id || !count)
- continue;
-
- uint32 curItemCount = player->GetItemCount(id,true);
-
- ItemPosCountVec dest;
- uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, id, count-curItemCount);
- if (msg == EQUIP_ERR_OK)
- {
- Item* item = player->StoreNewItem(dest, id, true);
- player->SendNewItem(item,count-curItemCount,true,false);
- }
- }
-
- // All creature/GO slain/casted (not required, but otherwise it will display "Creature slain 0/10")
- for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i)
- {
- int32 creature = pQuest->ReqCreatureOrGOId[i];
- uint32 creaturecount = pQuest->ReqCreatureOrGOCount[i];
-
- if (uint32 spell_id = pQuest->ReqSpell[i])
- {
- for (uint16 z = 0; z < creaturecount; ++z)
- player->CastedCreatureOrGO(creature,0,spell_id);
- }
- else if (creature > 0)
- {
- if (CreatureInfo const* cInfo = sObjectMgr.GetCreatureTemplate(creature))
- for (uint16 z = 0; z < creaturecount; ++z)
- player->KilledMonster(cInfo,0);
- }
- else if (creature < 0)
- {
- for (uint16 z = 0; z < creaturecount; ++z)
- player->CastedCreatureOrGO(creature,0,0);
- }
- }
-
- // If the quest requires reputation to complete
- if (uint32 repFaction = pQuest->GetRepObjectiveFaction())
- {
- uint32 repValue = pQuest->GetRepObjectiveValue();
- uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
- if (curRep < repValue)
- if (FactionEntry const *factionEntry = sFactionStore.LookupEntry(repFaction))
- player->GetReputationMgr().SetReputation(factionEntry,repValue);
- }
-
- // If the quest requires a SECOND reputation to complete
- if (uint32 repFaction = pQuest->GetRepObjectiveFaction2())
- {
- uint32 repValue2 = pQuest->GetRepObjectiveValue2();
- uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
- if (curRep < repValue2)
- if (FactionEntry const *factionEntry = sFactionStore.LookupEntry(repFaction))
- player->GetReputationMgr().SetReputation(factionEntry,repValue2);
- }
-
- // If the quest requires money
- int32 ReqOrRewMoney = pQuest->GetRewOrReqMoney();
- if (ReqOrRewMoney < 0)
- player->ModifyMoney(-ReqOrRewMoney);
-
- player->CompleteQuest(entry);
- return true;
-}
-
bool ChatHandler::HandleBanAccountCommand(const char *args)
{
return HandleBanHelper(BAN_ACCOUNT,args);
diff --git a/src/server/game/Chat/Commands/TicketCommands.cpp b/src/server/game/Chat/Commands/TicketCommands.cpp
index 018e4da0ad6..34f04041bc4 100755
--- a/src/server/game/Chat/Commands/TicketCommands.cpp
+++ b/src/server/game/Chat/Commands/TicketCommands.cpp
@@ -427,12 +427,6 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args)
return true;
}
-bool ChatHandler::HandleGMTicketReloadCommand(const char* /* args */)
-{
- sTicketMgr.LoadGMTickets();
- return true;
-}
-
bool ChatHandler::HandleToggleGMTicketSystem(const char* /* args */)
{
sTicketMgr.SetStatus(!sTicketMgr.GetStatus());
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
index 531f956c3c4..65a22002534 100755
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -15,7 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptPCH.h"
#include "ScriptLoader.h"
@@ -51,10 +50,16 @@ void AddSC_debug_commandscript();
void AddSC_event_commandscript();
void AddSC_gm_commandscript();
void AddSC_go_commandscript();
+void AddSC_gobject_commandscript();
+void AddSC_honor_commandscript();
void AddSC_learn_commandscript();
void AddSC_modify_commandscript();
void AddSC_npc_commandscript();
+void AddSC_quest_commandscript();
+void AddSC_reload_commandscript();
void AddSC_tele_commandscript();
+void AddSC_titles_commandscript();
+void AddSC_wp_commandscript();
#ifdef SCRIPTS
//world
@@ -629,10 +634,16 @@ void AddCommandScripts()
AddSC_event_commandscript();
AddSC_gm_commandscript();
AddSC_go_commandscript();
+ AddSC_gobject_commandscript();
+ AddSC_honor_commandscript();
AddSC_learn_commandscript();
AddSC_modify_commandscript();
AddSC_npc_commandscript();
+ AddSC_quest_commandscript();
+ AddSC_reload_commandscript();
AddSC_tele_commandscript();
+ AddSC_titles_commandscript();
+ AddSC_wp_commandscript();
}
void AddWorldScripts()
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index 3c02e382ec0..17d4bfc91e5 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -81,6 +81,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI
${CMAKE_SOURCE_DIR}/src/server/game/AI/EventAI
${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI
+ ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts
${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse
${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds
${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones
diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt
index 1eac1322b0e..b688ee3e306 100644
--- a/src/server/scripts/Commands/CMakeLists.txt
+++ b/src/server/scripts/Commands/CMakeLists.txt
@@ -11,12 +11,12 @@ set(scripts_STAT_SRCS
Commands/cs_tele.cpp
# Commands/cs_character.cpp
Commands/cs_event.cpp
-# Commands/cs_gobject.cpp
-# Commands/cs_honor.cpp
-# Commands/cs_wp.cpp
-# Commands/cs_titles.cpp
-# Commands/cs_quest.cpp
-# Commands/cs_reload.cpp
+ Commands/cs_gobject.cpp
+ Commands/cs_honor.cpp
+ Commands/cs_wp.cpp
+ Commands/cs_titles.cpp
+ Commands/cs_quest.cpp
+ Commands/cs_reload.cpp
# Commands/cs_list.cpp
# Commands/cs_lookup.cpp
# Commands/cs_pdump.cpp
@@ -27,7 +27,6 @@ set(scripts_STAT_SRCS
# Commands/cs_server.cpp
# Commands/cs_channel.cpp
# Commands/cs_pet.cpp
-# Commands/cs_loadpath.cpp
# Commands/cs_ticket.cpp
# Commands/cs_aura.cpp
# Commands/cs_unaura.cpp
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index 07846c3cb43..3bbd560ef0b 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -133,10 +133,13 @@ class gm_commandscript : public CommandScript
const char* name = itr->second->GetName();
uint8 security = itr_sec;
uint8 max = ((16 - strlen(name)) / 2);
+ uint8 max2 = max;
+ if (((max)+(max2)+(strlen(name))) == 16)
+ max2 = ((max)-1);
if (handler->GetSession())
- handler->PSendSysMessage("|%s GMLevel %u", name, security);
+ handler->PSendSysMessage("| %s GMLevel %u", name, security);
else
- handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max, " ", security);
+ handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max2, " ", security);
}
}
if (footer)
@@ -162,10 +165,13 @@ class gm_commandscript : public CommandScript
const char* name = fields[0].GetCString();
uint8 security = fields[1].GetUInt8();
uint8 max = ((16 - strlen(name)) / 2);
+ uint8 max2 = max;
+ if (((max)+(max2)+(strlen(name))) == 16)
+ max2 = ((max)-1);
if (handler->GetSession())
- handler->PSendSysMessage("|%s GMLevel %u", name, security);
+ handler->PSendSysMessage("| %s GMLevel %u", name, security);
else
- handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max, " ", security);
+ handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max2, " ", security);
}
while (result->NextRow());
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
new file mode 100644
index 00000000000..8940005bbb9
--- /dev/null
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -0,0 +1,677 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: gobject_commandscript
+%Complete: 100
+Comment: All gobject related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "GameEventMgr.h"
+#include "ObjectMgr.h"
+#include "PoolMgr.h"
+#include "MapManager.h"
+#include "Chat.h"
+
+class gobject_commandscript : public CommandScript
+{
+ public:
+ gobject_commandscript() : CommandScript("gobject_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand gobjectAddCommandTable[] =
+ {
+ { "temp", SEC_GAMEMASTER, false, &HandleGameObjectAddTempCommand, "", NULL },
+ { "", SEC_GAMEMASTER, false, &HandleGameObjectAddCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand gobjectSetCommandTable[] =
+ {
+ { "phase", SEC_GAMEMASTER, false, &HandleGameObjectSetPhaseCommand, "", NULL },
+ { "state", SEC_GAMEMASTER, false, &HandleGameObjectSetStateCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand gobjectCommandTable[] =
+ {
+ { "activate", SEC_GAMEMASTER, false, &HandleGameObjectActivateCommand, "", NULL },
+ { "delete", SEC_GAMEMASTER, false, &HandleGameObjectDeleteCommand, "", NULL },
+ { "info", SEC_GAMEMASTER, false, &HandleGameObjectInfoCommand, "", NULL },
+ { "move", SEC_GAMEMASTER, false, &HandleGameObjectMoveCommand, "", NULL },
+ { "near", SEC_GAMEMASTER, false, &HandleGameObjectNearCommand, "", NULL },
+ { "target", SEC_GAMEMASTER, false, &HandleGameObjectTargetCommand, "", NULL },
+ { "turn", SEC_GAMEMASTER, false, &HandleGameObjectTurnCommand, "", NULL },
+ { "add", SEC_GAMEMASTER, false, NULL, "", gobjectAddCommandTable },
+ { "set", SEC_GAMEMASTER, false, NULL, "", gobjectSetCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+static bool HandleGameObjectActivateCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* obj = NULL;
+
+ // by DB guid
+ if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
+ obj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
+
+ if (!obj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // Activate
+ obj->SetLootState(GO_READY);
+ obj->UseDoorOrButton(10000);
+
+ handler->PSendSysMessage("Object activated!");
+
+ return true;
+}
+
+//spawn go
+static bool HandleGameObjectAddCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject_entry");
+ if (!cId)
+ return false;
+
+ uint32 id = atol(cId);
+ if (!id)
+ return false;
+
+ char* spawntimeSecs = strtok(NULL, " ");
+
+ const GameObjectInfo *gInfo = sObjectMgr.GetGameObjectInfo(id);
+
+ if (!gInfo)
+ {
+ handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (gInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(gInfo->displayId))
+ {
+ // report to DB errors log as in loading case
+ sLog.outErrorDb("Gameobject (Entry %u GoType: %u) have invalid displayId (%u), not spawned.",id, gInfo->type, gInfo->displayId);
+ handler->PSendSysMessage(LANG_GAMEOBJECT_HAVE_INVALID_DATA,id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ Player *chr = handler->GetSession()->GetPlayer();
+ float x = float(chr->GetPositionX());
+ float y = float(chr->GetPositionY());
+ float z = float(chr->GetPositionZ());
+ float o = float(chr->GetOrientation());
+ Map *map = chr->GetMap();
+
+ GameObject* pGameObj = new GameObject;
+ uint32 db_lowGUID = sObjectMgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT);
+
+ if (!pGameObj->Create(db_lowGUID, gInfo->id, map, chr->GetPhaseMaskForSpawn(), x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
+ {
+ delete pGameObj;
+ return false;
+ }
+
+ if (spawntimeSecs)
+ {
+ uint32 value = atoi((char*)spawntimeSecs);
+ pGameObj->SetRespawnTime(value);
+ //sLog.outDebug("*** spawntimeSecs: %d", value);
+ }
+
+ // fill the gameobject data and save to the db
+ pGameObj->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()),chr->GetPhaseMaskForSpawn());
+
+ // this will generate a new guid if the object is in an instance
+ if (!pGameObj->LoadFromDB(db_lowGUID, map))
+ {
+ delete pGameObj;
+ return false;
+ }
+
+ sLog.outDebug(handler->GetTrinityString(LANG_GAMEOBJECT_CURRENT), gInfo->name, db_lowGUID, x, y, z, o);
+
+ map->Add(pGameObj);
+
+ // TODO: is it really necessary to add both the real and DB table guid here ?
+ sObjectMgr.AddGameobjectToGrid(db_lowGUID, sObjectMgr.GetGOData(db_lowGUID));
+
+ handler->PSendSysMessage(LANG_GAMEOBJECT_ADD,id,gInfo->name,db_lowGUID,x,y,z);
+ return true;
+}
+
+// add go, temp only
+static bool HandleGameObjectAddTempCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+ char* charID = strtok((char*)args, " ");
+ if (!charID)
+ return false;
+
+ Player *chr = handler->GetSession()->GetPlayer();
+
+ char* spawntime = strtok(NULL, " ");
+ uint32 spawntm = 300;
+
+ if (spawntime)
+ spawntm = atoi((char*)spawntime);
+
+ float x = chr->GetPositionX();
+ float y = chr->GetPositionY();
+ float z = chr->GetPositionZ();
+ float ang = chr->GetOrientation();
+
+ float rot2 = sin(ang/2);
+ float rot3 = cos(ang/2);
+
+ uint32 id = atoi(charID);
+
+ chr->SummonGameObject(id,x,y,z,ang,0,0,rot2,rot3,spawntm);
+
+ return true;
+}
+
+static bool HandleGameObjectTargetCommand(ChatHandler* handler, const char* args)
+{
+ Player* pl = handler->GetSession()->GetPlayer();
+ QueryResult result;
+ GameEventMgr::ActiveEvents const& activeEventsList = sGameEventMgr.GetActiveEventList();
+ if (*args)
+ {
+ // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject_entry");
+ if (!cId)
+ return false;
+
+ uint32 id = atol(cId);
+
+ if (id)
+ result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE map = '%i' AND id = '%u' ORDER BY order_ ASC LIMIT 1",
+ pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(), pl->GetMapId(),id);
+ else
+ {
+ std::string name = cId;
+ WorldDatabase.escape_string(name);
+ result = WorldDatabase.PQuery(
+ "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ "
+ "FROM gameobject,gameobject_template WHERE gameobject_template.entry = gameobject.id AND map = %i AND name "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'")" ORDER BY order_ ASC LIMIT 1",
+ pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(), pl->GetMapId(),name.c_str());
+ }
+ }
+ else
+ {
+ std::ostringstream eventFilter;
+ eventFilter << " AND (event IS NULL ";
+ bool initString = true;
+
+ for (GameEventMgr::ActiveEvents::const_iterator itr = activeEventsList.begin(); itr != activeEventsList.end(); ++itr)
+ {
+ if (initString)
+ {
+ eventFilter << "OR event IN (" <<*itr;
+ initString =false;
+ }
+ else
+ eventFilter << "," << *itr;
+ }
+
+ if (!initString)
+ eventFilter << "))";
+ else
+ eventFilter << ")";
+
+ result = WorldDatabase.PQuery("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseMask, "
+ "(POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ FROM gameobject "
+ "LEFT OUTER JOIN game_event_gameobject on gameobject.guid=game_event_gameobject.guid WHERE map = '%i' %s ORDER BY order_ ASC LIMIT 10",
+ handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY(), handler->GetSession()->GetPlayer()->GetPositionZ(), handler->GetSession()->GetPlayer()->GetMapId(),eventFilter.str().c_str());
+ }
+
+ if (!result)
+ {
+ handler->SendSysMessage(LANG_COMMAND_TARGETOBJNOTFOUND);
+ return true;
+ }
+
+ bool found = false;
+ float x, y, z, o;
+ uint32 lowguid, id;
+ uint16 mapid, phase;
+ uint32 pool_id;
+
+ do
+ {
+ Field *fields = result->Fetch();
+ lowguid = fields[0].GetUInt32();
+ id = fields[1].GetUInt32();
+ x = fields[2].GetFloat();
+ y = fields[3].GetFloat();
+ z = fields[4].GetFloat();
+ o = fields[5].GetFloat();
+ mapid = fields[6].GetUInt16();
+ phase = fields[7].GetUInt16();
+ pool_id = sPoolMgr.IsPartOfAPool<GameObject>(lowguid);
+ if (!pool_id || sPoolMgr.IsSpawnedObject<GameObject>(lowguid))
+ found = true;
+ } while (result->NextRow() && (!found));
+
+ if (!found)
+ {
+ handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
+ return false;
+ }
+
+ GameObjectInfo const* goI = sObjectMgr.GetGameObjectInfo(id);
+
+ if (!goI)
+ {
+ handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id);
+ return false;
+ }
+
+ GameObject* target = handler->GetSession()->GetPlayer()->GetMap()->GetGameObject(MAKE_NEW_GUID(lowguid,id,HIGHGUID_GAMEOBJECT));
+
+ handler->PSendSysMessage(LANG_GAMEOBJECT_DETAIL, lowguid, goI->name, lowguid, id, x, y, z, mapid, o, phase);
+
+ if (target)
+ {
+ int32 curRespawnDelay = int32(target->GetRespawnTimeEx()-time(NULL));
+ if (curRespawnDelay < 0)
+ curRespawnDelay = 0;
+
+ std::string curRespawnDelayStr = secsToTimeString(curRespawnDelay,true);
+ std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(),true);
+
+ handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(),curRespawnDelayStr.c_str());
+ }
+ return true;
+}
+
+//delete object by selection or guid
+static bool HandleGameObjectDeleteCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* obj = NULL;
+
+ // by DB guid
+ if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
+ obj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
+
+ if (!obj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ uint64 owner_guid = obj->GetOwnerGUID();
+ if (owner_guid)
+ {
+ Unit* owner = ObjectAccessor::GetUnit(*handler->GetSession()->GetPlayer(),owner_guid);
+ if (!owner || !IS_PLAYER_GUID(owner_guid))
+ {
+ handler->PSendSysMessage(LANG_COMMAND_DELOBJREFERCREATURE, GUID_LOPART(owner_guid), obj->GetGUIDLow());
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ owner->RemoveGameObject(obj,false);
+ }
+
+ obj->SetRespawnTime(0); // not save respawn time
+ obj->Delete();
+ obj->DeleteFromDB();
+
+ handler->PSendSysMessage(LANG_COMMAND_DELOBJMESSAGE, obj->GetGUIDLow());
+
+ return true;
+}
+
+//turn selected object
+static bool HandleGameObjectTurnCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* obj = NULL;
+
+ // by DB guid
+ if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
+ obj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
+
+ if (!obj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ char* po = strtok(NULL, " ");
+ float o;
+
+ if (po)
+ {
+ o = (float)atof(po);
+ }
+ else
+ {
+ Player *chr = handler->GetSession()->GetPlayer();
+ o = chr->GetOrientation();
+ }
+
+ obj->Relocate(obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ(), o);
+ obj->UpdateRotationFields();
+ obj->DestroyForNearbyPlayers();
+ obj->UpdateObjectVisibility();
+
+ obj->SaveToDB();
+ obj->Refresh();
+
+ handler->PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, obj->GetGUIDLow(), obj->GetGOInfo()->name, obj->GetGUIDLow(), o);
+
+ return true;
+}
+
+//move selected object
+static bool HandleGameObjectMoveCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* obj = NULL;
+
+ // by DB guid
+ if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
+ obj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
+
+ if (!obj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ char* px = strtok(NULL, " ");
+ char* py = strtok(NULL, " ");
+ char* pz = strtok(NULL, " ");
+
+ if (!px)
+ {
+ Player *chr = handler->GetSession()->GetPlayer();
+ obj->Relocate(chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), obj->GetOrientation());
+ obj->DestroyForNearbyPlayers();
+ obj->UpdateObjectVisibility();
+ }
+ else
+ {
+ if (!py || !pz)
+ return false;
+
+ float x = (float)atof(px);
+ float y = (float)atof(py);
+ float z = (float)atof(pz);
+
+ if (!MapManager::IsValidMapCoord(obj->GetMapId(),x,y,z))
+ {
+ handler->PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,obj->GetMapId());
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ obj->Relocate(x, y, z, obj->GetOrientation());
+ obj->DestroyForNearbyPlayers();
+ obj->UpdateObjectVisibility();
+ }
+
+ obj->SaveToDB();
+ obj->Refresh();
+
+ handler->PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, obj->GetGUIDLow(), obj->GetGOInfo()->name, obj->GetGUIDLow());
+
+ return true;
+}
+
+//set pahsemask for selected object
+static bool HandleGameObjectSetPhaseCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* obj = NULL;
+
+ // by DB guid
+ if (GameObjectData const* go_data = sObjectMgr.GetGOData(lowguid))
+ obj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid,go_data->id);
+
+ if (!obj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ char* phaseStr = strtok (NULL, " ");
+ uint32 phasemask = phaseStr? atoi(phaseStr) : 0;
+ if (phasemask == 0)
+ {
+ handler->SendSysMessage(LANG_BAD_VALUE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ obj->SetPhaseMask(phasemask,true);
+ obj->SaveToDB();
+ return true;
+}
+
+static bool HandleGameObjectNearCommand(ChatHandler* handler, const char* args)
+{
+ float distance = (!*args) ? 10.0f : (float)(atof(args));
+ uint32 count = 0;
+
+ Player* pl = handler->GetSession()->GetPlayer();
+ QueryResult result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, map, "
+ "(POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ "
+ "FROM gameobject WHERE map='%u' AND (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) <= '%f' ORDER BY order_",
+ pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),
+ pl->GetMapId(),pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ(),distance*distance);
+
+ if (result)
+ {
+ do
+ {
+ Field *fields = result->Fetch();
+ uint32 guid = fields[0].GetUInt32();
+ uint32 entry = fields[1].GetUInt32();
+ float x = fields[2].GetFloat();
+ float y = fields[3].GetFloat();
+ float z = fields[4].GetFloat();
+ int mapid = fields[5].GetUInt16();
+
+ GameObjectInfo const * gInfo = sObjectMgr.GetGameObjectInfo(entry);
+
+ if (!gInfo)
+ continue;
+
+ handler->PSendSysMessage(LANG_GO_LIST_CHAT, guid, entry, guid, gInfo->name, x, y, z, mapid);
+
+ ++count;
+ } while (result->NextRow());
+ }
+
+ handler->PSendSysMessage(LANG_COMMAND_NEAROBJMESSAGE,distance,count);
+ return true;
+}
+
+//show info of gameobject
+static bool HandleGameObjectInfoCommand(ChatHandler* handler, const char* args)
+{
+ uint32 entry = 0;
+ uint32 type = 0;
+ uint32 displayid = 0;
+ std::string name;
+ uint32 lootId = 0;
+
+ if (!*args)
+ {
+ if (WorldObject * obj = handler->getSelectedObject())
+ entry = obj->GetEntry();
+ }
+ else
+ entry = atoi((char*)args);
+
+ GameObjectInfo const* goinfo = sObjectMgr.GetGameObjectInfo(entry);
+
+ if (!goinfo)
+ return false;
+
+ type = goinfo->type;
+ displayid = goinfo->displayId;
+ name = goinfo->name;
+ if (type == GAMEOBJECT_TYPE_CHEST)
+ lootId = goinfo->chest.lootId;
+ else if (type == GAMEOBJECT_TYPE_FISHINGHOLE)
+ lootId = goinfo->fishinghole.lootId;
+
+ handler->PSendSysMessage(LANG_GOINFO_ENTRY, entry);
+ handler->PSendSysMessage(LANG_GOINFO_TYPE, type);
+ handler->PSendSysMessage(LANG_GOINFO_LOOTID, lootId);
+ handler->PSendSysMessage(LANG_GOINFO_DISPLAYID, displayid);
+ handler->PSendSysMessage(LANG_GOINFO_NAME, name.c_str());
+
+ return true;
+}
+static bool HandleGameObjectSetStateCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args, "Hgameobject");
+ if (!cId)
+ return false;
+
+ uint32 lowguid = atoi(cId);
+ if (!lowguid)
+ return false;
+
+ GameObject* gobj = NULL;
+
+ if (GameObjectData const* goData = sObjectMgr.GetGOData(lowguid))
+ gobj = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(lowguid, goData->id);
+
+ if (!gobj)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ char* ctype = strtok(NULL, " ");
+ if (!ctype)
+ return false;
+
+ int32 type = atoi(ctype);
+ if (type < 0)
+ {
+ if (type == -1)
+ gobj->SendObjectDeSpawnAnim(gobj->GetGUID());
+ else if (type == -2)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ char* cstate = strtok(NULL, " ");
+ if (!cstate)
+ return false;
+
+ int32 state = atoi(cstate);
+
+ if (type < 4)
+ gobj->SetByteValue(GAMEOBJECT_BYTES_1, type, state);
+ else if (type == 4)
+ {
+ WorldPacket data(SMSG_GAMEOBJECT_CUSTOM_ANIM,8+4);
+ data << gobj->GetGUID();
+ data << (uint32)(state);
+ gobj->SendMessageToSet(&data, true);
+ }
+ handler->PSendSysMessage("Set gobject type %d state %d", type, state);
+
+ return true;
+}
+
+};
+
+void AddSC_gobject_commandscript()
+{
+ new gobject_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_honor.cpp b/src/server/scripts/Commands/cs_honor.cpp
new file mode 100644
index 00000000000..211fdd30155
--- /dev/null
+++ b/src/server/scripts/Commands/cs_honor.cpp
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: honor_commandscript
+%Complete: 100
+Comment: All honor related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "ObjectMgr.h"
+#include "Chat.h"
+
+class honor_commandscript : public CommandScript
+{
+ public:
+ honor_commandscript() : CommandScript("honor_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand honorAddCommandTable[] =
+ {
+ { "kill", SEC_GAMEMASTER, false, &HandleHonorAddKillCommand, "", NULL },
+ { "", SEC_GAMEMASTER, false, &HandleHonorAddCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand honorCommandTable[] =
+ {
+ { "add", SEC_GAMEMASTER, false, NULL, "", honorAddCommandTable },
+ { "update", SEC_GAMEMASTER, false, &HandleHonorUpdateCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+
+static bool HandleHonorAddCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ Player *target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ uint32 amount = (uint32)atoi(args);
+ target->RewardHonor(NULL, 1, amount);
+ return true;
+}
+
+static bool HandleHonorAddKillCommand(ChatHandler* handler, const char* /*args*/)
+{
+ Unit *target = handler->getSelectedUnit();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity((Player*)target, 0))
+ return false;
+
+ handler->GetSession()->GetPlayer()->RewardHonor(target, 1);
+ return true;
+}
+
+static bool HandleHonorUpdateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ Player *target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ target->UpdateHonorFields();
+ return true;
+}
+
+};
+
+void AddSC_honor_commandscript()
+{
+ new honor_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp
new file mode 100644
index 00000000000..07dbaee0855
--- /dev/null
+++ b/src/server/scripts/Commands/cs_quest.cpp
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: quest_commandscript
+%Complete: 100
+Comment: All quest related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "ObjectMgr.h"
+#include "Chat.h"
+
+class quest_commandscript : public CommandScript
+{
+ public:
+ quest_commandscript() : CommandScript("quest_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand questCommandTable[] =
+ {
+ { "add", SEC_ADMINISTRATOR, false, &HandleQuestAdd, "", NULL },
+ { "complete", SEC_ADMINISTRATOR, false, &HandleQuestComplete, "", NULL },
+ { "remove", SEC_ADMINISTRATOR, false, &HandleQuestRemove, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "quest", SEC_ADMINISTRATOR, false, NULL, "", questCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+static bool HandleQuestAdd(ChatHandler* handler, const char* args)
+{
+ Player* player = handler->getSelectedPlayer();
+ if (!player)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // .addquest #entry'
+ // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hquest");
+ if (!cId)
+ return false;
+
+ uint32 entry = atol(cId);
+
+ Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
+
+ if (!pQuest)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND,entry);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check item starting quest (it can work incorrectly if added without item in inventory)
+ for (uint32 id = 0; id < sItemStorage.MaxEntry; id++)
+ {
+ ItemPrototype const *pProto = sItemStorage.LookupEntry<ItemPrototype>(id);
+ if (!pProto)
+ continue;
+
+ if (pProto->StartQuest == entry)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_STARTFROMITEM, entry, pProto->ItemId);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+ }
+
+ // ok, normal (creature/GO starting) quest
+ if (player->CanAddQuest(pQuest, true))
+ {
+ player->AddQuest(pQuest, NULL);
+
+ if (player->CanCompleteQuest(entry))
+ player->CompleteQuest(entry);
+ }
+
+ return true;
+}
+
+static bool HandleQuestRemove(ChatHandler* handler, const char* args)
+{
+ Player* player = handler->getSelectedPlayer();
+ if (!player)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // .removequest #entry'
+ // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hquest");
+ if (!cId)
+ return false;
+
+ uint32 entry = atol(cId);
+
+ Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
+
+ if (!pQuest)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, entry);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // remove all quest entries for 'entry' from quest log
+ for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot)
+ {
+ uint32 quest = player->GetQuestSlotQuestId(slot);
+ if (quest == entry)
+ {
+ player->SetQuestSlot(slot,0);
+
+ // we ignore unequippable quest items in this case, its' still be equipped
+ player->TakeQuestSourceItem(quest, false);
+ }
+ }
+
+ // set quest status to not started (will updated in DB at next save)
+ player->SetQuestStatus(entry, QUEST_STATUS_NONE);
+
+ // reset rewarded for restart repeatable quest
+ player->getQuestStatusMap()[entry].m_rewarded = false;
+
+ handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
+ return true;
+}
+
+static bool HandleQuestComplete(ChatHandler* handler, const char* args)
+{
+ Player* player = handler->getSelectedPlayer();
+ if (!player)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // .quest complete #entry
+ // number or [name] Shift-click form |color|Hquest:quest_id:quest_level|h[name]|h|r
+ char* cId = handler->extractKeyFromLink((char*)args,"Hquest");
+ if (!cId)
+ return false;
+
+ uint32 entry = atol(cId);
+
+ Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
+
+ // If player doesn't have the quest
+ if (!pQuest || player->GetQuestStatus(entry) == QUEST_STATUS_NONE)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, entry);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // Add quest items for quests that require items
+ for (uint8 x = 0; x < QUEST_ITEM_OBJECTIVES_COUNT; ++x)
+ {
+ uint32 id = pQuest->ReqItemId[x];
+ uint32 count = pQuest->ReqItemCount[x];
+ if (!id || !count)
+ continue;
+
+ uint32 curItemCount = player->GetItemCount(id,true);
+
+ ItemPosCountVec dest;
+ uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, id, count-curItemCount);
+ if (msg == EQUIP_ERR_OK)
+ {
+ Item* item = player->StoreNewItem(dest, id, true);
+ player->SendNewItem(item,count-curItemCount,true,false);
+ }
+ }
+
+ // All creature/GO slain/casted (not required, but otherwise it will display "Creature slain 0/10")
+ for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i)
+ {
+ int32 creature = pQuest->ReqCreatureOrGOId[i];
+ uint32 creaturecount = pQuest->ReqCreatureOrGOCount[i];
+
+ if (uint32 spell_id = pQuest->ReqSpell[i])
+ {
+ for (uint16 z = 0; z < creaturecount; ++z)
+ player->CastedCreatureOrGO(creature,0,spell_id);
+ }
+ else if (creature > 0)
+ {
+ if (CreatureInfo const* cInfo = sObjectMgr.GetCreatureTemplate(creature))
+ for (uint16 z = 0; z < creaturecount; ++z)
+ player->KilledMonster(cInfo,0);
+ }
+ else if (creature < 0)
+ {
+ for (uint16 z = 0; z < creaturecount; ++z)
+ player->CastedCreatureOrGO(creature,0,0);
+ }
+ }
+
+ // If the quest requires reputation to complete
+ if (uint32 repFaction = pQuest->GetRepObjectiveFaction())
+ {
+ uint32 repValue = pQuest->GetRepObjectiveValue();
+ uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
+ if (curRep < repValue)
+ if (FactionEntry const *factionEntry = sFactionStore.LookupEntry(repFaction))
+ player->GetReputationMgr().SetReputation(factionEntry,repValue);
+ }
+
+ // If the quest requires a SECOND reputation to complete
+ if (uint32 repFaction = pQuest->GetRepObjectiveFaction2())
+ {
+ uint32 repValue2 = pQuest->GetRepObjectiveValue2();
+ uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
+ if (curRep < repValue2)
+ if (FactionEntry const *factionEntry = sFactionStore.LookupEntry(repFaction))
+ player->GetReputationMgr().SetReputation(factionEntry,repValue2);
+ }
+
+ // If the quest requires money
+ int32 ReqOrRewMoney = pQuest->GetRewOrReqMoney();
+ if (ReqOrRewMoney < 0)
+ player->ModifyMoney(-ReqOrRewMoney);
+
+ player->CompleteQuest(entry);
+ return true;
+}
+
+};
+
+void AddSC_quest_commandscript()
+{
+ new quest_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
new file mode 100644
index 00000000000..85e2f5a0965
--- /dev/null
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -0,0 +1,1302 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: reload_commandscript
+%Complete: 100
+Comment: All reload related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "ObjectMgr.h"
+#include "SpellMgr.h"
+#include "TicketMgr.h"
+#include "MapManager.h"
+#include "CreatureEventAIMgr.h"
+#include "DisableMgr.h"
+#include "LFGMgr.h"
+#include "AuctionHouseMgr.h"
+#include "CreatureTextMgr.h"
+#include "SmartAI.h"
+#include "SkillDiscovery.h"
+#include "SkillExtraItems.h"
+#include "Chat.h"
+
+class reload_commandscript : public CommandScript
+{
+ public:
+ reload_commandscript() : CommandScript("reload_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand reloadAllCommandTable[] =
+ {
+ { "achievement",SEC_ADMINISTRATOR, true, &HandleReloadAllAchievementCommand,"", NULL },
+ { "area", SEC_ADMINISTRATOR, true, &HandleReloadAllAreaCommand, "", NULL },
+ { "eventai", SEC_ADMINISTRATOR, true, &HandleReloadAllEventAICommand, "", NULL },
+ { "gossips", SEC_ADMINISTRATOR, true, &HandleReloadAllGossipsCommand, "", NULL },
+ { "item", SEC_ADMINISTRATOR, true, &HandleReloadAllItemCommand, "", NULL },
+ { "locales", SEC_ADMINISTRATOR, true, &HandleReloadAllLocalesCommand, "", NULL },
+ { "loot", SEC_ADMINISTRATOR, true, &HandleReloadAllLootCommand, "", NULL },
+ { "npc", SEC_ADMINISTRATOR, true, &HandleReloadAllNpcCommand, "", NULL },
+ { "quest", SEC_ADMINISTRATOR, true, &HandleReloadAllQuestCommand, "", NULL },
+ { "scripts", SEC_ADMINISTRATOR, true, &HandleReloadAllScriptsCommand, "", NULL },
+ { "spell", SEC_ADMINISTRATOR, true, &HandleReloadAllSpellCommand, "", NULL },
+ { "", SEC_ADMINISTRATOR, true, &HandleReloadAllCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand reloadCommandTable[] =
+ {
+ { "auctions", SEC_ADMINISTRATOR, true, &HandleReloadAuctionsCommand, "", NULL },
+ { "access_requirement", SEC_ADMINISTRATOR, true, &HandleReloadAccessRequirementCommand, "", NULL },
+ { "achievement_criteria_data", SEC_ADMINISTRATOR, true, &HandleReloadAchievementCriteriaDataCommand, "", NULL },
+ { "achievement_reward", SEC_ADMINISTRATOR, true, &HandleReloadAchievementRewardCommand, "", NULL },
+ { "all", SEC_ADMINISTRATOR, true, NULL, "", reloadAllCommandTable },
+ { "areatrigger_involvedrelation", SEC_ADMINISTRATOR, true, &HandleReloadQuestAreaTriggersCommand, "", NULL },
+ { "areatrigger_tavern", SEC_ADMINISTRATOR, true, &HandleReloadAreaTriggerTavernCommand, "", NULL },
+ { "areatrigger_teleport", SEC_ADMINISTRATOR, true, &HandleReloadAreaTriggerTeleportCommand, "", NULL },
+ { "autobroadcast", SEC_ADMINISTRATOR, true, &HandleReloadAutobroadcastCommand, "", NULL },
+ { "command", SEC_ADMINISTRATOR, true, &HandleReloadCommandCommand, "", NULL },
+ { "conditions", SEC_ADMINISTRATOR, true, &HandleReloadConditions, "", NULL },
+ { "config", SEC_ADMINISTRATOR, true, &HandleReloadConfigCommand, "", NULL },
+ { "creature_text", SEC_ADMINISTRATOR, true, &HandleReloadCreatureText, "", NULL },
+ { "creature_ai_scripts", SEC_ADMINISTRATOR, true, &HandleReloadEventAIScriptsCommand, "", NULL },
+ { "creature_ai_summons", SEC_ADMINISTRATOR, true, &HandleReloadEventAISummonsCommand, "", NULL },
+ { "creature_ai_texts", SEC_ADMINISTRATOR, true, &HandleReloadEventAITextsCommand, "", NULL },
+ { "creature_involvedrelation", SEC_ADMINISTRATOR, true, &HandleReloadCreatureQuestInvRelationsCommand, "",NULL },
+ { "creature_linked_respawn", SEC_GAMEMASTER, true, &HandleReloadCreatureLinkedRespawnCommand, "", NULL },
+ { "creature_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesCreatureCommand, "", NULL },
+ { "creature_onkill_reputation", SEC_ADMINISTRATOR, true, &HandleReloadOnKillReputationCommand, "", NULL },
+ { "creature_questrelation", SEC_ADMINISTRATOR, true, &HandleReloadCreatureQuestRelationsCommand, "", NULL },
+ { "creature_template", SEC_ADMINISTRATOR, true, &HandleReloadCreatureTemplateCommand, "", NULL },
+ //{ "db_script_string", SEC_ADMINISTRATOR, true, &HandleReloadDbScriptStringCommand, "", NULL },
+ { "disables", SEC_ADMINISTRATOR, true, &HandleReloadDisablesCommand, "", NULL },
+ { "disenchant_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesDisenchantCommand, "", NULL },
+ { "event_scripts", SEC_ADMINISTRATOR, true, &HandleReloadEventScriptsCommand, "", NULL },
+ { "fishing_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesFishingCommand, "", NULL },
+ { "game_graveyard_zone", SEC_ADMINISTRATOR, true, &HandleReloadGameGraveyardZoneCommand, "", NULL },
+ { "game_tele", SEC_ADMINISTRATOR, true, &HandleReloadGameTeleCommand, "", NULL },
+ { "gameobject_involvedrelation", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestInvRelationsCommand, "", NULL },
+ { "gameobject_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesGameobjectCommand, "", NULL },
+ { "gameobject_questrelation", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestRelationsCommand, "", NULL },
+ { "gameobject_scripts", SEC_ADMINISTRATOR, true, &HandleReloadGameObjectScriptsCommand, "", NULL },
+ { "gm_tickets", SEC_ADMINISTRATOR, true, &HandleReloadGMTicketsCommand, "", NULL },
+ { "gossip_menu", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuCommand, "", NULL },
+ { "gossip_menu_option", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuOptionCommand, "", NULL },
+ { "gossip_scripts", SEC_ADMINISTRATOR, true, &HandleReloadGossipScriptsCommand, "", NULL },
+ { "item_enchantment_template", SEC_ADMINISTRATOR, true, &HandleReloadItemEnchantementsCommand, "", NULL },
+ { "item_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesItemCommand, "", NULL },
+ { "item_set_names", SEC_ADMINISTRATOR, true, &HandleReloadItemSetNamesCommand, "", NULL },
+ { "lfg_dungeon_encounters", SEC_ADMINISTRATOR, true, &HandleReloadLfgEncountersCommand, "", NULL },
+ { "lfg_dungeon_rewards", SEC_ADMINISTRATOR, true, &HandleReloadLfgRewardsCommand, "", NULL },
+ { "locales_achievement_reward", SEC_ADMINISTRATOR, true, &HandleReloadLocalesAchievementRewardCommand, "", NULL },
+ { "locales_creature", SEC_ADMINISTRATOR, true, &HandleReloadLocalesCreatureCommand, "", NULL },
+ { "locales_gameobject", SEC_ADMINISTRATOR, true, &HandleReloadLocalesGameobjectCommand, "", NULL },
+ { "locales_gossip_menu_option", SEC_ADMINISTRATOR, true, &HandleReloadLocalesGossipMenuOptionCommand, "", NULL },
+ { "locales_item", SEC_ADMINISTRATOR, true, &HandleReloadLocalesItemCommand, "", NULL },
+ { "locales_item_set_name", SEC_ADMINISTRATOR, true, &HandleReloadLocalesItemSetNameCommand, "", NULL },
+ { "locales_npc_text", SEC_ADMINISTRATOR, true, &HandleReloadLocalesNpcTextCommand, "", NULL },
+ { "locales_page_text", SEC_ADMINISTRATOR, true, &HandleReloadLocalesPageTextCommand, "", NULL },
+ { "locales_points_of_interest", SEC_ADMINISTRATOR, true, &HandleReloadLocalesPointsOfInterestCommand, "", NULL },
+ { "locales_quest", SEC_ADMINISTRATOR, true, &HandleReloadLocalesQuestCommand, "", NULL },
+ { "mail_level_reward", SEC_ADMINISTRATOR, true, &HandleReloadMailLevelRewardCommand, "", NULL },
+ { "mail_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesMailCommand, "", NULL },
+ { "milling_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesMillingCommand, "", NULL },
+ { "npc_gossip", SEC_ADMINISTRATOR, true, &HandleReloadNpcGossipCommand, "", NULL },
+ { "npc_spellclick_spells", SEC_ADMINISTRATOR, true, &HandleReloadSpellClickSpellsCommand, "",NULL},
+ { "npc_trainer", SEC_ADMINISTRATOR, true, &HandleReloadNpcTrainerCommand, "", NULL },
+ { "npc_vendor", SEC_ADMINISTRATOR, true, &HandleReloadNpcVendorCommand, "", NULL },
+ { "page_text", SEC_ADMINISTRATOR, true, &HandleReloadPageTextsCommand, "", NULL },
+ { "pickpocketing_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesPickpocketingCommand, "",NULL},
+ { "points_of_interest", SEC_ADMINISTRATOR, true, &HandleReloadPointsOfInterestCommand, "", NULL },
+ { "prospecting_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesProspectingCommand, "", NULL },
+ { "quest_end_scripts", SEC_ADMINISTRATOR, true, &HandleReloadQuestEndScriptsCommand, "", NULL },
+ { "quest_poi", SEC_ADMINISTRATOR, true, &HandleReloadQuestPOICommand, "", NULL },
+ { "quest_start_scripts", SEC_ADMINISTRATOR, true, &HandleReloadQuestStartScriptsCommand, "", NULL },
+ { "quest_template", SEC_ADMINISTRATOR, true, &HandleReloadQuestTemplateCommand, "", NULL },
+ { "reference_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesReferenceCommand, "", NULL },
+ { "reserved_name", SEC_ADMINISTRATOR, true, &HandleReloadReservedNameCommand, "", NULL },
+ { "reputation_reward_rate", SEC_ADMINISTRATOR, true, &HandleReloadReputationRewardRateCommand, "", NULL },
+ { "reputation_spillover_template",SEC_ADMINISTRATOR, true, &HandleReloadReputationRewardRateCommand, "", NULL },
+ { "skill_discovery_template", SEC_ADMINISTRATOR, true, &HandleReloadSkillDiscoveryTemplateCommand, "", NULL },
+ { "skill_extra_item_template", SEC_ADMINISTRATOR, true, &HandleReloadSkillExtraItemTemplateCommand, "", NULL },
+ { "skill_fishing_base_level", SEC_ADMINISTRATOR, true, &HandleReloadSkillFishingBaseLevelCommand, "", NULL },
+ { "skinning_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesSkinningCommand, "", NULL },
+ { "smart_scripts", SEC_ADMINISTRATOR, true, &HandleReloadSmartScripts, "", NULL },
+ { "spell_required", SEC_ADMINISTRATOR, true, &HandleReloadSpellRequiredCommand, "", NULL },
+ { "spell_area", SEC_ADMINISTRATOR, true, &HandleReloadSpellAreaCommand, "", NULL },
+ { "spell_bonus_data", SEC_ADMINISTRATOR, true, &HandleReloadSpellBonusesCommand, "", NULL },
+ { "spell_group", SEC_ADMINISTRATOR, true, &HandleReloadSpellGroupsCommand, "", NULL },
+ { "spell_learn_spell", SEC_ADMINISTRATOR, true, &HandleReloadSpellLearnSpellCommand, "", NULL },
+ { "spell_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesSpellCommand, "", NULL },
+ { "spell_linked_spell", SEC_ADMINISTRATOR, true, &HandleReloadSpellLinkedSpellCommand, "", NULL },
+ { "spell_pet_auras", SEC_ADMINISTRATOR, true, &HandleReloadSpellPetAurasCommand, "", NULL },
+ { "spell_proc_event", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcEventCommand, "", NULL },
+ { "spell_scripts", SEC_ADMINISTRATOR, true, &HandleReloadSpellScriptsCommand, "", NULL },
+ { "spell_target_position", SEC_ADMINISTRATOR, true, &HandleReloadSpellTargetPositionCommand, "", NULL },
+ { "spell_threats", SEC_ADMINISTRATOR, true, &HandleReloadSpellThreatsCommand, "", NULL },
+ { "spell_group_stack_rules", SEC_ADMINISTRATOR, true, &HandleReloadSpellGroupStackRulesCommand, "", NULL },
+ { "trinity_string", SEC_ADMINISTRATOR, true, &HandleReloadTrinityStringCommand, "", NULL },
+ { "waypoint_scripts", SEC_ADMINISTRATOR, true, &HandleReloadWpScriptsCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "reload", SEC_ADMINISTRATOR, true, NULL, "", reloadCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+//reload commands
+static bool HandleReloadGMTicketsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sTicketMgr.LoadGMTickets();
+ return true;
+}
+
+static bool HandleReloadAllCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadSkillFishingBaseLevelCommand(handler,"");
+
+ HandleReloadAllAchievementCommand(handler,"");
+ HandleReloadAllAreaCommand(handler,"");
+ HandleReloadAllEventAICommand(handler,"");
+ HandleReloadAllLootCommand(handler,"");
+ HandleReloadAllNpcCommand(handler,"");
+ HandleReloadAllQuestCommand(handler,"");
+ HandleReloadAllSpellCommand(handler,"");
+ HandleReloadAllItemCommand(handler,"");
+ HandleReloadAllGossipsCommand(handler,"");
+ HandleReloadAllLocalesCommand(handler,"");
+
+ HandleReloadAccessRequirementCommand(handler,"");
+ HandleReloadMailLevelRewardCommand(handler,"");
+ HandleReloadCommandCommand(handler,"");
+ HandleReloadReservedNameCommand(handler,"");
+ HandleReloadTrinityStringCommand(handler,"");
+ HandleReloadGameTeleCommand(handler,"");
+
+ HandleReloadAutobroadcastCommand(handler,"");
+ return true;
+}
+
+static bool HandleReloadAllAchievementCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadAchievementCriteriaDataCommand(handler,"");
+ HandleReloadAchievementRewardCommand(handler,"");
+ return true;
+}
+
+static bool HandleReloadAllAreaCommand(ChatHandler* handler, const char* /*args*/)
+{
+ //HandleReloadQuestAreaTriggersCommand(handler,""); -- reloaded in HandleReloadAllQuestCommand
+ HandleReloadAreaTriggerTeleportCommand(handler,"");
+ HandleReloadAreaTriggerTavernCommand(handler,"");
+ HandleReloadGameGraveyardZoneCommand(handler,"");
+ return true;
+}
+
+static bool HandleReloadAllLootCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables...");
+ LoadLootTables();
+ handler->SendGlobalGMSysMessage("DB tables `*_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadAllNpcCommand(ChatHandler* handler, const char* args)
+{
+ if(*args != 'a') // will be reloaded from all_gossips
+ HandleReloadNpcGossipCommand(handler,"a");
+ HandleReloadNpcTrainerCommand(handler,"a");
+ HandleReloadNpcVendorCommand(handler,"a");
+ HandleReloadPointsOfInterestCommand(handler,"a");
+ HandleReloadSpellClickSpellsCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllQuestCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadQuestAreaTriggersCommand(handler,"a");
+ HandleReloadQuestPOICommand(handler,"a");
+ HandleReloadQuestTemplateCommand(handler,"a");
+
+ sLog.outString("Re-Loading Quests Relations...");
+ sObjectMgr.LoadQuestRelations();
+ handler->SendGlobalGMSysMessage("DB tables `*_questrelation` and `*_involvedrelation` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAllScriptsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->PSendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ sLog.outString("Re-Loading Scripts...");
+ HandleReloadGameObjectScriptsCommand(handler,"a");
+ HandleReloadGossipScriptsCommand(handler,"a");
+ HandleReloadEventScriptsCommand(handler,"a");
+ HandleReloadQuestEndScriptsCommand(handler,"a");
+ HandleReloadQuestStartScriptsCommand(handler,"a");
+ HandleReloadSpellScriptsCommand(handler,"a");
+ handler->SendGlobalGMSysMessage("DB tables `*_scripts` reloaded.");
+ HandleReloadDbScriptStringCommand(handler,"a");
+ HandleReloadWpScriptsCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllEventAICommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadEventAITextsCommand(handler,"a");
+ HandleReloadEventAISummonsCommand(handler,"a");
+ HandleReloadEventAIScriptsCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllSpellCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadSkillDiscoveryTemplateCommand(handler,"a");
+ HandleReloadSkillExtraItemTemplateCommand(handler,"a");
+ HandleReloadSpellRequiredCommand(handler,"a");
+ HandleReloadSpellAreaCommand(handler,"a");
+ HandleReloadSpellGroupsCommand(handler,"a");
+ HandleReloadSpellLearnSpellCommand(handler,"a");
+ HandleReloadSpellLinkedSpellCommand(handler,"a");
+ HandleReloadSpellProcEventCommand(handler,"a");
+ HandleReloadSpellBonusesCommand(handler,"a");
+ HandleReloadSpellTargetPositionCommand(handler,"a");
+ HandleReloadSpellThreatsCommand(handler,"a");
+ HandleReloadSpellGroupStackRulesCommand(handler,"a");
+ HandleReloadSpellPetAurasCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllGossipsCommand(ChatHandler* handler, const char* args)
+{
+ HandleReloadGossipMenuCommand(handler,"a");
+ HandleReloadGossipMenuOptionCommand(handler,"a");
+ if(*args != 'a') // already reload from all_scripts
+ HandleReloadGossipScriptsCommand(handler,"a");
+ HandleReloadNpcGossipCommand(handler,"a");
+ HandleReloadPointsOfInterestCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllItemCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadPageTextsCommand(handler,"a");
+ HandleReloadItemEnchantementsCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadAllLocalesCommand(ChatHandler* handler, const char* /*args*/)
+{
+ HandleReloadLocalesAchievementRewardCommand(handler,"a");
+ HandleReloadLocalesCreatureCommand(handler,"a");
+ HandleReloadLocalesGameobjectCommand(handler,"a");
+ HandleReloadLocalesGossipMenuOptionCommand(handler,"a");
+ HandleReloadLocalesItemCommand(handler,"a");
+ HandleReloadLocalesNpcTextCommand(handler,"a");
+ HandleReloadLocalesPageTextCommand(handler,"a");
+ HandleReloadLocalesPointsOfInterestCommand(handler,"a");
+ HandleReloadLocalesQuestCommand(handler,"a");
+ return true;
+}
+
+static bool HandleReloadConfigCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading config settings...");
+ sWorld.LoadConfigSettings(true);
+ sMapMgr.InitializeVisibilityDistanceInfo();
+ handler->SendGlobalGMSysMessage("World config settings reloaded.");
+ return true;
+}
+
+static bool HandleReloadAccessRequirementCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Access Requirement definitions...");
+ sObjectMgr.LoadAccessRequirements();
+ handler->SendGlobalGMSysMessage("DB table `access_requirement` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAchievementCriteriaDataCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Additional Achievement Criteria Data...");
+ sAchievementMgr.LoadAchievementCriteriaData();
+ handler->SendGlobalGMSysMessage("DB table `achievement_criteria_data` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAchievementRewardCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Achievement Reward Data...");
+ sAchievementMgr.LoadRewards();
+ handler->SendGlobalGMSysMessage("DB table `achievement_reward` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAreaTriggerTavernCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Tavern Area Triggers...");
+ sObjectMgr.LoadTavernAreaTriggers();
+ handler->SendGlobalGMSysMessage("DB table `areatrigger_tavern` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAreaTriggerTeleportCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading AreaTrigger teleport definitions...");
+ sObjectMgr.LoadAreaTriggerTeleports();
+ handler->SendGlobalGMSysMessage("DB table `areatrigger_teleport` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAutobroadcastCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Autobroadcast...");
+ sWorld.LoadAutobroadcasts();
+ handler->SendGlobalGMSysMessage("DB table `autobroadcast` reloaded.");
+ return true;
+}
+
+static bool HandleReloadCommandCommand(ChatHandler* handler, const char* /*args*/)
+{
+ handler->SetLoadCommandTable(true);
+ handler->SendGlobalGMSysMessage("DB table `command` will be reloaded at next chat command use.");
+ return true;
+}
+
+static bool HandleReloadOnKillReputationCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading creature award reputation definitions...");
+ sObjectMgr.LoadReputationOnKill();
+ handler->SendGlobalGMSysMessage("DB table `creature_onkill_reputation` reloaded.");
+ return true;
+}
+
+static bool HandleReloadCreatureTemplateCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ uint32 entry = (uint32) atoi((char*)args);
+ QueryResult result = WorldDatabase.PQuery("SELECT difficulty_entry_1,difficulty_entry_2,difficulty_entry_3,KillCredit1,KillCredit2,modelid1,modelid2,modelid3,modelid4,name,subname,IconName,gossip_menu_id,minlevel,maxlevel,exp,faction_A,faction_H,npcflag,speed_walk,speed_run,scale,rank,mindmg,maxdmg,dmgschool,attackpower,dmg_multiplier,baseattacktime,rangeattacktime,unit_class,unit_flags,dynamicflags,family,trainer_type,trainer_spell,trainer_class,trainer_race,minrangedmg,maxrangedmg,rangedattackpower,type,type_flags,lootid,pickpocketloot,skinloot,resistance1,resistance2,resistance3,resistance4,resistance5,resistance6,spell1,spell2,spell3,spell4,spell5,spell6,spell7,spell8,PetSpellDataId,VehicleId,mingold,maxgold,AIName,MovementType,InhabitType,Health_mod,Mana_mod,Armor_mod,RacialLeader,questItem1,questItem2,questItem3,questItem4,questItem5,questItem6,movementId,RegenHealth,equipment_id,mechanic_immune_mask,flags_extra,ScriptName FROM creature_template WHERE entry = %u", entry);
+ if (!result)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_CREATURETEMPLATE_NOTFOUND, entry);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo>(entry);
+ if (!cInfo)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_CREATURESTORAGE_NOTFOUND, entry);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ sLog.outString("Reloading creature template entry %u", entry);
+
+ Field *fields = result->Fetch();
+
+ const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[0] = fields[0].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[1] = fields[1].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->DifficultyEntry[2] = fields[2].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->KillCredit[0] = fields[3].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->KillCredit[1] = fields[4].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->Modelid1 = fields[5].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->Modelid2 = fields[6].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->Modelid3 = fields[7].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->Modelid4 = fields[8].GetUInt32();
+ size_t len = 0;
+ if (const char* temp = fields[9].GetCString())
+ {
+ delete[] cInfo->Name;
+ len = strlen(temp)+1;
+ const_cast<CreatureInfo*>(cInfo)->Name = new char[len];
+ strncpy(cInfo->Name, temp, len);
+ }
+ if (const char* temp = fields[10].GetCString())
+ {
+ delete[] cInfo->SubName;
+ len = strlen(temp)+1;
+ const_cast<CreatureInfo*>(cInfo)->SubName = new char[len];
+ strncpy(cInfo->SubName, temp, len);
+ }
+ if (const char* temp = fields[11].GetCString())
+ {
+ delete[] cInfo->IconName;
+ len = strlen(temp)+1;
+ const_cast<CreatureInfo*>(cInfo)->IconName = new char[len];
+ strncpy(cInfo->IconName, temp, len);
+ }
+ const_cast<CreatureInfo*>(cInfo)->GossipMenuId = fields[12].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->minlevel = fields[13].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->maxlevel = fields[14].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->expansion = fields[15].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->faction_A = fields[16].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->faction_H = fields[17].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->npcflag = fields[18].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->speed_walk = fields[19].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->speed_run = fields[20].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->scale = fields[21].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->rank = fields[22].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->mindmg = fields[23].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->maxdmg = fields[24].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->dmgschool = fields[25].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->attackpower = fields[26].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->dmg_multiplier = fields[27].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->baseattacktime = fields[28].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->rangeattacktime = fields[29].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->unit_class = fields[30].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->unit_flags = fields[31].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->dynamicflags = fields[32].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->family = fields[33].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->trainer_type = fields[34].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->trainer_spell = fields[35].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->trainer_class = fields[36].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->trainer_race = fields[37].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->minrangedmg = fields[38].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->maxrangedmg = fields[39].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->rangedattackpower = fields[40].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->type = fields[41].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->type_flags = fields[42].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->lootid = fields[43].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->pickpocketLootId = fields[44].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->SkinLootId = fields[45].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance1 = fields[46].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance2 = fields[47].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance3 = fields[48].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance4 = fields[49].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance5 = fields[50].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->resistance6 = fields[51].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[0] = fields[52].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[1] = fields[53].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[2] = fields[54].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[3] = fields[55].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[4] = fields[56].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[5] = fields[57].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[6] = fields[58].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->spells[7] = fields[59].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->PetSpellDataId = fields[60].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->VehicleId = fields[61].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->mingold = fields[62].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->maxgold = fields[63].GetUInt32();
+ if (const char* temp = fields[64].GetCString())
+ {
+ delete[] cInfo->AIName;
+ len = strlen(temp)+1;
+ const_cast<CreatureInfo*>(cInfo)->AIName = new char[len];
+ strncpy(const_cast<char*>(cInfo->AIName), temp, len);
+ }
+ const_cast<CreatureInfo*>(cInfo)->MovementType = fields[65].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->InhabitType = fields[66].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->ModHealth = fields[67].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->ModMana = fields[68].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->ModArmor = fields[69].GetFloat();
+ const_cast<CreatureInfo*>(cInfo)->RacialLeader = fields[70].GetBool();
+ const_cast<CreatureInfo*>(cInfo)->questItems[0] = fields[71].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->questItems[1] = fields[72].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->questItems[2] = fields[73].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->questItems[3] = fields[74].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->questItems[4] = fields[75].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->questItems[5] = fields[76].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->movementId = fields[77].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->RegenHealth = fields[78].GetBool();
+ const_cast<CreatureInfo*>(cInfo)->equipmentId = fields[79].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->MechanicImmuneMask = fields[80].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->flags_extra = fields[81].GetUInt32();
+ const_cast<CreatureInfo*>(cInfo)->ScriptID = sObjectMgr.GetScriptId(fields[82].GetCString());
+
+ sObjectMgr.CheckCreatureTemplate(cInfo);
+
+ handler->SendGlobalGMSysMessage("Creature template reloaded.");
+ return true;
+}
+
+static bool HandleReloadCreatureQuestRelationsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading Quests Relations... (`creature_questrelation`)");
+ sObjectMgr.LoadCreatureQuestRelations();
+ handler->SendGlobalGMSysMessage("DB table `creature_questrelation` (creature quest givers) reloaded.");
+ return true;
+}
+
+static bool HandleReloadCreatureLinkedRespawnCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading Linked Respawns... (`creature_linked_respawn`)");
+ sObjectMgr.LoadCreatureLinkedRespawn();
+ handler->SendGlobalGMSysMessage("DB table `creature_linked_respawn` (creature linked respawns) reloaded.");
+ return true;
+}
+
+static bool HandleReloadCreatureQuestInvRelationsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading Quests Relations... (`creature_involvedrelation`)");
+ sObjectMgr.LoadCreatureInvolvedRelations();
+ handler->SendGlobalGMSysMessage("DB table `creature_involvedrelation` (creature quest takers) reloaded.");
+ return true;
+}
+
+static bool HandleReloadGossipMenuCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `gossip_menu` Table!");
+ sObjectMgr.LoadGossipMenu();
+ handler->SendGlobalGMSysMessage("DB table `gossip_menu` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadGossipMenuOptionCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `gossip_menu_option` Table!");
+ sObjectMgr.LoadGossipMenuItems();
+ handler->SendGlobalGMSysMessage("DB table `gossip_menu_option` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadGOQuestRelationsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading Quests Relations... (`gameobject_questrelation`)");
+ sObjectMgr.LoadGameobjectQuestRelations();
+ handler->SendGlobalGMSysMessage("DB table `gameobject_questrelation` (gameobject quest givers) reloaded.");
+ return true;
+}
+
+static bool HandleReloadGOQuestInvRelationsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading Quests Relations... (`gameobject_involvedrelation`)");
+ sObjectMgr.LoadGameobjectInvolvedRelations();
+ handler->SendGlobalGMSysMessage("DB table `gameobject_involvedrelation` (gameobject quest takers) reloaded.");
+ return true;
+}
+
+static bool HandleReloadQuestAreaTriggersCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Quest Area Triggers...");
+ sObjectMgr.LoadQuestAreaTriggers();
+ handler->SendGlobalGMSysMessage("DB table `areatrigger_involvedrelation` (quest area triggers) reloaded.");
+ return true;
+}
+
+static bool HandleReloadQuestTemplateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Quest Templates...");
+ sObjectMgr.LoadQuests();
+ handler->SendGlobalGMSysMessage("DB table `quest_template` (quest definitions) reloaded.");
+
+ /// dependent also from `gameobject` but this table not reloaded anyway
+ sLog.outString("Re-Loading GameObjects for quests...");
+ sObjectMgr.LoadGameObjectForQuests();
+ handler->SendGlobalGMSysMessage("Data GameObjects for quests reloaded.");
+ return true;
+}
+
+static bool HandleReloadLootTemplatesCreatureCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`creature_loot_template`)");
+ LoadLootTemplates_Creature();
+ LootTemplates_Creature.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `creature_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesDisenchantCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`disenchant_loot_template`)");
+ LoadLootTemplates_Disenchant();
+ LootTemplates_Disenchant.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `disenchant_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesFishingCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`fishing_loot_template`)");
+ LoadLootTemplates_Fishing();
+ LootTemplates_Fishing.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `fishing_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesGameobjectCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`gameobject_loot_template`)");
+ LoadLootTemplates_Gameobject();
+ LootTemplates_Gameobject.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `gameobject_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesItemCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`item_loot_template`)");
+ LoadLootTemplates_Item();
+ LootTemplates_Item.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `item_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesMillingCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`milling_loot_template`)");
+ LoadLootTemplates_Milling();
+ LootTemplates_Milling.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `milling_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesPickpocketingCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`pickpocketing_loot_template`)");
+ LoadLootTemplates_Pickpocketing();
+ LootTemplates_Pickpocketing.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `pickpocketing_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesProspectingCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`prospecting_loot_template`)");
+ LoadLootTemplates_Prospecting();
+ LootTemplates_Prospecting.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `prospecting_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesMailCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`mail_loot_template`)");
+ LoadLootTemplates_Mail();
+ LootTemplates_Mail.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `mail_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesReferenceCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`reference_loot_template`)");
+ LoadLootTemplates_Reference();
+ handler->SendGlobalGMSysMessage("DB table `reference_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesSkinningCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`skinning_loot_template`)");
+ LoadLootTemplates_Skinning();
+ LootTemplates_Skinning.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `skinning_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadLootTemplatesSpellCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Loot Tables... (`spell_loot_template`)");
+ LoadLootTemplates_Spell();
+ LootTemplates_Spell.CheckLootRefs();
+ handler->SendGlobalGMSysMessage("DB table `spell_loot_template` reloaded.");
+ sConditionMgr.LoadConditions(true);
+ return true;
+}
+
+static bool HandleReloadTrinityStringCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading trinity_string Table!");
+ sObjectMgr.LoadTrinityStrings();
+ handler->SendGlobalGMSysMessage("DB table `trinity_string` reloaded.");
+ return true;
+}
+
+static bool HandleReloadNpcGossipCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `npc_gossip` Table!");
+ sObjectMgr.LoadNpcTextId();
+ handler->SendGlobalGMSysMessage("DB table `npc_gossip` reloaded.");
+ return true;
+}
+
+static bool HandleReloadNpcTrainerCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `npc_trainer` Table!");
+ sObjectMgr.LoadTrainerSpell();
+ handler->SendGlobalGMSysMessage("DB table `npc_trainer` reloaded.");
+ return true;
+}
+
+static bool HandleReloadNpcVendorCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `npc_vendor` Table!");
+ sObjectMgr.LoadVendors();
+ handler->SendGlobalGMSysMessage("DB table `npc_vendor` reloaded.");
+ return true;
+}
+
+static bool HandleReloadPointsOfInterestCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `points_of_interest` Table!");
+ sObjectMgr.LoadPointsOfInterest();
+ handler->SendGlobalGMSysMessage("DB table `points_of_interest` reloaded.");
+ return true;
+}
+
+static bool HandleReloadQuestPOICommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString( "Re-Loading Quest POI ..." );
+ sObjectMgr.LoadQuestPOI();
+ handler->SendGlobalGMSysMessage("DB Table `quest_poi` and `quest_poi_points` reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellClickSpellsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading `npc_spellclick_spells` Table!");
+ sObjectMgr.LoadNPCSpellClickSpells();
+ handler->SendGlobalGMSysMessage("DB table `npc_spellclick_spells` reloaded.");
+ return true;
+}
+
+static bool HandleReloadReservedNameCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Loading ReservedNames... (`reserved_name`)");
+ sObjectMgr.LoadReservedPlayersNames();
+ handler->SendGlobalGMSysMessage("DB table `reserved_name` (player reserved names) reloaded.");
+ return true;
+}
+
+static bool HandleReloadReputationRewardRateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString( "Re-Loading `reputation_reward_rate` Table!" );
+ sObjectMgr.LoadReputationRewardRate();
+ handler->SendGlobalSysMessage("DB table `reputation_reward_rate` reloaded.");
+ return true;
+}
+
+static bool HandleReloadReputationSpilloverTemplateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString( "Re-Loading `reputation_spillover_template` Table!" );
+ sObjectMgr.LoadReputationSpilloverTemplate();
+ handler->SendGlobalSysMessage("DB table `reputation_spillover_template` reloaded.");
+ return true;
+}
+
+static bool HandleReloadSkillDiscoveryTemplateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Skill Discovery Table...");
+ LoadSkillDiscoveryTable();
+ handler->SendGlobalGMSysMessage("DB table `skill_discovery_template` (recipes discovered at crafting) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSkillExtraItemTemplateCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Skill Extra Item Table...");
+ LoadSkillExtraItemTable();
+ handler->SendGlobalGMSysMessage("DB table `skill_extra_item_template` (extra item creation when crafting) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSkillFishingBaseLevelCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Skill Fishing base level requirements...");
+ sObjectMgr.LoadFishingBaseSkillLevel();
+ handler->SendGlobalGMSysMessage("DB table `skill_fishing_base_level` (fishing base level for zone/subzone) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellAreaCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading SpellArea Data...");
+ sSpellMgr.LoadSpellAreas();
+ handler->SendGlobalGMSysMessage("DB table `spell_area` (spell dependences from area/quest/auras state) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellRequiredCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Required Data... ");
+ sSpellMgr.LoadSpellRequired();
+ handler->SendGlobalGMSysMessage("DB table `spell_required` reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellGroupsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Groups...");
+ sSpellMgr.LoadSpellGroups();
+ handler->SendGlobalGMSysMessage("DB table `spell_group` (spell groups) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellLearnSpellCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Learn Spells...");
+ sSpellMgr.LoadSpellLearnSpells();
+ handler->SendGlobalGMSysMessage("DB table `spell_learn_spell` reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellLinkedSpellCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Linked Spells...");
+ sSpellMgr.LoadSpellLinked();
+ handler->SendGlobalGMSysMessage("DB table `spell_linked_spell` reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellProcEventCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Proc Event conditions...");
+ sSpellMgr.LoadSpellProcEvents();
+ handler->SendGlobalGMSysMessage("DB table `spell_proc_event` (spell proc trigger requirements) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellBonusesCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Bonus Data...");
+ sSpellMgr.LoadSpellBonusess();
+ handler->SendGlobalGMSysMessage("DB table `spell_bonus_data` (spell damage/healing coefficients) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellTargetPositionCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell target coordinates...");
+ sSpellMgr.LoadSpellTargetPositions();
+ handler->SendGlobalGMSysMessage("DB table `spell_target_position` (destination coordinates for spell targets) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellThreatsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Aggro Spells Definitions...");
+ sSpellMgr.LoadSpellThreats();
+ handler->SendGlobalGMSysMessage("DB table `spell_threat` (spell aggro definitions) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellGroupStackRulesCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell Group Stack Rules...");
+ sSpellMgr.LoadSpellGroupStackRules();
+ handler->SendGlobalGMSysMessage("DB table `spell_group_stack_rules` (spell stacking definitions) reloaded.");
+ return true;
+}
+
+static bool HandleReloadSpellPetAurasCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Spell pet auras...");
+ sSpellMgr.LoadSpellPetAuras();
+ handler->SendGlobalGMSysMessage("DB table `spell_pet_auras` reloaded.");
+ return true;
+}
+
+static bool HandleReloadPageTextsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Page Texts...");
+ sObjectMgr.LoadPageTexts();
+ handler->SendGlobalGMSysMessage("DB table `page_texts` reloaded.");
+ return true;
+}
+
+static bool HandleReloadItemEnchantementsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Item Random Enchantments Table...");
+ LoadRandomEnchantmentsTable();
+ handler->SendGlobalGMSysMessage("DB table `item_enchantment_template` reloaded.");
+ return true;
+}
+
+static bool HandleReloadItemSetNamesCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Item set names...");
+ LoadRandomEnchantmentsTable();
+ handler->SendGlobalGMSysMessage("DB table `item_set_names` reloaded.");
+ return true;
+}
+
+static bool HandleReloadGossipScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `gossip_scripts`...");
+
+ sObjectMgr.LoadGossipScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `gossip_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadGameObjectScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `gameobject_scripts`...");
+
+ sObjectMgr.LoadGameObjectScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `gameobject_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadEventScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `event_scripts`...");
+
+ sObjectMgr.LoadEventScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `event_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadWpScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `waypoint_scripts`...");
+
+ sObjectMgr.LoadWaypointScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `waypoint_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadEventAITextsCommand(ChatHandler* handler, const char* /*args*/)
+{
+
+ sLog.outString("Re-Loading Texts from `creature_ai_texts`...");
+ sEventAIMgr.LoadCreatureEventAI_Texts();
+ handler->SendGlobalGMSysMessage("DB table `creature_ai_texts` reloaded.");
+ return true;
+}
+
+static bool HandleReloadEventAISummonsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Summons from `creature_ai_summons`...");
+ sEventAIMgr.LoadCreatureEventAI_Summons();
+ handler->SendGlobalGMSysMessage("DB table `creature_ai_summons` reloaded.");
+ return true;
+}
+
+static bool HandleReloadEventAIScriptsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Scripts from `creature_ai_scripts`...");
+ sEventAIMgr.LoadCreatureEventAI_Scripts();
+ handler->SendGlobalGMSysMessage("DB table `creature_ai_scripts` reloaded.");
+ return true;
+}
+
+static bool HandleReloadQuestEndScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `quest_end_scripts`...");
+
+ sObjectMgr.LoadQuestEndScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `quest_end_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadQuestStartScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `quest_start_scripts`...");
+
+ sObjectMgr.LoadQuestStartScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `quest_start_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadSpellScriptsCommand(ChatHandler* handler, const char* args)
+{
+ if (sWorld.IsScriptScheduled())
+ {
+ handler->SendSysMessage("DB scripts used currently, please attempt reload later.");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (*args != 'a')
+ sLog.outString("Re-Loading Scripts from `spell_scripts`...");
+
+ sObjectMgr.LoadSpellScripts();
+
+ if (*args != 'a')
+ handler->SendGlobalGMSysMessage("DB table `spell_scripts` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadDbScriptStringCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Script strings from `db_script_string`...");
+ sObjectMgr.LoadDbScriptStrings();
+ handler->SendGlobalGMSysMessage("DB table `db_script_string` reloaded.");
+ return true;
+}
+
+static bool HandleReloadGameGraveyardZoneCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Graveyard-zone links...");
+
+ sObjectMgr.LoadGraveyardZones();
+
+ handler->SendGlobalGMSysMessage("DB table `game_graveyard_zone` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadGameTeleCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Game Tele coordinates...");
+
+ sObjectMgr.LoadGameTele();
+
+ handler->SendGlobalGMSysMessage("DB table `game_tele` reloaded.");
+
+ return true;
+}
+
+static bool HandleReloadDisablesCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading disables table...");
+ sDisableMgr.LoadDisables();
+ sLog.outString("Checking quest disables...");
+ sDisableMgr.CheckQuestDisables();
+ handler->SendGlobalGMSysMessage("DB table `disables` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesAchievementRewardCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Achievement Reward Data...");
+ sAchievementMgr.LoadRewardLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_achievement_reward` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLfgEncountersCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading dungeon encounter lfg associations...");
+ sLFGMgr.LoadDungeonEncounters();
+ handler->SendGlobalGMSysMessage("DB table `lfg_dungeon_encounters` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLfgRewardsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading lfg dungeon rewards...");
+ sLFGMgr.LoadRewards();
+ handler->SendGlobalGMSysMessage("DB table `lfg_dungeon_rewards` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesCreatureCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Creature ...");
+ sObjectMgr.LoadCreatureLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_creature` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesGameobjectCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Gameobject ... ");
+ sObjectMgr.LoadGameObjectLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_gameobject` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesGossipMenuOptionCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString( "Re-Loading Locales Gossip Menu Option ... ");
+ sObjectMgr.LoadGossipMenuItemsLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_gossip_menu_option` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesItemCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Item ... ");
+ sObjectMgr.LoadItemLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_item` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesItemSetNameCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Item set name... ");
+ sObjectMgr.LoadItemSetNameLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_item_set_name` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesNpcTextCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales NPC Text ... ");
+ sObjectMgr.LoadNpcTextLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_npc_text` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesPageTextCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Page Text ... ");
+ sObjectMgr.LoadPageTextLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_page_text` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesPointsOfInterestCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Points Of Interest ... ");
+ sObjectMgr.LoadPointOfInterestLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_points_of_interest` reloaded.");
+ return true;
+}
+
+static bool HandleReloadLocalesQuestCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Locales Quest ... ");
+ sObjectMgr.LoadQuestLocales();
+ handler->SendGlobalGMSysMessage("DB table `locales_quest` reloaded.");
+ return true;
+}
+
+static bool HandleReloadMailLevelRewardCommand(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Player level dependent mail rewards...");
+ sObjectMgr.LoadMailLevelRewards();
+ handler->SendGlobalGMSysMessage("DB table `mail_level_reward` reloaded.");
+ return true;
+}
+
+static bool HandleReloadAuctionsCommand(ChatHandler* handler, const char* /*args*/)
+{
+ ///- Reload dynamic data tables from the database
+ sLog.outString("Re-Loading Auctions...");
+ sAuctionMgr.LoadAuctionItems();
+ sAuctionMgr.LoadAuctions();
+ handler->SendGlobalGMSysMessage("Auctions reloaded.");
+ return true;
+}
+
+static bool HandleReloadConditions(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Conditions...");
+ sConditionMgr.LoadConditions(true);
+ handler->SendGlobalGMSysMessage("Conditions reloaded.");
+ return true;
+}
+
+static bool HandleReloadCreatureText(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Creature Texts...");
+ sCreatureTextMgr.LoadCreatureTexts();
+ handler->SendGlobalGMSysMessage("Creature Texts reloaded.");
+ return true;
+}
+
+static bool HandleReloadSmartScripts(ChatHandler* handler, const char* /*args*/)
+{
+ sLog.outString("Re-Loading Smart Scripts...");
+ sSmartScriptMgr.LoadSmartAIFromDB();
+ handler->SendGlobalGMSysMessage("Smart Scripts reloaded.");
+ return true;
+}
+
+};
+
+void AddSC_reload_commandscript()
+{
+ new reload_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp
new file mode 100644
index 00000000000..cf7bb4f828d
--- /dev/null
+++ b/src/server/scripts/Commands/cs_titles.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: titles_commandscript
+%Complete: 100
+Comment: All titles related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "ObjectMgr.h"
+#include "Chat.h"
+
+class titles_commandscript : public CommandScript
+{
+ public:
+ titles_commandscript() : CommandScript("titles_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand titlesSetCommandTable[] =
+ {
+ { "mask", SEC_GAMEMASTER, false, &HandleTitlesSetMaskCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand titlesCommandTable[] =
+ {
+ { "add", SEC_GAMEMASTER, false, &HandleTitlesAddCommand, "", NULL },
+ { "current", SEC_GAMEMASTER, false, &HandleTitlesCurrentCommand, "", NULL },
+ { "remove", SEC_GAMEMASTER, false, &HandleTitlesRemoveCommand, "", NULL },
+ { "set", SEC_GAMEMASTER, false, NULL, "", titlesSetCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "titles", SEC_GAMEMASTER, false, NULL, "", titlesCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+static bool HandleTitlesCurrentCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
+ char* id_p = handler->extractKeyFromLink((char*)args,"Htitle");
+ if (!id_p)
+ return false;
+
+ int32 id = atoi(id_p);
+ if (id <= 0)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ Player * target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
+ if (!titleInfo)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ std::string tNameLink = handler->GetNameLink(target);
+
+ target->SetTitle(titleInfo); // to be sure that title now known
+ target->SetUInt32Value(PLAYER_CHOSEN_TITLE,titleInfo->bit_index);
+
+ handler->PSendSysMessage(LANG_TITLE_CURRENT_RES, id, titleInfo->name[handler->GetSessionDbcLocale()], tNameLink.c_str());
+
+ return true;
+}
+
+static bool HandleTitlesAddCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
+ char* id_p = handler->extractKeyFromLink((char*)args,"Htitle");
+ if (!id_p)
+ return false;
+
+ int32 id = atoi(id_p);
+ if (id <= 0)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ Player * target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
+ if (!titleInfo)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ std::string tNameLink = handler->GetNameLink(target);
+
+ char const* targetName = target->GetName();
+ char titleNameStr[80];
+ snprintf(titleNameStr,80,titleInfo->name[handler->GetSessionDbcLocale()],targetName);
+
+ target->SetTitle(titleInfo);
+ handler->PSendSysMessage(LANG_TITLE_ADD_RES, id, titleNameStr, tNameLink.c_str());
+
+ return true;
+}
+
+static bool HandleTitlesRemoveCommand(ChatHandler* handler, const char* args)
+{
+ // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
+ char* id_p = handler->extractKeyFromLink((char*)args,"Htitle");
+ if (!id_p)
+ return false;
+
+ int32 id = atoi(id_p);
+ if (id <= 0)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ Player * target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
+ if (!titleInfo)
+ {
+ handler->PSendSysMessage(LANG_INVALID_TITLE_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ target->SetTitle(titleInfo,true);
+
+ std::string tNameLink = handler->GetNameLink(target);
+
+ char const* targetName = target->GetName();
+ char titleNameStr[80];
+ snprintf(titleNameStr,80,titleInfo->name[handler->GetSessionDbcLocale()],targetName);
+
+ handler->PSendSysMessage(LANG_TITLE_REMOVE_RES, id, titleNameStr, tNameLink.c_str());
+
+ if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE)))
+ {
+ target->SetUInt32Value(PLAYER_CHOSEN_TITLE,0);
+ handler->PSendSysMessage(LANG_CURRENT_TITLE_RESET, tNameLink.c_str());
+ }
+
+ return true;
+}
+
+//Edit Player KnownTitles
+static bool HandleTitlesSetMaskCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ uint64 titles = 0;
+
+ sscanf((char*)args, UI64FMTD, &titles);
+
+ Player *target = handler->getSelectedPlayer();
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // check online security
+ if (handler->HasLowerSecurity(target, 0))
+ return false;
+
+ uint64 titles2 = titles;
+
+ for (uint32 i = 1; i < sCharTitlesStore.GetNumRows(); ++i)
+ if (CharTitlesEntry const* tEntry = sCharTitlesStore.LookupEntry(i))
+ titles2 &= ~(uint64(1) << tEntry->bit_index);
+
+ titles &= ~titles2; // remove not existed titles
+
+ target->SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES, titles);
+ handler->SendSysMessage(LANG_DONE);
+
+ if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE)))
+ {
+ target->SetUInt32Value(PLAYER_CHOSEN_TITLE,0);
+ handler->PSendSysMessage(LANG_CURRENT_TITLE_RESET,handler->GetNameLink(target).c_str());
+ }
+
+ return true;
+}
+
+};
+
+void AddSC_titles_commandscript()
+{
+ new titles_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp
new file mode 100644
index 00000000000..3aac13b5911
--- /dev/null
+++ b/src/server/scripts/Commands/cs_wp.cpp
@@ -0,0 +1,981 @@
+/*
+ * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+/* ScriptData
+Name: wp_commandscript
+%Complete: 100
+Comment: All wp related commands
+Category: commandscripts
+EndScriptData */
+
+#include "ScriptMgr.h"
+#include "ObjectMgr.h"
+#include "WaypointManager.h"
+#include "Chat.h"
+
+class wp_commandscript : public CommandScript
+{
+ public:
+ wp_commandscript() : CommandScript("wp_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand wpCommandTable[] =
+ {
+ { "add", SEC_GAMEMASTER, false, &HandleWpAddCommand, "", NULL },
+ { "event", SEC_GAMEMASTER, false, &HandleWpEventCommand, "", NULL },
+ { "load", SEC_GAMEMASTER, false, &HandleWpLoadCommand, "", NULL },
+ { "modify", SEC_GAMEMASTER, false, &HandleWpModifyCommand, "", NULL },
+ { "unload", SEC_GAMEMASTER, false, &HandleWpUnLoadCommand, "", NULL },
+ { "reload", SEC_ADMINISTRATOR, false, &HandleWpReloadCommand, "", NULL },
+ { "show", SEC_GAMEMASTER, false, &HandleWpShowCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ static ChatCommand commandTable[] =
+ {
+ { "wp", SEC_GAMEMASTER, false, NULL, "", wpCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+/**
+ * Add a waypoint to a creature.
+ *
+ * The user can either select an npc or provide its GUID.
+ *
+ * The user can even select a visual waypoint - then the new waypoint
+ * is placed *after* the selected one - this makes insertion of new
+ * waypoints possible.
+ *
+ * eg:
+ * .wp add 12345
+ * -> adds a waypoint to the npc with the GUID 12345
+ *
+ * .wp add
+ * -> adds a waypoint to the currently selected creature
+ *
+ *
+ * @param args if the user did not provide a GUID, it is NULL
+ *
+ * @return true - command did succeed, false - something went wrong
+ */
+static bool HandleWpAddCommand(ChatHandler* handler, const char* args)
+{
+ sLog.outDebug("DEBUG: HandleWpAddCommand");
+
+ // optional
+ char* path_number = NULL;
+ uint32 pathid = 0;
+
+ if (*args)
+ path_number = strtok((char*)args, " ");
+
+ uint32 point = 0;
+ Creature* target = handler->getSelectedCreature();
+
+ if (!path_number)
+ {
+ if (target)
+ pathid = target->GetWaypointPath();
+ else
+ {
+ QueryResult result = WorldDatabase.Query("SELECT MAX(id) FROM waypoint_data");
+ uint32 maxpathid = result->Fetch()->GetInt32();
+ pathid = maxpathid+1;
+ sLog.outDebug("DEBUG: HandleWpAddCommand - New path started.");
+ handler->PSendSysMessage("%s%s|r", "|cff00ff00", "New path started.");
+ }
+ }
+ else
+ pathid = atoi(path_number);
+
+ // path_id -> ID of the Path
+ // point -> number of the waypoint (if not 0)
+
+ if (!pathid)
+ {
+ sLog.outDebug("DEBUG: HandleWpAddCommand - Current creature haven't loaded path.");
+ handler->PSendSysMessage("%s%s|r", "|cffff33ff", "Current creature haven't loaded path.");
+ return true;
+ }
+
+ sLog.outDebug("DEBUG: HandleWpAddCommand - point == 0");
+
+ QueryResult result = WorldDatabase.PQuery("SELECT MAX(point) FROM waypoint_data WHERE id = '%u'",pathid);
+
+ if (result)
+ point = (*result)[0].GetUInt32();
+
+ Player* player = handler->GetSession()->GetPlayer();
+ //Map *map = player->GetMap();
+
+ WorldDatabase.PExecute("INSERT INTO waypoint_data (id, point, position_x, position_y, position_z) VALUES ('%u','%u','%f', '%f', '%f')",
+ pathid, point+1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
+
+ handler->PSendSysMessage("%s%s%u%s%u%s|r", "|cff00ff00", "PathID: |r|cff00ffff", pathid, "|r|cff00ff00: Waypoint |r|cff00ffff", point+1,"|r|cff00ff00 created. ");
+ return true;
+} // HandleWpAddCommand
+
+static bool HandleWpLoadCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ // optional
+ char* path_number = NULL;
+
+ if (*args)
+ path_number = strtok((char*)args, " ");
+
+ uint32 pathid = 0;
+ uint32 guidlow = 0;
+ Creature* target = handler->getSelectedCreature();
+
+ // Did player provide a path_id?
+ if (!path_number)
+ sLog.outDebug("DEBUG: HandleWpLoadPathCommand - No path number provided");
+
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_SELECT_CREATURE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (target->GetEntry() == 1)
+ {
+ handler->PSendSysMessage("%s%s|r", "|cffff33ff", "You want to load path to a waypoint? Aren't you?");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ pathid = atoi(path_number);
+
+ if (!pathid)
+ {
+ handler->PSendSysMessage("%s%s|r", "|cffff33ff", "No vallid path number provided.");
+ return true;
+ }
+
+ guidlow = target->GetDBTableGUIDLow();
+ QueryResult result = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = '%u'",guidlow);
+
+ if (result)
+ WorldDatabase.PExecute("UPDATE creature_addon SET path_id = '%u' WHERE guid = '%u'", pathid, guidlow);
+ else
+ WorldDatabase.PExecute("INSERT INTO creature_addon(guid,path_id) VALUES ('%u','%u')", guidlow, pathid);
+
+ WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE, guidlow);
+
+ target->LoadPath(pathid);
+ target->SetDefaultMovementType(WAYPOINT_MOTION_TYPE);
+ target->GetMotionMaster()->Initialize();
+ target->MonsterSay("Path loaded.",0,0);
+
+ return true;
+}
+
+static bool HandleWpReloadCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ uint32 id = atoi(args);
+
+ if (!id)
+ return false;
+
+ handler->PSendSysMessage("%s%s|r|cff00ffff%u|r", "|cff00ff00", "Loading Path: ", id);
+ sWaypointMgr->UpdatePath(id);
+ return true;
+}
+static bool HandleWpUnLoadCommand(ChatHandler* handler, const char* /*args*/)
+{
+ uint32 guidlow = 0;
+ Creature* target = handler->getSelectedCreature();
+
+ if (!target)
+ {
+ handler->PSendSysMessage("%s%s|r", "|cff33ffff", "You must select target.");
+ return true;
+ }
+
+ if (target->GetCreatureAddon())
+ {
+ if (target->GetCreatureAddon()->path_id != 0)
+ {
+ WorldDatabase.PExecute("DELETE FROM creature_addon WHERE guid = %u", target->GetGUIDLow());
+ target->UpdateWaypointID(0);
+ WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", IDLE_MOTION_TYPE, guidlow);
+ target->LoadPath(0);
+ target->SetDefaultMovementType(IDLE_MOTION_TYPE);
+ target->GetMotionMaster()->MoveTargetedHome();
+ target->GetMotionMaster()->Initialize();
+ target->MonsterSay("Path unloaded.",0,0);
+ return true;
+ }
+ handler->PSendSysMessage("%s%s|r", "|cffff33ff", "Target have no loaded path.");
+ }
+ return true;
+}
+
+static bool HandleWpEventCommand(ChatHandler* handler, const char* args)
+{
+ if (!*args)
+ return false;
+
+ char* show_str = strtok((char*)args, " ");
+ std::string show = show_str;
+
+ // Check
+ if ((show != "add") && (show != "mod") && (show != "del") && (show != "listid")) return false;
+
+ char* arg_id = strtok(NULL, " ");
+ uint32 id = 0;
+
+ if (show == "add")
+ {
+ if (arg_id)
+ id = atoi(arg_id);
+
+ if (id)
+ {
+ QueryResult result = WorldDatabase.PQuery("SELECT id FROM waypoint_scripts WHERE guid = %u", id);
+
+ if (!result)
+ {
+ WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id);
+ handler->PSendSysMessage("%s%s%u|r", "|cff00ff00", "Wp Event: New waypoint event added: ", id);
+ }
+ else
+ handler->PSendSysMessage("|cff00ff00Wp Event: You have choosed an existing waypoint script guid: %u|r", id);
+ }
+ else
+ {
+ QueryResult result = WorldDatabase.Query("SELECT MAX(guid) FROM waypoint_scripts");
+ id = result->Fetch()->GetUInt32();
+ WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id+1);
+ handler->PSendSysMessage("%s%s%u|r", "|cff00ff00","Wp Event: New waypoint event added: |r|cff00ffff", id+1);
+ }
+
+ return true;
+ }
+
+ if (show == "listid")
+ {
+ if (!arg_id)
+ {
+ handler->PSendSysMessage("%s%s|r", "|cff33ffff","Wp Event: You must provide waypoint script id.");
+ return true;
+ }
+
+ id = atoi(arg_id);
+
+ uint32 a2, a3, a4, a5, a6;
+ float a8, a9, a10, a11;
+ char const* a7;
+
+ QueryResult result = WorldDatabase.PQuery("SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = %u", id);
+
+ if (!result)
+ {
+ handler->PSendSysMessage("%s%s%u|r", "|cff33ffff", "Wp Event: No waypoint scripts found on id: ", id);
+ return true;
+ }
+
+ Field *fields;
+
+ do
+ {
+ fields = result->Fetch();
+ a2 = fields[0].GetUInt32();
+ a3 = fields[1].GetUInt32();
+ a4 = fields[2].GetUInt32();
+ a5 = fields[3].GetUInt32();
+ a6 = fields[4].GetUInt32();
+ a7 = fields[5].GetCString();
+ a8 = fields[6].GetFloat();
+ a9 = fields[7].GetFloat();
+ a10 = fields[8].GetFloat();
+ a11 = fields[9].GetFloat();
+
+ handler->PSendSysMessage("|cffff33ffid:|r|cff00ffff %u|r|cff00ff00, guid: |r|cff00ffff%u|r|cff00ff00, delay: |r|cff00ffff%u|r|cff00ff00, command: |r|cff00ffff%u|r|cff00ff00, datalong: |r|cff00ffff%u|r|cff00ff00, datalong2: |r|cff00ffff%u|r|cff00ff00, datatext: |r|cff00ffff%s|r|cff00ff00, posx: |r|cff00ffff%f|r|cff00ff00, posy: |r|cff00ffff%f|r|cff00ff00, posz: |r|cff00ffff%f|r|cff00ff00, orientation: |r|cff00ffff%f|r", id, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ }
+ while (result->NextRow());
+ }
+
+ if (show == "del")
+ {
+ id = atoi(arg_id);
+
+ QueryResult result = WorldDatabase.PQuery("SELECT guid FROM waypoint_scripts WHERE guid = %u", id);
+
+ if (result)
+ {
+ WorldDatabase.PExecute("DELETE FROM waypoint_scripts WHERE guid = %u", id);
+ handler->PSendSysMessage("%s%s%u|r","|cff00ff00","Wp Event: Waypoint script removed: ", id);
+ }
+ else
+ handler->PSendSysMessage("|cffff33ffWp Event: ERROR: you have selected a non existing script: %u|r", id);
+
+ return true;
+ }
+
+ if (show == "mod")
+ {
+ if (!arg_id)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: Waypoint script guid not present.|r");
+ return true;
+ }
+
+ id = atoi(arg_id);
+
+ if (!id)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: No vallid waypoint script id not present.|r");
+ return true;
+ }
+
+ char* arg_2 = strtok(NULL," ");
+
+ if (!arg_2)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: No argument present.|r");
+ return true;
+ }
+
+ std::string arg_string = arg_2;
+
+ if ((arg_string != "setid") && (arg_string != "delay") && (arg_string != "command")
+ && (arg_string != "datalong") && (arg_string != "datalong2") && (arg_string != "dataint") && (arg_string != "posx")
+ && (arg_string != "posy") && (arg_string != "posz") && (arg_string != "orientation"))
+ {
+ handler->SendSysMessage("|cffff33ffERROR: No valid argument present.|r");
+ return true;
+ }
+
+ char* arg_3;
+ std::string arg_str_2 = arg_2;
+ arg_3 = strtok(NULL," ");
+
+ if (!arg_3)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: No additional argument present.|r");
+ return true;
+ }
+
+ float coord;
+
+ if (arg_str_2 == "setid")
+ {
+ uint32 newid = atoi(arg_3);
+ handler->PSendSysMessage("%s%s|r|cff00ffff%u|r|cff00ff00%s|r|cff00ffff%u|r","|cff00ff00","Wp Event: Wypoint scipt guid: ", newid," id changed: ", id);
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET id='%u' WHERE guid='%u'",
+ newid, id); return true;
+ }
+ else
+ {
+ QueryResult result = WorldDatabase.PQuery("SELECT id FROM waypoint_scripts WHERE guid='%u'",id);
+
+ if (!result)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: You have selected an non existing waypoint script guid.|r");
+ return true;
+ }
+
+ if (arg_str_2 == "posx")
+ {
+ coord = (float)(atof(arg_3));
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET x='%f' WHERE guid='%u'",
+ coord, id);
+ handler->PSendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff %u|r|cff00ff00 position_x updated.|r", id);
+ return true;
+ }
+ else if (arg_str_2 == "posy")
+ {
+ coord = (float)(atof(arg_3));
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET y='%f' WHERE guid='%u'",
+ coord, id);
+ handler->PSendSysMessage("|cff00ff00Waypoint script: %u position_y updated.|r", id);
+ return true;
+ }
+ else if (arg_str_2 == "posz")
+ {
+ coord = (float)(atof(arg_3));
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET z='%f' WHERE guid='%u'",
+ coord, id);
+ handler->PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 position_z updated.|r", id);
+ return true;
+ }
+ else if (arg_str_2 == "orientation")
+ {
+ coord = (float)(atof(arg_3));
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET o='%f' WHERE guid='%u'",
+ coord, id);
+ handler->PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 orientation updated.|r", id);
+ return true;
+ }
+ else if (arg_str_2 == "dataint")
+ {
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%u' WHERE guid='%u'",
+ arg_2, atoi(arg_3), id);
+ handler->PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 dataint updated.|r", id);
+ return true;
+ }
+ else
+ {
+ std::string arg_str_3 = arg_3;
+ WorldDatabase.escape_string(arg_str_3);
+ WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%s' WHERE guid='%u'",
+ arg_2, arg_str_3.c_str(), id);
+ }
+ }
+ handler->PSendSysMessage("%s%s|r|cff00ffff%u:|r|cff00ff00 %s %s|r","|cff00ff00","Waypoint script:", id, arg_2,"updated.");
+ }
+ return true;
+}
+
+static bool HandleWpModifyCommand(ChatHandler* handler, const char* args)
+{
+ sLog.outDebug("DEBUG: HandleWpModifyCommand");
+
+ if (!*args)
+ return false;
+
+ // first arg: add del text emote spell waittime move
+ char* show_str = strtok((char*)args, " ");
+ if (!show_str)
+ {
+ return false;
+ }
+
+ std::string show = show_str;
+ // Check
+ // Remember: "show" must also be the name of a column!
+ if ((show != "delay") && (show != "action") && (show != "action_chance")
+ && (show != "move_flag") && (show != "del") && (show != "move") && (show != "wpadd")
+)
+ {
+ return false;
+ }
+
+ // Next arg is: <PATHID> <WPNUM> <ARGUMENT>
+ char* arg_str = NULL;
+
+ // Did user provide a GUID
+ // or did the user select a creature?
+ // -> variable lowguid is filled with the GUID of the NPC
+ uint32 pathid = 0;
+ uint32 point = 0;
+ uint32 wpGuid = 0;
+ Creature* target = handler->getSelectedCreature();
+
+ if (!target || target->GetEntry() != VISUAL_WAYPOINT)
+ {
+ handler->SendSysMessage("|cffff33ffERROR: You must select a waypoint.|r");
+ return false;
+ }
+
+ sLog.outDebug("DEBUG: HandleWpModifyCommand - User did select an NPC");
+ // The visual waypoint
+ Creature* wpCreature = NULL;
+ wpGuid = target->GetGUIDLow();
+
+ // Did the user select a visual spawnpoint?
+ if (wpGuid)
+ wpCreature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
+ // attempt check creature existence by DB data
+ else
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_CREATNOTFOUND, wpGuid);
+ return false;
+ }
+ // User did select a visual waypoint?
+ // Check the creature
+ if (wpCreature->GetEntry() == VISUAL_WAYPOINT)
+ {
+ QueryResult result = WorldDatabase.PQuery("SELECT id, point FROM waypoint_data WHERE wpguid = %u", wpGuid);
+
+ if (!result)
+ {
+ sLog.outDebug("DEBUG: HandleWpModifyCommand - No waypoint found - used 'wpguid'");
+
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTFOUNDSEARCH, target->GetGUIDLow());
+ // Select waypoint number from database
+ // Since we compare float values, we have to deal with
+ // some difficulties.
+ // Here we search for all waypoints that only differ in one from 1 thousand
+ // (0.001) - There is no other way to compare C++ floats with mySQL floats
+ // See also: http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
+ const char* maxDIFF = "0.01";
+ result = WorldDatabase.PQuery("SELECT id, point FROM waypoint_data WHERE (abs(position_x - %f) <= %s) and (abs(position_y - %f) <= %s) and (abs(position_z - %f) <= %s)",
+ wpCreature->GetPositionX(), maxDIFF, wpCreature->GetPositionY(), maxDIFF, wpCreature->GetPositionZ(), maxDIFF);
+ if (!result)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTFOUNDDBPROBLEM, wpGuid);
+ return true;
+ }
+ }
+ sLog.outDebug("DEBUG: HandleWpModifyCommand - After getting wpGuid");
+
+ do
+ {
+ Field *fields = result->Fetch();
+ pathid = fields[0].GetUInt32();
+ point = fields[1].GetUInt32();
+ }
+ while (result->NextRow());
+
+ // We have the waypoint number and the GUID of the "master npc"
+ // Text is enclosed in "<>", all other arguments not
+ arg_str = strtok((char*)NULL, " ");
+ }
+
+ sLog.outDebug("DEBUG: HandleWpModifyCommand - Parameters parsed - now execute the command");
+
+ // Check for argument
+ if (show != "del" && show != "move" && arg_str == NULL)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_ARGUMENTREQ, show_str);
+ return false;
+ }
+
+ if (show == "del" && target)
+ {
+ handler->PSendSysMessage("|cff00ff00DEBUG: wp modify del, PathID: |r|cff00ffff%u|r", pathid);
+
+ // wpCreature
+ Creature* wpCreature = NULL;
+
+ if (wpGuid != 0)
+ {
+ wpCreature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
+ wpCreature->CombatStop();
+ wpCreature->DeleteFromDB();
+ wpCreature->AddObjectToRemoveList();
+ }
+
+ WorldDatabase.PExecute("DELETE FROM waypoint_data WHERE id='%u' AND point='%u'",
+ pathid, point);
+ WorldDatabase.PExecute("UPDATE waypoint_data SET point=point-1 WHERE id='%u' AND point>'%u'",
+ pathid, point);
+
+ handler->PSendSysMessage(LANG_WAYPOINT_REMOVED);
+ return true;
+ } // del
+
+ if (show == "move" && target)
+ {
+ handler->PSendSysMessage("|cff00ff00DEBUG: wp move, PathID: |r|cff00ffff%u|r", pathid);
+
+ Player *chr = handler->GetSession()->GetPlayer();
+ Map *map = chr->GetMap();
+ {
+ // wpCreature
+ Creature* wpCreature = NULL;
+ // What to do:
+ // Move the visual spawnpoint
+ // Respawn the owner of the waypoints
+ if (wpGuid != 0)
+ {
+ wpCreature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT));
+ wpCreature->CombatStop();
+ wpCreature->DeleteFromDB();
+ wpCreature->AddObjectToRemoveList();
+ // re-create
+ Creature* wpCreature2 = new Creature;
+ if (!wpCreature2->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), VISUAL_WAYPOINT, 0, 0, chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), chr->GetOrientation()))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
+ delete wpCreature2;
+ return false;
+ }
+
+ wpCreature2->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
+ // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
+ wpCreature2->LoadFromDB(wpCreature2->GetDBTableGUIDLow(), map);
+ map->Add(wpCreature2);
+ //sMapMgr.GetMap(npcCreature->GetMapId())->Add(wpCreature2);
+ }
+
+ WorldDatabase.PExecute("UPDATE waypoint_data SET position_x = '%f',position_y = '%f',position_z = '%f' where id = '%u' AND point='%u'",
+ chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), pathid, point);
+
+ handler->PSendSysMessage(LANG_WAYPOINT_CHANGED);
+ }
+ return true;
+ } // move
+
+ const char *text = arg_str;
+
+ if (text == 0)
+ {
+ // show_str check for present in list of correct values, no sql injection possible
+ WorldDatabase.PExecute("UPDATE waypoint_data SET %s=NULL WHERE id='%u' AND point='%u'",
+ show_str, pathid, point);
+ }
+ else
+ {
+ // show_str check for present in list of correct values, no sql injection possible
+ std::string text2 = text;
+ WorldDatabase.escape_string(text2);
+ WorldDatabase.PExecute("UPDATE waypoint_data SET %s='%s' WHERE id='%u' AND point='%u'",
+ show_str, text2.c_str(), pathid, point);
+ }
+
+ handler->PSendSysMessage(LANG_WAYPOINT_CHANGED_NO, show_str);
+ return true;
+}
+
+static bool HandleWpShowCommand(ChatHandler* handler, const char* args)
+{
+ sLog.outDebug("DEBUG: HandleWpShowCommand");
+
+ if (!*args)
+ return false;
+
+ // first arg: on, off, first, last
+ char* show_str = strtok((char*)args, " ");
+ if (!show_str)
+ return false;
+
+ // second arg: GUID (optional, if a creature is selected)
+ char* guid_str = strtok((char*)NULL, " ");
+ sLog.outDebug("DEBUG: HandleWpShowCommand: show_str: %s guid_str: %s", show_str, guid_str);
+
+ uint32 pathid = 0;
+ Creature* target = handler->getSelectedCreature();
+
+ // Did player provide a PathID?
+
+ if (!guid_str)
+ {
+ sLog.outDebug("DEBUG: HandleWpShowCommand: !guid_str");
+ // No PathID provided
+ // -> Player must have selected a creature
+
+ if (!target)
+ {
+ handler->SendSysMessage(LANG_SELECT_CREATURE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ pathid = target->GetWaypointPath();
+ }
+ else
+ {
+ sLog.outDebug("|cff00ff00DEBUG: HandleWpShowCommand: PathID provided|r");
+ // PathID provided
+ // Warn if player also selected a creature
+ // -> Creature selection is ignored <-
+ if (target)
+ handler->SendSysMessage(LANG_WAYPOINT_CREATSELECTED);
+
+ pathid = atoi((char*)guid_str);
+ }
+
+ sLog.outDebug("DEBUG: HandleWpShowCommand: danach");
+
+ std::string show = show_str;
+ uint32 Maxpoint;
+
+ sLog.outDebug("DEBUG: HandleWpShowCommand: PathID: %u", pathid);
+
+ //handler->PSendSysMessage("wpshow - show: %s", show);
+
+ // Show info for the selected waypoint
+ if (show == "info")
+ {
+ // Check if the user did specify a visual waypoint
+ if (target->GetEntry() != VISUAL_WAYPOINT)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_SELECT);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ QueryResult result = WorldDatabase.PQuery("SELECT id, point, delay, move_flag, action, action_chance FROM waypoint_data WHERE wpguid = %u", target->GetGUIDLow());
+
+ if (!result)
+ {
+ handler->SendSysMessage(LANG_WAYPOINT_NOTFOUNDDBPROBLEM);
+ return true;
+ }
+
+ handler->SendSysMessage("|cff00ffffDEBUG: wp show info:|r");
+ do
+ {
+ Field *fields = result->Fetch();
+ pathid = fields[0].GetUInt32();
+ uint32 point = fields[1].GetUInt32();
+ uint32 delay = fields[2].GetUInt32();
+ uint32 flag = fields[3].GetUInt32();
+ uint32 ev_id = fields[4].GetUInt32();
+ uint32 ev_chance = fields[5].GetUInt32();
+
+ handler->PSendSysMessage("|cff00ff00Show info: for current point: |r|cff00ffff%u|r|cff00ff00, Path ID: |r|cff00ffff%u|r", point, pathid);
+ handler->PSendSysMessage("|cff00ff00Show info: delay: |r|cff00ffff%u|r", delay);
+ handler->PSendSysMessage("|cff00ff00Show info: Move flag: |r|cff00ffff%u|r", flag);
+ handler->PSendSysMessage("|cff00ff00Show info: Waypoint event: |r|cff00ffff%u|r", ev_id);
+ handler->PSendSysMessage("|cff00ff00Show info: Event chance: |r|cff00ffff%u|r", ev_chance);
+ }
+ while (result->NextRow());
+
+ return true;
+ }
+
+ if (show == "on")
+ {
+ QueryResult result = WorldDatabase.PQuery("SELECT point, position_x,position_y,position_z FROM waypoint_data WHERE id = '%u'", pathid);
+
+ if (!result)
+ {
+ handler->SendSysMessage("|cffff33ffPath no found.|r");
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage("|cff00ff00DEBUG: wp on, PathID: |cff00ffff%u|r", pathid);
+
+ // Delete all visuals for this NPC
+ QueryResult result2 = WorldDatabase.PQuery("SELECT wpguid FROM waypoint_data WHERE id = '%u' and wpguid <> 0", pathid);
+
+ if (result2)
+ {
+ bool hasError = false;
+ do
+ {
+ Field *fields = result2->Fetch();
+ uint32 wpguid = fields[0].GetUInt32();
+ Creature* pCreature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(wpguid,VISUAL_WAYPOINT,HIGHGUID_UNIT));
+
+ if (!pCreature)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, wpguid);
+ hasError = true;
+ WorldDatabase.PExecute("DELETE FROM creature WHERE guid = '%u'", wpguid);
+ }
+ else
+ {
+ pCreature->CombatStop();
+ pCreature->DeleteFromDB();
+ pCreature->AddObjectToRemoveList();
+ }
+
+ }
+ while (result2->NextRow());
+
+ if (hasError)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR1);
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR2);
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR3);
+ }
+ }
+
+ do
+ {
+ Field *fields = result->Fetch();
+ uint32 point = fields[0].GetUInt32();
+ float x = fields[1].GetFloat();
+ float y = fields[2].GetFloat();
+ float z = fields[3].GetFloat();
+
+ uint32 id = VISUAL_WAYPOINT;
+
+ Player *chr = handler->GetSession()->GetPlayer();
+ Map *map = chr->GetMap();
+ float o = chr->GetOrientation();
+
+ Creature* wpCreature = new Creature;
+ if (!wpCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
+ delete wpCreature;
+ return false;
+ }
+
+ sLog.outDebug("DEBUG: UPDATE waypoint_data SET wpguid = '%u' WHERE id = '%u' and point = '%u'", wpCreature->GetGUIDLow(), pathid, point);
+ // set "wpguid" column to the visual waypoint
+ WorldDatabase.PExecute("UPDATE waypoint_data SET wpguid = '%u' WHERE id = '%u' and point = '%u'", wpCreature->GetGUIDLow(), pathid, point);
+
+ wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
+ // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
+ wpCreature->LoadFromDB(wpCreature->GetDBTableGUIDLow(),map);
+ map->Add(wpCreature);
+
+ if (target)
+ {
+ wpCreature->SetDisplayId(target->GetDisplayId());
+ wpCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
+ wpCreature->SetLevel(point > STRONG_MAX_LEVEL ? STRONG_MAX_LEVEL : point);
+ }
+ }
+ while (result->NextRow());
+
+ handler->SendSysMessage("|cff00ff00Showing the current creature's path.|r");
+ return true;
+ }
+
+ if (show == "first")
+ {
+ handler->PSendSysMessage("|cff00ff00DEBUG: wp first, GUID: %u|r", pathid);
+
+ QueryResult result = WorldDatabase.PQuery("SELECT position_x,position_y,position_z FROM waypoint_data WHERE point='1' AND id = '%u'",pathid);
+ if (!result)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTFOUND, pathid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ Field *fields = result->Fetch();
+ float x = fields[0].GetFloat();
+ float y = fields[1].GetFloat();
+ float z = fields[2].GetFloat();
+ uint32 id = VISUAL_WAYPOINT;
+
+ Player *chr = handler->GetSession()->GetPlayer();
+ float o = chr->GetOrientation();
+ Map *map = chr->GetMap();
+
+ Creature* pCreature = new Creature;
+ if (!pCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT),map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
+ delete pCreature;
+ return false;
+ }
+
+ pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
+ pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map);
+ map->Add(pCreature);
+
+ if (target)
+ {
+ pCreature->SetDisplayId(target->GetDisplayId());
+ pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
+ }
+
+ return true;
+ }
+
+ if (show == "last")
+ {
+ handler->PSendSysMessage("|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff%u|r", pathid);
+
+ QueryResult result = WorldDatabase.PQuery("SELECT MAX(point) FROM waypoint_data WHERE id = '%u'",pathid);
+ if (result)
+ Maxpoint = (*result)[0].GetUInt32();
+ else
+ Maxpoint = 0;
+
+ result = WorldDatabase.PQuery("SELECT position_x,position_y,position_z FROM waypoint_data WHERE point ='%u' AND id = '%u'",Maxpoint, pathid);
+ if (!result)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTFOUNDLAST, pathid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+ Field *fields = result->Fetch();
+ float x = fields[0].GetFloat();
+ float y = fields[1].GetFloat();
+ float z = fields[2].GetFloat();
+ uint32 id = VISUAL_WAYPOINT;
+
+ Player *chr = handler->GetSession()->GetPlayer();
+ float o = chr->GetOrientation();
+ Map *map = chr->GetMap();
+
+ Creature* pCreature = new Creature;
+ if (!pCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, 0, x, y, z, o))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id);
+ delete pCreature;
+ return false;
+ }
+
+ pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
+ pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map);
+ map->Add(pCreature);
+
+ if (target)
+ {
+ pCreature->SetDisplayId(target->GetDisplayId());
+ pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
+ }
+
+ return true;
+ }
+
+ if (show == "off")
+ {
+ QueryResult result = WorldDatabase.PQuery("SELECT guid FROM creature WHERE id = '%u'", 1);
+ if (!result)
+ {
+ handler->SendSysMessage(LANG_WAYPOINT_VP_NOTFOUND);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+ bool hasError = false;
+ do
+ {
+ Field *fields = result->Fetch();
+ uint32 guid = fields[0].GetUInt32();
+ Creature* pCreature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(guid,VISUAL_WAYPOINT,HIGHGUID_UNIT));
+ if (!pCreature)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, guid);
+ hasError = true;
+ WorldDatabase.PExecute("DELETE FROM creature WHERE guid = '%u'", guid);
+ }
+ else
+ {
+ pCreature->CombatStop();
+ pCreature->DeleteFromDB();
+ pCreature->AddObjectToRemoveList();
+ }
+ }
+ while (result->NextRow());
+ // set "wpguid" column to "empty" - no visual waypoint spawned
+ WorldDatabase.PExecute("UPDATE waypoint_data SET wpguid = '0'");
+ //WorldDatabase.PExecute("UPDATE creature_movement SET wpguid = '0' WHERE wpguid <> '0'");
+
+ if (hasError)
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR1);
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR2);
+ handler->PSendSysMessage(LANG_WAYPOINT_TOOFAR3);
+ }
+
+ handler->SendSysMessage(LANG_WAYPOINT_VP_ALLREMOVED);
+ return true;
+ }
+
+ handler->PSendSysMessage("|cffff33ffDEBUG: wpshow - no valid command found|r");
+ return true;
+}
+
+};
+
+void AddSC_wp_commandscript()
+{
+ new wp_commandscript();
+}