[0.7.1] Function switching of event
Posted: Thu Oct 10, 2013 9:40 am
Giving new functions inside ontick -event for ontick -event leads to crash. Can be avoided by calling "game.onevent(defines.events.ontick, nil)" before giving new function.
Test1: never prints tock
Test2: This one works, but if for example you remove nil in tack -function it will crash in 8-9. cycle. Might be bit random
Test1: never prints tock
Code: Select all
--test1.lua
game.onevent(defines.events.ontick, function(event) tick(event) end)
function tick()
game.player.print("tick")
game.onevent(defines.events.ontick, function(event) tack(event) end)
end
function tack()
game.player.print("tack")
game.onevent(defines.events.ontick, function(event) tock(event) end)
end
function tock()
game.player.print("tock")
game.onevent(defines.events.ontick, function(event) tick(event) end)
end

Code: Select all
--test2.lua
game.onevent(defines.events.ontick, function(event) tick(event) end)
function tick()
game.player.print("tick")
game.onevent(defines.events.ontick, nil)
game.onevent(defines.events.ontick, function(event) tack(event) end)
end
function tack()
game.player.print("tack")
game.onevent(defines.events.ontick, nil)
game.onevent(defines.events.ontick, function(event) tock(event) end)
end
function tock()
game.player.print("tock")
game.onevent(defines.events.ontick, nil)
game.onevent(defines.events.ontick, function(event) tick(event) end)
end