mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-17 17:24:33 +00:00
feat(Scripts/Commands): introduce go creature name (#17910)
* feat(Scripts/Commands): introduce go creature name * closes https://github.com/azerothcore/azerothcore-wotlk/issues/2315 * Since new command handler the old "go creature" dont take name as argument * Update cs_go.cpp * this could be null... so let's avoid stupid crashes * we only need the first result if there are multiple * Update cs_go.cpp * Update rev_1701381015172273800.sql
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
--
|
||||
DELETE FROM `command` WHERE `name`='go creature name';
|
||||
INSERT INTO `command` (`name`, `security`, `help`) VALUES
|
||||
('go creature name', 1, 'Syntax: .go creature name #name\r\nTeleports you to the first spawn for the given creature name.\r\n*If* more than one creature is found, then you are teleported to the first that is found inside the database.');
|
||||
|
||||
UPDATE `command` SET `help` = 'Syntax: .go creature id #creature_entry\r\nTeleports you to the given creature entry.\r\n*If* more than one creature is found, then you are teleported to the first that is found inside the database.' WHERE `name` = 'go creature id';
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
{
|
||||
{ "creature", HandleGoCreatureSpawnIdCommand, SEC_MODERATOR, Console::No },
|
||||
{ "creature id", HandleGoCreatureCIdCommand, SEC_MODERATOR, Console::No },
|
||||
{ "creature name", HandleGoCreatureNameCommand, SEC_MODERATOR, Console::No },
|
||||
{ "gameobject", HandleGoGameObjectSpawnIdCommand, SEC_MODERATOR, Console::No },
|
||||
{ "gameobject id", HandleGoGameObjectGOIdCommand, SEC_MODERATOR, Console::No },
|
||||
{ "graveyard", HandleGoGraveyardCommand, SEC_MODERATOR, Console::No },
|
||||
@@ -117,6 +118,29 @@ public:
|
||||
return DoTeleport(handler, { spawnpoint->posX, spawnpoint->posY, spawnpoint->posZ }, spawnpoint->mapid);
|
||||
}
|
||||
|
||||
static bool HandleGoCreatureNameCommand(ChatHandler* handler, Tail name)
|
||||
{
|
||||
if (!name.data())
|
||||
return false;
|
||||
|
||||
QueryResult result = WorldDatabase.Query("SELECT entry FROM creature_template WHERE name = \"{}\" LIMIT 1" , name.data());
|
||||
if (!result)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_GOCREATNOTFOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 entry = result->Fetch()[0].Get<uint32>();
|
||||
CreatureData const* spawnpoint = GetCreatureData(handler, entry);
|
||||
if (!spawnpoint)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_GOCREATNOTFOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
return DoTeleport(handler, { spawnpoint->posX, spawnpoint->posY, spawnpoint->posZ }, spawnpoint->mapid);
|
||||
}
|
||||
|
||||
static bool HandleGoGameObjectSpawnIdCommand(ChatHandler* handler, uint32 spawnId)
|
||||
{
|
||||
GameObjectData const* spawnpoint = sObjectMgr->GetGameObjectData(spawnId);
|
||||
|
||||
Reference in New Issue
Block a user