summaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_client.cpp
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-04-01 12:40:56 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-04-01 13:40:56 +0200
commit63ac62ec8abe30f0d6dd2cfe0ddaab291c36893f (patch)
tree76707d22d37fc2fd29e5c5326f3848780599eb36 /src/script/lua_api/l_client.cpp
parent813a9a36b22a4e2d7383622311b6f52e31a94733 (diff)
downloadminetest-63ac62ec8abe30f0d6dd2cfe0ddaab291c36893f.tar.gz
minetest-63ac62ec8abe30f0d6dd2cfe0ddaab291c36893f.tar.bz2
minetest-63ac62ec8abe30f0d6dd2cfe0ddaab291c36893f.zip
[CSM] Add function and chat command to disconnect from server. (#5487)
Diffstat (limited to 'src/script/lua_api/l_client.cpp')
-rw-r--r--src/script/lua_api/l_client.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp
index 7cb89188d..5f9474702 100644
--- a/src/script/lua_api/l_client.cpp
+++ b/src/script/lua_api/l_client.cpp
@@ -25,8 +25,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "gettext.h"
#include "l_internal.h"
#include "lua_api/l_item.h"
+#include "mainmenumanager.h"
#include "util/string.h"
+extern MainGameCallback *g_gamecallback;
+
int ModApiClient::l_get_current_modname(lua_State *L)
{
lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_CURRENT_MOD_NAME);
@@ -107,6 +110,20 @@ int ModApiClient::l_send_respawn(lua_State *L)
return 0;
}
+// disconnect()
+int ModApiClient::l_disconnect(lua_State *L)
+{
+ // Stops badly written Lua code form causing boot loops
+ if (getClient(L)->isShutdown()) {
+ lua_pushboolean(L, false);
+ return 1;
+ }
+
+ g_gamecallback->disconnect();
+ lua_pushboolean(L, true);
+ return 1;
+}
+
// gettext(text)
int ModApiClient::l_gettext(lua_State *L)
{
@@ -178,4 +195,5 @@ void ModApiClient::Initialize(lua_State *L, int top)
API_FCT(get_node);
API_FCT(get_node_or_nil);
API_FCT(get_wielded_item);
+ API_FCT(disconnect);
}