summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-30 20:54:54 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-30 20:54:54 +0200
commitcd563473fa298db3b910009f26ba263bacd84be9 (patch)
tree8997c54845dd9b2e2a9e03ef9937bea75c1b859f
parentd26e19a296e049085bf56ca09c5b8ae26d32524d (diff)
downloadminetest-cd563473fa298db3b910009f26ba263bacd84be9.tar.gz
minetest-cd563473fa298db3b910009f26ba263bacd84be9.tar.bz2
minetest-cd563473fa298db3b910009f26ba263bacd84be9.zip
Add ObjectRef:punch and ObjectRef:right_click to Lua API
-rw-r--r--data/mods/default/init.lua8
-rw-r--r--src/scriptapi.cpp30
2 files changed, 35 insertions, 3 deletions
diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua
index 0e42974ef..5b94a13a0 100644
--- a/data/mods/default/init.lua
+++ b/data/mods/default/init.lua
@@ -81,6 +81,8 @@
-- - getpos(): returns {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
+-- - right_click(clicker); clicker = an another ObjectRef
-- - get_wielded_itemstring()
-- - get_wielded_item()
-- - damage_wielded_item(num) (item damage/wear range is 0-65535)
@@ -89,9 +91,9 @@
-- - get_hp(): returns number of hitpoints (2 * number of hearts)
-- - set_hp(hp): set number of hitpoints (2 * number of hearts)
-- LuaEntitySAO-only:
--- - setvelocity(self, {x=num, y=num, z=num})
--- - setacceleration(self, {x=num, y=num, z=num})
--- - getacceleration(self)
+-- - setvelocity({x=num, y=num, z=num})
+-- - setacceleration({x=num, y=num, z=num})
+-- - getacceleration()
-- - settexturemod(mod)
-- - setsprite(p={x=0,y=0}, num_frames=1, framelength=0.2,
-- - select_horiz_by_yawpitch=false)
diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp
index fbdbf4a12..8a3d4a496 100644
--- a/src/scriptapi.cpp
+++ b/src/scriptapi.cpp
@@ -1642,6 +1642,34 @@ private:
return 0;
}
+ // punch(self, puncher); puncher = an another ObjectRef
+ static int l_punch(lua_State *L)
+ {
+ ObjectRef *ref = checkobject(L, 1);
+ ObjectRef *ref2 = checkobject(L, 2);
+ ServerActiveObject *co = getobject(ref);
+ ServerActiveObject *co2 = getobject(ref2);
+ if(co == NULL) return 0;
+ if(co2 == NULL) return 0;
+ // Do it
+ co->punch(co2);
+ return 0;
+ }
+
+ // right_click(self, clicker); clicker = an another ObjectRef
+ static int l_right_click(lua_State *L)
+ {
+ ObjectRef *ref = checkobject(L, 1);
+ ObjectRef *ref2 = checkobject(L, 2);
+ ServerActiveObject *co = getobject(ref);
+ ServerActiveObject *co2 = getobject(ref2);
+ if(co == NULL) return 0;
+ if(co2 == NULL) return 0;
+ // Do it
+ co->rightClick(co2);
+ return 0;
+ }
+
// get_wielded_itemstring(self)
static int l_get_wielded_itemstring(lua_State *L)
{
@@ -1954,6 +1982,8 @@ const luaL_reg ObjectRef::methods[] = {
method(ObjectRef, getpos),
method(ObjectRef, setpos),
method(ObjectRef, moveto),
+ method(ObjectRef, punch),
+ method(ObjectRef, right_click),
method(ObjectRef, get_wielded_itemstring),
method(ObjectRef, get_wielded_item),
method(ObjectRef, damage_wielded_item),