Add files via upload

master
AiTechEye 2018-11-21 22:19:48 +01:00 committed by GitHub
parent ff3efbd2e1
commit dd84184f1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 120 additions and 0 deletions

120
init.lua Normal file
View File

@ -0,0 +1,120 @@
parkoursurvive={
step_timer=0,
step_time=0.5,
speed=1,
player={},
}
minetest.register_globalstep(function(dtime)
if parkoursurvive.step_timer>parkoursurvive.step_time then
parkoursurvive.step_timer=0
else
parkoursurvive.step_timer=parkoursurvive.step_timer+dtime
return
end
for _,player in ipairs(minetest.get_connected_players()) do
if not player:get_attach() and player:get_player_control().aux1 then
local pos=player:get_pos()
local node=minetest.registered_nodes[minetest.get_node(pos).name]
if node and (node.liquid_viscosity==0 and not node.climbable and node.damage_per_second==0) then
local e=minetest.add_entity(pos, "parkoursurvive:player")
e:get_luaentity().user=player
player:set_attach(e,"",{x=0,y=0,z=0},{x=0,y=0,z=0})
e:set_velocity(player:get_player_velocity())
end
end
end
end)
minetest.register_entity("parkoursurvive:player",{
hp_max = 20,
physical = true,
collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35},
visual = "sprite",
textures = {"parkoursurvive_t.png"},
makes_footstep_sound = true,
on_punch=function(self, puncher, time_from_last_punch, tool_capabilities)
if tool_capabilities and tool_capabilities.damage_groups and tool_capabilities.damage_groups.fleshy then
self.user:set_hp(self.user:get_hp()-tool_capabilities.damage_groups.fleshy)
end
return self
end,
on_activate=function(self, staticdata)
minetest.after(0.1, function(self)
if not self.user then
self.object:remove()
end
end, self)
self.object:set_acceleration({x=0,y=-20,z =0})
local pos=self.object:get_pos()
pos.y=pos.y+0.1
self.object:set_pos(pos)
return self
end,
on_step=function(self, dtime)
if self.start>0 then
self.start=self.start-dtime
return
elseif not (self.user and self.user:get_attach()) then
self.object:remove()
return
end
local key=self.user:get_player_control()
local pos=self.object:get_pos()
local node=minetest.registered_nodes[minetest.get_node(pos).name]
local v=self.object:get_velocity()
self.object:set_yaw(self.user:get_look_yaw()-math.pi/2)
if (not key.aux1 and self.speed<=1) or self.user:get_hp()<=0 or not node or node.liquid_viscosity>0 or node.climbable or node.damage_per_second>0 then
self.user:set_detach()
self.object:remove()
return
end
if v.y<0 and not self.fallingfrom then
self.fallingfrom=pos.y
elseif self.fallingfrom and v.y==0 then
local from=math.floor(self.fallingfrom+0.5)
local hit=math.floor(pos.y+0.5)
local d=from-hit
self.fallingfrom=nil
if minetest.get_node({x=pos.x,y=pos.y-2,z=pos.z}).name~="ignore" and d>=10 then
self.on_punch(self, self.user, 1, {damage_groups={fleshy=d}})
end
end
if key.jump and v.y==0 then
v.y=self.speed
elseif key.up and self.speed<10 then
self.speed=self.speed*1.1
elseif (key.down or not key.aux1) and self.speed>1 then
self.speed=self.speed*0.9
else
self.speed=self.speed*0.95
v.x=v.x*self.speed
v.z=v.z*self.speed
if math.abs(v.x+v.z)<0.1 or self.speed<=1 then
v.x=0
v.z=0
self.speed=1
end
end
if self.speed>1 then
local yaw=self.object:get_yaw()
if yaw ~= yaw or type(yaw)~="number" then
return
end
v.x=math.sin(yaw)*-self.speed
v.z=math.cos(yaw)*self.speed
end
self.object:set_velocity(v)
end,
speed=1,
type="npc",
team="Sam",
start=0.15,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 B