From cd563473fa298db3b910009f26ba263bacd84be9 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Wed, 30 Nov 2011 20:54:54 +0200 Subject: [PATCH] Add ObjectRef:punch and ObjectRef:right_click to Lua API --- data/mods/default/init.lua | 8 +++++--- src/scriptapi.cpp | 30 ++++++++++++++++++++++++++++++ 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),