From 25bf3308cf490313b4a86b78643226f078ce4f7e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 25 Feb 2016 19:37:31 +0300 Subject: Add chat command /gotonpc. Also add it to npc context menu. --- src/actions/commands.cpp | 9 +++++++++ src/actions/commands.h | 1 + src/dyetool/actions/commands.cpp | 1 + src/enums/input/inputaction.h | 1 + src/gui/popups/popupmenu.cpp | 8 ++++++++ src/input/inputactionmap.h | 6 ++++++ src/net/adminhandler.h | 2 ++ src/net/eathena/adminhandler.cpp | 5 +++++ src/net/eathena/adminhandler.h | 2 ++ src/net/tmwa/adminhandler.cpp | 4 ++++ src/net/tmwa/adminhandler.h | 2 ++ 11 files changed, 41 insertions(+) diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index c317af86a..13bb0b622 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -1387,4 +1387,13 @@ impHandler(commandRandomWarp) return true; } +impHandler(commandGotoNpc) +{ + const std::string args = event.args; + if (args.empty()) + return false; + adminHandler->gotoNpc(args); + return true; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index bf7ebe03c..f1dc28356 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -119,6 +119,7 @@ namespace Actions decHandler(commandSavePosition); decHandler(commandLoadPosition); decHandler(commandRandomWarp); + decHandler(commandGotoNpc); } // namespace Actions #undef decHandler diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp index 2b09fc90a..79c03a746 100644 --- a/src/dyetool/actions/commands.cpp +++ b/src/dyetool/actions/commands.cpp @@ -119,5 +119,6 @@ impHandlerVoid(commandSpawnEvilClone) impHandlerVoid(commandSavePosition) impHandlerVoid(commandLoadPosition) impHandlerVoid(commandRandomWarp) +impHandlerVoid(commandGotoNpc) } // namespace Actions diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h index 261e7319c..29d8b9362 100644 --- a/src/enums/input/inputaction.h +++ b/src/enums/input/inputaction.h @@ -648,6 +648,7 @@ enumStart(InputAction) COMMAND_SAVE_POSITION, COMMAND_LOAD_POSITION, COMMAND_RANDOM_WARP, + COMMAND_GOTO_NPC, TOTAL } enumEnd(InputAction); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 903720de4..cb46084d2 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2842,6 +2842,14 @@ void PopupMenu::showNpcGMCommands() // TRANSLATORS: popup menu item // TRANSLATORS: kick player mBrowserBox->addRow("/kick :'BEINGID'", _("Kick")); + const bool legacy = Net::getNetworkType() == ServerType::TMWATHENA; + if (!legacy) + { + mBrowserBox->addRow("##3---"); + // TRANSLATORS: popup menu item + // TRANSLATORS: warp to npc + mBrowserBox->addRow("/gotonpc 'NAME'", _("Goto")); + } } } diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 38768dbe1..3a90e4a5d 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -5377,6 +5377,12 @@ static const InputActionData inputActionData "randomwarp|jump", UseArgs_true, Protected_true}, + {"keyCommandGotoNpc", + defaultAction(&Actions::commandGotoNpc), + InputCondition::INGAME, + "gotonpc|warptonpc", + UseArgs_true, + Protected_true}, }; #undef defaultAction diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h index 2ac37ffed..94acc54f5 100644 --- a/src/net/adminhandler.h +++ b/src/net/adminhandler.h @@ -140,6 +140,8 @@ class AdminHandler notfinal virtual void loadPosition(const std::string &name) const = 0; virtual void randomWarp(const std::string &name) const = 0; + + virtual void gotoNpc(const std::string &name) const = 0; }; } // namespace Net diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp index b647f92b0..f1742315b 100644 --- a/src/net/eathena/adminhandler.cpp +++ b/src/net/eathena/adminhandler.cpp @@ -265,4 +265,9 @@ void AdminHandler::randomWarp(const std::string &name) const Gm::runCharCommand("jump", name); } +void AdminHandler::gotoNpc(const std::string &name) const +{ + Gm::runCommand("tonpc", name); +} + } // namespace EAthena diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h index c7f997590..0ddc8b348 100644 --- a/src/net/eathena/adminhandler.h +++ b/src/net/eathena/adminhandler.h @@ -114,6 +114,8 @@ class AdminHandler final : public Ea::AdminHandler void randomWarp(const std::string &name) const override final; + void gotoNpc(const std::string &name) const override final; + protected: static std::string mStatsName; }; diff --git a/src/net/tmwa/adminhandler.cpp b/src/net/tmwa/adminhandler.cpp index 363cd2552..76bec8fc5 100644 --- a/src/net/tmwa/adminhandler.cpp +++ b/src/net/tmwa/adminhandler.cpp @@ -207,4 +207,8 @@ void AdminHandler::randomWarp(const std::string &name A_UNUSED) const { } +void AdminHandler::gotoNpc(const std::string &name A_UNUSED) const +{ +} + } // namespace TmwAthena diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h index 88bd007f8..bdb7e1037 100644 --- a/src/net/tmwa/adminhandler.h +++ b/src/net/tmwa/adminhandler.h @@ -126,6 +126,8 @@ class AdminHandler final : public Ea::AdminHandler A_CONST; void randomWarp(const std::string &name) const override final A_CONST; + + void gotoNpc(const std::string &name) const override final A_CONST; }; } // namespace TmwAthena -- cgit v1.2.3-70-g09d2