Advertisement
Guest User

Untitled

a guest
Jan 27th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. [23:44:54] <Inari> function parallelRun(...) local fs = {...} local cos = {} local filter = {} for 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
  2. [23:44:54] <Inari> 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
  3. [23:44:54] <Inari> 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) end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement