summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/actions/commands.cpp6
-rw-r--r--src/actions/commands.h1
-rw-r--r--src/dyetool/actions/commands.cpp1
-rw-r--r--src/enums/input/inputaction.h1
-rw-r--r--src/gui/popups/popupmenu.cpp3
-rw-r--r--src/input/inputactionmap.h6
-rw-r--r--src/net/adminhandler.h2
-rw-r--r--src/net/eathena/adminhandler.cpp8
-rw-r--r--src/net/eathena/adminhandler.h2
-rw-r--r--src/net/tmwa/adminhandler.cpp4
-rw-r--r--src/net/tmwa/adminhandler.h2
11 files changed, 36 insertions, 0 deletions
diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp
index 6cd543707..0a5d098b1 100644
--- a/src/actions/commands.cpp
+++ b/src/actions/commands.cpp
@@ -1275,4 +1275,10 @@ impHandler(playerCharGmCommands)
return true;
}
+impHandler(commandShowLevel)
+{
+ adminHandler->showLevel(event.args);
+ return true;
+}
+
} // namespace Actions
diff --git a/src/actions/commands.h b/src/actions/commands.h
index a950b4d50..5740f2eb5 100644
--- a/src/actions/commands.h
+++ b/src/actions/commands.h
@@ -104,6 +104,7 @@ namespace Actions
decHandler(mobSpawnSearch);
decHandler(playerGmCommands);
decHandler(playerCharGmCommands);
+ decHandler(commandShowLevel);
} // namespace Actions
#undef decHandler
diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp
index 4578c4f2c..94c1a8fc2 100644
--- a/src/dyetool/actions/commands.cpp
+++ b/src/dyetool/actions/commands.cpp
@@ -104,5 +104,6 @@ impHandlerVoid(mobSearch)
impHandlerVoid(mobSpawnSearch)
impHandlerVoid(playerGmCommands)
impHandlerVoid(playerCharGmCommands)
+impHandlerVoid(commandShowLevel)
} // namespace Actions
diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h
index 478665844..12906d076 100644
--- a/src/enums/input/inputaction.h
+++ b/src/enums/input/inputaction.h
@@ -633,6 +633,7 @@ enumStart(InputAction)
MOB_SPAWN_SEARCH,
PLAYER_GM_COMMANDS,
PLAYER_CHAR_GM_COMMANDS,
+ COMMAND_SHOW_LEVEL,
TOTAL
}
enumEnd(InputAction);
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp
index 49eb9761f..eeadcd604 100644
--- a/src/gui/popups/popupmenu.cpp
+++ b/src/gui/popups/popupmenu.cpp
@@ -2664,6 +2664,9 @@ void PopupMenu::showPlayerGMCommands()
// TRANSLATORS: check player ip
mBrowserBox->addRow("ipcheck", _("Check ip"));
// TRANSLATORS: popup menu item
+ // TRANSLATORS: show player level
+ mBrowserBox->addRow("/showlevel 'NAME'", _("Show level"));
+ // TRANSLATORS: popup menu item
// TRANSLATORS: gm commands
mBrowserBox->addRow("/gmcommands 'NAME'", _("Show commands"));
// TRANSLATORS: popup menu item
diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h
index 4ffd21800..8e834168d 100644
--- a/src/input/inputactionmap.h
+++ b/src/input/inputactionmap.h
@@ -5287,6 +5287,12 @@ static const InputActionData inputActionData
"gmcharcommands|playerchargmcommands|playercharcommands",
UseArgs_true,
Protected_true},
+ {"keyCommandShowLevel",
+ defaultAction(&Actions::commandShowLevel),
+ InputCondition::INGAME,
+ "showlevel|exp",
+ UseArgs_true,
+ Protected_true},
};
#undef defaultAction
diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h
index 31dd89f02..55568fe6d 100644
--- a/src/net/adminhandler.h
+++ b/src/net/adminhandler.h
@@ -110,6 +110,8 @@ class AdminHandler notfinal
virtual void playerGmCommands(const std::string &name) const = 0;
virtual void playerCharGmCommands(const std::string &name) const = 0;
+
+ virtual void showLevel(const std::string &name) const = 0;
};
} // namespace Net
diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp
index f5f5099ae..b2a898cca 100644
--- a/src/net/eathena/adminhandler.cpp
+++ b/src/net/eathena/adminhandler.cpp
@@ -203,4 +203,12 @@ void AdminHandler::playerCharGmCommands(const std::string &name) const
chatHandler->talk("#charcommands " + name, GENERAL_CHANNEL);
}
+void AdminHandler::showLevel(const std::string &name) const
+{
+ if (name.empty() || (localPlayer && name == localPlayer->getName()))
+ chatHandler->talk("@exp", GENERAL_CHANNEL);
+ else
+ chatHandler->talk("#exp " + name, GENERAL_CHANNEL);
+}
+
} // namespace EAthena
diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h
index c84368d8b..832aaab16 100644
--- a/src/net/eathena/adminhandler.h
+++ b/src/net/eathena/adminhandler.h
@@ -86,6 +86,8 @@ class AdminHandler final : public Ea::AdminHandler
void playerCharGmCommands(const std::string &name) const
override final;
+ void showLevel(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 91a1985b1..7b5f9d9b9 100644
--- a/src/net/tmwa/adminhandler.cpp
+++ b/src/net/tmwa/adminhandler.cpp
@@ -154,4 +154,8 @@ void AdminHandler::playerCharGmCommands(const std::string &name A_UNUSED) const
{
}
+void AdminHandler::showLevel(const std::string &name A_UNUSED) const
+{
+}
+
} // namespace TmwAthena
diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h
index 35a12913a..58ad0fb22 100644
--- a/src/net/tmwa/adminhandler.h
+++ b/src/net/tmwa/adminhandler.h
@@ -89,6 +89,8 @@ class AdminHandler final : public Ea::AdminHandler
void playerCharGmCommands(const std::string &name) const override final
A_CONST;
+
+ void showLevel(const std::string &name) const override final A_CONST;
};
} // namespace TmwAthena