summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-02-26 01:19:03 +0300
committerAndrei Karas <akaras@inbox.ru>2016-02-26 01:19:03 +0300
commit8fcd2e6f3002db388b1273ee3904285eb3ce8c54 (patch)
treeb27f88fff1c61916603a6094ea5c4184562e6d0e /src
parentcc3e067e9fdf2a1306e62d13dea0fdb315a925c9 (diff)
downloadmv-8fcd2e6f3002db388b1273ee3904285eb3ce8c54.tar.gz
mv-8fcd2e6f3002db388b1273ee3904285eb3ce8c54.tar.bz2
mv-8fcd2e6f3002db388b1273ee3904285eb3ce8c54.tar.xz
mv-8fcd2e6f3002db388b1273ee3904285eb3ce8c54.zip
Add chat command /unjail. Also add it to player context menu.
Diffstat (limited to 'src')
-rw-r--r--src/actions/commands.cpp9
-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.cpp5
-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 1ad0cf9a9..a1b746852 100644
--- a/src/actions/commands.cpp
+++ b/src/actions/commands.cpp
@@ -1465,4 +1465,13 @@ impHandler(commandJail)
return true;
}
+impHandler(commandUnjail)
+{
+ const std::string args = event.args;
+ if (args.empty())
+ return false;
+ adminHandler->unjail(args);
+ return true;
+}
+
} // namespace Actions
diff --git a/src/actions/commands.h b/src/actions/commands.h
index 655b039d0..883b13d7b 100644
--- a/src/actions/commands.h
+++ b/src/actions/commands.h
@@ -130,6 +130,7 @@ namespace Actions
decHandler(commandNuke);
decHandler(commandKill);
decHandler(commandJail);
+ decHandler(commandUnjail);
} // namespace Actions
#undef decHandler
diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp
index 5c7398e04..cfd21fdd0 100644
--- a/src/dyetool/actions/commands.cpp
+++ b/src/dyetool/actions/commands.cpp
@@ -130,5 +130,6 @@ impHandlerVoid(commandHide)
impHandlerVoid(commandNuke)
impHandlerVoid(commandKill)
impHandlerVoid(commandJail)
+impHandlerVoid(commandUnjail)
} // namespace Actions
diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h
index 516f20d27..641408b66 100644
--- a/src/enums/input/inputaction.h
+++ b/src/enums/input/inputaction.h
@@ -659,6 +659,7 @@ enumStart(InputAction)
COMMAND_NUKE,
COMMAND_KILL,
COMMAND_JAIL,
+ COMMAND_UNJAIL,
TOTAL
}
enumEnd(InputAction);
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp
index 866e8cdf4..7ad1a63f3 100644
--- a/src/gui/popups/popupmenu.cpp
+++ b/src/gui/popups/popupmenu.cpp
@@ -2770,6 +2770,9 @@ void PopupMenu::showPlayerGMCommands()
// TRANSLATORS: send player to jail
mBrowserBox->addRow("/jail 'NAME'", _("Jail"));
// TRANSLATORS: popup menu item
+ // TRANSLATORS: restore player from jail
+ mBrowserBox->addRow("/unjail 'NAME'", _("Unjail"));
+ // TRANSLATORS: popup menu item
// TRANSLATORS: hide player
mBrowserBox->addRow("/hide 'NAME'", _("Hide"));
mBrowserBox->addRow("##3---");
diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h
index 90098ef3b..80bbe090a 100644
--- a/src/input/inputactionmap.h
+++ b/src/input/inputactionmap.h
@@ -5443,6 +5443,12 @@ static const InputActionData inputActionData
"jail",
UseArgs_true,
Protected_true},
+ {"keyCommandUnjail",
+ defaultAction(&Actions::commandUnjail),
+ InputCondition::INGAME,
+ "unjail",
+ UseArgs_true,
+ Protected_true},
};
#undef defaultAction
diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h
index 1ea6cb325..000938240 100644
--- a/src/net/adminhandler.h
+++ b/src/net/adminhandler.h
@@ -160,6 +160,8 @@ class AdminHandler notfinal
virtual void kill(const std::string &name) const = 0;
virtual void jail(const std::string &name) const = 0;
+
+ virtual void unjail(const std::string &name) const = 0;
};
} // namespace Net
diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp
index 92cb06531..1ee373043 100644
--- a/src/net/eathena/adminhandler.cpp
+++ b/src/net/eathena/adminhandler.cpp
@@ -320,4 +320,9 @@ void AdminHandler::jail(const std::string &name) const
Gm::runCommand("jail", name);
}
+void AdminHandler::unjail(const std::string &name) const
+{
+ Gm::runCommand("unjail", name);
+}
+
} // namespace EAthena
diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h
index 23419ad27..995669f76 100644
--- a/src/net/eathena/adminhandler.h
+++ b/src/net/eathena/adminhandler.h
@@ -136,6 +136,8 @@ class AdminHandler final : public Ea::AdminHandler
void jail(const std::string &name) const override final;
+ void unjail(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 488a9d05c..7de0cb247 100644
--- a/src/net/tmwa/adminhandler.cpp
+++ b/src/net/tmwa/adminhandler.cpp
@@ -253,4 +253,8 @@ void AdminHandler::jail(const std::string &name A_UNUSED) const
{
}
+void AdminHandler::unjail(const std::string &name A_UNUSED) const
+{
+}
+
} // namespace TmwAthena
diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h
index 8b5c65dec..c45437113 100644
--- a/src/net/tmwa/adminhandler.h
+++ b/src/net/tmwa/adminhandler.h
@@ -148,6 +148,8 @@ class AdminHandler final : public Ea::AdminHandler
void kill(const std::string &name) const override final;
void jail(const std::string &name) const override final;
+
+ void unjail(const std::string &name) const override final;
};
} // namespace TmwAthena