improve the code & + model back
parent
962550fa99
commit
b5cf0fdc78
264
init.lua
264
init.lua
|
@ -1,24 +1,29 @@
|
||||||
local hook_tmp_throw={}
|
hook={
|
||||||
local hook_tmp_throw_timer=0
|
tmp_throw={},
|
||||||
local hook_tmp_time= tonumber(minetest.settings:get("item_entity_ttl"))
|
tmp_throw_timer=0,
|
||||||
hook={}
|
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") .. "/project.lua")
|
||||||
dofile(minetest.get_modpath("hook") .. "/pchest.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
|
else
|
||||||
hook_tmp_time=hook_tmp_time-10
|
hook.tmp_time=hook.tmp_time-10
|
||||||
end
|
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)
|
hook.slingshot_def=function(pos,n)
|
||||||
if not (pos and pos.x and pos.y and pos.z and n) then return false end
|
|
||||||
local nn=minetest.get_node(pos).name
|
local nn=minetest.get_node(pos).name
|
||||||
return (minetest.registered_nodes[nn] and minetest.registered_nodes[nn][n])
|
return (minetest.registered_nodes[nn] and minetest.registered_nodes[nn][n])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
hook.slingshot_onuse=function(itemstack, user)
|
||||||
local function slingshot_onuse(itemstack, user)
|
|
||||||
local veloc=15
|
local veloc=15
|
||||||
local pos = user:get_pos()
|
local pos = user:get_pos()
|
||||||
local upos={x=pos.x,y=pos.y+2,z=pos.z}
|
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)
|
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_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:set_acceleration({x=dir.x*-3, y=-5, z=dir.z*-3})
|
||||||
e:get_luaentity().age=hook_tmp_time
|
e:get_luaentity().age=hook.tmp_time
|
||||||
table.insert(hook_tmp_throw,{ob=e,timer=2,user=user:get_player_name()})
|
table.insert(hook.tmp_throw,{ob=e,timer=2,user=user:get_player_name()})
|
||||||
|
|
||||||
if item=="hook:slingshot" then
|
if item=="hook:slingshot" then
|
||||||
itemstack:set_wear(9999999)
|
itemstack:set_wear(9999999)
|
||||||
end
|
end
|
||||||
|
|
||||||
user:get_inventory():remove_item("main", item)
|
user:get_inventory():remove_item("main", item)
|
||||||
minetest.sound_play("hook_throw", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
minetest.sound_play("hook_throw", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
minetest.register_tool("hook:slingshot", {
|
minetest.register_tool("hook:slingshot", {
|
||||||
description = "Slingshot",
|
description = "Slingshot",
|
||||||
range = 4,
|
range = 4,
|
||||||
inventory_image = "hook_slingshot.png",
|
inventory_image = "hook_slingshot.png",
|
||||||
on_use=function(itemstack, user, pointed_thing)
|
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
|
local ref = pointed_thing.ref
|
||||||
pointed_thing.ref:punch(user, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
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
|
return itemstack
|
||||||
end
|
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)
|
minetest.register_globalstep(function(dtime)
|
||||||
hook_tmp_throw_timer=hook_tmp_throw_timer+dtime
|
hook.tmp_throw_timer=hook.tmp_throw_timer+dtime
|
||||||
if hook_tmp_throw_timer<0.2 then return end
|
if hook.tmp_throw_timer<0.1 then return end
|
||||||
hook_tmp_throw_timer=0
|
hook.tmp_throw_timer=0
|
||||||
for i, t in pairs(hook_tmp_throw) do
|
for i, t in pairs(hook.tmp_throw) do
|
||||||
t.timer=t.timer-0.25
|
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
|
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: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: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})
|
t.ob:set_velocity({x=0, y=0, z=0})
|
||||||
if ob:get_hp()<=0 and ob:is_player()==false then ob:remove() end
|
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_acceleration({x=0, y=-10,z=0})
|
||||||
t.ob:set_velocity({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,})
|
minetest.sound_play("hook_hard_punch", {pos=ob:get_pos(), gain = 1.0, max_hear_distance = 5,})
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
@ -106,17 +107,16 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function is_hook(pos,name)
|
hook.is_hook=function(pos,name)
|
||||||
local nname=minetest.get_node(pos).name
|
if not (name and minetest.is_protected(pos,name)) then
|
||||||
if name==nil or minetest.is_protected(pos,name)==false 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 nname=="air" or nname=="hook:rope" or
|
if not (def.name == "hook:hooking" and minetest.get_meta(pos):get_int("a") ~= 0) then
|
||||||
(nname=="hook:hooking" and minetest.get_meta(pos):get_int("a")==0) then
|
return true
|
||||||
return true
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_tool("hook:hook", {
|
minetest.register_tool("hook:hook", {
|
||||||
|
@ -130,21 +130,29 @@ minetest.register_tool("hook:hook", {
|
||||||
local pos2=pointed_thing.under
|
local pos2=pointed_thing.under
|
||||||
local name=user:get_player_name()
|
local name=user:get_player_name()
|
||||||
|
|
||||||
if slingshot_def(pos2,"walkable") and
|
if hook.slingshot_def(pos2,"walkable") and
|
||||||
slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false
|
hook.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
|
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
|
||||||
is_hook(pos,name) and
|
hook.is_hook(pos,name) and
|
||||||
slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
hook.slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||||
if d==3 then d=1
|
if d==3 then d=1
|
||||||
elseif d==1 then d=3
|
elseif d==1 then d=3
|
||||||
elseif d==2 then d=0
|
elseif d==2 then d=0
|
||||||
elseif d==0 then d=2
|
elseif d==0 then d=2
|
||||||
end
|
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 hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then
|
||||||
if is_hook(pos,name) then minetest.set_node(pos,{name = "hook:rope",param2=d}) else return itemstack end
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d})
|
||||||
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
|
minetest.get_node_timer({x=pos.x,y=pos.y+1,z=pos.z}):start(3)
|
||||||
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
|
else
|
||||||
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
|
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
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
|
@ -160,25 +168,29 @@ minetest.register_tool("hook:hook_upgrade", {
|
||||||
local pos=pointed_thing.above
|
local pos=pointed_thing.above
|
||||||
local pos2=pointed_thing.under
|
local pos2=pointed_thing.under
|
||||||
local name=user:get_player_name()
|
local name=user:get_player_name()
|
||||||
if slingshot_def(pos2,"walkable") and
|
if hook.slingshot_def(pos2,"walkable") and
|
||||||
slingshot_def({x=pos.x,y=pos.y-1,z=pos.z},"walkable")==false and
|
hook.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
|
(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
|
||||||
is_hook(pos,name) and
|
hook.is_hook(pos,name) and
|
||||||
slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
hook.slingshot_def({x=pos.x,y=pos.y+1,z=pos.z},"walkable")==false then
|
||||||
if d==3 then d=1
|
if d==3 then d=1
|
||||||
elseif d==1 then d=3
|
elseif d==1 then d=3
|
||||||
elseif d==2 then d=0
|
elseif d==2 then d=0
|
||||||
elseif d==0 then d=2
|
elseif d==0 then d=2
|
||||||
end
|
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 hook.is_hook({x=pos.x,y=pos.y+1,z=pos.z},name) then
|
||||||
if is_hook(pos,name) then minetest.set_node(pos,{name = "hook:rope",param2=d}) else return itemstack end
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "hook:hooking",param2=d})
|
||||||
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
|
minetest.get_node_timer({x=pos.x,y=pos.y+1,z=pos.z}):start(3)
|
||||||
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
|
else
|
||||||
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
|
return itemstack
|
||||||
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
|
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
|
for i=0,-8, -1 do
|
||||||
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 hook.is_hook({x=pos.x,y=pos.y+i,z=pos.z},name) then
|
||||||
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
|
minetest.set_node({x=pos.x,y=pos.y+i,z=pos.z}, {name = "hook:rope",param2=d})
|
||||||
|
else
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
|
@ -204,18 +216,20 @@ minetest.register_tool("hook:climb_rope", {
|
||||||
local z=0
|
local z=0
|
||||||
local x=0
|
local x=0
|
||||||
local name=user:get_player_name()
|
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==0 then z=1 end
|
||||||
if d==2 then z=-1 end
|
if d==2 then z=-1 end
|
||||||
if d==1 then x=1 end
|
if d==1 then x=1 end
|
||||||
if d==3 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.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)
|
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()
|
itemstack:take_item()
|
||||||
for i=0,20,1 do
|
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
|
||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
|
@ -244,18 +258,20 @@ minetest.register_tool("hook:climb_rope_locked", {
|
||||||
local z=0
|
local z=0
|
||||||
local x=0
|
local x=0
|
||||||
local name=user:get_player_name()
|
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==0 then z=1 end
|
||||||
if d==2 then z=-1 end
|
if d==2 then z=-1 end
|
||||||
if d==1 then x=1 end
|
if d==1 then x=1 end
|
||||||
if d==3 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.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)
|
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()
|
itemstack:take_item()
|
||||||
for i=0,20,1 do
|
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.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())
|
minetest.get_meta({x=pos.x+x,y=pos.y-i,z=pos.z+z}):set_string("owner",user:get_player_name())
|
||||||
else
|
else
|
||||||
|
@ -275,12 +291,13 @@ minetest.register_node("hook:rope", {
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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"},
|
tiles = {"hook_rope.png"},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
buildable_to = true,
|
||||||
drop = "",
|
drop = "",
|
||||||
liquid_viscosity = 1,
|
liquid_viscosity = 1,
|
||||||
liquidtype = "source",
|
liquidtype = "source",
|
||||||
|
@ -310,7 +327,7 @@ minetest.register_node("hook:rope2", {
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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"},
|
tiles = {"hook_rope.png"},
|
||||||
|
@ -348,7 +365,7 @@ minetest.register_node("hook:rope3", {
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
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"},
|
tiles = {"hook_rope.png"},
|
||||||
|
@ -364,15 +381,15 @@ minetest.register_node("hook:rope3", {
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
can_dig = function(pos, player)
|
can_dig = function(pos, player)
|
||||||
if minetest.get_meta(pos):get_string("owner")~=player:get_player_name() then
|
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"))
|
minetest.chat_send_player(player:get_player_name(), "This rope is owned by: ".. minetest.get_meta(pos):get_string("owner"))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
groups = {not_in_creative_inventory=1,fleshy = 3, dig_immediate = 3,},
|
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
|
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"))
|
minetest.chat_send_player(puncher:get_player_name(), "This rope is owned by: ".. minetest.get_meta(pos):get_string("owner"))
|
||||||
return false
|
return false
|
||||||
|
@ -384,14 +401,14 @@ on_punch = function(pos, node, puncher, pointed_thing)
|
||||||
for i=0,20,1 do
|
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
|
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,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("hook:hooking", {
|
minetest.register_node("hook:hooking", {
|
||||||
description = "Hooking",
|
description = "Hooking",
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh="hook.obj",
|
mesh="hook_hook.obj",
|
||||||
tiles = {"default_stone.png"},
|
tiles = {"hook_rope.png"},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
walkable=false,
|
walkable=false,
|
||||||
|
@ -399,15 +416,10 @@ minetest.register_node("hook:hooking", {
|
||||||
drop = "",
|
drop = "",
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
groups = {not_in_creative_inventory=1},
|
groups = {not_in_creative_inventory=1},
|
||||||
on_construct = function(pos)
|
|
||||||
minetest.get_node_timer(pos):start(3)
|
|
||||||
|
|
||||||
end,
|
|
||||||
on_timer = function (pos, elapsed)
|
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
|
local r=minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name
|
||||||
if r~="hook:rope" then
|
if r~="hook:rope" then
|
||||||
minetest.set_node(pos, {name="air"})
|
minetest.remove_node(pos)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
|
@ -419,20 +431,20 @@ minetest.register_tool("hook:mba", {
|
||||||
description = "Mouth breather assembly",
|
description = "Mouth breather assembly",
|
||||||
range = 1,
|
range = 1,
|
||||||
inventory_image = "hook_mba.png",
|
inventory_image = "hook_mba.png",
|
||||||
on_use=function(itemstack, user, pointed_thing)
|
on_use=function(itemstack, user, pointed_thing)
|
||||||
local pos=user:get_pos()
|
local pos=user:get_pos()
|
||||||
pos.y=pos.y+1.5
|
pos.y=pos.y+1.5
|
||||||
if slingshot_def(pos,"drowning")==0 then
|
if hook.slingshot_def(pos,"drowning")==0 then
|
||||||
itemstack:set_wear(1)
|
itemstack:set_wear(1)
|
||||||
else
|
else
|
||||||
local use=itemstack:get_wear()+(65536/10)
|
local use=itemstack:get_wear()+(65536/10)
|
||||||
if use<65536 then
|
if use<65536 then
|
||||||
itemstack:set_wear(use)
|
itemstack:set_wear(use)
|
||||||
user:set_breath(11)
|
user:set_breath(11)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
return itemstack
|
||||||
end
|
end
|
||||||
return itemstack
|
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
@ -483,4 +495,4 @@ minetest.register_craft({
|
||||||
{"","default:steelblock",""},
|
{"","default:steelblock",""},
|
||||||
{"","default:steel_ingot",""},
|
{"","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={}
|
pchest={}
|
||||||
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "hook:pchest",
|
output = "hook:pchest",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"default:stick","default:stick","default:stick"},
|
{"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"},
|
{"default:stick","default:stick","default:stick"},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
pchest.setpchest=function(pos,user)
|
pchest.setpchest=function(pos,user)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("owner", user:get_player_name())
|
meta:set_string("owner", user:get_player_name())
|
||||||
meta:set_int("state", 0)
|
meta:set_int("state", 0)
|
||||||
meta:get_inventory():set_size("main", 32)
|
meta:get_inventory():set_size("main", 32)
|
||||||
meta:get_inventory():set_size("trans", 1)
|
meta:get_inventory():set_size("trans", 1)
|
||||||
meta:set_string("formspec",
|
meta:set_string("formspec",
|
||||||
"size[8,8]" ..
|
"size[8,8]" ..
|
||||||
"list[context;main;0,0;8,4;]" ..
|
"list[context;main;0,0;8,4;]" ..
|
||||||
"list[context;trans;0,0;0,0;]" ..
|
"list[context;trans;0,0;0,0;]" ..
|
||||||
"list[current_player;main;0,4.3;8,4;]" ..
|
"list[current_player;main;0,4.3;8,4;]" ..
|
||||||
"listring[current_player;main]" ..
|
"listring[current_player;main]" ..
|
||||||
"listring[current_name;main]" ..
|
"listring[current_name;main]")
|
||||||
default.gui_bg ..
|
meta:set_string("infotext", "PChest by: " .. user:get_player_name())
|
||||||
default.gui_bg_img ..
|
|
||||||
default.gui_slots ..
|
|
||||||
default.get_hotbar_bg(0,4.3))
|
|
||||||
meta:set_string("infotext", "PChest by: " .. user:get_player_name())
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
minetest.register_tool("hook:pchest", {
|
minetest.register_tool("hook:pchest", {
|
||||||
description = "Portable locked chest",
|
description = "Portable locked chest",
|
||||||
inventory_image = "hook_extras_chest3.png",
|
inventory_image = "hook_extras_chest3.png",
|
||||||
on_place = function(itemstack, user, pointed_thing)
|
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
|
if minetest.is_protected(pointed_thing.above,user:get_player_name()) or hook.slingshot_def(pointed_thing.above,"walkable") then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
local p=minetest.dir_to_facedir(user:get_look_dir())
|
local p=minetest.dir_to_facedir(user:get_look_dir())
|
||||||
local item=itemstack:to_table()
|
local item=itemstack:to_table()
|
||||||
local meta=minetest.deserialize(item["metadata"])
|
local meta=minetest.deserialize(item["metadata"])
|
||||||
minetest.set_node(pointed_thing.above, {name = "hook:pchest_node",param1="",param2=p})
|
minetest.set_node(pointed_thing.above, {name = "hook:pchest_node",param1="",param2=p})
|
||||||
pchest.setpchest(pointed_thing.above,user)
|
pchest.setpchest(pointed_thing.above,user)
|
||||||
|
|
||||||
minetest.sound_play("default_place_node_hard", {pos=pointed_thing.above, gain = 1.0, max_hear_distance = 5,})
|
minetest.sound_play("default_place_node_hard", {pos=pointed_thing.above, gain = 1.0, max_hear_distance = 5,})
|
||||||
if meta==nil then
|
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
|
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
return itemstack:take_item()
|
return itemstack
|
||||||
end,
|
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", {
|
minetest.register_node("hook:pchest_node", {
|
||||||
description = "Portable locked chest",
|
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"},
|
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",
|
drop="hook:pchest",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
tube = {insert_object = function(pos, node, stack, direction)
|
tube = {insert_object = function(pos, node, stack, direction)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
local added = inv:add_item("main", stack)
|
local added = inv:add_item("main", stack)
|
||||||
--after_inventory_change(pos)
|
return added
|
||||||
return added
|
end,
|
||||||
end,
|
can_insert = function(pos, node, stack, direction)
|
||||||
can_insert = function(pos, node, stack, direction)
|
local meta = minetest.get_meta(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local inv = meta:get_inventory()
|
||||||
local inv = meta:get_inventory()
|
return inv:room_for_item("main", stack)
|
||||||
return inv:room_for_item("main", stack)
|
end,
|
||||||
end,
|
input_inventory = "main",
|
||||||
input_inventory = "main",
|
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}},
|
||||||
connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}},
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
||||||
local owner = minetest.get_meta(pos):get_string("owner")
|
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
|
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(), "Not allowed to put in items with metadata")
|
||||||
minetest.chat_send_player(player:get_player_name(), "will be lost when pick up the chest")
|
return 0
|
||||||
end
|
end
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end,
|
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")
|
local owner = minetest.get_meta(pos):get_string("owner")
|
||||||
if owner==player:get_player_name() or owner=="" then
|
if owner==player:get_player_name() or owner=="" then
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end,
|
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")
|
local owner = minetest.get_meta(pos):get_string("owner")
|
||||||
if owner==player:get_player_name() or owner=="" then
|
if owner==player:get_player_name() or owner=="" then
|
||||||
return count
|
return count
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end,
|
end,
|
||||||
can_dig = function(pos, player)
|
can_dig = function(pos, player)
|
||||||
local owner = minetest.get_meta(pos):get_string("owner")
|
local owner = minetest.get_meta(pos):get_string("owner")
|
||||||
return (owner=="" and minetest.get_meta(pos):get_inventory():is_empty("main"))
|
return (owner=="" and minetest.get_meta(pos):get_inventory():is_empty("main"))
|
||||||
end,
|
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
|
if minetest.is_protected(pos,player:get_player_name()) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -140,5 +129,5 @@ on_punch = function(pos, node, player, pointed_thing)
|
||||||
minetest.set_node(pos, {name = "air"})
|
minetest.set_node(pos, {name = "air"})
|
||||||
minetest.sound_play("default_dig_dig_immediate", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
minetest.sound_play("default_dig_dig_immediate", {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
||||||
end
|
end
|
||||||
end,
|
end
|
||||||
})
|
})
|
43
project.lua
43
project.lua
|
@ -1,12 +1,11 @@
|
||||||
minetest.register_entity("hook:power",{
|
minetest.register_entity("hook:power",{
|
||||||
hp_max = 100,
|
hp_max = 100,
|
||||||
physical = true,
|
physical = true,
|
||||||
weight = 0,
|
|
||||||
collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2},
|
collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2},
|
||||||
visual = "upright_sprite",
|
visual = "mesh",
|
||||||
visual_size = {x=1, y=1},
|
mesh = "hook_hook.obj",
|
||||||
textures = {"hook_hooking.png"},
|
visual_size = {x=10, y=10},
|
||||||
spritediv = {x=1, y=1},
|
textures = {"hook_rope.png"},
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
automatic_rotate = false,
|
automatic_rotate = false,
|
||||||
|
@ -25,25 +24,29 @@ on_activate=function(self, staticdata)
|
||||||
self.user=hook.user
|
self.user=hook.user
|
||||||
self.locked=hook.locked
|
self.locked=hook.locked
|
||||||
hook.user=nil
|
hook.user=nil
|
||||||
if self.fd==3 then self.fd=1
|
if self.fd==3 then
|
||||||
elseif self.fd==1 then self.fd=3
|
self.fd=1
|
||||||
elseif self.fd==2 then self.fd=0
|
elseif self.fd==1 then
|
||||||
elseif self.fd==0 then self.fd=2
|
self.fd=3
|
||||||
|
elseif self.fd==2 then
|
||||||
|
self.fd=0
|
||||||
|
elseif self.fd==0 then
|
||||||
|
self.fd=2
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
on_step= function(self, dtime)
|
on_step= function(self, dtime)
|
||||||
self.timer2=self.timer2+dtime
|
self.timer2=self.timer2+dtime
|
||||||
local pos=self.object:get_pos()
|
local pos=self.object:get_pos()
|
||||||
local kill=0
|
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
|
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 is_hook(pos,self.uname) and is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
|
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
|
kill=1
|
||||||
if self.locked then
|
if self.locked then
|
||||||
if self.user:get_inventory():contains_item("main", "hook:climb_rope_locked")==false then
|
if self.user:get_inventory():contains_item("main", "hook:climb_rope_locked")==false then
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return self
|
return self
|
||||||
end
|
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.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)
|
minetest.get_meta({x=pos.x,y=pos.y+1,z=pos.z}):set_int("a",1)
|
||||||
else
|
else
|
||||||
|
@ -51,7 +54,11 @@ on_step= function(self, dtime)
|
||||||
end
|
end
|
||||||
self.user:get_inventory():remove_item("main", "hook:climb_rope_locked")
|
self.user:get_inventory():remove_item("main", "hook:climb_rope_locked")
|
||||||
for i=0,20,1 do
|
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)
|
minetest.get_meta({x=pos.x,y=pos.y-i,z=pos.z}):set_string("owner",self.uname)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -59,7 +66,7 @@ on_step= function(self, dtime)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return self
|
return self
|
||||||
end
|
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.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)
|
minetest.get_meta({x=pos.x,y=pos.y+1,z=pos.z}):set_int("a",1)
|
||||||
else
|
else
|
||||||
|
@ -67,7 +74,11 @@ on_step= function(self, dtime)
|
||||||
end
|
end
|
||||||
self.user:get_inventory():remove_item("main", "hook:climb_rope")
|
self.user:get_inventory():remove_item("main", "hook:climb_rope")
|
||||||
for i=0,20,1 do
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue