aboutsummaryrefslogtreecommitdiff
path: root/src/script/lua_api
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-01-22 08:05:09 +0000
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-03-13 23:56:05 +0100
commitd7bc346981e189851e490f2417ed015a38bca79b (patch)
treec74716238c0851b8d9531544faa4433db22e6a84 /src/script/lua_api
parent9978f5af828550d819890fed1fc56d65838a2c4c (diff)
downloadminetest-d7bc346981e189851e490f2417ed015a38bca79b.tar.gz
minetest-d7bc346981e189851e490f2417ed015a38bca79b.tar.bz2
minetest-d7bc346981e189851e490f2417ed015a38bca79b.zip
[CSM] Add client-sided chat commands (#5092)
Diffstat (limited to 'src/script/lua_api')
-rw-r--r--src/script/lua_api/l_client.cpp23
-rw-r--r--src/script/lua_api/l_client.h8
2 files changed, 31 insertions, 0 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp
index f4c3812ac..7eb340d78 100644
--- a/src/script/lua_api/l_client.cpp
+++ b/src/script/lua_api/l_client.cpp
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "l_client.h"
#include "l_internal.h"
#include "util/string.h"
+#include "cpp_api/s_base.h"
int ModApiClient::l_get_current_modname(lua_State *L)
{
@@ -28,6 +29,26 @@ int ModApiClient::l_get_current_modname(lua_State *L)
return 1;
}
+// get_last_run_mod()
+int ModApiClient::l_get_last_run_mod(lua_State *L)
+{
+ lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_CURRENT_MOD_NAME);
+ const char *current_mod = lua_tostring(L, -1);
+ if (current_mod == NULL || current_mod[0] == '\0') {
+ lua_pop(L, 1);
+ lua_pushstring(L, getScriptApiBase(L)->getOrigin().c_str());
+ }
+ return 1;
+}
+
+// set_last_run_mod(modname)
+int ModApiClient::l_set_last_run_mod(lua_State *L)
+{
+ const char *mod = lua_tostring(L, 1);
+ getScriptApiBase(L)->setOriginDirect(mod);
+ return 0;
+}
+
// display_chat_message(message)
int ModApiClient::l_display_chat_message(lua_State *L)
{
@@ -42,4 +63,6 @@ void ModApiClient::Initialize(lua_State *L, int top)
{
API_FCT(get_current_modname);
API_FCT(display_chat_message);
+ API_FCT(set_last_run_mod);
+ API_FCT(get_last_run_mod);
}
diff --git a/src/script/lua_api/l_client.h b/src/script/lua_api/l_client.h
index b4a57cb61..e3106e742 100644
--- a/src/script/lua_api/l_client.h
+++ b/src/script/lua_api/l_client.h
@@ -28,8 +28,16 @@ class ModApiClient : public ModApiBase
private:
// get_current_modname()
static int l_get_current_modname(lua_State *L);
+
+ // display_chat_message(message)
static int l_display_chat_message(lua_State *L);
+ // get_last_run_mod(n)
+ static int l_get_last_run_mod(lua_State *L);
+
+ // set_last_run_mod(modname)
+ static int l_set_last_run_mod(lua_State *L);
+
public:
static void Initialize(lua_State *L, int top);
};