diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_entity.cpp | 7 | ||||
-rw-r--r-- | src/script/lua_api/l_env.cpp | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp index 9368bec76..852a27ddc 100644 --- a/src/script/cpp_api/s_entity.cpp +++ b/src/script/cpp_api/s_entity.cpp @@ -244,7 +244,7 @@ bool ScriptApiEntity::luaentity_Punch(u16 id, { SCRIPTAPI_PRECHECKHEADER - //infostream<<"scriptapi_luaentity_step: id="<<id<<std::endl; + assert(puncher); int error_handler = PUSH_ERROR_HANDLER(L); @@ -294,7 +294,10 @@ bool ScriptApiEntity::luaentity_run_simple_callback(u16 id, } luaL_checktype(L, -1, LUA_TFUNCTION); lua_pushvalue(L, object); // self - objectrefGetOrCreate(L, sao); // killer reference + if (sao) + objectrefGetOrCreate(L, sao); // sao reference + else + lua_pushnil(L); setOriginFromTable(object); PCALL_RES(lua_pcall(L, 2, 1, error_handler)); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 7640f2782..ee49fd6bd 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -640,7 +640,7 @@ int ModApiEnvMod::l_add_entity(lua_State *L) v3f pos = checkFloatPos(L, 1); const char *name = luaL_checkstring(L, 2); - const char *staticdata = luaL_optstring(L, 3, ""); + std::string staticdata = readParam<std::string>(L, 3, ""); ServerActiveObject *obj = new LuaEntitySAO(env, pos, name, staticdata); int objectid = env->addActiveObject(obj); |