Add files via upload

master
AiTechEye 2018-08-07 22:07:10 +02:00 committed by GitHub
parent f6e8ac8125
commit a294b48b52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 32 deletions

View File

@ -10,9 +10,17 @@ else
hook_tmp_time=hook_tmp_time-10
end
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
return (minetest.registered_nodes[nn] and minetest.registered_nodes[nn][n])
end
local function slingshot_onuse(itemstack, user)
local veloc=15
local pos = user:getpos()
local pos = user:get_pos()
local upos={x=pos.x,y=pos.y+2,z=pos.z}
local dir = user:get_look_dir()
local item=itemstack:to_table()
@ -79,8 +87,8 @@ minetest.register_globalstep(function(dtime)
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:getpos()==nil then table.remove(hook_tmp_throw,i) return end
for ii, ob in pairs(minetest.get_objects_inside_radius(t.ob:getpos(), 1.5)) do
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
ob:set_hp(ob:get_hp()-5)
@ -90,7 +98,7 @@ minetest.register_globalstep(function(dtime)
t.ob:setacceleration({x=0, y=-10,z=0})
t.ob:setvelocity({x=0, y=-10, z=0})
table.remove(hook_tmp_throw,i)
minetest.sound_play("hook_hard_punch", {pos=ob:getpos(), 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
end
end
@ -121,11 +129,12 @@ minetest.register_tool("hook:hook", {
local pos=pointed_thing.above
local pos2=pointed_thing.under
local name=user:get_player_name()
if minetest.registered_nodes[minetest.get_node(pos2).name].walkable and
minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name].walkable==false and
(minetest.registered_nodes[minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name].walkable==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
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
minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name].walkable==false then
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
@ -151,11 +160,11 @@ minetest.register_tool("hook:hook_upgrade", {
local pos=pointed_thing.above
local pos2=pointed_thing.under
local name=user:get_player_name()
if minetest.registered_nodes[minetest.get_node(pos2).name].walkable and
minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name].walkable==false and
(minetest.registered_nodes[minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name].walkable==false or minetest.get_node({x=pos2.x,y=pos2.y+1,z=pos2.z}).name=="default:snow") and
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
minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name].walkable==false then
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
@ -183,7 +192,7 @@ minetest.register_tool("hook:climb_rope", {
if pointed_thing.type~="node" then
hook.user=user
hook.locked=false
local pos=user:getpos()
local pos=user:get_pos()
local d=user:get_look_dir()
local m=minetest.add_entity({x=pos.x,y=pos.y+1.5,z=pos.z}, "hook:power")
m:setvelocity({x=d.x*15, y=d.y*15, z=d.z*15})
@ -195,7 +204,7 @@ minetest.register_tool("hook:climb_rope", {
local z=0
local x=0
local name=user:get_player_name()
if minetest.registered_nodes[minetest.get_node(pos).name].walkable then
if 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
@ -223,7 +232,7 @@ minetest.register_tool("hook:climb_rope_locked", {
if pointed_thing.type~="node" then
hook.user=user
hook.locked=true
local pos=user:getpos()
local pos=user:get_pos()
local d=user:get_look_dir()
local m=minetest.add_entity({x=pos.x,y=pos.y+1.5,z=pos.z}, "hook:power")
m:setvelocity({x=d.x*15, y=d.y*15, z=d.z*15})
@ -235,7 +244,7 @@ minetest.register_tool("hook:climb_rope_locked", {
local z=0
local x=0
local name=user:get_player_name()
if minetest.registered_nodes[minetest.get_node(pos).name].walkable then
if 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
@ -410,9 +419,9 @@ minetest.register_tool("hook:mba", {
range = 1,
inventory_image = "hook_mba.png",
on_use=function(itemstack, user, pointed_thing)
local pos=user:getpos()
local pos=user:get_pos()
pos.y=pos.y+1.5
if minetest.registered_nodes[minetest.get_node(pos).name].drowning==0 then
if slingshot_def(pos,"drowning")==0 then
itemstack:set_wear(1)
else
local use=itemstack:get_wear()+(65536/10)
@ -451,9 +460,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "hook:climb_rope",
recipe = {
@ -476,5 +482,4 @@ minetest.register_craft({
{"","default:steelblock",""},
{"","default:steel_ingot",""},
}
})
})

View File

@ -36,7 +36,7 @@ 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 minetest.registered_nodes[minetest.get_node(pointed_thing.above).name].walkable then
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())

View File

@ -33,14 +33,14 @@ on_activate=function(self, staticdata)
end,
on_step= function(self, dtime)
self.timer2=self.timer2+dtime
local pos=self.object:getpos()
local pos=self.object:get_pos()
local kill=0
if minetest.registered_nodes[minetest.get_node({x=pos.x+self.d.x,y=pos.y,z=pos.z+self.d.z}).name].walkable and minetest.registered_nodes[minetest.get_node({x=pos.x+self.d.x,y=pos.y+1,z=pos.z+self.d.z}).name].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 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
kill=1
if self.locked then
if self.user:get_inventory():contains_item("main", "hook:climb_rope_locked")==false then
self.object:set_hp(0)
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
self.object:remove()
return self
end
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
@ -56,8 +56,7 @@ on_step= function(self, dtime)
end
else
if self.user:get_inventory():contains_item("main", "hook:climb_rope")==false then
self.object:set_hp(0)
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
self.object:remove()
return self
end
if is_hook({x=pos.x,y=pos.y+1,z=pos.z},self.uname) then
@ -73,8 +72,7 @@ on_step= function(self, dtime)
end
end
if self.timer2>3 or kill==1 then
self.object:set_hp(0)
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
self.object:remove()
end
return self