tweaked sprint code

master
TenPlus1 2016-06-12 14:58:55 +01:00
parent 5fb51d53ad
commit ee9e405547
1 changed files with 57 additions and 62 deletions

View File

@ -120,6 +120,53 @@ minetest.register_on_respawnplayer(function(player)
hbhunger.exhaustion[name] = 0
end)
-- 3d armor support
local armor_mod = minetest.get_modpath("3d_armor")
-- Sets the sprint state of a player (false = stopped, true = sprinting)
function set_sprinting(name, sprinting)
if not hbhunger.hunger[name] then
return false
end
local player = minetest.get_player_by_name(name)
-- is 3d_armor active, then set to armor defaults
local def = {}
if armor_mod and armor and armor.def[name] then
def = armor.def[name]
end
def.speed = def.speed or 1
def.jump = def.jump or 1
def.gravity = def.gravity or 1
if sprinting == true then
player:set_physics_override({
speed = def.speed + SPRINT_SPEED,
jump = def.jump + SPRINT_JUMP,
gravity = def.gravity
})
--print ("Speed:", def.speed + SPRINT_SPEED, "Jump:", def.jump + SPRINT_JUMP, "Gravity:", def.gravity)
else
player:set_physics_override({
speed = def.speed,
jump = def.jump,
gravity = def.gravity
})
--print ("Speed:", def.speed, "Jump:", def.jump, "Gravity:", def.gravity)
end
return true
end
-- sprint settings
local enable_sprint = minetest.setting_getbool("sprint") ~= false
local enable_sprint_particles = minetest.setting_getbool("sprint_particles") ~= false
@ -157,20 +204,19 @@ minetest.register_globalstep(function(dtime)
and not minetest.check_player_privs(player, {fast = true})
and h > 6 then
setSprinting(name, true)
set_sprinting(name, true)
-- create particles behind player when sprinting
if enable_sprint_particles
and sprinters[name] then
if enable_sprint_particles then
local pos = player:getpos()
-- local node = minetest.get_node({
-- x = pos.x,
-- y = pos.y - 1,
-- z = pos.z
-- })
local node = minetest.get_node({
x = pos.x,
y = pos.y - 1,
z = pos.z
})
-- if node.name ~= "air" then
if node.name ~= "air" then
minetest.add_particlespawner({
amount = 5,
@ -191,14 +237,14 @@ minetest.register_globalstep(function(dtime)
texture = "default_cloud.png",
})
-- end
end
end
-- Lower the player's hunger
hbhunger.hunger[name] = h - (SPRINT_DRAIN * HUNGER_HUD_TICK)
hbhunger.set_hunger(player)
else
setSprinting(name, nil)
set_sprinting(name, false)
end
-- END sprint
@ -258,54 +304,3 @@ minetest.register_globalstep(function(dtime)
end
end)
-- 3d armor support
local pp = {}
local armor_mod = minetest.get_modpath("3d_armor")
-- Sets the sprint state of a player (0 = stopped / moving, 1 = sprinting)
function setSprinting(name, sprinting)
if hbhunger.hunger[name] then
sprinters[name] = sprinting
local player = minetest.get_player_by_name(name)
-- is 3d_armor active, then set to armor defaults
local def = {}
if armor_mod and armor and armor.def[name] then
def = armor.def[name]
end
pp.speed = def.speed or 1
pp.jump = def.jump or 1
pp.gravity = def.gravity or 1
if sprinters[name] then
player:set_physics_override({
speed = pp.speed + SPRINT_SPEED,
jump = pp.jump + SPRINT_JUMP,
gravity = pp.gravity
})
--print ("Speed:", pp.speed + SPRINT_SPEED, "Jump:", pp.jump + SPRINT_JUMP, "Gravity:", pp.gravity)
else
player:set_physics_override({
speed = pp.speed,
jump = pp.jump,
gravity = pp.gravity
})
--print ("Speed:", pp.speed, "Jump:", pp.jump, "Gravity:", pp.gravity)
end
return true
end
return false
end