From e4f7f97e6c79cda72dec7cd6fea5b85328b75894 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 3 Apr 2011 12:28:55 +0300 Subject: Removed lua stuff --- src/serverobject.cpp | 722 --------------------------------------------------- 1 file changed, 722 deletions(-) (limited to 'src/serverobject.cpp') diff --git a/src/serverobject.cpp b/src/serverobject.cpp index e62f1efd0..48d487ab0 100644 --- a/src/serverobject.cpp +++ b/src/serverobject.cpp @@ -79,727 +79,5 @@ void TestSAO::step(float dtime, Queue &messages) } } -/* - LuaSAO -*/ - -extern "C"{ -#include "lstring.h" -} - -/* - Callbacks in script: - - on_step(self, dtime) - on_get_client_init_data(self) - on_get_server_init_data(self) - on_initialize(self, data) -*/ - -/* - object_remove(x,y,z) -*/ -static int lf_object_remove(lua_State *L) -{ - // 1: self - LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(self); - - self->m_removed = true; - - return 0; -} - -/* - ServerEnvironment object_get_environment(self) -*/ -static int lf_object_get_environment(lua_State *L) -{ - // 1: self - LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(self); - - lua_pushlightuserdata(L, self->getEnv()); - return 1; -} - -/* - object_set_base_position(self, {X=,Y=,Z=}) -*/ -static int lf_object_set_base_position(lua_State *L) -{ - // 2: position - assert(lua_istable(L, -1)); - lua_pushstring(L, "X"); - lua_gettable(L, -2); - lua_Number x = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Y"); - lua_gettable(L, -2); - lua_Number y = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Z"); - lua_gettable(L, -2); - lua_Number z = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pop(L, 1); - // 1: self - LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(self); - - self->setBasePosition(v3f(x*BS,y*BS,z*BS)); - - return 0; // Number of return values -} - -/* - {X=,Y=,Z=} object_get_base_position(self) -*/ -static int lf_object_get_base_position(lua_State *L) -{ - // 1: self - LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(self); - - v3f pos = self->getBasePosition(); - - lua_newtable(L); - - lua_pushstring(L, "X"); - lua_pushnumber(L, pos.X/BS); - lua_settable(L, -3); - - lua_pushstring(L, "Y"); - lua_pushnumber(L, pos.Y/BS); - lua_settable(L, -3); - - lua_pushstring(L, "Z"); - lua_pushnumber(L, pos.Z/BS); - lua_settable(L, -3); - - return 1; // Number of return values -} - -/* - object_add_message(self, string data) - lf = luafunc -*/ -static int lf_object_add_message(lua_State *L) -{ - // 2: data - size_t datalen = 0; - const char *data_c = lua_tolstring(L, -1, &datalen); - lua_pop(L, 1); - // 1: self - LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(self); - assert(data_c); - - std::string data(data_c, datalen); - //dstream<<"object_add_message: data="<getId()); - aom.reliable = true; - aom.datastring = data; - self->m_message_queue.push_back(aom); - - return 0; // Number of return values -} - -/* - env_get_node(env, {X=,Y=,Z=}) -*/ -static int lf_env_get_node(lua_State *L) -{ - // 2: position - assert(lua_istable(L, -1)); - lua_pushstring(L, "X"); - lua_gettable(L, -2); - lua_Number x = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Y"); - lua_gettable(L, -2); - lua_Number y = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Z"); - lua_gettable(L, -2); - lua_Number z = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pop(L, 1); - // 1: env - ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1); - lua_pop(L, 1); - - assert(env); - - v3s16 pos = floatToInt(v3f(x,y,z), 1.0); - - /*dstream<<"Checking node from pos=("<getMap().getNodeNoEx(pos); - - // Create a table with some data about the node - lua_newtable(L); - lua_pushstring(L, "content"); - lua_pushinteger(L, n.d); - lua_settable(L, -3); - lua_pushstring(L, "param1"); - lua_pushinteger(L, n.param); - lua_settable(L, -3); - lua_pushstring(L, "param2"); - lua_pushinteger(L, n.param2); - lua_settable(L, -3); - - // Return the table - return 1; -} - -/* - get_content_features(content) -*/ -static int lf_get_content_features(lua_State *L) -{ - MapNode n; - - // 1: content - n.d = lua_tointeger(L, -1); - lua_pop(L, 1); - - // Get and return information - ContentFeatures &f = content_features(n.d); - - lua_newtable(L); - lua_pushstring(L, "walkable"); - lua_pushboolean(L, f.walkable); - lua_settable(L, -3); - lua_pushstring(L, "diggable"); - lua_pushboolean(L, f.diggable); - lua_settable(L, -3); - lua_pushstring(L, "buildable_to"); - lua_pushboolean(L, f.buildable_to); - lua_settable(L, -3); - - return 1; -} - -/* - bool env_dig_node(env, {X=,Y=,Z=}) - Return true on success -*/ -static int lf_env_dig_node(lua_State *L) -{ - // 2: position - assert(lua_istable(L, -1)); - lua_pushstring(L, "X"); - lua_gettable(L, -2); - lua_Number x = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Y"); - lua_gettable(L, -2); - lua_Number y = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Z"); - lua_gettable(L, -2); - lua_Number z = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pop(L, 1); - // 1: env - ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1); - lua_pop(L, 1); - assert(env); - - v3s16 pos = floatToInt(v3f(x,y,z), 1.0); - - /* - Do stuff. - This gets sent to the server by the map through the edit - event system. - */ - bool succeeded = env->getMap().removeNodeWithEvent(pos); - - lua_pushboolean(L, succeeded); - return 1; -} - -/* - bool env_place_node(env, {X=,Y=,Z=}, node) - node={content=,param1=,param2=} - param1 and param2 are optional - Return true on success -*/ -static int lf_env_place_node(lua_State *L) -{ - // 3: node - MapNode n(CONTENT_STONE); - assert(lua_istable(L, -1)); - { - lua_pushstring(L, "content"); - lua_gettable(L, -2); - if(lua_isnumber(L, -1)) - n.d = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "param1"); - lua_gettable(L, -2); - if(lua_isnumber(L, -1)) - n.param = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "param2"); - lua_gettable(L, -2); - if(lua_isnumber(L, -1)) - n.param2 = lua_tonumber(L, -1); - lua_pop(L, 1); - } - lua_pop(L, 1); - // 2: position - assert(lua_istable(L, -1)); - lua_pushstring(L, "X"); - lua_gettable(L, -2); - lua_Number x = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Y"); - lua_gettable(L, -2); - lua_Number y = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Z"); - lua_gettable(L, -2); - lua_Number z = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pop(L, 1); - // 1: env - ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1); - lua_pop(L, 1); - assert(env); - - v3s16 pos = floatToInt(v3f(x,y,z), 1.0); - - /* - Do stuff. - This gets sent to the server by the map through the edit - event system. - */ - bool succeeded = env->getMap().addNodeWithEvent(pos, n); - - lua_pushboolean(L, succeeded); - return 1; -} - -/* - string env_get_nearest_player_name(env, {X=,Y=,Z=}) -*/ -static int lf_env_get_nearest_player_name(lua_State *L) -{ - // 2: position - assert(lua_istable(L, -1)); - lua_pushstring(L, "X"); - lua_gettable(L, -2); - lua_Number x = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Y"); - lua_gettable(L, -2); - lua_Number y = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pushstring(L, "Z"); - lua_gettable(L, -2); - lua_Number z = lua_tonumber(L, -1); - lua_pop(L, 1); - lua_pop(L, 1); - // 1: env - ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1); - lua_pop(L, 1); - assert(env); - - v3f pos_f = v3f(x,y,z)*BS; - - Player *player = env->getNearestConnectedPlayer(pos_f); - - if(player) - lua_pushstring(L, player->getName()); - else - lua_pushstring(L, ""); - - return 1; // Number of return values -} - -/* - {exists=, pos={X=,Y=,Z=}, connected=} env_get_player_info(env, name) -*/ -static int lf_env_get_player_info(lua_State *L) -{ - // 2: name - const char *name = lua_tostring(L, -1); - lua_pop(L, 1); - // 1: env - ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1); - lua_pop(L, 1); - assert(env); - - Player *player = env->getPlayer(name); - v3f pos(0,0,0); - if(player) - pos = player->getPosition(); - - lua_newtable(L); - - lua_pushstring(L, "exists"); - lua_pushboolean(L, (player != NULL)); - lua_settable(L, -3); - - if(player != NULL) - { - lua_pushstring(L, "pos"); - { - lua_newtable(L); - - lua_pushstring(L, "X"); - lua_pushnumber(L, pos.X/BS); - lua_settable(L, -3); - - lua_pushstring(L, "Y"); - lua_pushnumber(L, pos.Y/BS); - lua_settable(L, -3); - - lua_pushstring(L, "Z"); - lua_pushnumber(L, pos.Z/BS); - lua_settable(L, -3); - } - lua_settable(L, -3); - - lua_pushstring(L, "connected"); - lua_pushboolean(L, (player->peer_id != 0)); - lua_settable(L, -3); - } - - return 1; // Number of return values -} - -LuaSAO::LuaSAO(ServerEnvironment *env, u16 id, v3f pos): - ServerActiveObject(env, id, pos), - L(NULL) -{ - dstream<<"LuaSAO::LuaSAO(): id="< buf(size); - file.seekg(0, std::ios::beg); - file.read(&buf[0], size); - file.close(); - - /* - Create data string - */ - std::string data; - - // Append script - std::string script_string(&buf[0], buf.getSize()); - data += serializeLongString(script_string); - - /* - Get data from server-side script for inclusion - */ - std::string other_data; - - do{ - - const char *funcname = "on_get_client_init_data"; - lua_getglobal(L, funcname); - if(!lua_isfunction(L,-1)) - { - lua_pop(L,1); - dstream<<"WARNING: LuaSAO: Function not found: " - < &messages) -{ - const char *funcname = "on_step"; - lua_getglobal(L, funcname); - if(!lua_isfunction(L,-1)) - { - lua_pop(L,1); - dstream<<"WARNING: LuaSAO::step(): Function not found: " - <