From: Perttu Ahola Date: Fri, 2 Dec 2011 09:51:41 +0000 (+0200) Subject: Add time_from_last_punch to Lua API X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=e8b0722137b47b9b17cef94a9a9f0f52d03f4ea8;p=zefram%2Fminetest%2Fminetest_engine.git Add time_from_last_punch to Lua API --- diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua index c6c679b6..6788defa 100644 --- a/data/mods/default/init.lua +++ b/data/mods/default/init.lua @@ -104,7 +104,9 @@ -- - getpos() -> {x=num, y=num, z=num} -- - setpos(pos); pos={x=num, y=num, z=num} -- - moveto(pos, continuous=false): interpolated move --- - punch(puncher); puncher = an another ObjectRef +-- - punch(puncher, time_from_last_punch) +-- ^ puncher = an another ObjectRef, +-- ^ time_from_last_punch = time since last punch action of the puncher -- - right_click(clicker); clicker = an another ObjectRef -- - get_wield_digging_properties() -> digging property table -- - add_to_inventory_later(itemstring): like above, but after callback returns (only allowed for craftitem callbacks) diff --git a/src/content_sao.cpp b/src/content_sao.cpp index e0f230bb..171e315a 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -1678,7 +1678,7 @@ void LuaEntitySAO::punch(ServerActiveObject *puncher, float time_from_last_punch if(!m_registered) return; lua_State *L = m_env->getLua(); - scriptapi_luaentity_punch(L, m_id, puncher); + scriptapi_luaentity_punch(L, m_id, puncher, time_from_last_punch); } void LuaEntitySAO::rightClick(ServerActiveObject *clicker) diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 951ff6f8..dce454ea 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -3208,9 +3208,9 @@ void scriptapi_luaentity_step(lua_State *L, u16 id, float dtime) script_error(L, "error running function 'on_step': %s\n", lua_tostring(L, -1)); } -// Calls entity:on_punch(ObjectRef puncher) +// Calls entity:on_punch(ObjectRef puncher, time_from_last_punch) void scriptapi_luaentity_punch(lua_State *L, u16 id, - ServerActiveObject *puncher) + ServerActiveObject *puncher, float time_from_last_punch) { realitycheck(L); assert(lua_checkstack(L, 20)); @@ -3228,8 +3228,9 @@ void scriptapi_luaentity_punch(lua_State *L, u16 id, luaL_checktype(L, -1, LUA_TFUNCTION); lua_pushvalue(L, object); // self objectref_get_or_create(L, puncher); // Clicker reference + lua_pushnumber(L, time_from_last_punch); // Call with 2 arguments, 0 results - if(lua_pcall(L, 2, 0, 0)) + if(lua_pcall(L, 3, 0, 0)) script_error(L, "error running function 'on_punch': %s\n", lua_tostring(L, -1)); } diff --git a/src/scriptapi.h b/src/scriptapi.h index fe9329d7..2baf6f83 100644 --- a/src/scriptapi.h +++ b/src/scriptapi.h @@ -83,7 +83,7 @@ void scriptapi_luaentity_get_properties(lua_State *L, u16 id, LuaEntityProperties *prop); void scriptapi_luaentity_step(lua_State *L, u16 id, float dtime); void scriptapi_luaentity_punch(lua_State *L, u16 id, - ServerActiveObject *puncher); + ServerActiveObject *puncher, float time_from_last_punch); void scriptapi_luaentity_rightclick(lua_State *L, u16 id, ServerActiveObject *clicker);