Add: a way for death entity to delete its self
This commit is contained in:
parent
859e6312d1
commit
e9671d9d2b
18
init.lua
18
init.lua
@ -23,12 +23,14 @@ function death_timer.create_deathholder(player, name)
|
|||||||
if player and obj then
|
if player and obj then
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
player:set_attach(obj, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
player:set_attach(obj, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||||
|
obj:get_luaentity().owner = name
|
||||||
obj:set_pos(pos)
|
obj:set_pos(pos)
|
||||||
player_objs[name] = obj
|
player_objs[name] = obj
|
||||||
elseif player and not obj then
|
elseif player and not obj then
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
obj = minetest.add_entity(pos, "death_timer:death")
|
obj = minetest.add_entity(pos, "death_timer:death")
|
||||||
player:set_attach(obj, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
player:set_attach(obj, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||||
|
obj:get_luaentity().owner = name
|
||||||
obj:set_pos(pos)
|
obj:set_pos(pos)
|
||||||
player_objs[name] = obj
|
player_objs[name] = obj
|
||||||
end
|
end
|
||||||
@ -66,8 +68,20 @@ end)
|
|||||||
|
|
||||||
minetest.register_entity("death_timer:death", {
|
minetest.register_entity("death_timer:death", {
|
||||||
is_visible = false,
|
is_visible = false,
|
||||||
|
on_step = function(self, dtime)
|
||||||
|
self.timer= self.timer + dtime
|
||||||
|
if self.timer >= 1 then
|
||||||
|
self.timer = 0
|
||||||
|
if not (self.owner and minetest.get_player_by_name(self.owner)) then
|
||||||
|
self.object:remove()
|
||||||
|
else
|
||||||
|
self.object:set_attach(minetest.get_player_by_name(self.owner), "", {x = 0,y = 0,z = 0}, {x = 0,y = 0,z = 0})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
on_activate = function(self, staticdata)
|
on_activate = function(self, staticdata)
|
||||||
|
self.timer = 0
|
||||||
|
self.object:set_armor_groups({immortal = 1, ignore = 1, do_not_delete = 1})
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -131,8 +145,10 @@ function death_timer.loop(name)
|
|||||||
p.properties = nil
|
p.properties = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
if minetest.get_player_by_name(name) then
|
||||||
cloaking.unhide_player(name)
|
cloaking.unhide_player(name)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
p.time = nil
|
p.time = nil
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user