summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKitzunu <24550914+Kitzunu@users.noreply.github.com>2024-12-22 09:42:21 +0100
committerGitHub <noreply@github.com>2024-12-22 09:42:21 +0100
commit1462d1ae39e4b68e934ae32527cb47d57cb5ce68 (patch)
tree10ce1f5179a711cac53687d85c4354acded61b5e /src
parent2110f7cc84759d9c2beb4025eec620f84b722ed2 (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.cpp38
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);