diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/script/cpp_api/s_entity.cpp | 6 | ||||
-rw-r--r-- | src/script/cpp_api/s_entity.h | 2 | ||||
-rw-r--r-- | src/server/luaentity_sao.cpp | 4 | ||||
-rw-r--r-- | src/server/luaentity_sao.h | 6 |
4 files changed, 9 insertions, 9 deletions
diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp index 06337b9e8..9368bec76 100644 --- a/src/script/cpp_api/s_entity.cpp +++ b/src/script/cpp_api/s_entity.cpp @@ -103,7 +103,7 @@ void ScriptApiEntity::luaentity_Activate(u16 id, lua_pop(L, 2); // Pop object and error handler } -void ScriptApiEntity::luaentity_Deactivate(u16 id) +void ScriptApiEntity::luaentity_Deactivate(u16 id, bool removal) { SCRIPTAPI_PRECHECKHEADER @@ -120,9 +120,9 @@ void ScriptApiEntity::luaentity_Deactivate(u16 id) if (!lua_isnil(L, -1)) { luaL_checktype(L, -1, LUA_TFUNCTION); lua_pushvalue(L, object); - + lua_pushboolean(L, removal); setOriginFromTable(object); - PCALL_RES(lua_pcall(L, 1, 0, error_handler)); + PCALL_RES(lua_pcall(L, 2, 0, error_handler)); } else { lua_pop(L, 1); } diff --git a/src/script/cpp_api/s_entity.h b/src/script/cpp_api/s_entity.h index 7658ae922..13f3e9aa3 100644 --- a/src/script/cpp_api/s_entity.h +++ b/src/script/cpp_api/s_entity.h @@ -33,7 +33,7 @@ public: bool luaentity_Add(u16 id, const char *name); void luaentity_Activate(u16 id, const std::string &staticdata, u32 dtime_s); - void luaentity_Deactivate(u16 id); + void luaentity_Deactivate(u16 id, bool removal); void luaentity_Remove(u16 id); std::string luaentity_GetStaticdata(u16 id); void luaentity_GetProperties(u16 id, diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index a4b37ee09..a0a8aede0 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -117,13 +117,13 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s) } } -void LuaEntitySAO::dispatchScriptDeactivate() +void LuaEntitySAO::dispatchScriptDeactivate(bool removal) { // Ensure that this is in fact a registered entity, // and that it isn't already gone. // The latter also prevents this from ever being called twice. if (m_registered && !isGone()) - m_env->getScriptIface()->luaentity_Deactivate(m_id); + m_env->getScriptIface()->luaentity_Deactivate(m_id, removal); } void LuaEntitySAO::step(float dtime, bool send_recommended) diff --git a/src/server/luaentity_sao.h b/src/server/luaentity_sao.h index 5a5aea7a9..1dc72b150 100644 --- a/src/server/luaentity_sao.h +++ b/src/server/luaentity_sao.h @@ -80,9 +80,9 @@ public: bool collideWithObjects() const; protected: - void dispatchScriptDeactivate(); - virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(); } - virtual void onMarkedForRemoval() { dispatchScriptDeactivate(); } + void dispatchScriptDeactivate(bool removal); + virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(false); } + virtual void onMarkedForRemoval() { dispatchScriptDeactivate(true); } private: std::string getPropertyPacket(); |