From 5e4f6ac57675c23fc4bc94d1b880f7b3270ba274 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 1 Dec 2024 00:06:26 +0100 Subject: [PATCH] fix(Script/Commands): tele add should only check exact match (#20785) * fix(Script/Commands): tele add should only check exact match * closes https://github.com/azerothcore/azerothcore-wotlk/issues/20268 * better describe the variable --- src/server/game/Globals/ObjectMgr.cpp | 4 ++-- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/scripts/Commands/cs_tele.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index a92668803..95f931439 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8945,7 +8945,7 @@ void ObjectMgr::LoadGameTele() LOG_INFO("server.loading", " "); } -GameTele const* ObjectMgr::GetGameTele(std::string_view name) const +GameTele const* ObjectMgr::GetGameTele(std::string_view name, bool exactSearch) const { // explicit name case std::wstring wname; @@ -8961,7 +8961,7 @@ GameTele const* ObjectMgr::GetGameTele(std::string_view name) const { if (itr->second.wnameLow == wname) return &itr->second; - else if (!alt && itr->second.wnameLow.find(wname) != std::wstring::npos) + else if (!exactSearch && !alt && itr->second.wnameLow.find(wname) != std::wstring::npos) alt = &itr->second; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index f1d53892e..2b45f3ce1 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1347,7 +1347,7 @@ public: if (itr == _gameTeleStore.end()) return nullptr; return &itr->second; } - [[nodiscard]] GameTele const* GetGameTele(std::string_view name) const; + [[nodiscard]] GameTele const* GetGameTele(std::string_view name, bool exactSearch = false) const; [[nodiscard]] GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; } bool AddGameTele(GameTele& data); bool DeleteGameTele(std::string_view name); diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 259fd89ad..59ce640ea 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -72,7 +72,7 @@ public: if (!player) return false; - if (sObjectMgr->GetGameTele(name)) + if (sObjectMgr->GetGameTele(name, true)) { handler->SendErrorMessage(LANG_COMMAND_TP_ALREADYEXIST); return false;