improve the code & + model back
parent
962550fa99
commit
b5cf0fdc78
264
init.lua
264
init.lua
|
@ -1,24 +1,29 @@
|
|||
local hook_tmp_throw={}
|
||||
local hook_tmp_throw_timer=0
|
||||
local hook_tmp_time= tonumber(minetest.settings:get("item_entity_ttl"))
|
||||
hook={}
|
||||
hook={
|
||||
tmp_throw={},
|
||||
tmp_throw_timer=0,
|
||||
tmp_time= tonumber(minetest.settings:get("item_entity_ttl")),
|
||||
pvp = minetest.settings:get_bool("enable_pvp") == true,
|
||||
}
|
||||
|
||||
dofile(minetest.get_modpath("hook") .. "/project.lua")
|
||||
dofile(minetest.get_modpath("hook") .. "/pchest.lua")
|
||||
if hook_tmp_time=="" or hook_tmp_time==nil then
|
||||
hook_tmp_time=890
|
||||
|
||||
if hook.tmp_time=="" or hook.tmp_time==nil then
|
||||
hook.tmp_time=890
|
||||
else
|
||||
hook_tmp_time=hook_tmp_time-10
|
||||
hook.tmp_time=hook.tmp_time-10
|
||||
end
|
||||
|
||||
hook.punch=function(ob1,ob2,hp)
|
||||
ob2:punch(ob1,1,{full_punch_interval=1,damage_groups={fleshy=hp}})
|
||||
end
|
||||
|
||||
slingshot_def=function(pos,n)
|
||||
if not (pos and pos.x and pos.y and pos.z and n) then return false end
|
||||
hook.slingshot_def=function(pos,n)
|
||||
local nn=minetest.get_node(pos).name
|
||||
return (minetest.registered_nodes[nn] and minetest.registered_nodes[nn][n])
|
||||
end
|
||||
|
||||
|
||||
local function slingshot_onuse(itemstack, user)
|
||||
hook.slingshot_onuse=function(itemstack, user)
|
||||
local veloc=15
|
||||
local pos = user:get_pos()
|
||||
local upos={x=pos.x,y=pos.y+2,z=pos.z}
|
||||
|
@ -32,72 +37,68 @@ local function slingshot_onuse(itemstack, user)
|
|||
local e=minetest.add_item({x=pos.x,y=pos.y+2,z=pos.z},item)
|
||||
e:set_velocity({x=dir.x*veloc, y=dir.y*veloc, z=dir.z*veloc})
|
||||
e:set_acceleration({x=dir.x*-3, y=-5, z=dir.z*-3})
|
||||
e:get_luaentity().age=hook_tmp_time
|
||||
table.insert(hook_tmp_throw,{ob=e,timer=2,user=user:get_player_name()})
|
||||
|
||||
e:get_luaentity().age=hook.tmp_time
|
||||
table.insert(hook.tmp_throw,{ob=e,timer=2,user=user:get_player_name()})
|
||||
if item=="hook:slingshot" then
|
||||
itemstack:set_wear(9999999)
|
||||
itemstack:set_wear(9999999)
|
||||
end
|
||||
|
||||
user:get_inventory():remove_item("main", item)
|
||||
minetest.sound_play("hook_throw", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
||||
return itemstack
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_tool("hook:slingshot", {
|
||||
description = "Slingshot",
|
||||
range = 4,
|
||||
inventory_image = "hook_slingshot.png",
|
||||
on_use=function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.ref and pointed_thing.ref:is_player()==false and pointed_thing.ref:get_luaentity().name=="__builtin:item" then
|
||||
pointed_thing.ref:punch(user, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
||||
on_use=function(itemstack, user, pointed_thing)
|
||||
local ref = pointed_thing.ref
|
||||
if ref and not (ref:get_luaentity() and ref:get_luaentity().name == "__builtin:item") then
|
||||
hook.punch(user,ref,4)
|
||||
return itemstack
|
||||
end
|
||||
hook.slingshot_onuse(itemstack, user)
|
||||
return itemstack
|
||||
end,
|
||||
on_place=function(itemstack, user, pointed_thing)
|
||||
local item=itemstack:to_table()
|
||||
local meta=minetest.deserialize(item["metadata"])
|
||||
local mode=0
|
||||
if meta==nil then meta={} mode=1 end
|
||||
if meta.mode==nil then meta.mode=1 end
|
||||
mode=(meta.mode)
|
||||
if mode==1 then
|
||||
mode=-1
|
||||
minetest.chat_send_player(user:get_player_name(), "Use stack to left")
|
||||
else
|
||||
mode=1
|
||||
minetest.chat_send_player(user:get_player_name(), "Use stack to right ")
|
||||
end
|
||||
meta.mode=mode
|
||||
item.metadata=minetest.serialize(meta)
|
||||
item.meta=minetest.serialize(meta)
|
||||
itemstack:replace(item)
|
||||
return itemstack
|
||||
end
|
||||
slingshot_onuse(itemstack, user)
|
||||
return itemstack
|
||||
end,
|
||||
on_place=function(itemstack, user, pointed_thing)
|
||||
local item=itemstack:to_table()
|
||||
local meta=minetest.deserialize(item["metadata"])
|
||||
local mode=0
|
||||
if meta==nil then meta={} mode=1 end
|
||||
if meta.mode==nil then meta.mode=1 end
|
||||
mode=(meta.mode)
|
||||
if mode==1 then
|
||||
mode=-1
|
||||
minetest.chat_send_player(user:get_player_name(), "Use stack to left")
|
||||
else
|
||||
mode=1
|
||||
minetest.chat_send_player(user:get_player_name(), "Use stack to right ")
|
||||
end
|
||||
meta.mode=mode
|
||||
item.metadata=minetest.serialize(meta)
|
||||
item.meta=minetest.serialize(meta)
|
||||
itemstack:replace(item)
|
||||
return itemstack
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
hook_tmp_throw_timer=hook_tmp_throw_timer+dtime
|
||||
if hook_tmp_throw_timer<0.2 then return end
|
||||
hook_tmp_throw_timer=0
|
||||
for i, t in pairs(hook_tmp_throw) do
|
||||
hook.tmp_throw_timer=hook.tmp_throw_timer+dtime
|
||||
if hook.tmp_throw_timer<0.1 then return end
|
||||
hook.tmp_throw_timer=0
|
||||
for i, t in pairs(hook.tmp_throw) do
|
||||
t.timer=t.timer-0.25
|
||||
if t.timer<=0 or t.ob==nil or t.ob:get_pos()==nil then table.remove(hook_tmp_throw,i) return end
|
||||
if t.timer<=0 or t.ob==nil or t.ob:get_pos()==nil then table.remove(hook.tmp_throw,i) return end
|
||||
for ii, ob in pairs(minetest.get_objects_inside_radius(t.ob:get_pos(), 1.5)) do
|
||||
if (not ob:get_luaentity()) or (ob:get_luaentity() and (ob:get_luaentity().name~="__builtin:item")) then
|
||||
if (not ob:is_player()) or (ob:is_player() and ob:get_player_name(ob)~=t.user and minetest.setting_getbool("enable_pvp")==true) then
|
||||
if (not ob:is_player()) or (ob:is_player() and ob:get_player_name(ob)~=t.user and hook.pvp) then
|
||||
ob:set_hp(ob:get_hp()-5)
|
||||
ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
||||
hook.punch(ob,ob,4)
|
||||
t.ob:set_velocity({x=0, y=0, z=0})
|
||||
if ob:get_hp()<=0 and ob:is_player()==false then ob:remove() end
|
||||
t.ob:set_acceleration({x=0, y=-10,z=0})
|
||||
t.ob:set_velocity({x=0, y=-10, z=0})
|
||||
table.remove(hook_tmp_throw,i)
|
||||
table.remove(hook.tmp_throw,i)
|
||||
minetest.sound_play("hook_hard_punch", {pos=ob:get_pos(), gain = 1.0, max_hear_distance = 5,})
|
||||
break
|
||||
end
|
||||
|
@ -106,17 +107,16 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
end)
|
||||
|
||||
function is_hook(pos,name)
|
||||
local nname=minetest.get_node(pos).name
|
||||
if name==nil or minetest.is_protected(pos,name)==false then
|
||||
|
||||
if nname=="air" or nname=="hook:rope" or
|
||||
(nname=="hook:hooking" and minetest.get_meta(pos):get_int("a")==0) then
|
||||
return true
|
||||
hook.is_hook=function(pos,name)
|
||||
if not (name and minetest.is_protected(pos,name)) then
|
||||
local def = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
if def and def.name == "hook:hooking" or (def.buildable_to and not (def.liquidtype == "source" and def.paramtype2 == "none")) then
|
||||
if not (def.name == "hook:hooking" and minetest.get_meta(pos):get_int("a") ~= 0) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
minetest.register_tool("hook:hook", {
|
||||
|
@ -130,21 +130,29 @@ minetest.register_tool("hook:hook", {
|
|||
local pos2=pointed_thing.under
|
||||
local name=user:get_player_name()
|
||||
|
||||
if slingshot_def(pos2,"walkable") and
|
||||
slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false
|
||||
and (slingshot_def({x=pos2.x,y=pos2.y+1,z=pos2.z},"walkable")==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
|
||||
is_hook(pos,name) and
|
||||
slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||
if hook.slingshot_def(pos2,"walkable") and
|
||||
hook.slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false
|
||||
and (hook.slingshot_def({x=pos2.x,y=pos2.y+1,z=pos2.z},"walkable")==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
|
||||
hook.is_hook(pos,name) and
|
||||
hook.slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||
if d==3 then d=1
|
||||
elseif d==1 then d=3
|
||||
elseif d==2 then d=0
|
||||
elseif d==0 then d=2
|
||||
end
|
||||
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d}) else return itemstack end
|
||||
if is_hook(pos,name) then minetest.set_node(pos,{name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-1,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-2,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-2,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-3,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-3,z=pos.z}, {name = "hook:rope",param2=d}) end
|
||||
if hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d})
|
||||
minetest.get_node_timer({x=pos.x,y=pos.y+1,z=pos.z}):start(3)
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
for i=0,-4, -1 do
|
||||
if hook.is_hook({x=pos.x,y=pos.y+i,z=pos.z},name) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+i,z=pos.z}, {name = "hook:rope",param2=d})
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
|
@ -160,25 +168,29 @@ minetest.register_tool("hook:hook_upgrade", {
|
|||
local pos=pointed_thing.above
|
||||
local pos2=pointed_thing.under
|
||||
local name=user:get_player_name()
|
||||
if slingshot_def(pos2,"walkable") and
|
||||
slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false and
|
||||
(slingshot_def({x=pos2.x,y=pos2.y+1,z=pos2.z},"walkable")==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
|
||||
is_hook(pos,name) and
|
||||
slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||
if hook.slingshot_def(pos2,"walkable") and
|
||||
hook.slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false and
|
||||
(hook.slingshot_def({x=pos2.x,y=pos2.y+1,z=pos2.z},"walkable")==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
|
||||
hook.is_hook(pos,name) and
|
||||
hook.slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||
if d==3 then d=1
|
||||
elseif d==1 then d=3
|
||||
elseif d==2 then d=0
|
||||
elseif d==0 then d=2
|
||||
end
|
||||
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d}) else return itemstack end
|
||||
if is_hook(pos,name) then minetest.set_node(pos,{name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-1,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-2,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-2,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-3,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-3,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-4,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-4,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-5,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-5,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-6,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-6,z=pos.z}, {name = "hook:rope",param2=d}) else return itemstack end
|
||||
if is_hook({x=pos.x,y=pos.y-7,z=pos.z},name) then minetest.set_node({x=pos.x,y=pos.y-7,z=pos.z}, {name = "hook:rope",param2=d}) end
|
||||
if hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d})
|
||||
minetest.get_node_timer({x=pos.x,y=pos.y+1,z=pos.z}):start(3)
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
for i=0,-8, -1 do
|
||||
if hook.is_hook({x=pos.x,y=pos.y+i,z=pos.z},name) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+i,z=pos.z}, {name = "hook:rope",param2=d})
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
|
@ -204,18 +216,20 @@ minetest.register_tool("hook:climb_rope", {
|
|||
local z=0
|
||||
local x=0
|
||||
local name=user:get_player_name()
|
||||
if slingshot_def(pos,"walkable") then
|
||||
if hook.slingshot_def(pos,"walkable") then
|
||||
if d==0 then z=1 end
|
||||
if d==2 then z=-1 end
|
||||
if d==1 then x=1 end
|
||||
if d==3 then x=-1 end
|
||||
if is_hook({x=pos.x+x,y=pos.y,z=pos.z+z},name) and is_hook({x=pos.x+x,y=pos.y+1,z=pos.z+z},name) then
|
||||
if hook.is_hook({x=pos.x+x,y=pos.y,z=pos.z+z},name) and hook.is_hook({x=pos.x+x,y=pos.y+1,z=pos.z+z},name) then
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+1,z=pos.z+z},{name = "hook:hooking",param2=d})
|
||||
minetest.get_meta({x=pos.x+x,y=pos.y+1,z=pos.z+z}):set_int("a",1)
|
||||
else return itemstack end
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
itemstack:take_item()
|
||||
for i=0,20,1 do
|
||||
if is_hook({x=pos.x+x,y=pos.y-i,z=pos.z+z},name) then minetest.set_node({x=pos.x+x,y=pos.y-i,z=pos.z+z},{name = "hook:rope2",param2=d}) else return itemstack end
|
||||
if hook.is_hook({x=pos.x+x,y=pos.y-i,z=pos.z+z},name) then minetest.set_node({x=pos.x+x,y=pos.y-i,z=pos.z+z},{name = "hook:rope2",param2=d}) else return itemstack end
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
|
@ -244,18 +258,20 @@ minetest.register_tool("hook:climb_rope_locked", {
|
|||
local z=0
|
||||
local x=0
|
||||
local name=user:get_player_name()
|
||||
if slingshot_def(pos,"walkable") then
|
||||
if hook.slingshot_def(pos,"walkable") then
|
||||
if d==0 then z=1 end
|
||||
if d==2 then z=-1 end
|
||||
if d==1 then x=1 end
|
||||
if d==3 then x=-1 end
|
||||
if is_hook({x=pos.x+x,y=pos.y,z=pos.z+z},name) and is_hook({x=pos.x+x,y=pos.y+1,z=pos.z+z},name) then
|
||||
if hook.is_hook({x=pos.x+x,y=pos.y,z=pos.z+z},name) and hook.is_hook({x=pos.x+x,y=pos.y+1,z=pos.z+z},name) then
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+1,z=pos.z+z},{name = "hook:hooking",param2=d})
|
||||
minetest.get_meta({x=pos.x+x,y=pos.y+1,z=pos.z+z}):set_int("a",1)
|
||||
else return itemstack end
|
||||
else
|
||||
return itemstack
|
||||
end
|
||||
itemstack:take_item()
|
||||
for i=0,20,1 do
|
||||
if is_hook({x=pos.x+x,y=pos.y-i,z=pos.z+z},name) then
|
||||
if hook.is_hook({x=pos.x+x,y=pos.y-i,z=pos.z+z},name) then
|
||||
minetest.set_node({x=pos.x+x,y=pos.y-i,z=pos.z+z},{name = "hook:rope3",param2=d})
|
||||
minetest.get_meta({x=pos.x+x,y=pos.y-i,z=pos.z+z}):set_string("owner",user:get_player_name())
|
||||
else
|
||||
|
@ -275,12 +291,13 @@ minetest.register_node("hook:rope", {
|
|||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{0, -0.5, -0.0625, 0.0625, 0.5, 0},
|
||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, -0.375}
|
||||
}
|
||||
},
|
||||
tiles = {"hook_rope.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
buildable_to = true,
|
||||
drop = "",
|
||||
liquid_viscosity = 1,
|
||||
liquidtype = "source",
|
||||
|
@ -310,7 +327,7 @@ minetest.register_node("hook:rope2", {
|
|||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{0, -0.5, -0.0625, 0.0625, 0.5, 0},
|
||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, -0.375}
|
||||
}
|
||||
},
|
||||
tiles = {"hook_rope.png"},
|
||||
|
@ -348,7 +365,7 @@ minetest.register_node("hook:rope3", {
|
|||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{0, -0.5, -0.0625, 0.0625, 0.5, 0},
|
||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, -0.375}
|
||||
}
|
||||
},
|
||||
tiles = {"hook_rope.png"},
|
||||
|
@ -364,15 +381,15 @@ minetest.register_node("hook:rope3", {
|
|||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
can_dig = function(pos, player)
|
||||
if minetest.get_meta(pos):get_string("owner")~=player:get_player_name() then
|
||||
minetest.chat_send_player(player:get_player_name(), "This rope is owned by: ".. minetest.get_meta(pos):get_string("owner"))
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
can_dig = function(pos, player)
|
||||
if minetest.get_meta(pos):get_string("owner")~=player:get_player_name() then
|
||||
minetest.chat_send_player(player:get_player_name(), "This rope is owned by: ".. minetest.get_meta(pos):get_string("owner"))
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
groups = {not_in_creative_inventory=1,fleshy = 3, dig_immediate = 3,},
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
if minetest.get_meta(pos):get_string("owner")~=puncher:get_player_name() then
|
||||
minetest.chat_send_player(puncher:get_player_name(), "This rope is owned by: ".. minetest.get_meta(pos):get_string("owner"))
|
||||
return false
|
||||
|
@ -384,14 +401,14 @@ on_punch = function(pos, node, puncher, pointed_thing)
|
|||
for i=0,20,1 do
|
||||
if minetest.get_node({x=pos.x,y=pos.y+i,z=pos.z}).name=="hook:rope3" or minetest.get_node({x=pos.x,y=pos.y+i,z=pos.z}).name=="hook:hooking" or minetest.get_node({x=pos.x,y=pos.y+i,z=pos.z}).name=="air" then minetest.set_node({x=pos.x,y=pos.y+i,z=pos.z},{name = "air"}) else return false end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("hook:hooking", {
|
||||
description = "Hooking",
|
||||
drawtype = "mesh",
|
||||
mesh="hook.obj",
|
||||
tiles = {"default_stone.png"},
|
||||
mesh="hook_hook.obj",
|
||||
tiles = {"hook_rope.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable=false,
|
||||
|
@ -399,15 +416,10 @@ minetest.register_node("hook:hooking", {
|
|||
drop = "",
|
||||
sunlight_propagates = false,
|
||||
groups = {not_in_creative_inventory=1},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(3)
|
||||
|
||||
end,
|
||||
on_timer = function (pos, elapsed)
|
||||
if minetest.get_meta(pos):get_int("a")==1 then return false end
|
||||
local r=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name
|
||||
if r~="hook:rope" then
|
||||
minetest.set_node(pos, {name="air"})
|
||||
minetest.remove_node(pos)
|
||||
return false
|
||||
end
|
||||
return true
|
||||
|
@ -419,20 +431,20 @@ minetest.register_tool("hook:mba", {
|
|||
description = "Mouth breather assembly",
|
||||
range = 1,
|
||||
inventory_image = "hook_mba.png",
|
||||
on_use=function(itemstack, user, pointed_thing)
|
||||
local pos=user:get_pos()
|
||||
pos.y=pos.y+1.5
|
||||
if slingshot_def(pos,"drowning")==0 then
|
||||
itemstack:set_wear(1)
|
||||
else
|
||||
local use=itemstack:get_wear()+(65536/10)
|
||||
if use<65536 then
|
||||
itemstack:set_wear(use)
|
||||
user:set_breath(11)
|
||||
on_use=function(itemstack, user, pointed_thing)
|
||||
local pos=user:get_pos()
|
||||
pos.y=pos.y+1.5
|
||||
if hook.slingshot_def(pos,"drowning")==0 then
|
||||
itemstack:set_wear(1)
|
||||
else
|
||||
local use=itemstack:get_wear()+(65536/10)
|
||||
if use<65536 then
|
||||
itemstack:set_wear(use)
|
||||
user:set_breath(11)
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -483,4 +495,4 @@ minetest.register_craft({
|
|||
{"","default:steelblock",""},
|
||||
{"","default:steel_ingot",""},
|
||||
}
|
||||
})
|
||||
})
|
|
@ -0,0 +1,627 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'hook.blend'
|
||||
# www.blender.org
|
||||
mtllib hook.mtl
|
||||
o NurbsPath.004_CUNurbsPath.003
|
||||
v -0.005416 -0.565325 0.040990
|
||||
v 0.000000 -0.565094 0.046401
|
||||
v 0.005416 -0.565325 0.040990
|
||||
v 0.000000 -0.565556 0.035579
|
||||
v -0.027080 -0.430996 0.027621
|
||||
v 0.000000 -0.426448 0.054316
|
||||
v 0.027080 -0.430996 0.027621
|
||||
v 0.000000 -0.435544 0.000926
|
||||
v -0.027080 -0.375535 0.015937
|
||||
v 0.000000 -0.368796 0.042164
|
||||
v 0.027080 -0.375536 0.015937
|
||||
v 0.000000 -0.382275 -0.010291
|
||||
v -0.027080 -0.327221 0.001093
|
||||
v 0.000000 -0.317929 0.026529
|
||||
v 0.027080 -0.327221 0.001093
|
||||
v 0.000000 -0.336512 -0.024343
|
||||
v -0.027080 -0.285559 -0.016780
|
||||
v 0.000000 -0.273391 0.007413
|
||||
v 0.027080 -0.285559 -0.016780
|
||||
v 0.000000 -0.297726 -0.040972
|
||||
v -0.027080 -0.250056 -0.037549
|
||||
v 0.000000 -0.234815 -0.015166
|
||||
v 0.027080 -0.250057 -0.037549
|
||||
v 0.000000 -0.265298 -0.059933
|
||||
v -0.027080 -0.220222 -0.061086
|
||||
v 0.000000 -0.201933 -0.041115
|
||||
v 0.027080 -0.220222 -0.061086
|
||||
v 0.000000 -0.238510 -0.081057
|
||||
v -0.027080 -0.195561 -0.087258
|
||||
v 0.000000 -0.174525 -0.070205
|
||||
v 0.027080 -0.195561 -0.087258
|
||||
v 0.000000 -0.216597 -0.104312
|
||||
v -0.027080 -0.175582 -0.115936
|
||||
v 0.000000 -0.152325 -0.102065
|
||||
v 0.027080 -0.175582 -0.115936
|
||||
v 0.000000 -0.198840 -0.129808
|
||||
v -0.027080 -0.159792 -0.146989
|
||||
v 0.000000 -0.134927 -0.136263
|
||||
v 0.027080 -0.159792 -0.146988
|
||||
v 0.000000 -0.184657 -0.157714
|
||||
v -0.027080 -0.147698 -0.180284
|
||||
v 0.000000 -0.121787 -0.172415
|
||||
v 0.027080 -0.147698 -0.180284
|
||||
v 0.000000 -0.173609 -0.188154
|
||||
v -0.027080 -0.138807 -0.215693
|
||||
v 0.000000 -0.112281 -0.210243
|
||||
v 0.027080 -0.138807 -0.215693
|
||||
v 0.000000 -0.165333 -0.221142
|
||||
v -0.027080 -0.128664 -0.292325
|
||||
v 0.000000 -0.101661 -0.290277
|
||||
v 0.027080 -0.128664 -0.292325
|
||||
v 0.000000 -0.155666 -0.294374
|
||||
v -0.027080 -0.125142 -0.442362
|
||||
v -0.000000 -0.098062 -0.442362
|
||||
v 0.027080 -0.125142 -0.442362
|
||||
v 0.000000 -0.152222 -0.442362
|
||||
v -0.027080 -0.132530 -0.441949
|
||||
v 0.000000 -0.132530 -0.469029
|
||||
v 0.027080 -0.132530 -0.441949
|
||||
v -0.000000 -0.132530 -0.414869
|
||||
v -0.027080 -0.561957 -0.441949
|
||||
v 0.000000 -0.561957 -0.469029
|
||||
v 0.027080 -0.561957 -0.441949
|
||||
v -0.000000 -0.561957 -0.414869
|
||||
v 0.005416 -0.565325 -0.924887
|
||||
v -0.000000 -0.565094 -0.930299
|
||||
v -0.005416 -0.565325 -0.924887
|
||||
v -0.000000 -0.565556 -0.919476
|
||||
v 0.027080 -0.430996 -0.911519
|
||||
v -0.000000 -0.426448 -0.938214
|
||||
v -0.027080 -0.430996 -0.911519
|
||||
v -0.000000 -0.435544 -0.884824
|
||||
v 0.027080 -0.375535 -0.899834
|
||||
v -0.000000 -0.368796 -0.926062
|
||||
v -0.027080 -0.375536 -0.899834
|
||||
v -0.000000 -0.382275 -0.873606
|
||||
v 0.027080 -0.327221 -0.884990
|
||||
v -0.000000 -0.317929 -0.910426
|
||||
v -0.027080 -0.327221 -0.884990
|
||||
v -0.000000 -0.336512 -0.859554
|
||||
v 0.027080 -0.285559 -0.867118
|
||||
v -0.000000 -0.273391 -0.891311
|
||||
v -0.027080 -0.285559 -0.867118
|
||||
v -0.000000 -0.297726 -0.842926
|
||||
v 0.027080 -0.250056 -0.846348
|
||||
v -0.000000 -0.234815 -0.868732
|
||||
v -0.027080 -0.250057 -0.846348
|
||||
v -0.000000 -0.265298 -0.823965
|
||||
v 0.027080 -0.220222 -0.822812
|
||||
v -0.000000 -0.201933 -0.842783
|
||||
v -0.027080 -0.220222 -0.822812
|
||||
v -0.000000 -0.238510 -0.802841
|
||||
v 0.027080 -0.195561 -0.796639
|
||||
v -0.000000 -0.174525 -0.813693
|
||||
v -0.027080 -0.195561 -0.796639
|
||||
v -0.000000 -0.216597 -0.779586
|
||||
v 0.027080 -0.175582 -0.767961
|
||||
v -0.000000 -0.152325 -0.781833
|
||||
v -0.027080 -0.175582 -0.767961
|
||||
v -0.000000 -0.198840 -0.754090
|
||||
v 0.027080 -0.159792 -0.736909
|
||||
v -0.000000 -0.134927 -0.747635
|
||||
v -0.027080 -0.159792 -0.736909
|
||||
v -0.000000 -0.184657 -0.726183
|
||||
v 0.027080 -0.147698 -0.703613
|
||||
v -0.000000 -0.121787 -0.711483
|
||||
v -0.027080 -0.147698 -0.703614
|
||||
v -0.000000 -0.173609 -0.695744
|
||||
v 0.027080 -0.138807 -0.668205
|
||||
v -0.000000 -0.112281 -0.673654
|
||||
v -0.027080 -0.138807 -0.668205
|
||||
v -0.000000 -0.165333 -0.662755
|
||||
v 0.027080 -0.128664 -0.591572
|
||||
v -0.000000 -0.101661 -0.593621
|
||||
v -0.027080 -0.128664 -0.591572
|
||||
v -0.000000 -0.155666 -0.589524
|
||||
v 0.027080 -0.125142 -0.441536
|
||||
v 0.000000 -0.098062 -0.441536
|
||||
v -0.027080 -0.125142 -0.441536
|
||||
v -0.000000 -0.152222 -0.441536
|
||||
v 0.482939 -0.565325 -0.436533
|
||||
v 0.488350 -0.565094 -0.441949
|
||||
v 0.482939 -0.565325 -0.447365
|
||||
v 0.477527 -0.565556 -0.441949
|
||||
v 0.469570 -0.430996 -0.414869
|
||||
v 0.496265 -0.426448 -0.441949
|
||||
v 0.469570 -0.430996 -0.469029
|
||||
v 0.442875 -0.435544 -0.441949
|
||||
v 0.457885 -0.375535 -0.414869
|
||||
v 0.484113 -0.368796 -0.441949
|
||||
v 0.457885 -0.375536 -0.469029
|
||||
v 0.431657 -0.382275 -0.441949
|
||||
v 0.443042 -0.327221 -0.414869
|
||||
v 0.468477 -0.317929 -0.441949
|
||||
v 0.443042 -0.327221 -0.469029
|
||||
v 0.417606 -0.336512 -0.441949
|
||||
v 0.425169 -0.285559 -0.414869
|
||||
v 0.449362 -0.273391 -0.441949
|
||||
v 0.425169 -0.285559 -0.469029
|
||||
v 0.400977 -0.297726 -0.441949
|
||||
v 0.404400 -0.250056 -0.414869
|
||||
v 0.426783 -0.234815 -0.441949
|
||||
v 0.404400 -0.250057 -0.469029
|
||||
v 0.382016 -0.265298 -0.441949
|
||||
v 0.380863 -0.220222 -0.414869
|
||||
v 0.400834 -0.201933 -0.441949
|
||||
v 0.380863 -0.220222 -0.469029
|
||||
v 0.360892 -0.238510 -0.441949
|
||||
v 0.354690 -0.195561 -0.414869
|
||||
v 0.371744 -0.174525 -0.441949
|
||||
v 0.354690 -0.195561 -0.469029
|
||||
v 0.337637 -0.216597 -0.441949
|
||||
v 0.326013 -0.175582 -0.414869
|
||||
v 0.339884 -0.152325 -0.441949
|
||||
v 0.326013 -0.175582 -0.469029
|
||||
v 0.312141 -0.198840 -0.441949
|
||||
v 0.294960 -0.159792 -0.414869
|
||||
v 0.305686 -0.134927 -0.441949
|
||||
v 0.294960 -0.159792 -0.469029
|
||||
v 0.284235 -0.184657 -0.441949
|
||||
v 0.261665 -0.147698 -0.414869
|
||||
v 0.269534 -0.121787 -0.441949
|
||||
v 0.261665 -0.147698 -0.469029
|
||||
v 0.253795 -0.173609 -0.441949
|
||||
v 0.226256 -0.138807 -0.414869
|
||||
v 0.231706 -0.112281 -0.441949
|
||||
v 0.226256 -0.138807 -0.469029
|
||||
v 0.220806 -0.165333 -0.441949
|
||||
v 0.149624 -0.128664 -0.414869
|
||||
v 0.151672 -0.101661 -0.441949
|
||||
v 0.149624 -0.128664 -0.469029
|
||||
v 0.147575 -0.155666 -0.441949
|
||||
v -0.000413 -0.125142 -0.414869
|
||||
v -0.000413 -0.098062 -0.441949
|
||||
v -0.000413 -0.125142 -0.469029
|
||||
v -0.000413 -0.152222 -0.441949
|
||||
v -0.482939 -0.565325 -0.447365
|
||||
v -0.488350 -0.565094 -0.441949
|
||||
v -0.482939 -0.565325 -0.436533
|
||||
v -0.477527 -0.565556 -0.441949
|
||||
v -0.469570 -0.430996 -0.469029
|
||||
v -0.496265 -0.426448 -0.441949
|
||||
v -0.469570 -0.430996 -0.414869
|
||||
v -0.442875 -0.435544 -0.441949
|
||||
v -0.457885 -0.375535 -0.469029
|
||||
v -0.484113 -0.368796 -0.441949
|
||||
v -0.457885 -0.375536 -0.414869
|
||||
v -0.431657 -0.382275 -0.441949
|
||||
v -0.443042 -0.327221 -0.469029
|
||||
v -0.468477 -0.317929 -0.441949
|
||||
v -0.443042 -0.327221 -0.414869
|
||||
v -0.417606 -0.336512 -0.441949
|
||||
v -0.425169 -0.285559 -0.469029
|
||||
v -0.449362 -0.273391 -0.441949
|
||||
v -0.425169 -0.285559 -0.414869
|
||||
v -0.400977 -0.297726 -0.441949
|
||||
v -0.404400 -0.250056 -0.469029
|
||||
v -0.426783 -0.234815 -0.441949
|
||||
v -0.404400 -0.250057 -0.414869
|
||||
v -0.382016 -0.265298 -0.441949
|
||||
v -0.380863 -0.220222 -0.469029
|
||||
v -0.400834 -0.201933 -0.441949
|
||||
v -0.380863 -0.220222 -0.414869
|
||||
v -0.360892 -0.238510 -0.441949
|
||||
v -0.354690 -0.195561 -0.469029
|
||||
v -0.371744 -0.174525 -0.441949
|
||||
v -0.354690 -0.195561 -0.414869
|
||||
v -0.337637 -0.216597 -0.441949
|
||||
v -0.326013 -0.175582 -0.469029
|
||||
v -0.339884 -0.152325 -0.441949
|
||||
v -0.326013 -0.175582 -0.414869
|
||||
v -0.312141 -0.198840 -0.441949
|
||||
v -0.294960 -0.159792 -0.469029
|
||||
v -0.305686 -0.134927 -0.441949
|
||||
v -0.294960 -0.159792 -0.414869
|
||||
v -0.284235 -0.184657 -0.441949
|
||||
v -0.261665 -0.147698 -0.469029
|
||||
v -0.269534 -0.121787 -0.441949
|
||||
v -0.261665 -0.147698 -0.414869
|
||||
v -0.253795 -0.173609 -0.441949
|
||||
v -0.226256 -0.138807 -0.469029
|
||||
v -0.231706 -0.112281 -0.441949
|
||||
v -0.226256 -0.138807 -0.414869
|
||||
v -0.220806 -0.165333 -0.441949
|
||||
v -0.149624 -0.128664 -0.469029
|
||||
v -0.151672 -0.101661 -0.441949
|
||||
v -0.149624 -0.128664 -0.414869
|
||||
v -0.147575 -0.155666 -0.441949
|
||||
v 0.000413 -0.125142 -0.469029
|
||||
v 0.000413 -0.098062 -0.441949
|
||||
v 0.000413 -0.125142 -0.414869
|
||||
v 0.000413 -0.152222 -0.441949
|
||||
vn -0.9948 0.1022 0.0000
|
||||
vn -0.0342 -0.0722 -0.9968
|
||||
vn -0.0554 -0.6337 -0.7716
|
||||
vn -0.8164 -0.5775 0.0000
|
||||
vn 0.0342 -0.0722 -0.9968
|
||||
vn 0.9948 0.1022 0.0000
|
||||
vn 0.8164 -0.5775 0.0000
|
||||
vn 0.0554 -0.6337 -0.7716
|
||||
vn -0.9968 -0.0722 -0.0342
|
||||
vn 0.0000 0.1022 -0.9948
|
||||
vn 0.0000 -0.5775 -0.8164
|
||||
vn -0.7716 -0.6337 -0.0554
|
||||
vn 0.9968 -0.0722 0.0342
|
||||
vn 0.0000 0.1022 0.9948
|
||||
vn 0.0000 -0.5775 0.8164
|
||||
vn 0.7716 -0.6337 0.0554
|
||||
vn -1.0000 0.0002 -0.0000
|
||||
vn -0.9997 0.0079 0.0227
|
||||
vn 0.0000 -0.3218 -0.9468
|
||||
vn 0.0000 -0.2474 -0.9689
|
||||
vn 0.0000 -0.2521 -0.9677
|
||||
vn -0.9968 -0.0722 0.0342
|
||||
vn 1.0000 0.0002 -0.0000
|
||||
vn 0.9997 0.0079 0.0227
|
||||
vn 0.0000 0.3220 0.9467
|
||||
vn 0.0000 0.2478 0.9688
|
||||
vn -0.9997 0.0079 -0.0227
|
||||
vn 0.0000 0.3220 -0.9467
|
||||
vn 0.0000 0.2478 -0.9688
|
||||
vn -0.9467 0.3220 0.0000
|
||||
vn -0.0227 0.0079 -0.9997
|
||||
vn 0.0000 0.0002 -1.0000
|
||||
vn -0.9688 0.2478 0.0000
|
||||
vn -0.0248 0.0127 -0.9996
|
||||
vn 0.8928 -0.4504 0.0000
|
||||
vn 0.9468 -0.3218 0.0000
|
||||
vn -0.0248 0.0127 0.9996
|
||||
vn -0.8928 0.4505 0.0000
|
||||
vn -0.0227 0.0079 0.9997
|
||||
vn -0.7716 -0.6337 0.0554
|
||||
vn 0.0000 -0.6912 -0.7226
|
||||
vn 0.8260 0.5636 0.0000
|
||||
vn 0.0257 0.0176 0.9995
|
||||
vn 0.0248 0.0127 0.9996
|
||||
vn 0.8928 0.4505 0.0000
|
||||
vn -0.9995 0.0176 -0.0257
|
||||
vn 0.0000 0.5636 -0.8260
|
||||
vn 0.0000 0.4505 -0.8928
|
||||
vn -0.9996 0.0127 -0.0248
|
||||
vn -0.0257 0.0176 -0.9995
|
||||
vn 0.8261 -0.5634 0.0000
|
||||
vn -0.0257 0.0176 0.9995
|
||||
vn -0.8260 0.5636 0.0000
|
||||
vn -0.0244 0.0224 -0.9995
|
||||
vn 0.7374 -0.6754 0.0000
|
||||
vn 0.0000 0.6754 -0.7374
|
||||
vn 0.9995 0.0224 -0.0244
|
||||
vn 0.9995 0.0176 -0.0257
|
||||
vn -0.0244 0.0224 0.9995
|
||||
vn -0.9995 0.0224 0.0244
|
||||
vn 0.0000 -0.6754 -0.7374
|
||||
vn 0.0000 -0.5634 -0.8261
|
||||
vn -0.9995 0.0176 0.0257
|
||||
vn 0.0000 -0.7762 -0.6304
|
||||
vn 0.9995 0.0256 0.0209
|
||||
vn 0.9995 0.0224 0.0244
|
||||
vn 0.0244 0.0224 -0.9995
|
||||
vn 0.0209 0.0256 -0.9995
|
||||
vn 0.6304 0.7763 0.0000
|
||||
vn 0.7374 0.6754 0.0000
|
||||
vn -0.9995 0.0224 -0.0244
|
||||
vn -0.9995 0.0256 -0.0209
|
||||
vn 0.0000 0.7763 -0.6304
|
||||
vn -0.0000 0.0002 1.0000
|
||||
vn 0.0227 0.0079 0.9997
|
||||
vn -0.9468 -0.3218 0.0000
|
||||
vn -0.9689 -0.2474 0.0000
|
||||
vn -0.9677 -0.2521 0.0000
|
||||
vn 0.0342 -0.0722 0.9968
|
||||
vn 0.9995 0.0266 -0.0161
|
||||
vn 0.0000 -0.8580 0.5136
|
||||
vn 0.0000 -0.7762 0.6304
|
||||
vn 0.9995 0.0256 -0.0209
|
||||
vn 0.0000 0.8580 -0.5137
|
||||
vn -0.5137 0.8580 0.0000
|
||||
vn -0.0161 0.0266 -0.9995
|
||||
vn -0.0209 0.0256 -0.9995
|
||||
vn -0.6304 0.7763 0.0000
|
||||
vn 0.5136 -0.8580 0.0000
|
||||
vn 0.6304 -0.7762 0.0000
|
||||
vn 0.0000 -0.9274 0.3740
|
||||
vn -0.9996 0.0253 -0.0105
|
||||
vn -0.9995 0.0266 -0.0161
|
||||
vn 0.0105 0.0253 -0.9996
|
||||
vn 0.3742 0.9273 0.0000
|
||||
vn 0.5137 0.8580 0.0000
|
||||
vn 0.0161 0.0266 -0.9995
|
||||
vn -0.0105 0.0253 0.9996
|
||||
vn -0.3742 0.9273 0.0000
|
||||
vn -0.0161 0.0266 0.9995
|
||||
vn -0.0105 0.0253 -0.9996
|
||||
vn 0.3740 -0.9274 0.0000
|
||||
vn 0.0000 -0.9274 -0.3740
|
||||
vn 0.0000 -0.9565 -0.2918
|
||||
vn 0.0000 -0.9843 -0.1762
|
||||
vn 0.9997 0.0252 0.0042
|
||||
vn 1.0000 -0.0001 0.0003
|
||||
vn 0.9996 0.0253 0.0105
|
||||
vn 0.0000 0.9563 0.2924
|
||||
vn 0.0000 0.9839 0.1785
|
||||
vn -0.9997 0.0252 0.0042
|
||||
vn -1.0000 -0.0001 0.0003
|
||||
vn -0.9996 0.0253 0.0105
|
||||
vn 0.0000 0.9273 0.3742
|
||||
vn -0.0003 -0.0001 1.0000
|
||||
vn -0.0042 0.0252 0.9997
|
||||
vn -0.1785 0.9839 0.0000
|
||||
vn -0.2924 0.9563 0.0000
|
||||
vn 0.0003 -0.0001 1.0000
|
||||
vn 0.0042 0.0252 0.9997
|
||||
vn -0.1762 -0.9843 0.0000
|
||||
vn -0.2918 -0.9565 0.0000
|
||||
vn -0.3740 -0.9274 0.0000
|
||||
vn 0.0105 0.0253 0.9996
|
||||
vn 0.0606 0.9981 0.0000
|
||||
vn 0.0011 0.0105 0.9999
|
||||
vn 0.0005 -0.0000 1.0000
|
||||
vn 0.1785 0.9839 0.0000
|
||||
vn -0.0597 -0.9982 0.0000
|
||||
vn -0.0606 0.9981 0.0000
|
||||
vn -0.0011 0.0105 -0.9999
|
||||
vn -0.0005 -0.0000 -1.0000
|
||||
vn -0.0042 0.0252 -0.9997
|
||||
vn 0.0000 -0.9982 0.0597
|
||||
vn -0.9999 0.0105 -0.0011
|
||||
vn -1.0000 -0.0000 -0.0005
|
||||
vn -0.9997 0.0252 -0.0042
|
||||
vn 0.0000 -0.9843 0.1762
|
||||
vn -0.8165 -0.5773 0.0000
|
||||
vn 0.0000 -0.5773 0.8165
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.5773 -0.8165
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.8165 -0.5773 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -0.0342 -0.0722 0.9968
|
||||
vn -0.0554 -0.6337 0.7716
|
||||
vn 0.9968 -0.0722 -0.0342
|
||||
vn 0.7716 -0.6337 -0.0554
|
||||
vn 0.0554 -0.6337 0.7716
|
||||
vn -0.7226 -0.6912 0.0000
|
||||
vn 0.9997 0.0079 -0.0227
|
||||
vn 0.0000 -0.3218 0.9468
|
||||
vn 0.0000 -0.2474 0.9689
|
||||
vn 0.0000 -0.2521 0.9677
|
||||
vn -0.9996 0.0127 0.0248
|
||||
vn 0.0000 -0.4504 -0.8928
|
||||
vn 0.0248 0.0127 -0.9996
|
||||
vn 0.9467 0.3220 0.0000
|
||||
vn 0.0227 0.0079 -0.9997
|
||||
vn -0.8928 -0.4504 0.0000
|
||||
vn 0.9996 0.0127 -0.0248
|
||||
vn 0.0257 0.0176 -0.9995
|
||||
vn -0.8261 -0.5634 0.0000
|
||||
vn -0.7374 0.6754 0.0000
|
||||
vn 0.0000 -0.6754 0.7374
|
||||
vn 0.0000 -0.5634 0.8261
|
||||
vn -0.0209 0.0256 0.9995
|
||||
vn 0.0000 0.7763 0.6304
|
||||
vn 0.0000 0.6754 0.7374
|
||||
vn 0.0244 0.0224 0.9995
|
||||
vn 0.0000 -0.8580 -0.5136
|
||||
vn 0.9995 0.0266 0.0161
|
||||
vn -0.5136 -0.8580 0.0000
|
||||
vn 0.0000 0.9273 -0.3742
|
||||
vn 0.9996 0.0253 -0.0105
|
||||
vn 0.0161 0.0266 0.9995
|
||||
vn -0.0003 -0.0001 -1.0000
|
||||
vn 0.0003 -0.0001 -1.0000
|
||||
vn 0.0042 0.0252 -0.9997
|
||||
vn 0.2924 0.9563 0.0000
|
||||
vn 0.0000 0.9563 -0.2924
|
||||
vn 0.0000 0.9839 -0.1785
|
||||
vn 0.9997 0.0252 -0.0042
|
||||
vn 1.0000 -0.0001 -0.0003
|
||||
vn 0.0000 -0.9565 0.2918
|
||||
vn -1.0000 -0.0001 -0.0003
|
||||
vn 0.0011 0.0105 -0.9999
|
||||
vn 0.0005 -0.0000 -1.0000
|
||||
vn -0.0005 -0.0000 1.0000
|
||||
vn -0.0011 0.0105 0.9999
|
||||
vn 0.0000 -0.9982 -0.0597
|
||||
vn 0.9999 0.0105 0.0011
|
||||
vn 1.0000 -0.0000 0.0005
|
||||
vn 0.9677 -0.2521 0.0000
|
||||
vn 0.7226 -0.6912 0.0000
|
||||
vn 0.9689 -0.2474 0.0000
|
||||
vn 0.9688 0.2478 0.0000
|
||||
vn 0.0000 0.4505 0.8928
|
||||
vn 0.9996 0.0127 0.0248
|
||||
vn 0.9995 0.0176 0.0257
|
||||
vn 0.0000 0.5636 0.8260
|
||||
vn -0.7374 -0.6754 0.0000
|
||||
vn -0.9995 0.0256 0.0209
|
||||
vn 0.0209 0.0256 0.9995
|
||||
vn -0.6304 -0.7762 0.0000
|
||||
vn 0.0000 0.8580 0.5137
|
||||
vn -0.9995 0.0266 0.0161
|
||||
vn 0.1762 -0.9843 0.0000
|
||||
vn 0.2918 -0.9565 0.0000
|
||||
vn 0.0597 -0.9982 0.0000
|
||||
vn 0.0000 0.9981 0.0606
|
||||
vn -0.9999 0.0105 0.0011
|
||||
vn -1.0000 -0.0000 0.0005
|
||||
vn 0.0000 -0.6912 0.7226
|
||||
vn 0.0000 -0.4504 0.8928
|
||||
vn 1.0000 -0.0000 -0.0005
|
||||
vn 0.9999 0.0105 -0.0011
|
||||
vn 0.0000 0.9981 -0.0606
|
||||
usemtl None
|
||||
s 1
|
||||
f 182//1 181//2 177//3 178//4
|
||||
f 127//5 126//6 122//7 123//8
|
||||
f 71//9 70//10 66//11 67//12
|
||||
f 7//13 6//14 2//15 3//16
|
||||
f 9//17 13//18 16//19 12//20 8//21 5//22
|
||||
f 11//23 15//24 14//25 10//26 6//14 7//13
|
||||
f 75//17 79//27 78//28 74//29 70//10 71//9
|
||||
f 190//30 189//31 185//32 181//2 182//1 186//33
|
||||
f 193//34 196//35 192//36 189//31
|
||||
f 195//37 194//38 190//30 191//39
|
||||
f 1//40 5//22 8//21 4//41
|
||||
f 196//35 195//37 191//39 192//36
|
||||
f 142//42 141//43 137//44 138//45
|
||||
f 87//46 86//47 82//48 83//49
|
||||
f 193//34 197//50 200//51 196//35
|
||||
f 199//52 198//53 194//38 195//37
|
||||
f 201//54 204//55 200//51 197//50
|
||||
f 90//56 89//57 85//58 86//47
|
||||
f 204//55 203//59 199//52 200//51
|
||||
f 25//60 28//61 24//62 21//63
|
||||
f 28//61 32//64 31//65 27//66
|
||||
f 147//67 151//68 150//69 146//70
|
||||
f 91//71 95//72 94//73 90//56
|
||||
f 129//74 133//75 136//76 132//77 128//78 125//79
|
||||
f 97//80 100//81 96//82 93//83
|
||||
f 98//84 97//80 93//83 94//73
|
||||
f 210//85 209//86 205//87 206//88
|
||||
f 209//86 212//89 208//90 205//87
|
||||
f 104//91 103//92 99//93 100//81
|
||||
f 159//94 158//95 154//96 155//97
|
||||
f 215//98 214//99 210//85 211//100
|
||||
f 209//86 213//101 216//102 212//89
|
||||
f 40//103 44//104 48//105 47//106 43//107 39//108
|
||||
f 42//109 46//110 45//111 41//112 37//113 38//114
|
||||
f 215//98 219//115 223//116 222//117 218//118 214//99
|
||||
f 161//119 165//120 168//121 164//122 160//123 157//124
|
||||
f 170//125 174//125 173//126 169//127 165//120 166//128
|
||||
f 165//120 169//127 173//126 176//129 172//129 168//121
|
||||
f 226//130 230//130 229//131 225//132 221//133 222//117
|
||||
f 116//134 120//134 119//135 115//136 111//137 112//138
|
||||
f 61//139 64//140 60//141 57//142
|
||||
f 62//143 61//139 57//142 58//144
|
||||
f 60//141 64//140 63//145 59//146
|
||||
f 59//146 63//145 62//143 58//144
|
||||
f 6//14 5//22 1//40 2//15
|
||||
f 183//147 182//1 178//4 179//148
|
||||
f 70//10 69//149 65//150 66//11
|
||||
f 121//151 125//79 128//78 124//152
|
||||
f 73//23 77//153 80//154 76//155 72//156 69//149
|
||||
f 187//74 191//39 190//30 186//33 182//1 183//147
|
||||
f 78//28 77//153 73//23 69//149 70//10 74//29
|
||||
f 80//154 79//27 75//17 71//9 72//156 76//155
|
||||
f 17//157 20//158 16//19 13//18
|
||||
f 194//38 193//34 189//31 190//30
|
||||
f 139//159 138//45 134//160 135//161
|
||||
f 140//162 139//159 135//161 136//76
|
||||
f 86//47 85//58 81//163 82//48
|
||||
f 143//164 142//42 138//45 139//159
|
||||
f 198//53 197//50 193//34 194//38
|
||||
f 140//162 144//165 143//164 139//159
|
||||
f 202//166 206//88 205//87 201//54
|
||||
f 203//59 202//166 198//53 199//52
|
||||
f 202//166 201//54 197//50 198//53
|
||||
f 89//57 92//167 88//168 85//58
|
||||
f 204//55 208//90 207//169 203//59
|
||||
f 27//66 31//65 30//170 26//171
|
||||
f 203//59 207//169 206//88 202//166
|
||||
f 89//57 93//83 96//82 92//167
|
||||
f 146//70 145//172 141//43 142//42
|
||||
f 211//100 210//85 206//88 207//169
|
||||
f 96//82 100//81 99//93 95//72
|
||||
f 32//64 36//173 35//174 31//65
|
||||
f 160//123 159//94 155//97 156//175
|
||||
f 214//99 213//101 209//86 210//85
|
||||
f 102//176 101//177 97//80 98//84
|
||||
f 153//178 157//124 160//123 156//175
|
||||
f 218//118 222//117 221//133 217//179 213//101 214//99
|
||||
f 159//94 163//180 167//181 166//128 162//182 158//95
|
||||
f 106//183 110//184 109//185 105//186 101//177 102//176
|
||||
f 104//91 108//187 112//138 111//137 107//188 103//92
|
||||
f 172//129 176//129 175//189 171//190 167//181 168//121
|
||||
f 171//190 175//189 174//125 170//125 166//128 167//181
|
||||
f 227//191 231//192 230//130 226//130 222//117 223//116
|
||||
f 52//193 56//193 55//194 51//195 47//106 48//105
|
||||
f 177//3 181//2 184//196 180//197
|
||||
f 126//6 125//79 121//151 122//7
|
||||
f 180//197 184//196 183//147 179//148
|
||||
f 192//36 191//39 187//74 183//147 184//196 188//198
|
||||
f 131//32 135//161 134//160 130//199 126//6 127//5
|
||||
f 185//32 189//31 192//36 188//198 184//196 181//2
|
||||
f 83//49 82//48 78//28 79//27
|
||||
f 18//200 17//157 13//18 14//25
|
||||
f 82//48 81//163 77//153 78//28
|
||||
f 20//158 19//201 15//24 16//19
|
||||
f 155//97 154//96 150//69 151//68
|
||||
f 23//202 22//203 18//200 19//201
|
||||
f 196//35 200//51 199//52 195//37
|
||||
f 137//44 141//43 144//165 140//162
|
||||
f 92//167 91//71 87//46 88//168
|
||||
f 26//171 25//60 21//63 22//203
|
||||
f 27//66 26//171 22//203 23//202
|
||||
f 145//172 148//204 144//165 141//43
|
||||
f 25//60 29//205 32//64 28//61
|
||||
f 26//171 30//170 29//205 25//60
|
||||
f 90//56 94//73 93//83 89//57
|
||||
f 145//172 149//206 152//207 148//204
|
||||
f 208//90 212//89 211//100 207//169
|
||||
f 34//208 33//209 29//205 30//170
|
||||
f 154//96 153//178 149//206 150//69
|
||||
f 33//209 36//173 32//64 29//205
|
||||
f 97//80 101//177 104//91 100//81
|
||||
f 103//92 102//176 98//84 99//93
|
||||
f 216//102 215//98 211//100 212//89
|
||||
f 22//203 21//63 17//157 18//200
|
||||
f 105//186 109//185 112//138 108//187 104//91 101//177
|
||||
f 103//92 107//188 111//137 110//184 106//183 102//176
|
||||
f 217//179 221//133 224//210 220//211 216//102 213//101
|
||||
f 16//19 15//24 11//23 7//13 8//21 12//20
|
||||
f 124//152 128//78 127//5 123//8
|
||||
f 221//133 225//132 229//131 232//212 228//212 224//210
|
||||
f 50//213 54//213 53//214 49//215 45//111 46//110
|
||||
f 51//195 55//194 54//213 50//213 46//110 47//106
|
||||
f 216//102 220//211 224//210 223//116 219//115 215//98
|
||||
f 4//41 8//21 7//13 3//16
|
||||
f 65//150 69//149 72//156 68//216
|
||||
f 68//216 72//156 71//9 67//12
|
||||
f 136//76 135//161 131//32 127//5 128//78 132//77
|
||||
f 41//112 45//111 48//105 44//104 40//103 37//113
|
||||
f 134//160 133//75 129//74 125//79 126//6 130//199
|
||||
f 14//25 13//18 9//17 5//22 6//14 10//26
|
||||
f 137//44 140//162 136//76 133//75
|
||||
f 138//45 137//44 133//75 134//160
|
||||
f 19//201 18//200 14//25 15//24
|
||||
f 81//163 84//217 80//154 77//153
|
||||
f 20//158 24//62 23//202 19//201
|
||||
f 81//163 85//58 88//168 84//217
|
||||
f 84//217 88//168 87//46 83//49
|
||||
f 17//157 21//63 24//62 20//158
|
||||
f 148//204 147//67 143//164 144//165
|
||||
f 147//67 146//70 142//42 143//164
|
||||
f 91//71 90//56 86//47 87//46
|
||||
f 28//61 27//66 23//202 24//62
|
||||
f 148//204 152//207 151//68 147//67
|
||||
f 146//70 150//69 149//206 145//172
|
||||
f 92//167 96//82 95//72 91//71
|
||||
f 201//54 205//87 208//90 204//55
|
||||
f 153//178 156//175 152//207 149//206
|
||||
f 99//93 98//84 94//73 95//72
|
||||
f 35//174 34//208 30//170 31//65
|
||||
f 152//207 156//175 155//97 151//68
|
||||
f 33//209 37//113 40//103 36//173
|
||||
f 39//108 38//114 34//208 35//174
|
||||
f 38//114 37//113 33//209 34//208
|
||||
f 40//103 39//108 35//174 36//173
|
||||
f 84//217 83//49 79//27 80//154
|
||||
f 162//182 166//128 165//120 161//119 157//124 158//95
|
||||
f 228//212 232//212 231//192 227//191 223//116 224//210
|
||||
f 39//108 43//107 47//106 46//110 42//109 38//114
|
||||
f 160//123 164//122 168//121 167//181 163//180 159//94
|
||||
f 158//95 157//124 153//178 154//96
|
||||
f 109//185 113//218 117//219 120//134 116//134 112//138
|
||||
f 114//220 118//220 117//219 113//218 109//185 110//184
|
||||
f 115//136 119//135 118//220 114//220 110//184 111//137
|
||||
f 45//111 49//215 53//214 56//193 52//193 48//105
|
||||
f 1//40 4//41 3//16 2//15
|
||||
f 121//151 124//152 123//8 122//7
|
||||
f 65//150 68//216 67//12 66//11
|
||||
f 177//3 180//197 179//148 178//4
|
||||
f 64//140 61//139 62//143 63//145
|
131
pchest.lua
131
pchest.lua
|
@ -1,72 +1,62 @@
|
|||
pchest={}
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "hook:pchest",
|
||||
recipe = {
|
||||
{"default:stick","default:stick","default:stick"},
|
||||
{"default:stick","default:chest_locked", "default:diamond"},
|
||||
{"default:stick","default:chest_locked", "default:diamondblock"},
|
||||
{"default:stick","default:stick","default:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
pchest.setpchest=function(pos,user)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", user:get_player_name())
|
||||
meta:set_int("state", 0)
|
||||
meta:get_inventory():set_size("main", 32)
|
||||
meta:get_inventory():set_size("trans", 1)
|
||||
meta:set_string("formspec",
|
||||
"size[8,8]" ..
|
||||
"list[context;main;0,0;8,4;]" ..
|
||||
"list[context;trans;0,0;0,0;]" ..
|
||||
"list[current_player;main;0,4.3;8,4;]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"listring[current_name;main]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
default.get_hotbar_bg(0,4.3))
|
||||
meta:set_string("infotext", "PChest by: " .. user:get_player_name())
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", user:get_player_name())
|
||||
meta:set_int("state", 0)
|
||||
meta:get_inventory():set_size("main", 32)
|
||||
meta:get_inventory():set_size("trans", 1)
|
||||
meta:set_string("formspec",
|
||||
"size[8,8]" ..
|
||||
"list[context;main;0,0;8,4;]" ..
|
||||
"list[context;trans;0,0;0,0;]" ..
|
||||
"list[current_player;main;0,4.3;8,4;]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"listring[current_name;main]")
|
||||
meta:set_string("infotext", "PChest by: " .. user:get_player_name())
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_tool("hook:pchest", {
|
||||
description = "Portable locked chest",
|
||||
inventory_image = "hook_extras_chest3.png",
|
||||
on_place = function(itemstack, user, pointed_thing)
|
||||
if minetest.is_protected(pointed_thing.above,user:get_player_name()) or slingshot_def(pointed_thing.above,"walkable") then
|
||||
return itemstack
|
||||
end
|
||||
local p=minetest.dir_to_facedir(user:get_look_dir())
|
||||
local item=itemstack:to_table()
|
||||
local meta=minetest.deserialize(item["metadata"])
|
||||
minetest.set_node(pointed_thing.above, {name = "hook:pchest_node",param1="",param2=p})
|
||||
pchest.setpchest(pointed_thing.above,user)
|
||||
on_place = function(itemstack, user, pointed_thing)
|
||||
if minetest.is_protected(pointed_thing.above,user:get_player_name()) or hook.slingshot_def(pointed_thing.above,"walkable") then
|
||||
return itemstack
|
||||
end
|
||||
local p=minetest.dir_to_facedir(user:get_look_dir())
|
||||
local item=itemstack:to_table()
|
||||
local meta=minetest.deserialize(item["metadata"])
|
||||
minetest.set_node(pointed_thing.above, {name = "hook:pchest_node",param1="",param2=p})
|
||||
pchest.setpchest(pointed_thing.above,user)
|
||||
|
||||
minetest.sound_play("default_place_node_hard", {pos=pointed_thing.above, gain = 1.0, max_hear_distance = 5,})
|
||||
if meta==nil then
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local s=meta.stuff
|
||||
local its=meta.stuff.split(meta.stuff,",",",")
|
||||
local nmeta=minetest.get_meta(pointed_thing.above)
|
||||
for i,it in pairs(its) do
|
||||
if its~="" then
|
||||
nmeta:get_inventory():set_stack("main",i, ItemStack(it))
|
||||
end
|
||||
end
|
||||
minetest.sound_play("default_place_node_hard", {pos=pointed_thing.above, gain = 1.0, max_hear_distance = 5,})
|
||||
if meta==nil then
|
||||
itemstack:take_item()
|
||||
return itemstack:take_item()
|
||||
end,
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local s=meta.stuff
|
||||
local its=meta.stuff.split(meta.stuff,",",",")
|
||||
local nmeta=minetest.get_meta(pointed_thing.above)
|
||||
for i,it in pairs(its) do
|
||||
if its~="" then
|
||||
nmeta:get_inventory():set_stack("main",i, ItemStack(it))
|
||||
end
|
||||
end
|
||||
itemstack:take_item()
|
||||
return itemstack:take_item()
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
minetest.register_node("hook:pchest_node", {
|
||||
description = "Portable locked chest",
|
||||
tiles = {"hook_extras_chest2.png","hook_extras_chest2.png","hook_extras_chest1.png","hook_extras_chest1.png","hook_extras_chest1.png","hook_extras_chest3.png"},
|
||||
|
@ -74,49 +64,48 @@ minetest.register_node("hook:pchest_node", {
|
|||
drop="hook:pchest",
|
||||
paramtype2 = "facedir",
|
||||
tube = {insert_object = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local added = inv:add_item("main", stack)
|
||||
--after_inventory_change(pos)
|
||||
return added
|
||||
end,
|
||||
can_insert = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:room_for_item("main", stack)
|
||||
end,
|
||||
input_inventory = "main",
|
||||
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}},
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local added = inv:add_item("main", stack)
|
||||
return added
|
||||
end,
|
||||
can_insert = function(pos, node, stack, direction)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:room_for_item("main", stack)
|
||||
end,
|
||||
input_inventory = "main",
|
||||
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}},
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local owner = minetest.get_meta(pos):get_string("owner")
|
||||
if (stack:get_name()~="hook:pchest") and (owner==player:get_player_name() or owner=="") then
|
||||
if owner == player:get_player_name() or owner == "" then
|
||||
if minetest.deserialize(stack:get_metadata())~=nil then
|
||||
minetest.chat_send_player(player:get_player_name(), "Warning: the meta (information that is saved in the item)")
|
||||
minetest.chat_send_player(player:get_player_name(), "will be lost when pick up the chest")
|
||||
minetest.chat_send_player(player:get_player_name(), "Not allowed to put in items with metadata")
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
local owner = minetest.get_meta(pos):get_string("owner")
|
||||
if owner==player:get_player_name() or owner=="" then
|
||||
return stack:get_count()
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local owner = minetest.get_meta(pos):get_string("owner")
|
||||
if owner==player:get_player_name() or owner=="" then
|
||||
return count
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
can_dig = function(pos, player)
|
||||
can_dig = function(pos, player)
|
||||
local owner = minetest.get_meta(pos):get_string("owner")
|
||||
return (owner=="" and minetest.get_meta(pos):get_inventory():is_empty("main"))
|
||||
end,
|
||||
on_punch = function(pos, node, player, pointed_thing)
|
||||
on_punch = function(pos, node, player, pointed_thing)
|
||||
if minetest.is_protected(pos,player:get_player_name()) then
|
||||
return false
|
||||
end
|
||||
|
@ -140,5 +129,5 @@ on_punch = function(pos, node, player, pointed_thing)
|
|||
minetest.set_node(pos, {name = "air"})
|
||||
minetest.sound_play("default_dig_dig_immediate", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
43
project.lua
43
project.lua
|
@ -1,12 +1,11 @@
|
|||
minetest.register_entity("hook:power",{
|
||||
hp_max = 100,
|
||||
physical = true,
|
||||
weight = 0,
|
||||
collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2},
|
||||
visual = "upright_sprite",
|
||||
visual_size = {x=1, y=1},
|
||||
textures = {"hook_hooking.png"},
|
||||
spritediv = {x=1, y=1},
|
||||
visual = "mesh",
|
||||
mesh = "hook_hook.obj",
|
||||
visual_size = {x=10, y=10},
|
||||
textures = {"hook_rope.png"},
|
||||
is_visible = true,
|
||||
makes_footstep_sound = false,
|
||||
automatic_rotate = false,
|
||||
|
@ -25,25 +24,29 @@ on_activate=function(self, staticdata)
|
|||
self.user=hook.user
|
||||
self.locked=hook.locked
|
||||
hook.user=nil
|
||||
if self.fd==3 then self.fd=1
|
||||
elseif self.fd==1 then self.fd=3
|
||||
elseif self.fd==2 then self.fd=0
|
||||
elseif self.fd==0 then self.fd=2
|
||||
if self.fd==3 then
|
||||
self.fd=1
|
||||
elseif self.fd==1 then
|
||||
self.fd=3
|
||||
elseif self.fd==2 then
|
||||
self.fd=0
|
||||
elseif self.fd==0 then
|
||||
self.fd=2
|
||||
end
|
||||
end,
|
||||
end,
|
||||
on_step= function(self, dtime)
|
||||
self.timer2=self.timer2+dtime
|
||||
local pos=self.object:get_pos()
|
||||
local kill=0
|
||||
if slingshot_def({x=pos.x+self.d.x,y=pos.y,z=pos.z+self.d.z},"walkable") and slingshot_def({x=pos.x+self.d.x,y=pos.y+1,z=pos.z+self.d.z},"walkable")==false
|
||||
and is_hook(pos,self.uname) and is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
if hook.slingshot_def({x=pos.x+self.d.x,y=pos.y,z=pos.z+self.d.z},"walkable") and not hook.slingshot_def({x=pos.x+self.d.x,y=pos.y+1,z=pos.z+self.d.z},"walkable")
|
||||
and hook.is_hook(pos,self.uname) and hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
kill=1
|
||||
if self.locked then
|
||||
if self.user:get_inventory():contains_item("main", "hook:climb_rope_locked")==false then
|
||||
self.object:remove()
|
||||
return self
|
||||
end
|
||||
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
if hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=self.fd})
|
||||
minetest.get_meta({x=pos.x,y=pos.y+1,z=pos.z}):set_int("a",1)
|
||||
else
|
||||
|
@ -51,7 +54,11 @@ on_step= function(self, dtime)
|
|||
end
|
||||
self.user:get_inventory():remove_item("main", "hook:climb_rope_locked")
|
||||
for i=0,20,1 do
|
||||
if is_hook({x=pos.x,y=pos.y-i,z=pos.z},self.uname) then minetest.set_node({x=pos.x,y=pos.y-i,z=pos.z},{name = "hook:rope3",param2=self.fd}) else break end
|
||||
if hook.is_hook({x=pos.x,y=pos.y-i,z=pos.z},self.uname) then
|
||||
minetest.set_node({x=pos.x,y=pos.y-i,z=pos.z},{name = "hook:rope3",param2=self.fd})
|
||||
else
|
||||
break
|
||||
end
|
||||
minetest.get_meta({x=pos.x,y=pos.y-i,z=pos.z}):set_string("owner",self.uname)
|
||||
end
|
||||
else
|
||||
|
@ -59,7 +66,7 @@ on_step= function(self, dtime)
|
|||
self.object:remove()
|
||||
return self
|
||||
end
|
||||
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
if hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=self.fd})
|
||||
minetest.get_meta({x=pos.x,y=pos.y+1,z=pos.z}):set_int("a",1)
|
||||
else
|
||||
|
@ -67,7 +74,11 @@ on_step= function(self, dtime)
|
|||
end
|
||||
self.user:get_inventory():remove_item("main", "hook:climb_rope")
|
||||
for i=0,20,1 do
|
||||
if is_hook({x=pos.x,y=pos.y-i,z=pos.z},self.uname) then minetest.set_node({x=pos.x,y=pos.y-i,z=pos.z},{name = "hook:rope2",param2=self.fd}) else break end
|
||||
if hook.is_hook({x=pos.x,y=pos.y-i,z=pos.z},self.uname) then
|
||||
minetest.set_node({x=pos.x,y=pos.y-i,z=pos.z},{name = "hook:rope2",param2=self.fd})
|
||||
else
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue