diff options
Diffstat (limited to 'src/game/Level3.cpp')
-rw-r--r-- | src/game/Level3.cpp | 1130 |
1 files changed, 0 insertions, 1130 deletions
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 21f3c995dce..d77d5424bd0 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -17,7 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - #include "Common.h" #include "Database/DatabaseEnv.h" #include "WorldPacket.h" @@ -54,7 +53,6 @@ #include "InstanceData.h" #include "AuctionHouseBot.h" #include "CreatureEventAIMgr.h" - bool ChatHandler::HandleAHBotOptionsCommand(const char* args) { uint32 ahMapID = 0; @@ -81,7 +79,6 @@ bool ChatHandler::HandleAHBotOptionsCommand(const char* args) return false; } int l = strlen(opt); - if (strncmp(opt,"help",l) == 0) { PSendSysMessage("AHBot commands:"); @@ -542,12 +539,10 @@ bool ChatHandler::HandleAHBotOptionsCommand(const char* args) } return true; } - //reload commands bool ChatHandler::HandleReloadAllCommand(const char*) { HandleReloadSkillFishingBaseLevelCommand(""); - HandleReloadAllAchievementCommand(""); HandleReloadAllAreaCommand(""); HandleReloadAllEventAICommand(""); @@ -557,24 +552,20 @@ bool ChatHandler::HandleReloadAllCommand(const char*) HandleReloadAllSpellCommand(""); HandleReloadAllItemCommand(""); HandleReloadAllLocalesCommand(""); - HandleReloadAccessRequirementCommand(""); 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 @@ -583,7 +574,6 @@ bool ChatHandler::HandleReloadAllAreaCommand(const char*) HandleReloadGameGraveyardZoneCommand(""); return true; } - bool ChatHandler::HandleReloadAllLootCommand(const char*) { sLog.outString( "Re-Loading Loot Tables..." ); @@ -591,7 +581,6 @@ bool ChatHandler::HandleReloadAllLootCommand(const char*) SendGlobalGMSysMessage("DB tables `*_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadAllNpcCommand(const char* /*args*/) { HandleReloadNpcGossipCommand("a"); @@ -602,18 +591,15 @@ bool ChatHandler::HandleReloadAllNpcCommand(const char* /*args*/) HandleReloadSpellClickSpellsCommand("a"); return true; } - bool ChatHandler::HandleReloadAllQuestCommand(const char* /*args*/) { HandleReloadQuestAreaTriggersCommand("a"); HandleReloadQuestTemplateCommand("a"); - sLog.outString( "Re-Loading Quests Relations..." ); objmgr.LoadQuestRelations(); SendGlobalGMSysMessage("DB tables `*_questrelation` and `*_involvedrelation` reloaded."); return true; } - bool ChatHandler::HandleReloadAllScriptsCommand(const char*) { if(sWorld.IsScriptScheduled()) @@ -622,7 +608,6 @@ bool ChatHandler::HandleReloadAllScriptsCommand(const char*) SetSentErrorMessage(true); return false; } - sLog.outString( "Re-Loading Scripts..." ); HandleReloadGameObjectScriptsCommand("a"); HandleReloadEventScriptsCommand("a"); @@ -634,7 +619,6 @@ bool ChatHandler::HandleReloadAllScriptsCommand(const char*) HandleReloadWpScriptsCommand("a"); return true; } - bool ChatHandler::HandleReloadAllEventAICommand(const char*) { HandleReloadEventAITextsCommand("a"); @@ -642,7 +626,6 @@ bool ChatHandler::HandleReloadAllEventAICommand(const char*) HandleReloadEventAIScriptsCommand("a"); return true; } - bool ChatHandler::HandleReloadAllSpellCommand(const char*) { HandleReloadSkillDiscoveryTemplateCommand("a"); @@ -661,7 +644,6 @@ bool ChatHandler::HandleReloadAllSpellCommand(const char*) HandleReloadSpellDisabledCommand("a"); return true; } - bool ChatHandler::HandleReloadAllItemCommand(const char*) { HandleReloadPageTextsCommand("a"); @@ -669,7 +651,6 @@ bool ChatHandler::HandleReloadAllItemCommand(const char*) HandleReloadItemRequiredTragetCommand("a"); return true; } - bool ChatHandler::HandleReloadAllLocalesCommand(const char* /*args*/) { HandleReloadLocalesAchievementRewardCommand("a"); @@ -682,7 +663,6 @@ bool ChatHandler::HandleReloadAllLocalesCommand(const char* /*args*/) HandleReloadLocalesQuestCommand("a"); return true; } - bool ChatHandler::HandleReloadConfigCommand(const char* /*args*/) { sLog.outString( "Re-Loading config settings..." ); @@ -691,7 +671,6 @@ bool ChatHandler::HandleReloadConfigCommand(const char* /*args*/) SendGlobalGMSysMessage("World config settings reloaded."); return true; } - bool ChatHandler::HandleReloadAccessRequirementCommand(const char*) { sLog.outString( "Re-Loading Access Requirement definitions..." ); @@ -699,7 +678,6 @@ bool ChatHandler::HandleReloadAccessRequirementCommand(const char*) SendGlobalGMSysMessage("DB table `access_requirement` reloaded."); return true; } - bool ChatHandler::HandleReloadAchievementCriteriaDataCommand(const char*) { sLog.outString( "Re-Loading Additional Achievement Criteria Data..." ); @@ -707,7 +685,6 @@ bool ChatHandler::HandleReloadAchievementCriteriaDataCommand(const char*) SendGlobalGMSysMessage("DB table `achievement_criteria_data` reloaded."); return true; } - bool ChatHandler::HandleReloadAchievementRewardCommand(const char*) { sLog.outString( "Re-Loading Achievement Reward Data..." ); @@ -715,7 +692,6 @@ bool ChatHandler::HandleReloadAchievementRewardCommand(const char*) SendGlobalGMSysMessage("DB table `achievement_reward` reloaded."); return true; } - bool ChatHandler::HandleReloadAreaTriggerTavernCommand(const char*) { sLog.outString( "Re-Loading Tavern Area Triggers..." ); @@ -723,7 +699,6 @@ bool ChatHandler::HandleReloadAreaTriggerTavernCommand(const char*) SendGlobalGMSysMessage("DB table `areatrigger_tavern` reloaded."); return true; } - bool ChatHandler::HandleReloadAreaTriggerTeleportCommand(const char*) { sLog.outString( "Re-Loading AreaTrigger teleport definitions..." ); @@ -731,7 +706,6 @@ bool ChatHandler::HandleReloadAreaTriggerTeleportCommand(const char*) SendGlobalGMSysMessage("DB table `areatrigger_teleport` reloaded."); return true; } - bool ChatHandler::HandleReloadAutobroadcastCommand(const char*) { sLog.outString("Re-Loading Autobroadcast..."); @@ -739,14 +713,12 @@ bool ChatHandler::HandleReloadAutobroadcastCommand(const char*) 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::HandleReloadCreatureQuestRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`creature_questrelation`)" ); @@ -754,7 +726,6 @@ bool ChatHandler::HandleReloadCreatureQuestRelationsCommand(const char*) 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`)" ); @@ -762,7 +733,6 @@ bool ChatHandler::HandleReloadCreatureLinkedRespawnCommand(const char* args) SendGlobalGMSysMessage("DB table `creature_linked_respawn` (creature linked respawns) reloaded."); return true; } - bool ChatHandler::HandleReloadCreatureQuestInvRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`creature_involvedrelation`)" ); @@ -770,7 +740,6 @@ bool ChatHandler::HandleReloadCreatureQuestInvRelationsCommand(const char*) SendGlobalGMSysMessage("DB table `creature_involvedrelation` (creature quest takers) reloaded."); return true; } - bool ChatHandler::HandleReloadGOQuestRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`gameobject_questrelation`)" ); @@ -778,7 +747,6 @@ bool ChatHandler::HandleReloadGOQuestRelationsCommand(const char*) SendGlobalGMSysMessage("DB table `gameobject_questrelation` (gameobject quest givers) reloaded."); return true; } - bool ChatHandler::HandleReloadGOQuestInvRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`gameobject_involvedrelation`)" ); @@ -786,7 +754,6 @@ bool ChatHandler::HandleReloadGOQuestInvRelationsCommand(const char*) SendGlobalGMSysMessage("DB table `gameobject_involvedrelation` (gameobject quest takers) reloaded."); return true; } - bool ChatHandler::HandleReloadQuestAreaTriggersCommand(const char*) { sLog.outString( "Re-Loading Quest Area Triggers..." ); @@ -794,20 +761,17 @@ bool ChatHandler::HandleReloadQuestAreaTriggersCommand(const char*) SendGlobalGMSysMessage("DB table `areatrigger_involvedrelation` (quest area triggers) reloaded."); return true; } - bool ChatHandler::HandleReloadQuestTemplateCommand(const char*) { sLog.outString( "Re-Loading Quest Templates..." ); objmgr.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..." ); objmgr.LoadGameObjectForQuests(); SendGlobalGMSysMessage("Data GameObjects for quests reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesCreatureCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`creature_loot_template`)" ); @@ -816,7 +780,6 @@ bool ChatHandler::HandleReloadLootTemplatesCreatureCommand(const char*) SendGlobalGMSysMessage("DB table `creature_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesDisenchantCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`disenchant_loot_template`)" ); @@ -825,7 +788,6 @@ bool ChatHandler::HandleReloadLootTemplatesDisenchantCommand(const char*) SendGlobalGMSysMessage("DB table `disenchant_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesFishingCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`fishing_loot_template`)" ); @@ -834,7 +796,6 @@ bool ChatHandler::HandleReloadLootTemplatesFishingCommand(const char*) SendGlobalGMSysMessage("DB table `fishing_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesGameobjectCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`gameobject_loot_template`)" ); @@ -843,7 +804,6 @@ bool ChatHandler::HandleReloadLootTemplatesGameobjectCommand(const char*) SendGlobalGMSysMessage("DB table `gameobject_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesItemCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`item_loot_template`)" ); @@ -852,7 +812,6 @@ bool ChatHandler::HandleReloadLootTemplatesItemCommand(const char*) SendGlobalGMSysMessage("DB table `item_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesMillingCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`milling_loot_template`)" ); @@ -861,7 +820,6 @@ bool ChatHandler::HandleReloadLootTemplatesMillingCommand(const char*) SendGlobalGMSysMessage("DB table `milling_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesPickpocketingCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`pickpocketing_loot_template`)" ); @@ -870,7 +828,6 @@ bool ChatHandler::HandleReloadLootTemplatesPickpocketingCommand(const char*) SendGlobalGMSysMessage("DB table `pickpocketing_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesProspectingCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`prospecting_loot_template`)" ); @@ -879,7 +836,6 @@ bool ChatHandler::HandleReloadLootTemplatesProspectingCommand(const char*) SendGlobalGMSysMessage("DB table `prospecting_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesQuestMailCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`quest_mail_loot_template`)" ); @@ -888,7 +844,6 @@ bool ChatHandler::HandleReloadLootTemplatesQuestMailCommand(const char*) SendGlobalGMSysMessage("DB table `quest_mail_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesReferenceCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`reference_loot_template`)" ); @@ -896,7 +851,6 @@ bool ChatHandler::HandleReloadLootTemplatesReferenceCommand(const char*) SendGlobalGMSysMessage("DB table `reference_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesSkinningCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`skinning_loot_template`)" ); @@ -905,7 +859,6 @@ bool ChatHandler::HandleReloadLootTemplatesSkinningCommand(const char*) SendGlobalGMSysMessage("DB table `skinning_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadLootTemplatesSpellCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`spell_loot_template`)" ); @@ -914,7 +867,6 @@ bool ChatHandler::HandleReloadLootTemplatesSpellCommand(const char*) SendGlobalGMSysMessage("DB table `spell_loot_template` reloaded."); return true; } - bool ChatHandler::HandleReloadTrinityStringCommand(const char*) { sLog.outString( "Re-Loading trinity_string Table!" ); @@ -922,7 +874,6 @@ bool ChatHandler::HandleReloadTrinityStringCommand(const char*) SendGlobalGMSysMessage("DB table `trinity_string` reloaded."); return true; } - bool ChatHandler::HandleReloadNpcOptionCommand(const char*) { sLog.outString( "Re-Loading `npc_option` Table!" ); @@ -930,7 +881,6 @@ bool ChatHandler::HandleReloadNpcOptionCommand(const char*) SendGlobalGMSysMessage("DB table `npc_option` reloaded."); return true; } - bool ChatHandler::HandleReloadNpcGossipCommand(const char*) { sLog.outString( "Re-Loading `npc_gossip` Table!" ); @@ -938,7 +888,6 @@ bool ChatHandler::HandleReloadNpcGossipCommand(const char*) SendGlobalGMSysMessage("DB table `npc_gossip` reloaded."); return true; } - bool ChatHandler::HandleReloadNpcTrainerCommand(const char*) { sLog.outString( "Re-Loading `npc_trainer` Table!" ); @@ -946,7 +895,6 @@ bool ChatHandler::HandleReloadNpcTrainerCommand(const char*) SendGlobalGMSysMessage("DB table `npc_trainer` reloaded."); return true; } - bool ChatHandler::HandleReloadNpcVendorCommand(const char*) { sLog.outString( "Re-Loading `npc_vendor` Table!" ); @@ -954,7 +902,6 @@ bool ChatHandler::HandleReloadNpcVendorCommand(const char*) SendGlobalGMSysMessage("DB table `npc_vendor` reloaded."); return true; } - bool ChatHandler::HandleReloadPointsOfInterestCommand(const char*) { sLog.outString( "Re-Loading `points_of_interest` Table!" ); @@ -962,7 +909,6 @@ bool ChatHandler::HandleReloadPointsOfInterestCommand(const char*) SendGlobalGMSysMessage("DB table `points_of_interest` reloaded."); return true; } - bool ChatHandler::HandleReloadSpellClickSpellsCommand(const char*) { sLog.outString( "Re-Loading `npc_spellclick_spells` Table!" ); @@ -970,7 +916,6 @@ bool ChatHandler::HandleReloadSpellClickSpellsCommand(const char*) SendGlobalGMSysMessage("DB table `npc_spellclick_spells` reloaded."); return true; } - bool ChatHandler::HandleReloadReservedNameCommand(const char*) { sLog.outString( "Loading ReservedNames... (`reserved_name`)" ); @@ -978,7 +923,6 @@ bool ChatHandler::HandleReloadReservedNameCommand(const char*) SendGlobalGMSysMessage("DB table `reserved_name` (player reserved names) reloaded."); return true; } - bool ChatHandler::HandleReloadSkillDiscoveryTemplateCommand(const char* /*args*/) { sLog.outString( "Re-Loading Skill Discovery Table..." ); @@ -986,7 +930,6 @@ bool ChatHandler::HandleReloadSkillDiscoveryTemplateCommand(const char* /*args*/ 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..." ); @@ -994,7 +937,6 @@ bool ChatHandler::HandleReloadSkillExtraItemTemplateCommand(const char* /*args*/ 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..." ); @@ -1002,7 +944,6 @@ bool ChatHandler::HandleReloadSkillFishingBaseLevelCommand(const char* /*args*/) 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..." ); @@ -1010,7 +951,6 @@ bool ChatHandler::HandleReloadSpellAreaCommand(const char*) 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... " ); @@ -1018,7 +958,6 @@ bool ChatHandler::HandleReloadSpellRequiredCommand(const char*) SendGlobalGMSysMessage("DB table `spell_required` reloaded."); return true; } - bool ChatHandler::HandleReloadSpellElixirCommand(const char*) { sLog.outString( "Re-Loading Spell Elixir types..." ); @@ -1026,7 +965,6 @@ bool ChatHandler::HandleReloadSpellElixirCommand(const char*) SendGlobalGMSysMessage("DB table `spell_elixir` (spell elixir types) reloaded."); return true; } - bool ChatHandler::HandleReloadSpellLearnSpellCommand(const char*) { sLog.outString( "Re-Loading Spell Learn Spells..." ); @@ -1034,7 +972,6 @@ bool ChatHandler::HandleReloadSpellLearnSpellCommand(const char*) SendGlobalGMSysMessage("DB table `spell_learn_spell` reloaded."); return true; } - bool ChatHandler::HandleReloadSpellLinkedSpellCommand(const char*) { sLog.outString( "Re-Loading Spell Linked Spells..." ); @@ -1042,7 +979,6 @@ bool ChatHandler::HandleReloadSpellLinkedSpellCommand(const char*) SendGlobalGMSysMessage("DB table `spell_linked_spell` reloaded."); return true; } - bool ChatHandler::HandleReloadSpellProcEventCommand(const char*) { sLog.outString( "Re-Loading Spell Proc Event conditions..." ); @@ -1050,7 +986,6 @@ bool ChatHandler::HandleReloadSpellProcEventCommand(const char*) 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..." ); @@ -1058,7 +993,6 @@ bool ChatHandler::HandleReloadSpellBonusesCommand(const char*) SendGlobalGMSysMessage("DB table `spell_bonus_data` (spell damage/healing coefficients) reloaded."); return true; } - bool ChatHandler::HandleReloadSpellScriptTargetCommand(const char*) { sLog.outString( "Re-Loading SpellsScriptTarget..." ); @@ -1066,7 +1000,6 @@ bool ChatHandler::HandleReloadSpellScriptTargetCommand(const char*) SendGlobalGMSysMessage("DB table `spell_script_target` (spell targets selection in case specific creature/GO requirements) reloaded."); return true; } - bool ChatHandler::HandleReloadSpellTargetPositionCommand(const char*) { sLog.outString( "Re-Loading Spell target coordinates..." ); @@ -1074,7 +1007,6 @@ bool ChatHandler::HandleReloadSpellTargetPositionCommand(const char*) 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..."); @@ -1082,7 +1014,6 @@ bool ChatHandler::HandleReloadSpellThreatsCommand(const char*) SendGlobalGMSysMessage("DB table `spell_threat` (spell aggro definitions) reloaded."); return true; } - bool ChatHandler::HandleReloadSpellPetAurasCommand(const char*) { sLog.outString( "Re-Loading Spell pet auras..."); @@ -1090,7 +1021,6 @@ bool ChatHandler::HandleReloadSpellPetAurasCommand(const char*) SendGlobalGMSysMessage("DB table `spell_pet_auras` reloaded."); return true; } - bool ChatHandler::HandleReloadPageTextsCommand(const char*) { sLog.outString( "Re-Loading Page Texts..." ); @@ -1098,7 +1028,6 @@ bool ChatHandler::HandleReloadPageTextsCommand(const char*) SendGlobalGMSysMessage("DB table `page_texts` reloaded."); return true; } - bool ChatHandler::HandleReloadItemEnchantementsCommand(const char*) { sLog.outString( "Re-Loading Item Random Enchantments Table..." ); @@ -1106,7 +1035,6 @@ bool ChatHandler::HandleReloadItemEnchantementsCommand(const char*) SendGlobalGMSysMessage("DB table `item_enchantment_template` reloaded."); return true; } - bool ChatHandler::HandleReloadItemRequiredTragetCommand(const char*) { sLog.outString( "Re-Loading Item Required Targets Table..." ); @@ -1114,7 +1042,6 @@ bool ChatHandler::HandleReloadItemRequiredTragetCommand(const char*) SendGlobalGMSysMessage("DB table `item_required_target` reloaded."); return true; } - bool ChatHandler::HandleReloadGameObjectScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1123,18 +1050,13 @@ bool ChatHandler::HandleReloadGameObjectScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `gameobject_scripts`..."); - objmgr.LoadGameObjectScripts(); - if(*arg!='a') SendGlobalGMSysMessage("DB table `gameobject_scripts` reloaded."); - return true; } - bool ChatHandler::HandleReloadEventScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1143,18 +1065,13 @@ bool ChatHandler::HandleReloadEventScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `event_scripts`..."); - objmgr.LoadEventScripts(); - if(*arg!='a') SendGlobalGMSysMessage("DB table `event_scripts` reloaded."); - return true; } - bool ChatHandler::HandleReloadWpScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1163,27 +1080,20 @@ bool ChatHandler::HandleReloadWpScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `waypoint_scripts`..."); - objmgr.LoadWaypointScripts(); - if(*arg!='a') SendGlobalGMSysMessage("DB table `waypoint_scripts` reloaded."); - return true; } - bool ChatHandler::HandleReloadEventAITextsCommand(const char* arg) { - sLog.outString( "Re-Loading Texts from `creature_ai_texts`..."); CreatureEAI_Mgr.LoadCreatureEventAI_Texts(); SendGlobalGMSysMessage("DB table `creature_ai_texts` reloaded."); return true; } - bool ChatHandler::HandleReloadEventAISummonsCommand(const char* arg) { sLog.outString( "Re-Loading Summons from `creature_ai_summons`..."); @@ -1191,7 +1101,6 @@ bool ChatHandler::HandleReloadEventAISummonsCommand(const char* arg) SendGlobalGMSysMessage("DB table `creature_ai_summons` reloaded."); return true; } - bool ChatHandler::HandleReloadEventAIScriptsCommand(const char* arg) { sLog.outString( "Re-Loading Scripts from `creature_ai_scripts`..."); @@ -1199,7 +1108,6 @@ bool ChatHandler::HandleReloadEventAIScriptsCommand(const char* arg) SendGlobalGMSysMessage("DB table `creature_ai_scripts` reloaded."); return true; } - bool ChatHandler::HandleReloadQuestEndScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1208,18 +1116,13 @@ bool ChatHandler::HandleReloadQuestEndScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `quest_end_scripts`..."); - objmgr.LoadQuestEndScripts(); - if(*arg!='a') SendGlobalGMSysMessage("DB table `quest_end_scripts` reloaded."); - return true; } - bool ChatHandler::HandleReloadQuestStartScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1228,18 +1131,13 @@ bool ChatHandler::HandleReloadQuestStartScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `quest_start_scripts`..."); - objmgr.LoadQuestStartScripts(); - if(*arg!='a') SendGlobalGMSysMessage("DB table `quest_start_scripts` reloaded."); - return true; } - bool ChatHandler::HandleReloadSpellScriptsCommand(const char* arg) { if(sWorld.IsScriptScheduled()) @@ -1248,18 +1146,13 @@ bool ChatHandler::HandleReloadSpellScriptsCommand(const char* arg) SetSentErrorMessage(true); return false; } - if(*arg!='a') sLog.outString( "Re-Loading Scripts from `spell_scripts`..."); - objmgr.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`..."); @@ -1267,40 +1160,27 @@ bool ChatHandler::HandleReloadDbScriptStringCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `db_script_string` reloaded."); return true; } - bool ChatHandler::HandleReloadGameGraveyardZoneCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Graveyard-zone links..."); - objmgr.LoadGraveyardZones(); - SendGlobalGMSysMessage("DB table `game_graveyard_zone` reloaded."); - return true; } - bool ChatHandler::HandleReloadGameTeleCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Game Tele coordinates..."); - objmgr.LoadGameTele(); - SendGlobalGMSysMessage("DB table `game_tele` reloaded."); - return true; } - bool ChatHandler::HandleReloadSpellDisabledCommand(const char* /*arg*/) { sLog.outString( "Re-Loading spell disabled table..."); - objmgr.LoadSpellDisabledEntrys(); - SendGlobalGMSysMessage("DB table `spell_disabled` reloaded."); - return true; } - bool ChatHandler::HandleReloadLocalesAchievementRewardCommand(const char*) { sLog.outString( "Re-Loading Locales Achievement Reward Data..." ); @@ -1308,7 +1188,6 @@ bool ChatHandler::HandleReloadLocalesAchievementRewardCommand(const char*) SendGlobalGMSysMessage("DB table `locales_achievement_reward` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesCreatureCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Creature ..."); @@ -1316,7 +1195,6 @@ bool ChatHandler::HandleReloadLocalesCreatureCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_creature` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesGameobjectCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Gameobject ... "); @@ -1324,7 +1202,6 @@ bool ChatHandler::HandleReloadLocalesGameobjectCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_gameobject` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesItemCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Item ... "); @@ -1332,7 +1209,6 @@ bool ChatHandler::HandleReloadLocalesItemCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_item` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesNpcTextCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales NPC Text ... "); @@ -1340,7 +1216,6 @@ bool ChatHandler::HandleReloadLocalesNpcTextCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_npc_text` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesPageTextCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Page Text ... "); @@ -1348,7 +1223,6 @@ bool ChatHandler::HandleReloadLocalesPageTextCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_page_text` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesPointsOfInterestCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Points Of Interest ... "); @@ -1356,7 +1230,6 @@ bool ChatHandler::HandleReloadLocalesPointsOfInterestCommand(const char* /*arg*/ SendGlobalGMSysMessage("DB table `locales_points_of_interest` reloaded."); return true; } - bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Quest ... "); @@ -1364,15 +1237,12 @@ bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/) SendGlobalGMSysMessage("DB table `locales_quest` reloaded."); return true; } - bool ChatHandler::HandleLoadScriptsCommand(const char* args) { if(!LoadScriptingModule(args)) return true; - sWorld.SendGMText(LANG_SCRIPTS_RELOADED); return true; } - bool ChatHandler::HandleReloadAuctionsCommand(const char* args) { ///- Reload dynamic data tables from the database @@ -1382,26 +1252,22 @@ bool ChatHandler::HandleReloadAuctionsCommand(const char* args) SendGlobalGMSysMessage("Auctions reloaded."); return true; } - bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) { if(!*args) return false; - std::string targetAccountName; uint32 targetAccountId = 0; uint32 targetSecurity = 0; uint32 gm = 0; char* arg1 = strtok((char*)args, " "); char* arg2 = strtok(NULL, " "); - if (getSelectedPlayer() && arg1 && !arg2) { targetAccountId = getSelectedPlayer()->GetSession()->GetAccountId(); accmgr.GetName(targetAccountId, targetAccountName); Player* targetPlayer = getSelectedPlayer(); gm = atoi(arg1); - // Check for invalid specified GM level. if (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR) { @@ -1409,7 +1275,6 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - // Check if targets GM level and specified GM level is not higher than current gm level targetSecurity = targetPlayer->GetSession()->GetSecurity(); if (targetSecurity >= m_session->GetSecurity() || gm >= m_session->GetSecurity()) @@ -1418,13 +1283,11 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - // Decide which string to show if (m_session->GetPlayer() != targetPlayer) PSendSysMessage(LANG_YOU_CHANGE_SECURITY, targetAccountName.c_str(), gm); else PSendSysMessage(LANG_YOURS_SECURITY_CHANGED, m_session->GetPlayer()->GetName(), gm); - loginDatabase.PExecute("UPDATE account SET gmlevel = '%d' WHERE id = '%u'", gm, targetAccountId); return true; } @@ -1433,7 +1296,6 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) // Check for second parameter if (!arg2) return false; - // Check for account targetAccountName = arg1; if (!AccountMgr::normalizeString(targetAccountName)) @@ -1442,7 +1304,6 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - // Check for invalid specified GM level. gm = atoi(arg2); if (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR) @@ -1451,11 +1312,9 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - targetAccountId = accmgr.GetId(arg1); /// m_session==NULL only for console uint32 plSecurity = m_session ? m_session->GetSecurity() : SEC_CONSOLE; - /// can set security level only for target with less security and to less security that we have /// This is also reject self apply in fact targetSecurity = accmgr.GetSecurity(targetAccountId); @@ -1465,27 +1324,22 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - PSendSysMessage(LANG_YOU_CHANGE_SECURITY, targetAccountName.c_str(), gm); loginDatabase.PExecute("UPDATE account SET gmlevel = '%d' WHERE id = '%u'", gm, targetAccountId); return true; } } - /// Set password for account bool ChatHandler::HandleAccountSetPasswordCommand(const char* args) { if(!*args) return false; - ///- Get the command line arguments char *szAccount = strtok ((char*)args," "); char *szPassword1 = strtok (NULL," "); char *szPassword2 = strtok (NULL," "); - if (!szAccount||!szPassword1 || !szPassword2) return false; - std::string account_name = szAccount; if (!AccountMgr::normalizeString(account_name)) { @@ -1493,7 +1347,6 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args) SetSentErrorMessage(true); return false; } - uint32 targetAccountId = accmgr.GetId(account_name); if (!targetAccountId) { @@ -1501,21 +1354,17 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args) SetSentErrorMessage(true); return false; } - /// can set password only for target with less security /// This is also reject self apply in fact if (HasLowerSecurityAccount (NULL,targetAccountId,true)) return false; - if (strcmp(szPassword1,szPassword2)) { SendSysMessage (LANG_NEW_PASSWORDS_NOT_MATCH); SetSentErrorMessage (true); return false; } - AccountOpResult result = accmgr.ChangePassword(targetAccountId, szPassword1); - switch (result) { case AOR_OK: @@ -1534,10 +1383,8 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args) SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandleMaxSkillCommand(const char* /*args*/) { Player* SelectedPlayer = getSelectedPlayer(); @@ -1547,26 +1394,20 @@ bool ChatHandler::HandleMaxSkillCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - // each skills that have max skill value dependent from level seted to current level max skill value SelectedPlayer->UpdateSkillsToMaxSkillsForLevel(); return true; } - bool ChatHandler::HandleSetSkillCommand(const char* args) { // number or [name] Shift-click form |color|Hskill:skill_id|h[name]|h|r char* skill_p = extractKeyFromLink((char*)args,"Hskill"); if (!skill_p) return false; - char *level_p = strtok (NULL, " "); - if (!level_p) return false; - char *max_p = strtok (NULL, " "); - int32 skill = atoi(skill_p); if (skill <= 0) { @@ -1574,9 +1415,7 @@ bool ChatHandler::HandleSetSkillCommand(const char* args) SetSentErrorMessage(true); return false; } - int32 level = atol (level_p); - Player * target = getSelectedPlayer(); if (!target) { @@ -1584,7 +1423,6 @@ bool ChatHandler::HandleSetSkillCommand(const char* args) SetSentErrorMessage(true); return false; } - SkillLineEntry const* sl = sSkillLineStore.LookupEntry(skill); if (!sl) { @@ -1592,40 +1430,30 @@ bool ChatHandler::HandleSetSkillCommand(const char* args) SetSentErrorMessage(true); return false; } - std::string tNameLink = GetNameLink(target); - if (!target->GetSkillValue(skill)) { PSendSysMessage(LANG_SET_SKILL_ERROR, tNameLink.c_str(), skill, sl->name[0]); SetSentErrorMessage(true); return false; } - int32 max = max_p ? atol (max_p) : target->GetPureMaxSkillValue(skill); - if (level <= 0 || level > max || max <= 0) return false; - target->SetSkill(skill, level, max); PSendSysMessage(LANG_SET_SKILL, skill, sl->name[0], tNameLink.c_str(), level, max); - return true; } - bool ChatHandler::HandleUnLearnCommand(const char* args) { if (!*args) return false; - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r uint32 spell_id = extractSpellIdFromLink((char*)args); if (!spell_id) return false; - char const* allStr = strtok(NULL," "); bool allRanks = allStr ? (strncmp(allStr, "all", strlen(allStr)) == 0) : false; - Player* target = getSelectedPlayer(); if (!target) { @@ -1633,21 +1461,16 @@ bool ChatHandler::HandleUnLearnCommand(const char* args) SetSentErrorMessage(true); return false; } - if (allRanks) spell_id = spellmgr.GetFirstSpellInChain (spell_id); - if (target->HasSpell(spell_id)) target->removeSpell(spell_id,false,!allRanks); else SendSysMessage(LANG_FORGET_SPELL); - if (GetTalentSpellCost(spell_id)) target->SendTalentsInfoData(false); - return true; } - bool ChatHandler::HandleCooldownCommand(const char* args) { Player* target = getSelectedPlayer(); @@ -1657,9 +1480,7 @@ bool ChatHandler::HandleCooldownCommand(const char* args) SetSentErrorMessage(true); return false; } - std::string tNameLink = GetNameLink(target); - if (!*args) { target->RemoveAllSpellCooldown(); @@ -1671,20 +1492,17 @@ bool ChatHandler::HandleCooldownCommand(const char* args) uint32 spell_id = extractSpellIdFromLink((char*)args); if (!spell_id) return false; - if (!sSpellStore.LookupEntry(spell_id)) { PSendSysMessage(LANG_UNKNOWN_SPELL, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str()); SetSentErrorMessage(true); return false; } - target->RemoveSpellCooldown(spell_id,true); PSendSysMessage(LANG_REMOVE_COOLDOWN, spell_id, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str()); } return true; } - bool ChatHandler::HandleLearnAllCommand(const char* /*args*/) { static const char *allSpellList[] = @@ -2287,30 +2105,23 @@ bool ChatHandler::HandleLearnAllCommand(const char* /*args*/) "202", "0" }; - int loop = 0; while(strcmp(allSpellList[loop], "0")) { uint32 spell = atol((char*)allSpellList[loop++]); - if (m_session->GetPlayer()->HasSpell(spell)) continue; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); continue; } - m_session->GetPlayer()->learnSpell(spell,false); } - SendSysMessage(LANG_COMMAND_LEARN_MANY_SPELLS); - return true; } - bool ChatHandler::HandleLearnAllGMCommand(const char* /*args*/) { static const char *gmSpellList[] = @@ -2325,97 +2136,77 @@ bool ChatHandler::HandleLearnAllGMCommand(const char* /*args*/) "31924", // Kill "29878", // Kill My Self "26644", // More Kill - "28550", //Invisible 24 "23452", //Invisible + Target "0" }; - uint16 gmSpellIter = 0; while( strcmp(gmSpellList[gmSpellIter], "0") ) { uint32 spell = atol((char*)gmSpellList[gmSpellIter++]); - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); continue; } - m_session->GetPlayer()->learnSpell(spell,false); } - SendSysMessage(LANG_LEARNING_GM_SKILLS); return true; } - bool ChatHandler::HandleLearnAllMyClassCommand(const char* /*args*/) { HandleLearnAllMySpellsCommand(""); HandleLearnAllMyTalentsCommand(""); return true; } - bool ChatHandler::HandleLearnAllMySpellsCommand(const char* /*args*/) { ChrClassesEntry const* clsEntry = sChrClassesStore.LookupEntry(m_session->GetPlayer()->getClass()); if(!clsEntry) return true; uint32 family = clsEntry->spellfamily; - for (uint32 i = 0; i < sSpellStore.GetNumRows(); ++i) { SpellEntry const *spellInfo = sSpellStore.LookupEntry(i); if(!spellInfo) continue; - // skip server-side/triggered spells if(spellInfo->spellLevel==0) continue; - // skip wrong class/race skills if(!m_session->GetPlayer()->IsSpellFitByClassAndRace(spellInfo->Id)) continue; - // skip other spell families if( spellInfo->SpellFamilyName != family) continue; - // skip spells with first rank learned as talent (and all talents then also) uint32 first_rank = spellmgr.GetFirstSpellInChain(spellInfo->Id); if(GetTalentSpellCost(first_rank) > 0 ) continue; - // skip broken spells if(!SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) continue; - m_session->GetPlayer()->learnSpell(i,false); } - SendSysMessage(LANG_COMMAND_LEARN_CLASS_SPELLS); return true; } - bool ChatHandler::HandleLearnAllMyTalentsCommand(const char* /*args*/) { Player* player = m_session->GetPlayer(); uint32 classMask = player->getClassMask(); - for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i) { TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); if(!talentInfo) continue; - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry( talentInfo->TalentTab ); if(!talentTabInfo) continue; - if( (classMask & talentTabInfo->ClassMask) == 0 ) continue; - // search highest talent rank uint32 spellId = 0; for(int8 rank = MAX_TALENT_RANK-1; rank >= 0; --rank) @@ -2426,26 +2217,20 @@ bool ChatHandler::HandleLearnAllMyTalentsCommand(const char* /*args*/) break; } } - if(!spellId) // ??? none spells in talent continue; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellId); if(!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) continue; - // learn highest rank of talent and learn all non-talent spell ranks (recursive by tree) player->learnSpellHighRank(spellId); } - SendSysMessage(LANG_COMMAND_LEARN_CLASS_TALENTS); return true; } - bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) { Player* player = m_session->GetPlayer(); - Pet* pet = player->GetPet(); if(!pet) { @@ -2453,7 +2238,6 @@ bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - CreatureInfo const *ci = pet->GetCreatureInfo(); if(!ci) { @@ -2461,7 +2245,6 @@ bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - CreatureFamilyEntry const *pet_family = sCreatureFamilyStore.LookupEntry(ci->family); if(!pet_family) { @@ -2469,31 +2252,25 @@ bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - if(pet_family->petTalentType < 0) // not hunter pet { SendSysMessage(LANG_WRONG_PET_TYPE); SetSentErrorMessage(true); return false; } - for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i) { TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); if(!talentInfo) continue; - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry( talentInfo->TalentTab ); if(!talentTabInfo) continue; - // prevent learn talent for different family (cheating) if(((1 << pet_family->petTalentType) & talentTabInfo->petTalentMask)==0) continue; - // search highest talent rank uint32 spellid = 0; - for(int8 rank = MAX_TALENT_RANK-1; rank >= 0; --rank) { if(talentInfo->RankID[rank]!=0) @@ -2502,64 +2279,50 @@ bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) break; } } - if(!spellid) // ??? none spells in talent continue; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellid); if(!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) continue; - // learn highest rank of talent and learn all non-talent spell ranks (recursive by tree) pet->learnSpellHighRank(spellid); } - SendSysMessage(LANG_COMMAND_LEARN_PET_TALENTS); return true; } - bool ChatHandler::HandleLearnAllLangCommand(const char* /*args*/) { // skipping UNIVERSAL language (0) for(uint8 i = 1; i < LANGUAGES_COUNT; ++i) m_session->GetPlayer()->learnSpell(lang_description[i].spell_id,false); - SendSysMessage(LANG_COMMAND_LEARN_ALL_LANG); return true; } - bool ChatHandler::HandleLearnAllDefaultCommand(const char* args) { Player* target; if(!extractPlayerTarget((char*)args,&target)) return false; - target->learnDefaultSpells(); target->learnQuestRewardedSpells(); - PSendSysMessage(LANG_COMMAND_LEARN_ALL_DEFAULT_AND_QUEST,GetNameLink(target).c_str()); return true; } - bool ChatHandler::HandleLearnCommand(const char* args) { Player* targetPlayer = getSelectedPlayer(); - if(!targetPlayer) { SendSysMessage(LANG_PLAYER_NOT_FOUND); SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell || !sSpellStore.LookupEntry(spell)) return false; - char const* allStr = strtok(NULL," "); bool allRanks = allStr ? (strncmp(allStr, "all", strlen(allStr)) == 0) : false; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { @@ -2567,7 +2330,6 @@ bool ChatHandler::HandleLearnCommand(const char* args) SetSentErrorMessage(true); return false; } - if (!allRanks && targetPlayer->HasSpell(spell)) { if(targetPlayer == m_session->GetPlayer()) @@ -2577,30 +2339,23 @@ bool ChatHandler::HandleLearnCommand(const char* args) SetSentErrorMessage(true); return false; } - if(allRanks) targetPlayer->learnSpellHighRank(spell); else targetPlayer->learnSpell(spell,false); - uint32 first_spell = spellmgr.GetFirstSpellInChain(spell); if(GetTalentSpellCost(first_spell)) targetPlayer->SendTalentsInfoData(false); - return true; } - bool ChatHandler::HandleAddItemCommand(const char* args) { if (!*args) return false; - uint32 itemId = 0; - if(args[0]=='[') // [name] manual form { char* citemName = strtok((char*)args, "]"); - if(citemName && citemName[0]) { std::string itemName = citemName+1; @@ -2625,24 +2380,17 @@ bool ChatHandler::HandleAddItemCommand(const char* args) return false; itemId = atol(cId); } - char* ccount = strtok(NULL, " "); - int32 count = 1; - if (ccount) count = strtol(ccount, NULL, 10); - if (count == 0) count = 1; - Player* pl = m_session->GetPlayer(); Player* plTarget = getSelectedPlayer(); if(!plTarget) plTarget = pl; - sLog.outDetail(GetTrinityString(LANG_ADDITEM), itemId, count); - ItemPrototype const *pProto = objmgr.GetItemPrototype(itemId); if(!pProto) { @@ -2650,7 +2398,6 @@ bool ChatHandler::HandleAddItemCommand(const char* args) SetSentErrorMessage(true); return false; } - //Subtract if (count < 0) { @@ -2658,55 +2405,43 @@ bool ChatHandler::HandleAddItemCommand(const char* args) PSendSysMessage(LANG_REMOVEITEM, itemId, -count, GetNameLink(plTarget).c_str()); return true; } - //Adding items uint32 noSpaceForCount = 0; - // check space and find places ItemPosCountVec dest; uint8 msg = plTarget->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount ); if( msg != EQUIP_ERR_OK ) // convert to possible store amount count -= noSpaceForCount; - if( count == 0 || dest.empty()) // can't add any { PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount ); SetSentErrorMessage(true); return false; } - Item* item = plTarget->StoreNewItem( dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId)); - // remove binding (let GM give it to another player later) if(pl==plTarget) for(ItemPosCountVec::const_iterator itr = dest.begin(); itr != dest.end(); ++itr) if(Item* item1 = pl->GetItemByPos(itr->pos)) item1->SetBinding( false ); - if(count > 0 && item) { pl->SendNewItem(item,count,false,true); if(pl!=plTarget) plTarget->SendNewItem(item,count,true,false); } - if(noSpaceForCount > 0) PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount); - return true; } - bool ChatHandler::HandleAddItemSetCommand(const char* args) { if (!*args) return false; - char* cId = extractKeyFromLink((char*)args,"Hitemset"); // number or [name] Shift-click form |color|Hitemset:itemset_id|h[name]|h|r if (!cId) return false; - uint32 itemsetId = atol(cId); - // prevent generation all items with itemset field value '0' if (itemsetId == 0) { @@ -2714,21 +2449,17 @@ bool ChatHandler::HandleAddItemSetCommand(const char* args) SetSentErrorMessage(true); return false; } - Player* pl = m_session->GetPlayer(); Player* plTarget = getSelectedPlayer(); if(!plTarget) plTarget = pl; - sLog.outDetail(GetTrinityString(LANG_ADDITEMSET), itemsetId); - bool found = false; for (uint32 id = 0; id < sItemStorage.MaxEntry; id++) { ItemPrototype const *pProto = sItemStorage.LookupEntry<ItemPrototype>(id); if (!pProto) continue; - if (pProto->ItemSet == itemsetId) { found = true; @@ -2737,11 +2468,9 @@ bool ChatHandler::HandleAddItemSetCommand(const char* args) if (msg == EQUIP_ERR_OK) { Item* item = plTarget->StoreNewItem( dest, pProto->ItemId, true); - // remove binding (let GM give it to another player later) if (pl==plTarget) item->SetBinding( false ); - pl->SendNewItem(item,1,false,true); if (pl!=plTarget) plTarget->SendNewItem(item,1,true,false); @@ -2753,27 +2482,21 @@ bool ChatHandler::HandleAddItemSetCommand(const char* args) } } } - if (!found) { PSendSysMessage(LANG_NO_ITEMS_FROM_ITEMSET_FOUND,itemsetId); - SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandleListItemCommand(const char* args) { if(!*args) return false; - char* cId = extractKeyFromLink((char*)args,"Hitem"); if(!cId) return false; - uint32 item_id = atol(cId); if(!item_id) { @@ -2781,7 +2504,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) SetSentErrorMessage(true); return false; } - ItemPrototype const* itemProto = objmgr.GetItemPrototype(item_id); if(!itemProto) { @@ -2789,15 +2511,11 @@ bool ChatHandler::HandleListItemCommand(const char* args) SetSentErrorMessage(true); return false; } - char* c_count = strtok(NULL, " "); int count = c_count ? atol(c_count) : 10; - if(count < 0) return false; - QueryResult *result; - // inventory case uint32 inv_count = 0; result=CharacterDatabase.PQuery("SELECT COUNT(item_template) FROM character_inventory WHERE item_template='%u'",item_id); @@ -2806,14 +2524,12 @@ bool ChatHandler::HandleListItemCommand(const char* args) inv_count = (*result)[0].GetUInt32(); delete result; } - result=CharacterDatabase.PQuery( // 0 1 2 3 4 5 "SELECT ci.item, cibag.slot AS bag, ci.slot, ci.guid, characters.account,characters.name " "FROM character_inventory AS ci LEFT JOIN character_inventory AS cibag ON (cibag.item=ci.bag),characters " "WHERE ci.item_template='%u' AND ci.guid = characters.guid LIMIT %u ", item_id,uint32(count)); - if(result) { do @@ -2825,7 +2541,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) uint32 owner_guid = fields[3].GetUInt32(); uint32 owner_acc = fields[4].GetUInt32(); std::string owner_name = fields[5].GetCppString(); - char const* item_pos = 0; if(Player::IsEquipmentPos(item_bag,item_slot)) item_pos = "[equipped]"; @@ -2835,21 +2550,16 @@ bool ChatHandler::HandleListItemCommand(const char* args) item_pos = "[in bank]"; else item_pos = ""; - PSendSysMessage(LANG_ITEMLIST_SLOT, item_guid,owner_name.c_str(),owner_guid,owner_acc,item_pos); } while (result->NextRow()); - int64 res_count = result->GetRowCount(); - delete result; - if(count > res_count) count-=res_count; else if(count) count = 0; } - // mail case uint32 mail_count = 0; result=CharacterDatabase.PQuery("SELECT COUNT(item_template) FROM mail_items WHERE item_template='%u'", item_id); @@ -2858,7 +2568,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) mail_count = (*result)[0].GetUInt32(); delete result; } - if(count > 0) { result=CharacterDatabase.PQuery( @@ -2870,7 +2579,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) } else result = NULL; - if(result) { do @@ -2883,23 +2591,17 @@ bool ChatHandler::HandleListItemCommand(const char* args) std::string item_s_name = fields[4].GetCppString(); uint32 item_r_acc = fields[5].GetUInt32(); std::string item_r_name = fields[6].GetCppString(); - char const* item_pos = "[in mail]"; - PSendSysMessage(LANG_ITEMLIST_MAIL, item_guid,item_s_name.c_str(),item_s,item_s_acc,item_r_name.c_str(),item_r,item_r_acc,item_pos); } while (result->NextRow()); - int64 res_count = result->GetRowCount(); - delete result; - if(count > res_count) count-=res_count; else if(count) count = 0; } - // auction case uint32 auc_count = 0; result=CharacterDatabase.PQuery("SELECT COUNT(item_template) FROM auctionhouse WHERE item_template='%u'",item_id); @@ -2908,7 +2610,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) auc_count = (*result)[0].GetUInt32(); delete result; } - if(count > 0) { result=CharacterDatabase.PQuery( @@ -2919,7 +2620,6 @@ bool ChatHandler::HandleListItemCommand(const char* args) } else result = NULL; - if(result) { do @@ -2929,15 +2629,11 @@ bool ChatHandler::HandleListItemCommand(const char* args) uint32 owner = fields[1].GetUInt32(); uint32 owner_acc = fields[2].GetUInt32(); std::string owner_name = fields[3].GetCppString(); - char const* item_pos = "[in auction]"; - PSendSysMessage(LANG_ITEMLIST_AUCTION, item_guid, owner_name.c_str(), owner, owner_acc,item_pos); } while (result->NextRow()); - delete result; } - // guild bank case uint32 guild_count = 0; result=CharacterDatabase.PQuery("SELECT COUNT(item_entry) FROM guild_bank_item WHERE item_entry='%u'",item_id); @@ -2946,13 +2642,11 @@ bool ChatHandler::HandleListItemCommand(const char* args) guild_count = (*result)[0].GetUInt32(); delete result; } - result=CharacterDatabase.PQuery( // 0 1 2 "SELECT gi.item_guid, gi.guildid, guild.name " "FROM guild_bank_item AS gi, guild WHERE gi.item_entry='%u' AND gi.guildid = guild.guildid LIMIT %u ", item_id,uint32(count)); - if(result) { do @@ -2961,44 +2655,33 @@ bool ChatHandler::HandleListItemCommand(const char* args) uint32 item_guid = fields[0].GetUInt32(); uint32 guild_guid = fields[1].GetUInt32(); std::string guild_name = fields[2].GetCppString(); - char const* item_pos = "[in guild bank]"; - PSendSysMessage(LANG_ITEMLIST_GUILD,item_guid,guild_name.c_str(),guild_guid,item_pos); } while (result->NextRow()); - int64 res_count = result->GetRowCount(); - delete result; - if(count > res_count) count-=res_count; else if(count) count = 0; } - if(inv_count+mail_count+auc_count+guild_count == 0) { SendSysMessage(LANG_COMMAND_NOITEMFOUND); SetSentErrorMessage(true); return false; } - PSendSysMessage(LANG_COMMAND_LISTITEMMESSAGE,item_id,inv_count+mail_count+auc_count+guild_count,inv_count,mail_count,auc_count,guild_count); - return true; } - bool ChatHandler::HandleListObjectCommand(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 go_id = atol(cId); if(!go_id) { @@ -3006,7 +2689,6 @@ bool ChatHandler::HandleListObjectCommand(const char* args) SetSentErrorMessage(true); return false; } - GameObjectInfo const * gInfo = objmgr.GetGameObjectInfo(go_id); if(!gInfo) { @@ -3014,15 +2696,11 @@ bool ChatHandler::HandleListObjectCommand(const char* args) SetSentErrorMessage(true); return false; } - char* c_count = strtok(NULL, " "); int count = c_count ? atol(c_count) : 10; - if(count < 0) return false; - QueryResult *result; - uint32 obj_count = 0; result=WorldDatabase.PQuery("SELECT COUNT(guid) FROM gameobject WHERE id='%u'",go_id); if(result) @@ -3030,7 +2708,6 @@ bool ChatHandler::HandleListObjectCommand(const char* args) obj_count = (*result)[0].GetUInt32(); delete result; } - if(m_session) { Player* pl = m_session->GetPlayer(); @@ -3040,7 +2717,6 @@ bool ChatHandler::HandleListObjectCommand(const char* args) else result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map FROM gameobject WHERE id = '%u' LIMIT %u", go_id,uint32(count)); - if (result) { do @@ -3051,47 +2727,37 @@ bool ChatHandler::HandleListObjectCommand(const char* args) float y = fields[2].GetFloat(); float z = fields[3].GetFloat(); int mapid = fields[4].GetUInt16(); - if (m_session) PSendSysMessage(LANG_GO_LIST_CHAT, guid, guid, gInfo->name, x, y, z, mapid); else PSendSysMessage(LANG_GO_LIST_CONSOLE, guid, gInfo->name, x, y, z, mapid); } while (result->NextRow()); - delete result; } - PSendSysMessage(LANG_COMMAND_LISTOBJMESSAGE,go_id,obj_count); 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 = objmgr.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) { @@ -3105,13 +2771,10 @@ bool ChatHandler::HandleGameObjectStateCommand(const char* args) } 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) @@ -3122,20 +2785,16 @@ bool ChatHandler::HandleGameObjectStateCommand(const char* args) gobj->SendMessageToSet(&data, true); } PSendSysMessage("Set gobject type %d state %d", type, state); - return true; } - bool ChatHandler::HandleListCreatureCommand(const char* args) { if(!*args) return false; - // number or [name] Shift-click form |color|Hcreature_entry:creature_id|h[name]|h|r char* cId = extractKeyFromLink((char*)args,"Hcreature_entry"); if(!cId) return false; - uint32 cr_id = atol(cId); if(!cr_id) { @@ -3143,7 +2802,6 @@ bool ChatHandler::HandleListCreatureCommand(const char* args) SetSentErrorMessage(true); return false; } - CreatureInfo const* cInfo = objmgr.GetCreatureTemplate(cr_id); if(!cInfo) { @@ -3151,15 +2809,11 @@ bool ChatHandler::HandleListCreatureCommand(const char* args) SetSentErrorMessage(true); return false; } - char* c_count = strtok(NULL, " "); int count = c_count ? atol(c_count) : 10; - if(count < 0) return false; - QueryResult *result; - uint32 cr_count = 0; result=WorldDatabase.PQuery("SELECT COUNT(guid) FROM creature WHERE id='%u'",cr_id); if(result) @@ -3167,7 +2821,6 @@ bool ChatHandler::HandleListCreatureCommand(const char* args) cr_count = (*result)[0].GetUInt32(); delete result; } - if(m_session) { Player* pl = m_session->GetPlayer(); @@ -3177,7 +2830,6 @@ bool ChatHandler::HandleListCreatureCommand(const char* args) else result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map FROM creature WHERE id = '%u' LIMIT %u", cr_id,uint32(count)); - if (result) { do @@ -3188,43 +2840,33 @@ bool ChatHandler::HandleListCreatureCommand(const char* args) float y = fields[2].GetFloat(); float z = fields[3].GetFloat(); int mapid = fields[4].GetUInt16(); - if (m_session) PSendSysMessage(LANG_CREATURE_LIST_CHAT, guid, guid, cInfo->Name, x, y, z, mapid); else PSendSysMessage(LANG_CREATURE_LIST_CONSOLE, guid, cInfo->Name, x, y, z, mapid); } while (result->NextRow()); - delete result; } - PSendSysMessage(LANG_COMMAND_LISTCREATUREMESSAGE,cr_id,cr_count); return true; } - bool ChatHandler::HandleLookupItemCommand(const char* args) { if(!*args) return false; - std::string namepart = args; std::wstring wnamepart; - // converting string that we try to find to lower case if(!Utf8toWStr(namepart,wnamepart)) return false; - wstrToLower(wnamepart); - bool found = false; - // Search in `item_template` for (uint32 id = 0; id < sItemStorage.MaxEntry; id++) { ItemPrototype const *pProto = sItemStorage.LookupEntry<ItemPrototype >(id); if(!pProto) continue; - int loc_idx = GetSessionDbLocaleIndex(); if ( loc_idx >= 0 ) { @@ -3234,61 +2876,47 @@ bool ChatHandler::HandleLookupItemCommand(const char* args) if (il->Name.size() > loc_idx && !il->Name[loc_idx].empty()) { std::string name = il->Name[loc_idx]; - if (Utf8FitTo(name, wnamepart)) { if (m_session) PSendSysMessage(LANG_ITEM_LIST_CHAT, id, id, name.c_str()); else PSendSysMessage(LANG_ITEM_LIST_CONSOLE, id, name.c_str()); - if(!found) found = true; - continue; } } } } - std::string name = pProto->Name1; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) { if (m_session) PSendSysMessage(LANG_ITEM_LIST_CHAT, id, id, name.c_str()); else PSendSysMessage(LANG_ITEM_LIST_CONSOLE, id, name.c_str()); - if(!found) found = true; } } - if (!found) SendSysMessage(LANG_COMMAND_NOITEMFOUND); - return true; } - bool ChatHandler::HandleLookupItemSetCommand(const char* args) { if(!*args) return false; - std::string namepart = args; std::wstring wnamepart; - if(!Utf8toWStr(namepart,wnamepart)) return false; - // converting string that we try to find to lower case wstrToLower( wnamepart ); - bool found = false; - // Search in ItemSet.dbc for (uint32 id = 0; id < sItemSetStore.GetNumRows(); id++) { @@ -3299,7 +2927,6 @@ bool ChatHandler::HandleLookupItemSetCommand(const char* args) std::string name = set->name[loc]; if(name.empty()) continue; - if (!Utf8FitTo(name, wnamepart)) { loc = 0; @@ -3307,16 +2934,13 @@ bool ChatHandler::HandleLookupItemSetCommand(const char* args) { if(loc==GetSessionDbcLocale()) continue; - name = set->name[loc]; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { // send item set in "id - [namedlink locale]" format @@ -3324,7 +2948,6 @@ bool ChatHandler::HandleLookupItemSetCommand(const char* args) PSendSysMessage(LANG_ITEMSET_LIST_CHAT,id,id,name.c_str(),localeNames[loc]); else PSendSysMessage(LANG_ITEMSET_LIST_CONSOLE,id,name.c_str(),localeNames[loc]); - if(!found) found = true; } @@ -3334,26 +2957,19 @@ bool ChatHandler::HandleLookupItemSetCommand(const char* args) SendSysMessage(LANG_COMMAND_NOITEMSETFOUND); return true; } - bool ChatHandler::HandleLookupSkillCommand(const char* args) { if(!*args) return false; - // can be NULL in console call Player* target = getSelectedPlayer(); - std::string namepart = args; std::wstring wnamepart; - if(!Utf8toWStr(namepart,wnamepart)) return false; - // converting string that we try to find to lower case wstrToLower( wnamepart ); - bool found = false; - // Search in SkillLine.dbc for (uint32 id = 0; id < sSkillLineStore.GetNumRows(); id++) { @@ -3364,7 +2980,6 @@ bool ChatHandler::HandleLookupSkillCommand(const char* args) std::string name = skillInfo->name[loc]; if(name.empty()) continue; - if (!Utf8FitTo(name, wnamepart)) { loc = 0; @@ -3372,16 +2987,13 @@ bool ChatHandler::HandleLookupSkillCommand(const char* args) { if(loc==GetSessionDbcLocale()) continue; - name = skillInfo->name[loc]; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { char valStr[50] = ""; @@ -3393,17 +3005,14 @@ bool ChatHandler::HandleLookupSkillCommand(const char* args) uint32 maxValue = target->GetPureMaxSkillValue(id); uint32 permValue = target->GetSkillPermBonusValue(id); uint32 tempValue = target->GetSkillTempBonusValue(id); - char const* valFormat = GetTrinityString(LANG_SKILL_VALUES); snprintf(valStr,50,valFormat,curValue,maxValue,permValue,tempValue); } - // send skill in "id - [namedlink locale]" format if (m_session) PSendSysMessage(LANG_SKILL_LIST_CHAT,id,id,name.c_str(),localeNames[loc],knownStr,valStr); else PSendSysMessage(LANG_SKILL_LIST_CONSOLE,id,name.c_str(),localeNames[loc],knownStr,valStr); - if(!found) found = true; } @@ -3413,26 +3022,19 @@ bool ChatHandler::HandleLookupSkillCommand(const char* args) SendSysMessage(LANG_COMMAND_NOSKILLFOUND); return true; } - bool ChatHandler::HandleLookupSpellCommand(const char* args) { if(!*args) return false; - // can be NULL at console call Player* target = getSelectedPlayer(); - std::string namepart = args; std::wstring wnamepart; - if(!Utf8toWStr(namepart,wnamepart)) return false; - // converting string that we try to find to lower case wstrToLower( wnamepart ); - bool found = false; - // Search in Spell.dbc for (uint32 id = 0; id < sSpellStore.GetNumRows(); id++) { @@ -3443,7 +3045,6 @@ bool ChatHandler::HandleLookupSpellCommand(const char* args) std::string name = spellInfo->SpellName[loc]; if(name.empty()) continue; - if (!Utf8FitTo(name, wnamepart)) { loc = 0; @@ -3451,47 +3052,37 @@ bool ChatHandler::HandleLookupSpellCommand(const char* args) { if(loc==GetSessionDbcLocale()) continue; - name = spellInfo->SpellName[loc]; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { bool known = target && target->HasSpell(id); bool learn = (spellInfo->Effect[0] == SPELL_EFFECT_LEARN_SPELL); - uint32 talentCost = GetTalentSpellCost(id); - bool talent = (talentCost > 0); bool passive = IsPassiveSpell(id); bool active = target && target->HasAura(id); - // unit32 used to prevent interpreting uint8 as char at output // find rank of learned spell for learning spell, or talent rank uint32 rank = talentCost ? talentCost : spellmgr.GetSpellRank(learn ? spellInfo->EffectTriggerSpell[0] : id); - // send spell in "id - [name, rank N] [talent] [passive] [learn] [known]" format std::ostringstream ss; if (m_session) ss << id << " - |cffffffff|Hspell:" << id << "|h[" << name; else ss << id << " - " << name; - // include rank in link name if(rank) ss << GetTrinityString(LANG_SPELL_RANK) << rank; - if (m_session) ss << " " << localeNames[loc] << "]|h|r"; else ss << " " << localeNames[loc]; - if(talent) ss << GetTrinityString(LANG_TALENT); if(passive) @@ -3502,9 +3093,7 @@ bool ChatHandler::HandleLookupSpellCommand(const char* args) ss << GetTrinityString(LANG_KNOWN); if(active) ss << GetTrinityString(LANG_ACTIVE); - SendSysMessage(ss.str().c_str()); - if(!found) found = true; } @@ -3514,31 +3103,23 @@ bool ChatHandler::HandleLookupSpellCommand(const char* args) SendSysMessage(LANG_COMMAND_NOSPELLFOUND); return true; } - bool ChatHandler::HandleLookupQuestCommand(const char* args) { if(!*args) return false; - // can be NULL at console call Player* target = getSelectedPlayer(); - std::string namepart = args; std::wstring wnamepart; - // converting string that we try to find to lower case if(!Utf8toWStr(namepart,wnamepart)) return false; - wstrToLower(wnamepart); - bool found = false; - ObjectMgr::QuestMap const& qTemplates = objmgr.GetQuestTemplates(); for (ObjectMgr::QuestMap::const_iterator iter = qTemplates.begin(); iter != qTemplates.end(); ++iter) { Quest * qinfo = iter->second; - int loc_idx = GetSessionDbLocaleIndex(); if ( loc_idx >= 0 ) { @@ -3548,15 +3129,12 @@ bool ChatHandler::HandleLookupQuestCommand(const char* args) if (il->Title.size() > loc_idx && !il->Title[loc_idx].empty()) { std::string title = il->Title[loc_idx]; - if (Utf8FitTo(title, wnamepart)) { char const* statusStr = ""; - if(target) { QuestStatus status = target->GetQuestStatus(qinfo->GetQuestId()); - if(status == QUEST_STATUS_COMPLETE) { if(target->GetQuestRewardStatus(qinfo->GetQuestId())) @@ -3567,33 +3145,26 @@ bool ChatHandler::HandleLookupQuestCommand(const char* args) else if(status == QUEST_STATUS_INCOMPLETE) statusStr = GetTrinityString(LANG_COMMAND_QUEST_ACTIVE); } - if (m_session) PSendSysMessage(LANG_QUEST_LIST_CHAT,qinfo->GetQuestId(),qinfo->GetQuestId(),qinfo->GetQuestLevel(),title.c_str(),statusStr); else PSendSysMessage(LANG_QUEST_LIST_CONSOLE,qinfo->GetQuestId(),title.c_str(),statusStr); - if(!found) found = true; - continue; } } } } - std::string title = qinfo->GetTitle(); if(title.empty()) continue; - if (Utf8FitTo(title, wnamepart)) { char const* statusStr = ""; - if(target) { QuestStatus status = target->GetQuestStatus(qinfo->GetQuestId()); - if(status == QUEST_STATUS_COMPLETE) { if(target->GetQuestRewardStatus(qinfo->GetQuestId())) @@ -3604,45 +3175,34 @@ bool ChatHandler::HandleLookupQuestCommand(const char* args) else if(status == QUEST_STATUS_INCOMPLETE) statusStr = GetTrinityString(LANG_COMMAND_QUEST_ACTIVE); } - if (m_session) PSendSysMessage(LANG_QUEST_LIST_CHAT,qinfo->GetQuestId(),qinfo->GetQuestId(),qinfo->GetQuestLevel(),title.c_str(),statusStr); else PSendSysMessage(LANG_QUEST_LIST_CONSOLE,qinfo->GetQuestId(),title.c_str(),statusStr); - if(!found) found = true; } } - if (!found) SendSysMessage(LANG_COMMAND_NOQUESTFOUND); - return true; } - bool ChatHandler::HandleLookupCreatureCommand(const char* args) { if (!*args) return false; - std::string namepart = args; std::wstring wnamepart; - // converting string that we try to find to lower case if (!Utf8toWStr (namepart,wnamepart)) return false; - wstrToLower (wnamepart); - bool found = false; - for (uint32 id = 0; id< sCreatureStorage.MaxEntry; ++id) { CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo> (id); if(!cInfo) continue; - int loc_idx = GetSessionDbLocaleIndex(); if (loc_idx >= 0) { @@ -3652,67 +3212,52 @@ bool ChatHandler::HandleLookupCreatureCommand(const char* args) if (cl->Name.size() > loc_idx && !cl->Name[loc_idx].empty ()) { std::string name = cl->Name[loc_idx]; - if (Utf8FitTo (name, wnamepart)) { if (m_session) PSendSysMessage (LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name.c_str ()); else PSendSysMessage (LANG_CREATURE_ENTRY_LIST_CONSOLE, id, name.c_str ()); - if(!found) found = true; - continue; } } } } - std::string name = cInfo->Name; if (name.empty ()) continue; - if (Utf8FitTo(name, wnamepart)) { if (m_session) PSendSysMessage (LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name.c_str ()); else PSendSysMessage (LANG_CREATURE_ENTRY_LIST_CONSOLE, id, name.c_str ()); - if(!found) found = true; } } - if (!found) SendSysMessage (LANG_COMMAND_NOCREATUREFOUND); - return true; } - bool ChatHandler::HandleLookupObjectCommand(const char* args) { if(!*args) return false; - std::string namepart = args; std::wstring wnamepart; - // converting string that we try to find to lower case if(!Utf8toWStr(namepart,wnamepart)) return false; - wstrToLower(wnamepart); - bool found = false; - for (uint32 id = 0; id< sGOStorage.MaxEntry; id++ ) { GameObjectInfo const* gInfo = sGOStorage.LookupEntry<GameObjectInfo>(id); if(!gInfo) continue; - int loc_idx = GetSessionDbLocaleIndex(); if ( loc_idx >= 0 ) { @@ -3722,76 +3267,59 @@ bool ChatHandler::HandleLookupObjectCommand(const char* args) if (gl->Name.size() > loc_idx && !gl->Name[loc_idx].empty()) { std::string name = gl->Name[loc_idx]; - if (Utf8FitTo(name, wnamepart)) { if (m_session) PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, id, id, name.c_str()); else PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, id, name.c_str()); - if(!found) found = true; - continue; } } } } - std::string name = gInfo->name; if(name.empty()) continue; - if(Utf8FitTo(name, wnamepart)) { if (m_session) PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, id, id, name.c_str()); else PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, id, name.c_str()); - if(!found) found = true; } } - if(!found) SendSysMessage(LANG_COMMAND_NOGAMEOBJECTFOUND); - return true; } - bool ChatHandler::HandleLookupFactionCommand(const char* args) { if (!*args) return false; - // Can be NULL at console call Player *target = getSelectedPlayer (); - std::string namepart = args; std::wstring wnamepart; - if (!Utf8toWStr (namepart,wnamepart)) return false; - // converting string that we try to find to lower case wstrToLower (wnamepart); - bool found = false; - for (uint32 id = 0; id < sFactionStore.GetNumRows(); ++id) { FactionEntry const *factionEntry = sFactionStore.LookupEntry (id); if (factionEntry) { FactionState const* repState = target ? target->GetReputationMgr().GetState(factionEntry) : NULL; - int loc = GetSessionDbcLocale(); std::string name = factionEntry->name[loc]; if(name.empty()) continue; - if (!Utf8FitTo(name, wnamepart)) { loc = 0; @@ -3799,16 +3327,13 @@ bool ChatHandler::HandleLookupFactionCommand(const char* args) { if(loc==GetSessionDbcLocale()) continue; - name = factionEntry->name[loc]; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { // send faction in "id - [faction] rank reputation [visible] [at war] [own team] [unknown] [invisible] [inactive]" format @@ -3818,14 +3343,11 @@ bool ChatHandler::HandleLookupFactionCommand(const char* args) ss << id << " - |cffffffff|Hfaction:" << id << "|h[" << name << " " << localeNames[loc] << "]|h|r"; else ss << id << " - " << name << " " << localeNames[loc]; - if (repState) // and then target!=NULL also { ReputationRank rank = target->GetReputationMgr().GetRank(factionEntry); std::string rankName = GetMangosString(ReputationRankStrIndex[rank]); - ss << " " << rankName << "|h|r (" << target->GetReputationMgr().GetReputation(factionEntry) << ")"; - if(repState->Flags & FACTION_FLAG_VISIBLE) ss << GetTrinityString(LANG_FACTION_VISIBLE); if(repState->Flags & FACTION_FLAG_AT_WAR) @@ -3841,36 +3363,27 @@ bool ChatHandler::HandleLookupFactionCommand(const char* args) } else ss << GetTrinityString(LANG_FACTION_NOREPUTATION); - SendSysMessage(ss.str().c_str()); - if(!found) found = true; } } } - if (!found) SendSysMessage(LANG_COMMAND_FACTION_NOTFOUND); return true; } - bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) { if(!*args) return false; - std::string namepart = args; std::wstring wnamepart; - if(!Utf8toWStr(namepart,wnamepart)) return false; - // converting string that we try to find to lower case wstrToLower( wnamepart ); - bool found = false; - // Search in TaxiNodes.dbc for (uint32 id = 0; id < sTaxiNodesStore.GetNumRows(); id++) { @@ -3881,7 +3394,6 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) std::string name = nodeEntry->name[loc]; if(name.empty()) continue; - if (!Utf8FitTo(name, wnamepart)) { loc = 0; @@ -3889,16 +3401,13 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) { if(loc==GetSessionDbcLocale()) continue; - name = nodeEntry->name[loc]; if(name.empty()) continue; - if (Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { // send taxinode in "id - [name] (Map:m X:x Y:y Z:z)" format @@ -3908,7 +3417,6 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) else PSendSysMessage (LANG_TAXINODE_ENTRY_LIST_CONSOLE, id, name.c_str(), localeNames[loc], nodeEntry->map_id,nodeEntry->x,nodeEntry->y,nodeEntry->z); - if(!found) found = true; } @@ -3918,23 +3426,17 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) SendSysMessage(LANG_COMMAND_NOTAXINODEFOUND); return true; } - bool ChatHandler::HandleLookupMapCommand(const char* args) { if(!*args) return false; - std::string namepart = args; std::wstring wnamepart; - // converting string that we try to find to lower case if(!Utf8toWStr(namepart, wnamepart)) return false; - wstrToLower(wnamepart); - bool found = false; - // search in Map.dbc for(uint32 id = 0; id < sMapStore.GetNumRows(); id++) { @@ -3942,11 +3444,9 @@ bool ChatHandler::HandleLookupMapCommand(const char* args) if(MapInfo) { uint8 loc = m_session ? m_session->GetSessionDbcLocale() : sWorld.GetDefaultDbcLocale(); - std::string name = MapInfo->name[loc]; if(name.empty()) continue; - if(!Utf8FitTo(name, wnamepart)) { loc = LOCALE_enUS; @@ -3954,55 +3454,43 @@ bool ChatHandler::HandleLookupMapCommand(const char* args) { if(m_session && loc == m_session->GetSessionDbcLocale()) continue; - name = MapInfo->name[loc]; if(name.empty()) continue; - if(Utf8FitTo(name, wnamepart)) break; } } - if(loc < MAX_LOCALE) { // send map in "id - [name][Continent][Instance/Battleground/Arena][Raid reset time:][Heroic reset time:][Mountable]" format std::ostringstream ss; - if(m_session) ss << id << " - |cffffffff|Hmap:" << id << "|h[" << name << "]"; else // console ss << id << " - [" << name << "]"; - if(MapInfo->IsContinent()) ss << GetTrinityString(LANG_CONTINENT); - switch(MapInfo->map_type) { case MAP_INSTANCE: ss << GetTrinityString(LANG_INSTANCE); break; case MAP_BATTLEGROUND: ss << GetTrinityString(LANG_BATTLEGROUND); break; case MAP_ARENA: ss << GetTrinityString(LANG_ARENA); break; } - if(MapInfo->IsRaid()) ss << GetTrinityString(LANG_RAID); - if(MapInfo->SupportsHeroicMode()) ss << GetTrinityString(LANG_HEROIC); - uint32 ResetTimeRaid = MapInfo->resetTimeRaid; std::string ResetTimeRaidStr; if(ResetTimeRaid) ResetTimeRaidStr = secsToTimeString(ResetTimeRaid, true, false); - uint32 ResetTimeHeroic = MapInfo->resetTimeHeroic; std::string ResetTimeHeroicStr; if(ResetTimeHeroic) ResetTimeHeroicStr = secsToTimeString(ResetTimeHeroic, true, false); - if(MapInfo->IsMountAllowed()) ss << GetTrinityString(LANG_MOUNTABLE); - if(ResetTimeRaid && !ResetTimeHeroic) PSendSysMessage(ss.str().c_str(), ResetTimeRaidStr.c_str()); else if(!ResetTimeRaid && ResetTimeHeroic) @@ -4011,19 +3499,15 @@ bool ChatHandler::HandleLookupMapCommand(const char* args) PSendSysMessage(ss.str().c_str(), ResetTimeRaidStr.c_str(), ResetTimeHeroicStr.c_str()); else SendSysMessage(ss.str().c_str()); - if(!found) found = true; } } } - if(!found) SendSysMessage(LANG_COMMAND_NOMAPFOUND); - return true; } - /** \brief GM command level 3 - Create a guild. * * This command allows a GM (level 3) to create a guild. @@ -4036,28 +3520,22 @@ bool ChatHandler::HandleGuildCreateCommand(const char* args) { if(!*args) return false; - // if not guild name only (in "") then player name Player* target; if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, &target)) return false; - char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args; if(!tailStr) return false; - char* guildStr = extractQuotedArg(tailStr); if(!guildStr) return false; - std::string guildname = guildStr; - if (target->GetGuildId()) { SendSysMessage (LANG_PLAYER_IN_GUILD); return true; } - Guild *guild = new Guild; if (!guild->Create (target,guildname)) { @@ -4066,60 +3544,47 @@ bool ChatHandler::HandleGuildCreateCommand(const char* args) SetSentErrorMessage (true); return false; } - objmgr.AddGuild (guild); return true; } - bool ChatHandler::HandleGuildInviteCommand(const char *args) { if(!*args) return false; - // if not guild name only (in "") then player name uint64 target_guid; if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, NULL, &target_guid)) return false; - char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args; if(!tailStr) return false; - char* guildStr = extractQuotedArg(tailStr); if(!guildStr) return false; - std::string glName = guildStr; Guild* targetGuild = objmgr.GetGuildByName (glName); if (!targetGuild) return false; - // player's guild membership checked in AddMember before add if (!targetGuild->AddMember (target_guid,targetGuild->GetLowestRank ())) return false; - return true; } - bool ChatHandler::HandleGuildUninviteCommand(const char *args) { Player* target; uint64 target_guid; if(!extractPlayerTarget((char*)args,&target,&target_guid)) return false; - uint32 glId = target ? target->GetGuildId () : Player::GetGuildIdFromDB (target_guid); if (!glId) return false; - Guild* targetGuild = objmgr.GetGuildById (glId); if (!targetGuild) return false; - targetGuild->DelMember (target_guid); return true; } - bool ChatHandler::HandleGuildRankCommand(const char *args) { char* nameStr; @@ -4127,59 +3592,45 @@ bool ChatHandler::HandleGuildRankCommand(const char *args) extractOptFirstArg((char*)args,&nameStr,&rankStr); if(!rankStr) return false; - Player* target; uint64 target_guid; std::string target_name; if(!extractPlayerTarget(nameStr,&target,&target_guid,&target_name)) return false; - uint32 glId = target ? target->GetGuildId () : Player::GetGuildIdFromDB (target_guid); if (!glId) return false; - Guild* targetGuild = objmgr.GetGuildById (glId); if (!targetGuild) return false; - uint32 newrank = uint32 (atoi (rankStr)); if (newrank > targetGuild->GetLowestRank ()) return false; - targetGuild->ChangeRank (target_guid,newrank); return true; } - bool ChatHandler::HandleGuildDeleteCommand(const char* args) { if (!*args) return false; - char* guildStr = extractQuotedArg((char*)args); if(!guildStr) return false; - std::string gld = guildStr; - Guild* targetGuild = objmgr.GetGuildByName (gld); if (!targetGuild) return false; - targetGuild->Disband (); - return true; } - bool ChatHandler::HandleGetDistanceCommand(const char* args) { WorldObject* obj = NULL; - if (*args) { uint64 guid = extractGuidFromLink((char*)args); if(guid) obj = (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*m_session->GetPlayer(),guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT); - if(!obj) { SendSysMessage(LANG_PLAYER_NOT_FOUND); @@ -4190,7 +3641,6 @@ bool ChatHandler::HandleGetDistanceCommand(const char* args) else { obj = getSelectedUnit(); - if(!obj) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); @@ -4198,29 +3648,23 @@ bool ChatHandler::HandleGetDistanceCommand(const char* args) return false; } } - PSendSysMessage(LANG_DISTANCE, m_session->GetPlayer()->GetDistance(obj),m_session->GetPlayer()->GetDistance2d(obj)); - return true; } - bool ChatHandler::HandleDieCommand(const char* /*args*/) { Unit* target = getSelectedUnit(); - if(!target || !m_session->GetPlayer()->GetSelection()) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - if(target->GetTypeId()==TYPEID_PLAYER) { if(HasLowerSecurity((Player*)target,0,false)) return false; } - if( target->isAlive() ) { if(sWorld.getConfig(CONFIG_DIE_COMMAND_MODE)) @@ -4228,39 +3672,29 @@ bool ChatHandler::HandleDieCommand(const char* /*args*/) else m_session->GetPlayer()->DealDamage(target, target->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); } - return true; } - bool ChatHandler::HandleDamageCommand(const char * args) { if (!*args) return false; - Unit* target = getSelectedUnit(); - if (!target || !m_session->GetPlayer()->GetSelection()) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - if (!target->isAlive()) return true; - char* damageStr = strtok((char*)args, " "); if (!damageStr) return false; - int32 damage_int = atoi((char*)damageStr); if(damage_int <=0) return true; - uint32 damage = damage_int; - char* schoolStr = strtok((char*)NULL, " "); - // flat melee damage without resistence/etc reduction if (!schoolStr) { @@ -4269,53 +3703,39 @@ bool ChatHandler::HandleDamageCommand(const char * args) m_session->GetPlayer()->SendAttackStateUpdate (HITINFO_NORMALSWING2, target, 1, SPELL_SCHOOL_MASK_NORMAL, damage, 0, 0, VICTIMSTATE_NORMAL, 0); return true; } - uint32 school = schoolStr ? atoi((char*)schoolStr) : SPELL_SCHOOL_NORMAL; if(school >= MAX_SPELL_SCHOOL) return false; - SpellSchoolMask schoolmask = SpellSchoolMask(1 << school); - if ( schoolmask & SPELL_SCHOOL_MASK_NORMAL ) damage = m_session->GetPlayer()->CalcArmorReducedDamage(target, damage, NULL, BASE_ATTACK); - char* spellStr = strtok((char*)NULL, " "); - // melee damage by specific school if (!spellStr) { uint32 absorb = 0; uint32 resist = 0; - m_session->GetPlayer()->CalcAbsorbResist(target,schoolmask, SPELL_DIRECT_DAMAGE, damage, &absorb, &resist); - if (damage <= absorb + resist) return true; - damage -= absorb + resist; - m_session->GetPlayer()->DealDamageMods(target,damage,&absorb); m_session->GetPlayer()->DealDamage(target, damage, NULL, DIRECT_DAMAGE, schoolmask, NULL, false); m_session->GetPlayer()->SendAttackStateUpdate (HITINFO_NORMALSWING2, target, 1, schoolmask, damage, absorb, resist, VICTIMSTATE_NORMAL, 0); return true; } - // non-melee damage - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spellid = extractSpellIdFromLink((char*)args); if (!spellid || !sSpellStore.LookupEntry(spellid)) return false; - m_session->GetPlayer()->SpellNonMeleeDamageLog(target, spellid, damage); return true; } - bool ChatHandler::HandleModifyArenaCommand(const char * args) { if (!*args) return false; - Player *target = getSelectedPlayer(); if(!target) { @@ -4323,23 +3743,17 @@ bool ChatHandler::HandleModifyArenaCommand(const char * args) SetSentErrorMessage(true); return false; } - int32 amount = (uint32)atoi(args); - target->ModifyArenaPoints(amount); - PSendSysMessage(LANG_COMMAND_MODIFY_ARENA, GetNameLink(target).c_str(), target->GetArenaPoints()); - return true; } - bool ChatHandler::HandleReviveCommand(const char* args) { Player* target; uint64 target_guid; if(!extractPlayerTarget((char*)args,&target,&target_guid)) return false; - if (target) { target->ResurrectPlayer(0.5f); @@ -4349,10 +3763,8 @@ bool ChatHandler::HandleReviveCommand(const char* args) else // will resurrected at login without corpse ObjectAccessor::Instance().ConvertCorpseForPlayer(target_guid); - return true; } - bool ChatHandler::HandleAuraCommand(const char* args) { Unit *target = getSelectedUnit(); @@ -4362,10 +3774,8 @@ bool ChatHandler::HandleAuraCommand(const char* args) SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spellID = extractSpellIdFromLink((char*)args); - SpellEntry const *spellInfo = sSpellStore.LookupEntry( spellID ); uint8 eff_mask=0; if(spellInfo) @@ -4385,10 +3795,8 @@ bool ChatHandler::HandleAuraCommand(const char* args) Aura *Aur = new Aura(spellInfo, eff_mask, target, target, target); target->AddAura(Aur); } - return true; } - bool ChatHandler::HandleUnAuraCommand(const char* args) { Unit *target = getSelectedUnit(); @@ -4398,39 +3806,29 @@ bool ChatHandler::HandleUnAuraCommand(const char* args) SetSentErrorMessage(true); return false; } - std::string argstr = args; if (argstr == "all") { target->RemoveAllAuras(); return true; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spellID = extractSpellIdFromLink((char*)args); if(!spellID) return false; - target->RemoveAurasDueToSpell(spellID); - return true; } - bool ChatHandler::HandleLinkGraveCommand(const char* args) { if(!*args) return false; - char* px = strtok((char*)args, " "); if (!px) return false; - uint32 g_id = (uint32)atoi(px); - uint32 g_team; - char* px2 = strtok(NULL, " "); - if (!px2) g_team = 0; else if (strncmp(px2,"horde",6)==0) @@ -4439,20 +3837,15 @@ bool ChatHandler::HandleLinkGraveCommand(const char* args) g_team = ALLIANCE; else return false; - WorldSafeLocsEntry const* graveyard = sWorldSafeLocsStore.LookupEntry(g_id); - if(!graveyard ) { PSendSysMessage(LANG_COMMAND_GRAVEYARDNOEXIST, g_id); SetSentErrorMessage(true); return false; } - Player* player = m_session->GetPlayer(); - uint32 zoneId = player->GetZoneId(); - AreaTableEntry const *areaEntry = GetAreaEntryByAreaID(zoneId); if(!areaEntry || areaEntry->zone !=0 ) { @@ -4460,21 +3853,16 @@ bool ChatHandler::HandleLinkGraveCommand(const char* args) SetSentErrorMessage(true); return false; } - if(objmgr.AddGraveYardLink(g_id,zoneId,g_team)) PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, g_id,zoneId); else PSendSysMessage(LANG_COMMAND_GRAVEYARDALRLINKED, g_id,zoneId); - return true; } - bool ChatHandler::HandleNearGraveCommand(const char* args) { uint32 g_team; - size_t argslen = strlen(args); - if(!*args) g_team = 0; else if (strncmp((char*)args,"horde",argslen)==0) @@ -4483,17 +3871,13 @@ bool ChatHandler::HandleNearGraveCommand(const char* args) g_team = ALLIANCE; else return false; - Player* player = m_session->GetPlayer(); uint32 zone_id = player->GetZoneId(); - WorldSafeLocsEntry const* graveyard = objmgr.GetClosestGraveYard( player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(),player->GetMapId(),g_team); - if(graveyard) { uint32 g_id = graveyard->ID; - GraveYardData const* data = objmgr.FindGraveYardData(g_id,zone_id); if (!data) { @@ -4501,40 +3885,32 @@ bool ChatHandler::HandleNearGraveCommand(const char* args) SetSentErrorMessage(true); return false; } - g_team = data->team; - std::string team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_NOTEAM); - if(g_team == 0) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_ANY); else if(g_team == HORDE) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_HORDE); else if(g_team == ALLIANCE) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_ALLIANCE); - PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, g_id,team_name.c_str(),zone_id); } else { std::string team_name; - if(g_team == 0) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_ANY); else if(g_team == HORDE) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_HORDE); else if(g_team == ALLIANCE) team_name = GetTrinityString(LANG_COMMAND_GRAVEYARD_ALLIANCE); - if(g_team == ~uint32(0)) PSendSysMessage(LANG_COMMAND_ZONENOGRAVEYARDS, zone_id); else PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id,team_name.c_str()); } - return true; } - //-----------------------Npc Commands----------------------- bool ChatHandler::HandleNpcAllowMovementCommand(const char* /*args*/) { @@ -4550,16 +3926,13 @@ bool ChatHandler::HandleNpcAllowMovementCommand(const char* /*args*/) } return true; } - bool ChatHandler::HandleNpcChangeEntryCommand(const char *args) { if (!*args) return false; - uint32 newEntryNum = atoi(args); if(!newEntryNum) return false; - Unit* unit = getSelectedUnit(); if(!unit || unit->GetTypeId() != TYPEID_UNIT) { @@ -4574,31 +3947,26 @@ bool ChatHandler::HandleNpcChangeEntryCommand(const char *args) SendSysMessage(LANG_ERROR); return true; } - bool ChatHandler::HandleNpcInfoCommand(const char* /*args*/) { Creature* target = getSelectedCreature(); - if(!target) { SendSysMessage(LANG_SELECT_CREATURE); SetSentErrorMessage(true); return false; } - uint32 faction = target->getFaction(); uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS); uint32 displayid = target->GetDisplayId(); uint32 nativeid = target->GetNativeDisplayId(); uint32 Entry = target->GetEntry(); CreatureInfo const* cInfo = target->GetCreatureInfo(); - int32 curRespawnDelay = target->GetRespawnTimeEx()-time(NULL); if(curRespawnDelay < 0) curRespawnDelay = 0; std::string curRespawnDelayStr = secsToTimeString(curRespawnDelay,true); std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(),true); - PSendSysMessage(LANG_NPCINFO_CHAR, target->GetDBTableGUIDLow(), faction, npcflags, Entry, displayid, nativeid); PSendSysMessage(LANG_NPCINFO_LEVEL, target->getLevel()); PSendSysMessage(LANG_NPCINFO_HEALTH,target->GetCreateHealth(), target->GetMaxHealth(), target->GetHealth()); @@ -4610,7 +3978,6 @@ bool ChatHandler::HandleNpcInfoCommand(const char* /*args*/) if(const CreatureData* const linked = target->GetLinkedRespawnCreatureData()) if(CreatureInfo const *master = GetCreatureInfo(linked->id)) PSendSysMessage(LANG_NPCINFO_LINKGUID, objmgr.GetLinkedRespawnGuid(target->GetDBTableGUIDLow()), linked->id, master->Name); - if ((npcflags & UNIT_NPC_FLAG_VENDOR) ) { SendSysMessage(LANG_NPCINFO_VENDOR); @@ -4619,15 +3986,12 @@ bool ChatHandler::HandleNpcInfoCommand(const char* /*args*/) { SendSysMessage(LANG_NPCINFO_TRAINER); } - return true; } - //play npc emote bool ChatHandler::HandleNpcPlayEmoteCommand(const char* args) { uint32 emote = atoi((char*)args); - Creature* target = getSelectedCreature(); if(!target) { @@ -4635,47 +3999,35 @@ bool ChatHandler::HandleNpcPlayEmoteCommand(const char* args) SetSentErrorMessage(true); return false; } - target->SetUInt32Value(UNIT_NPC_EMOTESTATE,emote); - return true; } - //TODO: NpcCommands that needs to be fixed : - bool ChatHandler::HandleNpcAddWeaponCommand(const char* /*args*/) { /*if (!*args) return false; - uint64 guid = m_session->GetPlayer()->GetSelection(); if (guid == 0) { SendSysMessage(LANG_NO_SELECTION); return true; } - Creature *pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(), guid); - if(!pCreature) { SendSysMessage(LANG_SELECT_CREATURE); return true; } - char* pSlotID = strtok((char*)args, " "); if (!pSlotID) return false; - char* pItemID = strtok(NULL, " "); if (!pItemID) return false; - uint32 ItemID = atoi(pItemID); uint32 SlotID = atoi(pSlotID); - ItemPrototype* tmpItem = objmgr.GetItemPrototype(ItemID); - bool added = false; if(tmpItem) { @@ -4698,7 +4050,6 @@ bool ChatHandler::HandleNpcAddWeaponCommand(const char* /*args*/) added = false; break; } - if(added) PSendSysMessage(LANG_ITEM_ADDED_TO_SLOT,ItemID,tmpItem->Name1,SlotID); } @@ -4711,14 +4062,11 @@ bool ChatHandler::HandleNpcAddWeaponCommand(const char* /*args*/) return true; } //---------------------------------------------------------- - bool ChatHandler::HandleExploreCheatCommand(const char* args) { if (!*args) return false; - int flag = atoi((char*)args); - Player *chr = getSelectedPlayer(); if (chr == NULL) { @@ -4726,7 +4074,6 @@ bool ChatHandler::HandleExploreCheatCommand(const char* args) SetSentErrorMessage(true); return false; } - if (flag != 0) { PSendSysMessage(LANG_YOU_SET_EXPLORE_ALL, GetNameLink(chr).c_str()); @@ -4739,7 +4086,6 @@ bool ChatHandler::HandleExploreCheatCommand(const char* args) if (needReportToTarget(chr)) ChatHandler(chr).PSendSysMessage(LANG_YOURS_EXPLORE_SET_NOTHING,GetNameLink().c_str()); } - for (uint8 i=0; i<128; ++i) { if (flag != 0) @@ -4751,10 +4097,8 @@ bool ChatHandler::HandleExploreCheatCommand(const char* args) m_session->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i,0); } } - return true; } - bool ChatHandler::HandleHoverCommand(const char* args) { char* px = strtok((char*)args, " "); @@ -4763,17 +4107,13 @@ bool ChatHandler::HandleHoverCommand(const char* args) flag = 1; else flag = atoi(px); - m_session->GetPlayer()->SetHover(flag); - if (flag) SendSysMessage(LANG_HOVER_ENABLED); else SendSysMessage(LANG_HOVER_DISABLED); - return true; } - void ChatHandler::HandleCharacterLevel(Player* player, uint64 player_guid, uint32 oldlevel, uint32 newlevel) { if(player) @@ -4781,7 +4121,6 @@ void ChatHandler::HandleCharacterLevel(Player* player, uint64 player_guid, uint3 player->GiveLevel(newlevel); player->InitTalentForLevel(); player->SetUInt32Value(PLAYER_XP,0); - if(needReportToTarget(player)) { if(oldlevel == newlevel) @@ -4798,7 +4137,6 @@ void ChatHandler::HandleCharacterLevel(Player* player, uint64 player_guid, uint3 CharacterDatabase.PExecute("UPDATE characters SET level = '%u', xp = 0 WHERE guid = '%u'", newlevel, GUID_LOPART(player_guid)); } } - bool ChatHandler::HandleCharacterLevelCommand(const char* args) { char* nameStr; @@ -4806,85 +4144,66 @@ bool ChatHandler::HandleCharacterLevelCommand(const char* args) extractOptFirstArg((char*)args,&nameStr,&levelStr); if(!levelStr) return false; - // exception opt second arg: .character level $name if(isalpha(levelStr[0])) { nameStr = levelStr; levelStr = NULL; // current level will used } - Player* target; uint64 target_guid; std::string target_name; if(!extractPlayerTarget(nameStr,&target,&target_guid,&target_name)) return false; - int32 oldlevel = target ? target->getLevel() : Player::GetLevelFromDB(target_guid); int32 newlevel = levelStr ? atoi(levelStr) : oldlevel; - if(newlevel < 1) return false; // invalid level - if(newlevel > STRONG_MAX_LEVEL) // hardcoded maximum level newlevel = STRONG_MAX_LEVEL; - HandleCharacterLevel(target,target_guid,oldlevel,newlevel); - if(!m_session || m_session->GetPlayer() != target) // including player==NULL { std::string nameLink = playerLink(target_name); PSendSysMessage(LANG_YOU_CHANGE_LVL,nameLink.c_str(),newlevel); } - return true; } - bool ChatHandler::HandleLevelUpCommand(const char* args) { char* nameStr; char* levelStr; extractOptFirstArg((char*)args,&nameStr,&levelStr); - // exception opt second arg: .character level $name if(levelStr && isalpha(levelStr[0])) { nameStr = levelStr; levelStr = NULL; // current level will used } - Player* target; uint64 target_guid; std::string target_name; if(!extractPlayerTarget(nameStr,&target,&target_guid,&target_name)) return false; - int32 oldlevel = target ? target->getLevel() : Player::GetLevelFromDB(target_guid); int32 addlevel = levelStr ? atoi(levelStr) : 1; int32 newlevel = oldlevel + addlevel; - if(newlevel < 1) newlevel = 1; - if(newlevel > STRONG_MAX_LEVEL) // hardcoded maximum level newlevel = STRONG_MAX_LEVEL; - HandleCharacterLevel(target,target_guid,oldlevel,newlevel); - if(!m_session || m_session->GetPlayer() != target) // including chr==NULL { std::string nameLink = playerLink(target_name); PSendSysMessage(LANG_YOU_CHANGE_LVL,nameLink.c_str(),newlevel); } - return true; } - bool ChatHandler::HandleShowAreaCommand(const char* args) { if (!*args) return false; - Player *chr = getSelectedPlayer(); if (chr == NULL) { @@ -4892,30 +4211,24 @@ bool ChatHandler::HandleShowAreaCommand(const char* args) SetSentErrorMessage(true); return false; } - int area = GetAreaFlagByAreaID(atoi((char*)args)); int offset = area / 32; uint32 val = (uint32)(1 << (area % 32)); - if(area<0 || offset >= 128) { SendSysMessage(LANG_BAD_VALUE); SetSentErrorMessage(true); return false; } - uint32 currFields = chr->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); chr->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, (uint32)(currFields | val)); - SendSysMessage(LANG_EXPLORE_AREA); return true; } - bool ChatHandler::HandleHideAreaCommand(const char* args) { if (!*args) return false; - Player *chr = getSelectedPlayer(); if (chr == NULL) { @@ -4923,37 +4236,29 @@ bool ChatHandler::HandleHideAreaCommand(const char* args) SetSentErrorMessage(true); return false; } - int area = GetAreaFlagByAreaID(atoi((char*)args)); int offset = area / 32; uint32 val = (uint32)(1 << (area % 32)); - if(area<0 || offset >= 128) { SendSysMessage(LANG_BAD_VALUE); SetSentErrorMessage(true); return false; } - uint32 currFields = chr->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); chr->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, (uint32)(currFields ^ val)); - SendSysMessage(LANG_UNEXPLORE_AREA); return true; } - bool ChatHandler::HandleBankCommand(const char* /*args*/) { m_session->SendShowBank( m_session->GetPlayer()->GetGUID() ); - return true; } - bool ChatHandler::HandleChangeWeather(const char* args) { if(!*args) return false; - //Weather is OFF if (!sWorld.getConfig(CONFIG_WEATHER)) { @@ -4961,22 +4266,16 @@ bool ChatHandler::HandleChangeWeather(const char* args) SetSentErrorMessage(true); return false; } - //*Change the weather of a cell char* px = strtok((char*)args, " "); char* py = strtok(NULL, " "); - if (!px || !py) return false; - uint32 type = (uint32)atoi(px); //0 to 3, 0: fine, 1: rain, 2: snow, 3: sand float grade = (float)atof(py); //0 to 1, sending -1 is instand good weather - Player *player = m_session->GetPlayer(); uint32 zoneid = player->GetZoneId(); - Weather* wth = sWorld.FindWeather(zoneid); - if(!wth) wth = sWorld.AddWeather(zoneid); if(!wth) @@ -4985,17 +4284,13 @@ bool ChatHandler::HandleChangeWeather(const char* args) SetSentErrorMessage(true); return false; } - wth->SetWeather(WeatherType(type), grade); - return true; } - bool ChatHandler::HandleDebugSet32Bit(const char* args) { if(!*args) return false; - WorldObject* target = getSelectedObject(); if(!target) { @@ -5003,45 +4298,34 @@ bool ChatHandler::HandleDebugSet32Bit(const char* args) SetSentErrorMessage(true); return false; } - char* px = strtok((char*)args, " "); char* py = strtok(NULL, " "); - if (!px || !py) return false; - uint32 Opcode = (uint32)atoi(px); uint32 Value = (uint32)atoi(py); if (Value > 32) //uint32 = 32 bits return false; - sLog.outDebug(GetTrinityString(LANG_SET_32BIT), Opcode, Value); - uint32 iValue = Value ? 1 << (Value - 1) : 0; target->SetUInt32Value( Opcode , iValue); - PSendSysMessage(LANG_SET_32BIT_FIELD, Opcode, iValue); return true; } - bool ChatHandler::HandleTeleAddCommand(const char * args) { if(!*args) return false; - Player *player=m_session->GetPlayer(); if (!player) return false; - std::string name = args; - if(objmgr.GetGameTele(name)) { SendSysMessage(LANG_COMMAND_TP_ALREADYEXIST); SetSentErrorMessage(true); return false; } - GameTele tele; tele.position_x = player->GetPositionX(); tele.position_y = player->GetPositionY(); @@ -5049,7 +4333,6 @@ bool ChatHandler::HandleTeleAddCommand(const char * args) tele.orientation = player->GetOrientation(); tele.mapId = player->GetMapId(); tele.name = name; - if(objmgr.AddGameTele(tele)) { SendSysMessage(LANG_COMMAND_TP_ADDED); @@ -5060,28 +4343,22 @@ bool ChatHandler::HandleTeleAddCommand(const char * args) SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandleTeleDelCommand(const char * args) { if(!*args) return false; - std::string name = args; - if(!objmgr.DeleteGameTele(name)) { SendSysMessage(LANG_COMMAND_TELE_NOTFOUND); SetSentErrorMessage(true); return false; } - SendSysMessage(LANG_COMMAND_TP_DELETED); return true; } - bool ChatHandler::HandleListAurasCommand (const char * /*args*/) { Unit *unit = getSelectedUnit(); @@ -5091,23 +4368,18 @@ bool ChatHandler::HandleListAurasCommand (const char * /*args*/) SetSentErrorMessage(true); return false; } - char const* talentStr = GetTrinityString(LANG_TALENT); char const* passiveStr = GetTrinityString(LANG_PASSIVE); - Unit::AuraMap const& uAuras = unit->GetAuras(); PSendSysMessage(LANG_COMMAND_TARGET_LISTAURAS, uAuras.size()); for (Unit::AuraMap::const_iterator itr = uAuras.begin(); itr != uAuras.end(); ++itr) { bool talent = GetTalentSpellCost(itr->second->GetId()) > 0; - char const* name = itr->second->GetSpellProto()->SpellName[GetSessionDbcLocale()]; - if (m_session) { std::ostringstream ss_name; ss_name << "|cffffffff|Hspell:" << itr->second->GetId() << "|h[" << name << "]|h|r"; - PSendSysMessage(LANG_COMMAND_TARGET_AURADETAIL, itr->second->GetId(), itr->second->GetEffectMask(), itr->second->GetAuraCharges(), itr->second->GetStackAmount(),itr->second->GetAuraSlot(), itr->second->GetAuraDuration(), itr->second->GetAuraMaxDuration(), @@ -5133,50 +4405,40 @@ bool ChatHandler::HandleListAurasCommand (const char * /*args*/) for (Unit::AuraEffectList::const_iterator itr = uAuraList.begin(); itr != uAuraList.end(); ++itr) { bool talent = GetTalentSpellCost((*itr)->GetId()) > 0; - char const* name = (*itr)->GetSpellProto()->SpellName[GetSessionDbcLocale()]; - std::ostringstream ss_name; ss_name << "|cffffffff|Hspell:" << (*itr)->GetId() << "|h[" << name << "]|h|r"; - PSendSysMessage(LANG_COMMAND_TARGET_AURASIMPLE, (*itr)->GetId(), (*itr)->GetEffIndex(), (*itr)->GetAmount()); } } return true; } - bool ChatHandler::HandleResetAchievementsCommand (const char * args) { Player* target; uint64 target_guid; if (!extractPlayerTarget((char*)args,&target,&target_guid)) return false; - if(target) target->GetAchievementMgr().Reset(); else AchievementMgr::DeleteFromDB(GUID_LOPART(target_guid)); - return true; } - bool ChatHandler::HandleResetHonorCommand (const char * args) { Player* target; if (!extractPlayerTarget((char*)args,&target)) return false; - target->SetUInt32Value(PLAYER_FIELD_KILLS, 0); target->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); target->SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, 0); target->SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, 0); target->SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, 0); target->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL); - return true; } - static bool HandleResetStatsOrLevelHelper(Player* player) { ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(player->getClass()); @@ -5185,52 +4447,37 @@ static bool HandleResetStatsOrLevelHelper(Player* player) sLog.outError("Class %u not found in DBC (Wrong DBC files?)",player->getClass()); return false; } - uint8 powertype = cEntry->powerType; - // reset m_form if no aura if(!player->HasAuraType(SPELL_AURA_MOD_SHAPESHIFT)) player->m_form = FORM_NONE; - player->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, DEFAULT_WORLD_OBJECT_SIZE ); player->SetFloatValue(UNIT_FIELD_COMBATREACH, DEFAULT_COMBAT_REACH ); - player->setFactionForRace(player->getRace()); - player->SetUInt32Value(UNIT_FIELD_BYTES_0, ( ( player->getRace() ) | ( player->getClass() << 8 ) | ( player->getGender() << 16 ) | ( powertype << 24 ) ) ); - // reset only if player not in some form; if(player->m_form==FORM_NONE) player->InitDisplayIds(); - player->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP ); player->SetByteValue(UNIT_FIELD_BYTES_2, 3, player->m_form); - player->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); - //-1 is default value player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); - //player->SetUInt32Value(PLAYER_FIELD_BYTES, 0xEEE00000 ); return true; } - bool ChatHandler::HandleResetLevelCommand(const char * args) { Player* target; if(!extractPlayerTarget((char*)args,&target)) return false; - if(!HandleResetStatsOrLevelHelper(target)) return false; - // set starting level uint32 start_level = target->getClass() != CLASS_DEATH_KNIGHT ? sWorld.getConfig(CONFIG_START_PLAYER_LEVEL) : sWorld.getConfig(CONFIG_START_HEROIC_PLAYER_LEVEL); - target->_ApplyAllLevelScaleItemMods(false); - target->SetLevel(start_level); target->InitRunes(); target->InitStatsForLevel(true); @@ -5238,34 +4485,26 @@ bool ChatHandler::HandleResetLevelCommand(const char * args) target->InitGlyphsForLevel(); target->InitTalentForLevel(); target->SetUInt32Value(PLAYER_XP,0); - target->_ApplyAllLevelScaleItemMods(true); - // reset level for pet if(Pet* pet = target->GetPet()) pet->SynchronizeLevelWithOwner(); - return true; } - bool ChatHandler::HandleResetStatsCommand(const char * args) { Player* target; if (!extractPlayerTarget((char*)args,&target)) return false; - if (!HandleResetStatsOrLevelHelper(target)) return false; - target->InitRunes(); target->InitStatsForLevel(true); target->InitTaxiNodesForLevel(); target->InitGlyphsForLevel(); target->InitTalentForLevel(); - return true; } - bool ChatHandler::HandleResetSpellsCommand(const char * args) { Player* target; @@ -5273,11 +4512,9 @@ bool ChatHandler::HandleResetSpellsCommand(const char * args) std::string target_name; if(!extractPlayerTarget((char*)args,&target,&target_guid,&target_name)) return false; - if(target) { target->resetSpells(/* bool myClassOnly */); - ChatHandler(target).SendSysMessage(LANG_RESET_SPELLS); if(!m_session || m_session->GetPlayer() != target) PSendSysMessage(LANG_RESET_SPELLS_ONLINE,GetNameLink(target).c_str()); @@ -5287,10 +4524,8 @@ bool ChatHandler::HandleResetSpellsCommand(const char * args) CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '%u' WHERE guid = '%u'",uint32(AT_LOGIN_RESET_SPELLS), GUID_LOPART(target_guid)); PSendSysMessage(LANG_RESET_SPELLS_OFFLINE,target_name.c_str()); } - return true; } - bool ChatHandler::HandleResetTalentsCommand(const char * args) { Player* target; @@ -5307,19 +4542,16 @@ bool ChatHandler::HandleResetTalentsCommand(const char * args) { ((Pet *)creature)->resetTalents(true); ((Player*)owner)->SendTalentsInfoData(true); - ChatHandler((Player*)owner).SendSysMessage(LANG_RESET_PET_TALENTS); if(!m_session || m_session->GetPlayer()!=((Player*)owner)) PSendSysMessage(LANG_RESET_PET_TALENTS_ONLINE,GetNameLink((Player*)owner).c_str()); } return true; } - SendSysMessage(LANG_NO_CHAR_SELECTED); SetSentErrorMessage(true); return false; } - if (target) { target->resetTalents(true); @@ -5327,7 +4559,6 @@ bool ChatHandler::HandleResetTalentsCommand(const char * args) ChatHandler(target).SendSysMessage(LANG_RESET_TALENTS); if (!m_session || m_session->GetPlayer()!=target) PSendSysMessage(LANG_RESET_TALENTS_ONLINE,GetNameLink(target).c_str()); - Pet* pet = target->GetPet(); Pet::resetTalentsForAllPetsOf(target,pet); if(pet) @@ -5342,21 +4573,16 @@ bool ChatHandler::HandleResetTalentsCommand(const char * args) PSendSysMessage(LANG_RESET_TALENTS_OFFLINE,nameLink.c_str()); return true; } - SendSysMessage(LANG_NO_CHAR_SELECTED); SetSentErrorMessage(true); return false; } - bool ChatHandler::HandleResetAllCommand(const char * args) { if(!*args) return false; - std::string casename = args; - AtLoginFlags atLogin; - // Command specially created as single command to prevent using short case names if(casename=="spells") { @@ -5378,161 +4604,125 @@ bool ChatHandler::HandleResetAllCommand(const char * args) SetSentErrorMessage(true); return false; } - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '%u' WHERE (at_login & '%u') = '0'",atLogin,atLogin); HashMapHolder<Player>::MapType const& plist = ObjectAccessor::Instance().GetPlayers(); for(HashMapHolder<Player>::MapType::const_iterator itr = plist.begin(); itr != plist.end(); ++itr) itr->second->SetAtLoginFlag(atLogin); - return true; } - bool ChatHandler::HandleServerShutDownCancelCommand(const char* /*args*/) { sWorld.ShutdownCancel(); return true; } - bool ChatHandler::HandleServerShutDownCommand(const char* args) { if(!*args) return false; - char* time_str = strtok ((char*) args, " "); char* exitcode_str = strtok (NULL, ""); - int32 time = atoi (time_str); - ///- Prevent interpret wrong arg value as 0 secs shutdown time if ((time == 0 && (time_str[0]!='0' || time_str[1]!='\0')) || time < 0) return false; - if (exitcode_str) { int32 exitcode = atoi (exitcode_str); - // Handle atoi() errors if (exitcode == 0 && (exitcode_str[0] != '0' || exitcode_str[1] != '\0')) return false; - // Exit code should be in range of 0-125, 126-255 is used // in many shells for their own return codes and code > 255 // is not supported in many others if (exitcode < 0 || exitcode > 125) return false; - sWorld.ShutdownServ (time, 0, exitcode); } else sWorld.ShutdownServ(time,0,SHUTDOWN_EXIT_CODE); return true; } - bool ChatHandler::HandleServerRestartCommand(const char* args) { if(!*args) return false; - char* time_str = strtok ((char*) args, " "); char* exitcode_str = strtok (NULL, ""); - int32 time = atoi (time_str); - ///- Prevent interpret wrong arg value as 0 secs shutdown time if ((time == 0 && (time_str[0]!='0' || time_str[1]!='\0') || time < 0)) return false; - if (exitcode_str) { int32 exitcode = atoi (exitcode_str); - // Handle atoi() errors if (exitcode == 0 && (exitcode_str[0] != '0' || exitcode_str[1] != '\0')) return false; - // Exit code should be in range of 0-125, 126-255 is used // in many shells for their own return codes and code > 255 // is not supported in many others if (exitcode < 0 || exitcode > 125) return false; - sWorld.ShutdownServ (time, SHUTDOWN_MASK_RESTART, exitcode); } else sWorld.ShutdownServ(time, SHUTDOWN_MASK_RESTART, RESTART_EXIT_CODE); return true; } - bool ChatHandler::HandleServerIdleRestartCommand(const char* args) { if(!*args) return false; - char* time_str = strtok ((char*) args, " "); char* exitcode_str = strtok (NULL, ""); - int32 time = atoi (time_str); - ///- Prevent interpret wrong arg value as 0 secs shutdown time if ((time == 0 && (time_str[0]!='0' || time_str[1]!='\0') || time < 0)) return false; - if (exitcode_str) { int32 exitcode = atoi (exitcode_str); - // Handle atoi() errors if (exitcode == 0 && (exitcode_str[0] != '0' || exitcode_str[1] != '\0')) return false; - // Exit code should be in range of 0-125, 126-255 is used // in many shells for their own return codes and code > 255 // is not supported in many others if (exitcode < 0 || exitcode > 125) return false; - sWorld.ShutdownServ (time, SHUTDOWN_MASK_RESTART|SHUTDOWN_MASK_IDLE, exitcode); } else sWorld.ShutdownServ(time,SHUTDOWN_MASK_RESTART|SHUTDOWN_MASK_IDLE,RESTART_EXIT_CODE); return true; } - bool ChatHandler::HandleServerIdleShutDownCommand(const char* args) { if(!*args) return false; - char* time_str = strtok ((char*) args, " "); char* exitcode_str = strtok (NULL, ""); - int32 time = atoi (time_str); - ///- Prevent interpret wrong arg value as 0 secs shutdown time if(time == 0 && (time_str[0]!='0' || time_str[1]!='\0') || time < 0) return false; - if (exitcode_str) { int32 exitcode = atoi (exitcode_str); - // Handle atoi() errors if (exitcode == 0 && (exitcode_str[0] != '0' || exitcode_str[1] != '\0')) return false; - // Exit code should be in range of 0-125, 126-255 is used // in many shells for their own return codes and code > 255 // is not supported in many others if (exitcode < 0 || exitcode > 125) return false; - sWorld.ShutdownServ (time, SHUTDOWN_MASK_IDLE, exitcode); } else sWorld.ShutdownServ(time,SHUTDOWN_MASK_IDLE,SHUTDOWN_EXIT_CODE); return true; } - bool ChatHandler::HandleQuestAdd(const char* args) { Player* player = getSelectedPlayer(); @@ -5542,31 +4732,25 @@ bool ChatHandler::HandleQuestAdd(const char* args) 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 = objmgr.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); @@ -5574,19 +4758,15 @@ bool ChatHandler::HandleQuestAdd(const char* args) 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(); @@ -5596,24 +4776,19 @@ bool ChatHandler::HandleQuestRemove(const char* args) 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 = objmgr.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 ) { @@ -5621,22 +4796,17 @@ bool ChatHandler::HandleQuestRemove(const char* args) 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(); @@ -5646,17 +4816,13 @@ bool ChatHandler::HandleQuestComplete(const char* args) 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 = objmgr.GetQuestTemplate(entry); - // If player doesn't have the quest if(!pQuest || player->GetQuestStatus(entry) == QUEST_STATUS_NONE) { @@ -5664,7 +4830,6 @@ bool ChatHandler::HandleQuestComplete(const char* args) SetSentErrorMessage(true); return false; } - // Add quest items for quests that require items for(uint8 x = 0; x < QUEST_OBJECTIVES_COUNT; ++x) { @@ -5672,9 +4837,7 @@ bool ChatHandler::HandleQuestComplete(const char* args) 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 ) @@ -5683,13 +4846,11 @@ bool ChatHandler::HandleQuestComplete(const char* args) 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) { uint32 creature = pQuest->ReqCreatureOrGOId[i]; uint32 creaturecount = pQuest->ReqCreatureOrGOCount[i]; - if(uint32 spell_id = pQuest->ReqSpell[i]) { for(uint16 z = 0; z < creaturecount; ++z) @@ -5707,7 +4868,6 @@ bool ChatHandler::HandleQuestComplete(const char* args) player->CastedCreatureOrGO(creature,0,0); } } - // If the quest requires reputation to complete if(uint32 repFaction = pQuest->GetRepObjectiveFaction()) { @@ -5717,50 +4877,39 @@ bool ChatHandler::HandleQuestComplete(const char* args) if(FactionEntry const *factionEntry = sFactionStore.LookupEntry(repFaction)) player->GetReputationMgr().SetReputation(factionEntry,repValue); } - // 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); } - bool ChatHandler::HandleBanCharacterCommand(const char* args) { return HandleBanHelper(BAN_CHARACTER,args); } - bool ChatHandler::HandleBanIPCommand(const char* args) { return HandleBanHelper(BAN_IP,args); } - bool ChatHandler::HandleBanHelper(BanMode mode, const char* args) { if (!*args) return false; - char* cnameOrIP = strtok ((char*)args, " "); if (!cnameOrIP) return false; - std::string nameOrIP = cnameOrIP; - char* duration = strtok (NULL," "); if(!duration || !atoi(duration)) return false; - char* reason = strtok (NULL,""); if(!reason) return false; - switch(mode) { case BAN_ACCOUNT: @@ -5784,7 +4933,6 @@ bool ChatHandler::HandleBanHelper(BanMode mode, const char* args) return false; break; } - switch(sWorld.BanAccount(mode, nameOrIP, duration, reason,m_session ? m_session->GetPlayerName() : "")) { case BAN_SUCCESS: @@ -5811,36 +4959,28 @@ bool ChatHandler::HandleBanHelper(BanMode mode, const char* args) SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandleUnBanAccountCommand(const char* args) { return HandleUnBanHelper(BAN_ACCOUNT,args); } - bool ChatHandler::HandleUnBanCharacterCommand(const char* args) { return HandleUnBanHelper(BAN_CHARACTER,args); } - bool ChatHandler::HandleUnBanIPCommand(const char* args) { return HandleUnBanHelper(BAN_IP,args); } - bool ChatHandler::HandleUnBanHelper(BanMode mode, const char* args) { if (!*args) return false; - char* cnameOrIP = strtok ((char*)args, " "); if(!cnameOrIP) return false; - std::string nameOrIP = cnameOrIP; - switch(mode) { case BAN_ACCOUNT: @@ -5864,24 +5004,19 @@ bool ChatHandler::HandleUnBanHelper(BanMode mode, const char* args) return false; break; } - if(sWorld.RemoveBanAccount(mode,nameOrIP)) PSendSysMessage(LANG_UNBAN_UNBANNED,nameOrIP.c_str()); else PSendSysMessage(LANG_UNBAN_ERROR,nameOrIP.c_str()); - return true; } - bool ChatHandler::HandleBanInfoAccountCommand(const char* args) { if (!*args) return false; - char* cname = strtok((char*)args, ""); if(!cname) return false; - std::string account_name = cname; if(!AccountMgr::normalizeString(account_name)) { @@ -5889,36 +5024,29 @@ bool ChatHandler::HandleBanInfoAccountCommand(const char* args) SetSentErrorMessage(true); return false; } - uint32 accountid = accmgr.GetId(account_name); if(!accountid) { PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); return true; } - return HandleBanInfoHelper(accountid,account_name.c_str()); } - bool ChatHandler::HandleBanInfoCharacterCommand(const char* args) { Player* target; uint64 target_guid; if(!extractPlayerTarget((char*)args,&target,&target_guid)) return false; - uint32 accountid = target ? target->GetSession()->GetAccountId() : objmgr.GetPlayerAccountIdByGUID(target_guid); - std::string accountname; if(!accmgr.GetName(accountid,accountname)) { PSendSysMessage(LANG_BANINFO_NOCHARACTER); return true; } - return HandleBanInfoHelper(accountid,accountname.c_str()); } - bool ChatHandler::HandleBanInfoHelper(uint32 accountid, char const* accountname) { QueryResult *result = loginDatabase.PQuery("SELECT FROM_UNIXTIME(bandate), unbandate-bandate, active, unbandate,banreason,bannedby FROM account_banned WHERE id = '%u' ORDER BY bandate ASC",accountid); @@ -5927,12 +5055,10 @@ bool ChatHandler::HandleBanInfoHelper(uint32 accountid, char const* accountname) PSendSysMessage(LANG_BANINFO_NOACCOUNTBAN, accountname); return true; } - PSendSysMessage(LANG_BANINFO_BANHISTORY,accountname); do { Field* fields = result->Fetch(); - time_t unbandate = time_t(fields[3].GetUInt64()); bool active = false; if(fields[2].GetBool() && (fields[1].GetUInt64() == (uint64)0 ||unbandate >= time(NULL)) ) @@ -5942,25 +5068,19 @@ bool ChatHandler::HandleBanInfoHelper(uint32 accountid, char const* accountname) PSendSysMessage(LANG_BANINFO_HISTORYENTRY, fields[0].GetString(), bantime.c_str(), active ? GetTrinityString(LANG_BANINFO_YES):GetTrinityString(LANG_BANINFO_NO), fields[4].GetString(), fields[5].GetString()); }while (result->NextRow()); - delete result; return true; } - bool ChatHandler::HandleBanInfoIPCommand(const char* args) { if (!*args) return false; - char* cIP = strtok ((char*)args, ""); if(!cIP) return false; - if (!IsIPAddress(cIP)) return false; - std::string IP = cIP; - loginDatabase.escape_string(IP); QueryResult *result = loginDatabase.PQuery("SELECT ip, FROM_UNIXTIME(bandate), FROM_UNIXTIME(unbandate), unbandate-UNIX_TIMESTAMP(), banreason,bannedby,unbandate-bandate FROM ip_banned WHERE ip = '%s'",IP.c_str()); if(!result) @@ -5968,7 +5088,6 @@ bool ChatHandler::HandleBanInfoIPCommand(const char* args) PSendSysMessage(LANG_BANINFO_NOIP); return true; } - Field *fields = result->Fetch(); bool permanent = !fields[6].GetUInt64(); PSendSysMessage(LANG_BANINFO_IPENTRY, @@ -5977,15 +5096,12 @@ bool ChatHandler::HandleBanInfoIPCommand(const char* args) delete result; return true; } - bool ChatHandler::HandleBanListCharacterCommand(const char* args) { loginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); - char* cFilter = strtok ((char*)args, " "); if(!cFilter) return false; - std::string filter = cFilter; loginDatabase.escape_string(filter); QueryResult* result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"),filter.c_str()); @@ -5994,20 +5110,15 @@ bool ChatHandler::HandleBanListCharacterCommand(const char* args) PSendSysMessage(LANG_BANLIST_NOCHARACTER); return true; } - return HandleBanListHelper(result); } - bool ChatHandler::HandleBanListAccountCommand(const char* args) { loginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); - char* cFilter = strtok((char*)args, " "); std::string filter = cFilter ? cFilter : ""; loginDatabase.escape_string(filter); - QueryResult* result; - if(filter.empty()) { result = loginDatabase.Query("SELECT account.id, username FROM account, account_banned" @@ -6019,20 +5130,16 @@ bool ChatHandler::HandleBanListAccountCommand(const char* args) " WHERE account.id = account_banned.id AND active = 1 AND username "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'")" GROUP BY account.id", filter.c_str()); } - if (!result) { PSendSysMessage(LANG_BANLIST_NOACCOUNT); return true; } - return HandleBanListHelper(result); } - bool ChatHandler::HandleBanListHelper(QueryResult* result) { PSendSysMessage(LANG_BANLIST_MATCHINGACCOUNT); - // Chat short output if(m_session) { @@ -6040,7 +5147,6 @@ bool ChatHandler::HandleBanListHelper(QueryResult* result) { Field* fields = result->Fetch(); uint32 accountid = fields[0].GetUInt32(); - QueryResult* banresult = loginDatabase.PQuery("SELECT account.username FROM account,account_banned WHERE account_banned.id='%u' AND account_banned.id=account.id",accountid); if(banresult) { @@ -6061,16 +5167,13 @@ bool ChatHandler::HandleBanListHelper(QueryResult* result) SendSysMessage("-------------------------------------------------------------------------------"); Field *fields = result->Fetch(); uint32 account_id = fields[0].GetUInt32 (); - std::string account_name; - // "account" case, name can be get in same query if(result->GetFieldCount() > 1) account_name = fields[1].GetCppString(); // "character" case, name need extract from another DB else accmgr.GetName (account_id,account_name); - // No SQL injection. id is uint32. QueryResult *banInfo = loginDatabase.PQuery("SELECT bandate,unbandate,bannedby,banreason FROM account_banned WHERE id = %u ORDER BY unbandate", account_id); if (banInfo) @@ -6080,7 +5183,6 @@ bool ChatHandler::HandleBanListHelper(QueryResult* result) { time_t t_ban = fields2[0].GetUInt64(); tm* aTm_ban = localtime(&t_ban); - if (fields2[0].GetUInt64() == fields2[1].GetUInt64()) { PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|", @@ -6102,21 +5204,16 @@ bool ChatHandler::HandleBanListHelper(QueryResult* result) }while( result->NextRow() ); SendSysMessage("==============================================================================="); } - delete result; return true; } - bool ChatHandler::HandleBanListIPCommand(const char* args) { loginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); - char* cFilter = strtok((char*)args, " "); std::string filter = cFilter ? cFilter : ""; loginDatabase.escape_string(filter); - QueryResult* result; - if(filter.empty()) { result = loginDatabase.Query ("SELECT ip,bandate,unbandate,bannedby,banreason FROM ip_banned" @@ -6129,13 +5226,11 @@ bool ChatHandler::HandleBanListIPCommand(const char* args) " WHERE (bandate=unbandate OR unbandate>UNIX_TIMESTAMP()) AND ip "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'") " ORDER BY unbandate",filter.c_str() ); } - if(!result) { PSendSysMessage(LANG_BANLIST_NOIP); return true; } - PSendSysMessage(LANG_BANLIST_MATCHINGIP); // Chat short output if(m_session) @@ -6176,15 +5271,12 @@ bool ChatHandler::HandleBanListIPCommand(const char* args) }while( result->NextRow() ); SendSysMessage("==============================================================================="); } - delete result; return true; } - bool ChatHandler::HandleRespawnCommand(const char* /*args*/) { Player* pl = m_session->GetPlayer(); - // accept only explicitly selected target (not implicitly self targeting case) Unit* target = getSelectedUnit(); if(pl->GetSelection() && target) @@ -6195,36 +5287,28 @@ bool ChatHandler::HandleRespawnCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - if(target->isDead()) ((Creature*)target)->Respawn(); return true; } - CellPair p(Trinity::ComputeCellPair(pl->GetPositionX(), pl->GetPositionY())); Cell cell(p); cell.data.Part.reserved = ALL_DISTRICT; cell.SetNoCreate(); - MaNGOS::RespawnDo u_do; MaNGOS::WorldObjectWorker<MaNGOS::RespawnDo> worker(pl,u_do); - TypeContainerVisitor<Trinity::WorldObjectWorker<Trinity::RespawnDo>, GridTypeMapContainer > obj_worker(worker); CellLock<GridReadGuard> cell_lock(cell, p); cell_lock->Visit(cell_lock, obj_worker, *pl->GetMap()); - return true; } - bool ChatHandler::HandleGMFlyCommand(const char* args) { if (!*args) return false; - Player *target = getSelectedPlayer(); if (!target) target = m_session->GetPlayer(); - WorldPacket data(12); if (strncmp(args, "on", 3) == 0) data.SetOpcode(SMSG_MOVE_SET_CAN_FLY); @@ -6241,20 +5325,16 @@ bool ChatHandler::HandleGMFlyCommand(const char* args) PSendSysMessage(LANG_COMMAND_FLYMODE_STATUS, GetNameLink(target).c_str(), args); return true; } - bool ChatHandler::HandlePDumpLoadCommand(const char *args) { if (!*args) return false; - char * file = strtok((char*)args, " "); if(!file) return false; - char * account = strtok(NULL, " "); if(!account) return false; - std::string account_name = account; if(!AccountMgr::normalizeString(account_name)) { @@ -6262,7 +5342,6 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) SetSentErrorMessage(true); return false; } - uint32 account_id = accmgr.GetId(account_name); if(!account_id) { @@ -6274,17 +5353,14 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) return false; } } - if(!accmgr.GetName(account_id,account_name)) { PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); SetSentErrorMessage(true); return false; } - char* guid_str = NULL; char* name_str = strtok(NULL, " "); - std::string name; if (name_str) { @@ -6296,19 +5372,15 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) SetSentErrorMessage(true); return false; } - if (ObjectMgr::CheckPlayerName(name,true) != CHAR_NAME_SUCCESS) { PSendSysMessage(LANG_INVALID_CHARACTER_NAME); SetSentErrorMessage(true); return false; } - guid_str = strtok(NULL, " "); } - uint32 guid = 0; - if (guid_str) { guid = atoi(guid_str); @@ -6318,7 +5390,6 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) SetSentErrorMessage(true); return false; } - if (objmgr.GetPlayerAccountIdByGUID(guid)) { PSendSysMessage(LANG_CHARACTER_GUID_IN_USE,guid); @@ -6326,7 +5397,6 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) return false; } } - switch(PlayerDumpReader().LoadDump(file, account_id, name, guid)) { case DUMP_SUCCESS: @@ -6349,21 +5419,16 @@ bool ChatHandler::HandlePDumpLoadCommand(const char *args) SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandlePDumpWriteCommand(const char *args) { if (!*args) return false; - char* file = strtok((char*)args, " "); char* p2 = strtok(NULL, " "); - if(!file || !p2) return false; - uint32 guid; // character name can't start from number if (isNumeric(p2[0])) @@ -6377,17 +5442,14 @@ bool ChatHandler::HandlePDumpWriteCommand(const char *args) SetSentErrorMessage(true); return false; } - guid = objmgr.GetPlayerGUIDByName(name); } - if(!objmgr.GetPlayerAccountIdByGUID(guid)) { PSendSysMessage(LANG_PLAYER_NOT_FOUND); SetSentErrorMessage(true); return false; } - switch(PlayerDumpWriter().WriteDump(file, guid)) { case DUMP_SUCCESS: @@ -6402,10 +5464,8 @@ bool ChatHandler::HandlePDumpWriteCommand(const char *args) SetSentErrorMessage(true); return false; } - return true; } - bool ChatHandler::HandleMovegensCommand(const char* /*args*/) { Unit* unit = getSelectedUnit(); @@ -6415,9 +5475,7 @@ bool ChatHandler::HandleMovegensCommand(const char* /*args*/) SetSentErrorMessage(true); return false; } - PSendSysMessage(LANG_MOVEGENS_LIST,(unit->GetTypeId()==TYPEID_PLAYER ? "Player" : "Creature" ),unit->GetGUIDLow()); - MotionMaster* mm = unit->GetMotionMaster(); for(uint8 i = 0; i < MAX_MOTION_SLOT; ++i) { @@ -6483,7 +5541,6 @@ bool ChatHandler::HandleMovegensCommand(const char* /*args*/) } return true; } - bool ChatHandler::HandleServerPLimitCommand(const char *args) { if(*args) @@ -6491,9 +5548,7 @@ bool ChatHandler::HandleServerPLimitCommand(const char *args) char* param = strtok((char*)args, " "); if(!param) return false; - int l = strlen(param); - if( strncmp(param,"player",l) == 0 ) sWorld.SetPlayerLimit(-SEC_PLAYER); else if(strncmp(param,"moderator",l) == 0 ) @@ -6508,15 +5563,12 @@ bool ChatHandler::HandleServerPLimitCommand(const char *args) { int val = atoi(param); if(val < -SEC_ADMINISTRATOR) val = -SEC_ADMINISTRATOR; - sWorld.SetPlayerLimit(val); } - // kick all low security level players if(sWorld.GetPlayerAmountLimit() > SEC_PLAYER) sWorld.KickAllLess(sWorld.GetPlayerSecurityLimit()); } - uint32 pLimit = sWorld.GetPlayerAmountLimit(); AccountTypes allowedAccountType = sWorld.GetPlayerSecurityLimit(); char const* secName = ""; @@ -6528,42 +5580,33 @@ bool ChatHandler::HandleServerPLimitCommand(const char *args) case SEC_ADMINISTRATOR: secName = "Administrator"; break; default: secName = "<unknown>"; break; } - PSendSysMessage("Player limits: amount %u, min. security level %s.",pLimit,secName); - return true; } - bool ChatHandler::HandleCastCommand(const char* args) { if(!*args) return false; - Unit* target = getSelectedUnit(); - if(!target) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell) return false; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo) return false; - if(!SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); SetSentErrorMessage(true); return false; } - char* trig_str = strtok(NULL, " "); if(trig_str) { @@ -6571,31 +5614,24 @@ bool ChatHandler::HandleCastCommand(const char* args) if(strncmp(trig_str,"triggered",l) != 0 ) return false; } - bool triggered = (trig_str != NULL); - m_session->GetPlayer()->CastSpell(target,spell,triggered); - return true; } - bool ChatHandler::HandleCastBackCommand(const char* args) { Creature* caster = getSelectedCreature(); - if(!caster) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell || !sSpellStore.LookupEntry(spell)) return false; - char* trig_str = strtok(NULL, " "); if(trig_str) { @@ -6603,50 +5639,37 @@ bool ChatHandler::HandleCastBackCommand(const char* args) if(strncmp(trig_str,"triggered",l) != 0 ) return false; } - bool triggered = (trig_str != NULL); - // update orientation at server caster->SetOrientation(caster->GetAngle(m_session->GetPlayer())); - // and client WorldPacket data; caster->BuildHeartBeatMsg(&data); caster->SendMessageToSet(&data,true); - caster->CastSpell(m_session->GetPlayer(),spell,triggered); - return true; } - bool ChatHandler::HandleCastDistCommand(const char* args) { if(!*args) return false; - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell) return false; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo) return false; - if(!SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); SetSentErrorMessage(true); return false; } - char *distStr = strtok(NULL, " "); - float dist = 0; - if(distStr) sscanf(distStr, "%f", &dist); - char* trig_str = strtok(NULL, " "); if(trig_str) { @@ -6654,39 +5677,31 @@ bool ChatHandler::HandleCastDistCommand(const char* args) if(strncmp(trig_str,"triggered",l) != 0 ) return false; } - bool triggered = (trig_str != NULL); - float x,y,z; m_session->GetPlayer()->GetClosePoint(x,y,z,dist); - m_session->GetPlayer()->CastSpell(x,y,z,spell,triggered); return true; } - bool ChatHandler::HandleCastTargetCommand(const char* args) { Creature* caster = getSelectedCreature(); - if(!caster) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - if(!caster->getVictim()) { SendSysMessage(LANG_SELECTED_TARGET_NOT_HAVE_VICTIM); SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell || !sSpellStore.LookupEntry(spell)) return false; - char* trig_str = strtok(NULL, " "); if(trig_str) { @@ -6694,22 +5709,16 @@ bool ChatHandler::HandleCastTargetCommand(const char* args) if(strncmp(trig_str,"triggered",l) != 0 ) return false; } - bool triggered = (trig_str != NULL); - // update orientation at server caster->SetOrientation(caster->GetAngle(m_session->GetPlayer())); - // and client WorldPacket data; caster->BuildHeartBeatMsg(&data); caster->SendMessageToSet(&data,true); - caster->CastSpell(caster->getVictim(),spell,triggered); - return true; } - /* ComeToMe command REQUIRED for 3rd party scripting library to have access to PointMovementGenerator Without this function 3rd party scripting library will get linking errors (unresolved external) @@ -6718,12 +5727,9 @@ when attempting to use the PointMovementGenerator bool ChatHandler::HandleComeToMeCommand(const char *args) { char* newFlagStr = strtok((char*)args, " "); - if(!newFlagStr) return false; - uint32 newFlags = (uint32)strtoul(newFlagStr, NULL, 0); - Creature* caster = getSelectedCreature(); if(!caster) { @@ -6732,50 +5738,38 @@ bool ChatHandler::HandleComeToMeCommand(const char *args) SetSentErrorMessage(true); return false; } - caster->SetUnitMovementFlags(newFlags); - Player* pl = m_session->GetPlayer(); - caster->GetMotionMaster()->MovePoint(0, pl->GetPositionX(), pl->GetPositionY(), pl->GetPositionZ()); return true; } - bool ChatHandler::HandleCastSelfCommand(const char* args) { if(!*args) return false; - Unit* target = getSelectedUnit(); - if(!target) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spell = extractSpellIdFromLink((char*)args); if(!spell) return false; - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); if(!spellInfo) return false; - if(!SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) { PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); SetSentErrorMessage(true); return false; } - target->CastSpell(target,spell,false); - return true; } - std::string GetTimeString(uint32 time) { uint16 days = time / DAY, hours = (time % DAY) / HOUR, minute = (time % HOUR) / MINUTE; @@ -6785,7 +5779,6 @@ std::string GetTimeString(uint32 time) ss << minute << "m"; return ss.str(); } - bool ChatHandler::HandleInstanceListBindsCommand(const char* /*args*/) { Player* player = getSelectedPlayer(); @@ -6820,15 +5813,12 @@ bool ChatHandler::HandleInstanceListBindsCommand(const char* /*args*/) } } PSendSysMessage("group binds: %d", counter); - return true; } - bool ChatHandler::HandleInstanceUnbindCommand(const char* args) { if(!*args) return false; - std::string cmd = args; if(cmd == "all") { @@ -6856,7 +5846,6 @@ bool ChatHandler::HandleInstanceUnbindCommand(const char* args) } return true; } - bool ChatHandler::HandleInstanceStatsCommand(const char* /*args*/) { PSendSysMessage("instances loaded: %d", MapManager::Instance().GetNumInstances()); @@ -6866,11 +5855,9 @@ bool ChatHandler::HandleInstanceStatsCommand(const char* /*args*/) PSendSysMessage("groups bound: %d", sInstanceSaveManager.GetNumBoundGroupsTotal()); return true; } - bool ChatHandler::HandleInstanceSaveDataCommand(const char * /*args*/) { Player* pl = m_session->GetPlayer(); - Map* map = pl->GetMap(); if (!map->IsDungeon()) { @@ -6878,18 +5865,15 @@ bool ChatHandler::HandleInstanceSaveDataCommand(const char * /*args*/) SetSentErrorMessage(true); return false; } - if (!((InstanceMap*)map)->GetInstanceData()) { PSendSysMessage("Map has no instance data."); SetSentErrorMessage(true); return false; } - ((InstanceMap*)map)->GetInstanceData()->SaveToDB(); return true; } - /// Display the list of GMs bool ChatHandler::HandleGMListFullCommand(const char* /*args*/) { @@ -6901,14 +5885,12 @@ bool ChatHandler::HandleGMListFullCommand(const char* /*args*/) SendSysMessage("========================"); SendSysMessage(LANG_GMLIST_HEADER); SendSysMessage("========================"); - ///- Circle through them. Display username and GM level do { Field *fields = result->Fetch(); PSendSysMessage("|%15s|%6s|", fields[0].GetString(),fields[1].GetString()); }while( result->NextRow() ); - PSendSysMessage("========================"); delete result; } @@ -6916,7 +5898,6 @@ bool ChatHandler::HandleGMListFullCommand(const char* /*args*/) PSendSysMessage(LANG_GMLIST_EMPTY); return true; } - /// Define the 'Message of the day' for the realm bool ChatHandler::HandleServerSetMotdCommand(const char* args) { @@ -6924,12 +5905,10 @@ bool ChatHandler::HandleServerSetMotdCommand(const char* args) PSendSysMessage(LANG_MOTD_NEW, args); return true; } - /// Set whether we accept new clients bool ChatHandler::HandleServerSetClosedCommand(const char* args) { std::string arg = args; - if(args == "on") { SendSysMessage(LANG_WORLD_CLOSED); @@ -6942,31 +5921,25 @@ bool ChatHandler::HandleServerSetClosedCommand(const char* args) sWorld.SetClosed(false); return true; } - SendSysMessage(LANG_USE_BOL); SetSentErrorMessage(true); return false; } - /// Set/Unset the expansion level for an account bool ChatHandler::HandleAccountSetAddonCommand(const char* args) { ///- Get the command line arguments char *szAcc = strtok((char*)args," "); char *szExp = strtok(NULL," "); - if(!szAcc) return false; - std::string account_name; uint32 account_id; - if(!szExp) { Player* player = getSelectedPlayer(); if(!player) return false; - account_id = player->GetSession()->GetAccountId(); accmgr.GetName(account_id,account_name); szExp = szAcc; @@ -6981,7 +5954,6 @@ bool ChatHandler::HandleAccountSetAddonCommand(const char* args) SetSentErrorMessage(true); return false; } - account_id = accmgr.GetId(account_name); if(!account_id) { @@ -6989,25 +5961,20 @@ bool ChatHandler::HandleAccountSetAddonCommand(const char* args) SetSentErrorMessage(true); return false; } - } - // Let set addon state only for lesser (strong) security level // or to self account if (m_session && m_session->GetAccountId () != account_id && HasLowerSecurityAccount (NULL,account_id,true)) return false; - int expansion = atoi(szExp); //get int anyway (0 if error) if(expansion < 0 || expansion > sWorld.getConfig(CONFIG_EXPANSION)) return false; - // No SQL injection loginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE id = '%u'",expansion,account_id); PSendSysMessage(LANG_ACCOUNT_SETADDON,account_name.c_str(),account_id,expansion); return true; } - //Send items by mail bool ChatHandler::HandleSendItemsCommand(const char* args) { @@ -7017,49 +5984,38 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) std::string receiver_name; if(!extractPlayerTarget((char*)args,&receiver,&receiver_guid,&receiver_name)) return false; - char* tail1 = strtok(NULL, ""); if(!tail1) return false; - char* msgSubject = extractQuotedArg(tail1); if (!msgSubject) return false; - char* tail2 = strtok(NULL, ""); if(!tail2) return false; - char* msgText = extractQuotedArg(tail2); if (!msgText) return false; - // msgSubject, msgText isn't NUL after prev. check std::string subject = msgSubject; std::string text = msgText; - // extract items typedef std::pair<uint32,uint32> ItemPair; typedef std::list< ItemPair > ItemPairs; ItemPairs items; - // get all tail string char* tail = strtok(NULL, ""); - // get from tail next item str while(char* itemStr = strtok(tail, " ")) { // and get new tail tail = strtok(NULL, ""); - // parse item str char* itemIdStr = strtok(itemStr, ":"); char* itemCountStr = strtok(NULL, " "); - uint32 item_id = atoi(itemIdStr); if(!item_id) return false; - ItemPrototype const* item_proto = objmgr.GetItemPrototype(item_id); if(!item_proto) { @@ -7067,7 +6023,6 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) SetSentErrorMessage(true); return false; } - uint32 item_count = itemCountStr ? atoi(itemCountStr) : 1; if (item_count < 1 || (item_proto->MaxCount > 0 && item_count > uint32(item_proto->MaxCount))) { @@ -7075,15 +6030,12 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) SetSentErrorMessage(true); return false; } - while(item_count > item_proto->GetMaxStackSize()) { items.push_back(ItemPair(item_id,item_proto->GetMaxStackSize())); item_count -= item_proto->GetMaxStackSize(); } - items.push_back(ItemPair(item_id,item_count)); - if(items.size() > MAX_MAIL_ITEMS) { PSendSysMessage(LANG_COMMAND_MAIL_ITEMS_LIMIT, MAX_MAIL_ITEMS); @@ -7091,17 +6043,13 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) return false; } } - // from console show not existed sender uint32 sender_guidlo = m_session ? m_session->GetPlayer()->GetGUIDLow() : 0; - uint32 messagetype = MAIL_NORMAL; uint32 stationery = MAIL_STATIONERY_GM; uint32 itemTextId = !text.empty() ? objmgr.CreateItemText( text ) : 0; - // fill mail MailItemsInfo mi; // item list preparing - for(ItemPairs::const_iterator itr = items.begin(); itr != items.end(); ++itr) { if(Item* item = Item::CreateItem(itr->first,itr->second,m_session ? m_session->GetPlayer() : 0)) @@ -7110,64 +6058,49 @@ bool ChatHandler::HandleSendItemsCommand(const char* args) mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item); } } - WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, &mi, 0, 0, MAIL_CHECK_MASK_NONE); - std::string nameLink = playerLink(receiver_name); PSendSysMessage(LANG_MAIL_SENT, nameLink.c_str()); return true; } - ///Send money by mail bool ChatHandler::HandleSendMoneyCommand(const char* args) { /// format: name "subject text" "mail text" money - Player* receiver; uint64 receiver_guid; std::string receiver_name; if(!extractPlayerTarget((char*)args,&receiver,&receiver_guid,&receiver_name)) return false; - char* tail1 = strtok(NULL, ""); if (!tail1) return false; - char* msgSubject = extractQuotedArg(tail1); if (!msgSubject) return false; - char* tail2 = strtok(NULL, ""); if (!tail2) return false; - char* msgText = extractQuotedArg(tail2); if (!msgText) return false; - char* money_str = strtok(NULL, ""); int32 money = money_str ? atoi(money_str) : 0; if (money <= 0) return false; - // msgSubject, msgText isn't NUL after prev. check std::string subject = msgSubject; std::string text = msgText; - // from console show not existed sender uint32 sender_guidlo = m_session ? m_session->GetPlayer()->GetGUIDLow() : 0; - uint32 messagetype = MAIL_NORMAL; uint32 stationery = MAIL_STATIONERY_GM; uint32 itemTextId = !text.empty() ? objmgr.CreateItemText( text ) : 0; - WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, NULL, money, 0, MAIL_CHECK_MASK_NONE); - std::string nameLink = playerLink(receiver_name); PSendSysMessage(LANG_MAIL_SENT, nameLink.c_str()); return true; } - /// Send a message to a player in game bool ChatHandler::HandleSendMessageCommand(const char* args) { @@ -7175,11 +6108,9 @@ bool ChatHandler::HandleSendMessageCommand(const char* args) Player *rPlayer; if(!extractPlayerTarget((char*)args,&rPlayer)) return false; - char* msg_str = strtok(NULL, ""); if(!msg_str) return false; - ///- Check that he is not logging out. if(rPlayer->GetSession()->isLogingOut()) { @@ -7187,59 +6118,47 @@ bool ChatHandler::HandleSendMessageCommand(const char* args) SetSentErrorMessage(true); return false; } - ///- Send the message //Use SendAreaTriggerMessage for fastest delivery. rPlayer->GetSession()->SendAreaTriggerMessage("%s", msg_str); rPlayer->GetSession()->SendAreaTriggerMessage("|cffff0000[Message from administrator]:|r"); - //Confirmation message std::string nameLink = GetNameLink(rPlayer); PSendSysMessage(LANG_SENDMESSAGE,nameLink.c_str(),msg_str); return true; } - bool ChatHandler::HandleFlushArenaPointsCommand(const char * /*args*/) { sBattleGroundMgr.DistributeArenaPoints(); return true; } - bool ChatHandler::HandleModifyGenderCommand(const char *args) { if(!*args) return false; - Player *player = getSelectedPlayer(); - if(!player) { PSendSysMessage(LANG_PLAYER_NOT_FOUND); SetSentErrorMessage(true); return false; } - PlayerInfo const* info = objmgr.GetPlayerInfo(player->getRace(), player->getClass()); if(!info) return false; - char const* gender_str = (char*)args; int gender_len = strlen(gender_str); - Gender gender; - if(!strncmp(gender_str, "male", gender_len)) // MALE { if(player->getGender() == GENDER_MALE) return true; - gender = GENDER_MALE; } else if (!strncmp(gender_str, "female", gender_len)) // FEMALE { if(player->getGender() == GENDER_FEMALE) return true; - gender = GENDER_FEMALE; } else @@ -7248,50 +6167,37 @@ bool ChatHandler::HandleModifyGenderCommand(const char *args) SetSentErrorMessage(true); return false; } - // Set gender player->SetByteValue(UNIT_FIELD_BYTES_0, 2, gender); player->SetByteValue(PLAYER_BYTES_3, 0, gender); - // Change display ID player->InitDisplayIds(); - char const* gender_full = gender ? "female" : "male"; - PSendSysMessage(LANG_YOU_CHANGE_GENDER, GetNameLink(player).c_str(), gender_full); - if (needReportToTarget(player)) ChatHandler(player).PSendSysMessage(LANG_YOUR_GENDER_CHANGED, gender_full, GetNameLink().c_str()); - return true; } - /*------------------------------------------ *-------------TRINITY---------------------- *-------------------------------------*/ - bool ChatHandler::HandlePlayAllCommand(const char* args) { if(!*args) return false; - uint32 soundId = atoi((char*)args); - if(!sSoundEntriesStore.LookupEntry(soundId)) { PSendSysMessage(LANG_SOUND_NOT_EXIST, soundId); SetSentErrorMessage(true); return false; } - WorldPacket data(SMSG_PLAY_SOUND, 4); data << uint32(soundId) << m_session->GetPlayer()->GetGUID(); sWorld.SendGlobalMessage(&data); - PSendSysMessage(LANG_COMMAND_PLAYED_TO_ALL, soundId); return true; } - bool ChatHandler::HandleFreezeCommand(const char *args) { std::string name; @@ -7312,24 +6218,20 @@ bool ChatHandler::HandleFreezeCommand(const char *args) normalizePlayerName(name); player = objmgr.GetPlayer(name.c_str()); //get player by name } - if (!player) { SendSysMessage(LANG_COMMAND_FREEZE_WRONG); return true; } - if (player==m_session->GetPlayer()) { SendSysMessage(LANG_COMMAND_FREEZE_ERROR); return true; } - //effect if ((player) && (!(player==m_session->GetPlayer()))) { PSendSysMessage(LANG_COMMAND_FREEZE,name.c_str()); - //stop combat + make player unattackable + duel stop + stop some spells player->setFaction(35); player->CombatStop(); @@ -7337,7 +6239,6 @@ bool ChatHandler::HandleFreezeCommand(const char *args) player->InterruptNonMeleeSpells(true); player->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); player->SetUInt32Value(PLAYER_DUEL_TEAM, 1); - //if player class = hunter || warlock remove pet if alive if((player->getClass() == CLASS_HUNTER) || (player->getClass() == CLASS_WARLOCK)) { @@ -7349,18 +6250,15 @@ bool ChatHandler::HandleFreezeCommand(const char *args) player->RemovePet(pet,PET_SAVE_NOT_IN_SLOT); } } - //m_session->GetPlayer()->CastSpell(player,spellID,false); SpellEntry const *spellInfo = sSpellStore.LookupEntry( 9454 ); Aura *Aur = new Aura(spellInfo, 1, player, player, player); player->AddAura(Aur); - //save player player->SaveToDB(); } return true; } - bool ChatHandler::HandleUnFreezeCommand(const char *args) { std::string name; @@ -7374,30 +6272,24 @@ bool ChatHandler::HandleUnFreezeCommand(const char *args) name = player->GetName(); } } - else // if name entered { name = TargetName; normalizePlayerName(name); player = objmgr.GetPlayer(name.c_str()); //get player by name } - //effect if (player) { PSendSysMessage(LANG_COMMAND_UNFREEZE,name.c_str()); - //Reset player faction + allow combat + allow duels player->setFactionForRace(player->getRace()); player->RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - //allow movement and spells player->RemoveAurasDueToSpell(9454); - //save player player->SaveToDB(); } - if (!player) { if (TargetName) @@ -7423,10 +6315,8 @@ bool ChatHandler::HandleUnFreezeCommand(const char *args) return true; } } - return true; } - bool ChatHandler::HandleListFreezeCommand(const char* args) { //Get names from DB @@ -7438,7 +6328,6 @@ bool ChatHandler::HandleListFreezeCommand(const char* args) } //Header of the names PSendSysMessage(LANG_COMMAND_LIST_FREEZE); - //Output of the results do { @@ -7446,88 +6335,69 @@ bool ChatHandler::HandleListFreezeCommand(const char* args) std::string fplayers = fields[0].GetCppString(); PSendSysMessage(LANG_COMMAND_FROZEN_PLAYERS,fplayers.c_str()); } while (result->NextRow()); - delete result; return true; } - bool ChatHandler::HandleGroupLeaderCommand(const char* args) { Player* plr = NULL; Group* group = NULL; uint64 guid = 0; char* cname = strtok((char*)args, " "); - if(GetPlayerGroupAndGUIDByName(cname, plr, group, guid)) if(group && group->GetLeaderGUID() != guid) group->ChangeLeader(guid); - return true; } - bool ChatHandler::HandleGroupDisbandCommand(const char* args) { Player* plr = NULL; Group* group = NULL; uint64 guid = 0; char* cname = strtok((char*)args, " "); - if(GetPlayerGroupAndGUIDByName(cname, plr, group, guid)) if(group) group->Disband(); - return true; } - bool ChatHandler::HandleGroupRemoveCommand(const char* args) { Player* plr = NULL; Group* group = NULL; uint64 guid = 0; char* cname = strtok((char*)args, " "); - if(GetPlayerGroupAndGUIDByName(cname, plr, group, guid, true)) if(group) group->RemoveMember(guid, 0); - return true; } - bool ChatHandler::HandlePossessCommand(const char* args) { Unit* pUnit = getSelectedUnit(); if(!pUnit) return false; - m_session->GetPlayer()->CastSpell(pUnit, 530, true); return true; } - bool ChatHandler::HandleUnPossessCommand(const char* args) { Unit* pUnit = getSelectedUnit(); if(!pUnit) pUnit = m_session->GetPlayer(); - pUnit->RemoveCharmAuras(); - return true; } - bool ChatHandler::HandleBindSightCommand(const char* args) { Unit* pUnit = getSelectedUnit(); if (!pUnit) return false; - m_session->GetPlayer()->CastSpell(pUnit, 6277, true); return true; } - bool ChatHandler::HandleUnbindSightCommand(const char* args) { if (m_session->GetPlayer()->isPossessing()) return false; - m_session->GetPlayer()->StopCastingBindSight(); return true; } |