diff options
author | Kitzunu <24550914+Kitzunu@users.noreply.github.com> | 2024-12-22 09:42:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-22 09:42:21 +0100 |
commit | 1462d1ae39e4b68e934ae32527cb47d57cb5ce68 (patch) | |
tree | 10ce1f5179a711cac53687d85c4354acded61b5e /src | |
parent | 2110f7cc84759d9c2beb4025eec620f84b722ed2 (diff) |
fix(Script/Command): Allow guid for npc move and delete (#21008)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 2cc199bd0a..c8bc8d917f 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -373,20 +373,24 @@ public: return true; } - static bool HandleNpcDeleteCommand(ChatHandler* handler) + static bool HandleNpcDeleteCommand(ChatHandler* handler, Optional<ObjectGuid::LowType> lowGuid) { - Creature* unit = handler->getSelectedCreature(); + Creature* creature; + if (lowGuid.has_value()) + creature = handler->GetCreatureFromPlayerMapByDbGuid(*lowGuid); + else + creature = handler->getSelectedCreature(); - if (!unit || unit->IsPet() || unit->IsTotem()) + if (!creature || creature->IsPet() || creature->IsTotem()) { handler->SendErrorMessage(LANG_SELECT_CREATURE); return false; } // Delete the creature - unit->CombatStop(); - unit->DeleteFromDB(); - unit->AddObjectToRemoveList(); + creature->CombatStop(); + creature->DeleteFromDB(); + creature->AddObjectToRemoveList(); handler->SendSysMessage(LANG_COMMAND_DELCREATMESSAGE); @@ -711,25 +715,33 @@ public: } //move selected creature - static bool HandleNpcMoveCommand(ChatHandler* handler) + static bool HandleNpcMoveCommand(ChatHandler* handler, Optional<ObjectGuid::LowType> guid) { - Creature* creature = handler->getSelectedCreature(); + Creature* creature; + if (guid.has_value()) + creature = handler->GetCreatureFromPlayerMapByDbGuid(*guid); + else + creature = handler->getSelectedCreature(); if (!creature) return false; - ObjectGuid::LowType lowguid = creature->GetSpawnId(); + ObjectGuid::LowType lowGuid; + if (guid.has_value()) + lowGuid = *guid; + else + lowGuid = creature->GetSpawnId(); - CreatureData const* data = sObjectMgr->GetCreatureData(lowguid); + CreatureData const* data = sObjectMgr->GetCreatureData(lowGuid); if (!data) { - handler->SendErrorMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid); + handler->SendErrorMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowGuid); return false; } if (handler->GetSession()->GetPlayer()->GetMapId() != data->mapid) { - handler->SendErrorMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowguid); + handler->SendErrorMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowGuid); return false; } @@ -763,7 +775,7 @@ public: stmt->SetData(1, y); stmt->SetData(2, z); stmt->SetData(3, o); - stmt->SetData(4, lowguid); + stmt->SetData(4, lowGuid); WorldDatabase.Execute(stmt); |