Page 3 of 3
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 12:19 pm
by ficolas
Code: Select all
if glob.playerdiedtick==true then
glob.playerdiedtick=false
local entities = game.findentities{ topleft = {x = game.getplayer().position.x - 1, y = game.getplayer().position.y - 1}, bottomright = {x = game.getplayer().position.x + 1 ,y = game.getplayer().position.y + 1} }
for i,entity in ipairs(entities) do
if (entity.name== "Spawn") then
entity.destroy()
break
end
end
end
Um this doesnt seem to work for me, do somebody know why D:
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 2:19 pm
by kovarex
The entity name is not "Spawn", but "player-port"
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 2:52 pm
by ficolas
kovarex wrote:The entity name is not "Spawn", but "player-port"
No, the entity type is player-port, the entity name is Spawn, because to apply new graphics without modifying vanilla files I made a new entity calles Spawn
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 6:27 pm
by FreeER
this seems to do the job fairly well:
Code: Select all
if event.name == "ontick" then
if game.getplayer().health<10 then glob.playerdiedtick=maybe end
if glob.playerdiedtick==maybe then if game.getplayer().health==100 then glob.playerdiedtick=true end end
if glob.playerdiedtick==true then
game.getplayer().print("health")
glob.playerdiedtick=false
entities = game.findentities{ topleft = {x = game.getplayer().position.x - 10, y = game.getplayer().position.y - 10}, bottomright = {x = game.getplayer().position.x + 10, y = game.getplayer().position.y + 10} }
for i,entity in ipairs(entities) do
game.getplayer().print("checking entities")
if (entity.name=="Spawn") then
entity.destroy()
break
end
end
end
of course you can ignore the game.getplayer().print statements, they were for debugging

I think a slightly better way would be to have glob.playerdiedtick be set to false after a five seconds or so, that way if a player happens to get down below 10 health and actually live, it won't punish him once he is back to 100 health and walks over his spawn lol.
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 6:45 pm
by ficolas
I thought about doing that, but I didnt do it because what you said at the end, and if the player gets overkilled (with a rocket, for example, rockets do 20 dmg so the player port wont be removed.
maybe if I use <=0 it would work
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 9:25 pm
by FreeER
It should be easy enough to reset the glob.playerdiedtick, something like (didn't test btw):
Code: Select all
if event.name == "ontick" then
if glob.playerdiedtick == maybe then
if event.tick % 300 == 0 then glob.playerdiedtick = false
end
end
end
or you could have glob.playerdiedtick a table and have a tick counter built into it, so
Code: Select all
if event.name == "ontick" then
if game.getplayer().health<10 then
glob.playerdiedtick[dead]=maybe
glob.playerdiedtick[tick]=1
end
if glob.playerdiedtick[dead]==maybe then
if glob.playerdiedtick[tick]<301 then glob.playerdiedtick[tick]=glob.playerdiedtick[tick]+1 end
else glob.playerdiedtick[tick]=glob.playerdiedtick[tick]+1
end
end
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 9:29 pm
by ficolas
But I like things to be exact D:
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 9:44 pm
by FreeER
well, just have to wait until an onplayersrespawned event then lol
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 9:49 pm
by ficolas
if that happends some day, becausw I dont think it is prioritary
Re: How do I use game methods? or destroy?
Posted: Sun Mar 17, 2013 9:59 pm
by FreeER
if we're lucky maybe it will be rolled into onunitdied, like with onplayerdied

or have 'self-destruct-after' simply be a json config option which would be much easier lol