Page 1 of 1

[0.7.1] Function switching of event

Posted: Thu Oct 10, 2013 9:40 am
by rk84
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

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
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 :?

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

Re: [0.7.1] Function switching of event

Posted: Fri Oct 11, 2013 11:30 am
by kovarex
Hello, as always, thank you for the report :)

This is fixed for 0.7.2