KaoSDlanor

Turtle squad leader

Sep 25th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.01 KB | None | 0 0
  1. local intMax=28
  2. local tSquad={}
  3.  
  4. local function gather()
  5.     while true do
  6.         if #tSquad<intMax then
  7.             rednet.broadcast('gather')
  8.             os.startTimer(1)
  9.             while true do
  10.                 local evt={os.pullEvent()}
  11.                 if #tSquad==intMax or evt[1]=='timer' then
  12.                     break
  13.                 elseif evt[1]=='rednet_message' and evt[3]=='join' then
  14.                     rednet.send(evt[2],'accepted')
  15.                     tSquad[#tSquad+1]={id=evt[2]; done=true}
  16.                     print(evt[2]..' accepted')
  17.                 end
  18.             end
  19.         else
  20.             sleep(0.01)
  21.         end
  22.     end
  23. end
  24.  
  25. local function test()
  26.     while true do
  27.         for k,v in pairs(tSquad) do
  28.             if v['done']==true then
  29.         print(textutils.serialize({v['id'],'turtle.up()'}))
  30.                 rednet.send(v['id'],textutils.serialize({v['id'],'turtle.up()'}))
  31.                 v['done']=false
  32.             end
  33.         end
  34.         sleep(2)
  35.     end
  36. end
  37.  
  38. rednet.open('right')
  39. local tThreads={coroutine.create(gather);
  40. coroutine.create(test)}
  41. local tEvents={}
  42.  
  43. while true do
  44.     for k,v in pairs(tThreads) do
  45.         coroutine.resume(v,unpack(tEvents))
  46.     end
  47.     tEvents=nil
  48.     tEvents={os.pullEvent()}
  49. end
Advertisement
Add Comment
Please, Sign In to add comment