Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function parallelRun(...)
- local fs = {...}
- ocal cos = {}
- local filter = {}
- or k,v in pairs(fs) do
- table.insert(cos, coruotine.create(v))
- end
- computer.pushSignal("initco")
- local sl = 0
- while true do
- local ev = computer.pullSignal(sl ~= or sl and nil)
- sl = 0 for i, v in ipairs(cos)
- do
- if filter[v] == nil or filter[v] == ev[1] then
- if coroutine.status(v) == "dead" then
- error("co dead")
- end
- filter[v] = select(coroutine.resume(v), 2)
- if type(filter[v][1]) == "number" then
- if sl == 0 or filter[v][1] < sl then
- sl = filter[v][1] filter[v] = nil
- end
- end
- end
- end
- end
- local evTable = {}
- function evListen()
- while true do
- local ev = {coroutine.yield(0.05)}
- if evTable[ev[1]] then
- for k, v in pairs(evtable[ev][1]) do
- v(table.unpack(ev))
- end
- end
- end
- parallelRun(yourMainFunction, evListen)
- function listen(ev,cb) do
- if evTable[ev] == nil then
- evTable[ev] = {}
- end
- table.insert(evTable[ev], cb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement