From 656faf7373587bc59b47986a28dbd2fce4c45474 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Sat, 8 Oct 2016 12:21:41 +0200 Subject: Player/LocalPlayer/RemotePlayer inheritance cleanup (part 2 on X) * Server/Client Environments now have an helper to cast Player object in the right type to use it * Server: use RemotePlayer everywhere and remove previous added casts * Client: use LocalPlayer where needed * Environment: remove unused functions (getPlayers(), getRandomConnectedPlayer(), getNearestConnectedPlayer()) --- src/script/lua_api/l_server.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/script/lua_api/l_server.cpp') diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 59d3f5c70..95e5da07f 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -106,7 +106,7 @@ int ModApiServer::l_get_player_ip(lua_State *L) { NO_MAP_LOCK_REQUIRED; const char * name = luaL_checkstring(L, 1); - Player *player = getEnv(L)->getPlayer(name); + RemotePlayer *player = dynamic_cast(getEnv(L))->getPlayer(name); if(player == NULL) { lua_pushnil(L); // no such player @@ -133,9 +133,8 @@ int ModApiServer::l_get_player_information(lua_State *L) NO_MAP_LOCK_REQUIRED; const char * name = luaL_checkstring(L, 1); - Player *player = getEnv(L)->getPlayer(name); - if(player == NULL) - { + RemotePlayer *player = dynamic_cast(getEnv(L))->getPlayer(name); + if (player == NULL) { lua_pushnil(L); // no such player return 1; } @@ -278,15 +277,15 @@ int ModApiServer::l_ban_player(lua_State *L) { NO_MAP_LOCK_REQUIRED; const char * name = luaL_checkstring(L, 1); - Player *player = getEnv(L)->getPlayer(name); - if(player == NULL) - { + RemotePlayer *player = dynamic_cast(getEnv(L))->getPlayer(name); + if (player == NULL) { lua_pushboolean(L, false); // no such player return 1; } try { - Address addr = getServer(L)->getPeerAddress(getEnv(L)->getPlayer(name)->peer_id); + Address addr = getServer(L)->getPeerAddress( + dynamic_cast(getEnv(L))->getPlayer(name)->peer_id); std::string ip_str = addr.serializeString(); getServer(L)->setIpBanned(ip_str, name); } @@ -314,9 +313,9 @@ int ModApiServer::l_kick_player(lua_State *L) { message = "Kicked."; } - Player *player = getEnv(L)->getPlayer(name); - if (player == NULL) - { + + RemotePlayer *player = dynamic_cast(getEnv(L))->getPlayer(name); + if (player == NULL) { lua_pushboolean(L, false); // No such player return 1; } -- cgit v1.2.3 From bf315c05f17549d37d7b4c4bd7938df0b5b32c5a Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 2 Nov 2016 11:36:58 -0500 Subject: Add minetest.get_server_uptime() function to Lua API (#4702) Add minetest.get_server_uptime() function to Lua API --- doc/lua_api.txt | 1 + src/script/lua_api/l_server.cpp | 10 ++++++++++ src/script/lua_api/l_server.h | 3 +++ src/server.h | 1 + 4 files changed, 15 insertions(+) (limited to 'src/script/lua_api/l_server.cpp') diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 497864fac..119e69f6f 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2448,6 +2448,7 @@ These functions return the leftover itemstack. * `minetest.request_shutdown([message],[reconnect])`: request for server shutdown. Will display `message` to clients, and `reconnect` == true displays a reconnect button. * `minetest.get_server_status()`: returns server status string +* `minetest.get_server_uptime()`: returns the server uptime in seconds ### Bans * `minetest.get_ban_list()`: returns the ban list (same as `minetest.get_ban_description("")`) diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 95e5da07f..b6d44e0ff 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -45,6 +45,15 @@ int ModApiServer::l_get_server_status(lua_State *L) return 1; } +// get_server_uptime() +int ModApiServer::l_get_server_uptime(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + lua_pushnumber(L, getServer(L)->getUptime()); + return 1; +} + + // print(text) int ModApiServer::l_print(lua_State *L) { @@ -507,6 +516,7 @@ void ModApiServer::Initialize(lua_State *L, int top) { API_FCT(request_shutdown); API_FCT(get_server_status); + API_FCT(get_server_uptime); API_FCT(get_worldpath); API_FCT(is_singleplayer); diff --git a/src/script/lua_api/l_server.h b/src/script/lua_api/l_server.h index 06a5ddc24..1ad46d440 100644 --- a/src/script/lua_api/l_server.h +++ b/src/script/lua_api/l_server.h @@ -30,6 +30,9 @@ private: // get_server_status() static int l_get_server_status(lua_State *L); + // get_server_uptime() + static int l_get_server_uptime(lua_State *L); + // get_worldpath() static int l_get_worldpath(lua_State *L); diff --git a/src/server.h b/src/server.h index 5fc2a9133..f8b3ec106 100644 --- a/src/server.h +++ b/src/server.h @@ -216,6 +216,7 @@ public: // Connection must be locked when called std::wstring getStatusString(); + inline double getUptime() const { return m_uptime.m_value; } // read shutdown state inline bool getShutdownRequested() const { return m_shutdown_requested; } -- cgit v1.2.3