Community Forum

require(), coroutines

Forum Overview >> Scripting

CategoryScripting
Created20.10.2015 19:21


Dirk Peeters (Unknown) 20.10.2015 19:35
hi,

i'm trying to create a coroutine but it seems to do the coroutine.yield() true c.
i was reading a workaround that uses require("scriptName") to have the yield run from inside the module.

nothing seems to work.
require() alway's returns a nil value, and when i print the path to the file its correct.
it also not work when i give the complete path c:/......./.../../coroutine.lua

what is the workflow for having a coroutine to work inside the Giants engine?

assume the file is called coroutine.lua

co = coroutine.create(silocheck);
check = 0;

function silocheck()
-- first set
check = 1;
coroutine.yield();
-- second set
check = 2;
coroutine.yield();
-- final step
check = 3;
-- do stuff
check = 0;
end;

if something then
coroutine.resume(co); -- start the coroutine
end;

if check == 1 then
coroutine.resume(co); -- resume to step 2
end

thx
jeng

D. Ecker (Decker_MMIV) 27.10.2015 09:22
I would advice you to NOT attempt using LUA coroutines and yield() in mods for the Farming Simulator game-engine.

Try to solve whatever you are attempting to do, by using a 'finite state machine' pattern (look it up on Google), and then use your mod's default 'update()' or 'updateTick()' methods, as they are called by the game-engine continuously.

Examples of such a 'finite state machine' pattern, can somewhat indirectly be seen in GIANTS' scripts:
http://ls-mods.de/scriptDocumentation.php?lua_file=vehicles/specializations/Baler
- study/understand the usage of the constants: Baler.UNLOADING_...
http://ls-mods.de/scriptDocumentation.php?lua_file=vehicles/specializations/BaleWrapper
- study/understand the usage of the constants: BaleWrapper.STATE_... & BaleWrapper.CHANGE_...
and there are more to find.

Also it is imperative to avoid usage of any sleep() or wait() functions in a game-engine, as that would result in sluggish/bad game performance (i.e. cause "lag"). - When you ask about "coroutines", it tells me that you might be thinking of having several other 'execution threads', possibly due to your execution-flow-methods have not been split into smaller parts (e.g. "states").


Dirk Peeters (Unknown) 31.10.2015 01:55
Hi,
yes i was looking into it but i did not use it, i want to do something for the breeding and i also used states in my new version, but the project touk a weard turn due to a problem of syncing and i used my 2013 sync script that solves my problem. as a result i fixed my 2013 script. We running tests on it now, for the moment all seems to be working the same on 2015 as in 2013.

i was thinking implementing timers but i need to go true the tutors and churchclock again as i overlook something. but yes the AnimalMod is working fine, the breeding and syncing works great buy/sell load/unload all 3 animaltypes.

and like i alway's want it to be, by using the ingame triggers no extra triggers needed only a cattletrailer to load them. on map side you only need to add the fillTypes to the tip- siloTriggers

tested on a modmap as standalone zip and one from inside the samplemodmap.lua both work the same.
i upgrade my cattletrailer to 2015 as the others do not match the size of the game or have errors.

the only thing i see is the saving part that needs to be modified for 2015, but i have a workaround for the moment.

maby end of the week i post a video on fs-uk and youtube of the mod.

grts
jeng


Note: Log in to post. Create a new account here.