Advertisement
MadScience2728

Master Elven

Jan 15th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.61 KB | None | 0 0
  1. --[[
  2. Changes:
  3. Turtles no longer monitor how many rows they've gone forward (no more rowsProgressed file)
  4. Master turtle simply waits for (numberSlaves) unique turtles to send messages saying
  5. they are ready and waiting. Slave turtles repeatedly send ready and waiting signals to prevent
  6. the sync problems we were having before.
  7. --]]
  8.  
  9. -- Number of neighbouring turtles
  10. numberSlaves = 15
  11.  
  12. -- Open up modem to receive wireless broadcasts
  13. rednet.open("right")
  14.  
  15. -- Wait until neighbouring turtles are ready
  16. function waitForSlaves()
  17.   local IDsOfWaitingTurtles = {}
  18.   local remoteTurtleID, rednetMessage
  19.   local newTurtleIsReportingReady
  20.  
  21.   -- Wait for (numberNeighbours) unique turtles to send ready messages
  22.   repeat
  23.     remoteTurtleID, rednetMessage, _ = rednet.receive()
  24.    
  25.     if rednetMessage == "I am ready and waiting master" then
  26.       -- Check if turtle has replied already
  27.       newTurtleIsReportingReady = true
  28.  
  29.       for i=1, table.getn(IDsOfWaitingTurtles) do
  30.         if remoteTurtleID == IDsOfWaitingTurtles[i] then
  31.           newTurtleIsReportingReady = false
  32.           break
  33.         end
  34.       end
  35.  
  36.       if newTurtleIsReportingReady then
  37.         table.insert(IDsOfWaitingTurtles, remoteTurtleID)
  38.       end
  39.     end
  40.   until table.getn(IDsOfWaitingTurtles) >= numberSlaves
  41.  
  42.   rednet.broadcast("You are authorised to proceed")
  43. end
  44.  
  45. bool=true
  46.  
  47. while bool==true do
  48.   if rs.getInput("back", true) then
  49.       print ("Waiting")
  50.       sleep (1)
  51.   else
  52.     print ("Let's Roll!")
  53.     bool=false
  54.   end
  55. end
  56.  
  57. X=66
  58.  
  59. print ("Startup Functions Activating")
  60. print ("Going to lowest point")
  61.  
  62. turtle.select(1)
  63. turtle.dig()
  64. turtle.select(3)
  65. turtle.back()
  66.  
  67. while true do
  68.   local mobsPresent = turtle.attackDown()
  69.   local digSuccess = turtle.digDown()
  70.   local movementSuccess = turtle.down()
  71.  
  72.   if not mobsPresent and not digSuccess and not movementSuccess then
  73.     break
  74.   end
  75. end
  76.  
  77. for b = 1, X do
  78.   turtle.digUp()
  79.     while not turtle.up() do
  80.       turtle.attackUp()
  81.     end
  82.   end
  83.  
  84.   print ("Calibrated level for a flat bedrock world.")
  85.   print ("---------------------------")
  86.   print ("Starting World Eating Scripts!")
  87.   print ("---------------------------")
  88.  
  89.   turtle.dig()
  90.  
  91.   while not turtle.forward() do
  92.     turtle.attack()
  93.   end
  94.  
  95.   while true do
  96.  
  97.     for i = 1, 2 do
  98.  
  99.       for c = 1, X do
  100.         turtle.dig()
  101.         turtle.digDown()
  102.         while not turtle.down() do
  103.           turtle.attackDown()
  104.         end
  105.       end
  106.  
  107.       for d = 1, X do
  108.         turtle.dig()
  109.         turtle.digUp()
  110.         while not turtle.up() do
  111.           turtle.attackUp()
  112.         end
  113.       end
  114.  
  115.       for r = 1, 2 do
  116.         turtle.dig()
  117.         while not turtle.forward() do
  118.           turtle.attack()
  119.         end
  120.  
  121.       end
  122.  
  123.       Fuel = turtle.getFuelLevel()
  124.  
  125.       print ("Fuel level is: "..Fuel)
  126.  
  127.       if Fuel >= 8192 then
  128.  
  129.         print ("Fuel level is above minimum safe limit.")
  130.  
  131.       else
  132.  
  133.         print ("Fuel is below safe limit! Refueling!")
  134.  
  135.         turtle.select(2)
  136.         turtle.place()
  137.         turtle.suck()
  138.         turtle.refuel()
  139.         turtle.dig()
  140.        
  141.         turtle.select(3)
  142.          
  143.     end
  144.  
  145.     print ("Dropping off items")
  146.  
  147.         turtle.dig()
  148.         turtle.attack()
  149.      
  150.  
  151.     turtle.select(1)
  152.     while not turtle.place() do
  153.       turtle.select(3)
  154.       turtle.attack()
  155.       turtle.select(1)
  156.     end
  157.  
  158.     for dropslot = 3, 16 do
  159.       turtle.select(dropslot)
  160.       turtle.drop()
  161.     end
  162.  
  163.     waitForSlaves()
  164.  
  165.     turtle.select(1)
  166.  
  167.     turtle.dig()
  168.  
  169.     turtle.select(3)
  170.  
  171.   end
  172. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement