Advertisement
Guest User

Untitled

a guest
Jan 27th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. function parallelRun(...)
  2. local fs = {...}
  3. ocal cos = {}
  4. local filter = {}
  5. or k,v in pairs(fs) do
  6. table.insert(cos, coruotine.create(v))
  7. end
  8. computer.pushSignal("initco")
  9. local sl = 0
  10. while true do
  11. local ev = computer.pullSignal(sl ~= or sl and nil)
  12. sl = 0 for i, v in ipairs(cos)
  13. do
  14. if filter[v] == nil or filter[v] == ev[1] then
  15. if coroutine.status(v) == "dead" then
  16. error("co dead")
  17. end
  18. filter[v] = select(coroutine.resume(v), 2)
  19. if type(filter[v][1]) == "number" then
  20. if sl == 0 or filter[v][1] < sl then
  21. sl = filter[v][1] filter[v] = nil
  22. end
  23. end
  24. end
  25. end
  26. end
  27. local evTable = {}
  28. function evListen()
  29. while true do
  30. local ev = {coroutine.yield(0.05)}
  31. if evTable[ev[1]] then
  32. for k, v in pairs(evtable[ev][1]) do
  33. v(table.unpack(ev))
  34. end
  35. end
  36. end
  37. parallelRun(yourMainFunction, evListen)
  38. function listen(ev,cb) do
  39. if evTable[ev] == nil then
  40. evTable[ev] = {}
  41. end
  42. table.insert(evTable[ev], cb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement