diff options
author | ShadowNinja <noreply@gmail.com> | 2013-04-04 04:28:21 -0400 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2013-04-23 09:57:45 +0300 |
commit | 4a9b8aae5e54e4cb6395771868a83bfd0f72c11a (patch) | |
tree | a367d652c8770eba60c5e122a0dc3fe8fd21aec4 /src/scriptapi.cpp | |
parent | 3d4d0cb5749a68436cccd08b7a135f9bb7527038 (diff) | |
download | minetest-4a9b8aae5e54e4cb6395771868a83bfd0f72c11a.tar.gz minetest-4a9b8aae5e54e4cb6395771868a83bfd0f72c11a.tar.bz2 minetest-4a9b8aae5e54e4cb6395771868a83bfd0f72c11a.zip |
Add minetest.get_player_ip()
Diffstat (limited to 'src/scriptapi.cpp')
-rw-r--r-- | src/scriptapi.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 3b0c15f8a..f0fe1950e 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -788,6 +788,31 @@ static int l_get_player_privs(lua_State *L) return 1; } +// get_player_ip() +static int l_get_player_ip(lua_State *L) +{ + const char * name = luaL_checkstring(L, 1); + Player *player = get_env(L)->getPlayer(name); + if(player == NULL) + { + lua_pushnil(L); // no such player + return 1; + } + try + { + Address addr = get_server(L)->getPeerAddress(get_env(L)->getPlayer(name)->peer_id); + std::string ip_str = addr.serializeString(); + lua_pushstring(L, ip_str.c_str()); + return 1; + } + catch(con::PeerNotFoundException) // unlikely + { + dstream << __FUNCTION_NAME << ": peer was not found" << std::endl; + lua_pushnil(L); // error + return 1; + } +} + // get_ban_list() static int l_get_ban_list(lua_State *L) { @@ -1084,6 +1109,7 @@ static const struct luaL_Reg minetest_f [] = { {"chat_send_all", l_chat_send_all}, {"chat_send_player", l_chat_send_player}, {"get_player_privs", l_get_player_privs}, + {"get_player_ip", l_get_player_ip}, {"get_ban_list", l_get_ban_list}, {"get_ban_description", l_get_ban_description}, {"ban_player", l_ban_player}, |