Advertisement
Guest User

tunnel3x3W

a guest
Jan 31st, 2013
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.14 KB | None | 0 0
  1.  
  2. --local tArgs = { ... }
  3. --if #tArgs ~= 1 then
  4. --  print( "Usage: tunnel <length>" )
  5. --  return
  6. --end
  7.  
  8.  
  9. -- Mine in a quarry pattern until we hit something we can't dig
  10. --local length = tonumber( tArgs[1] )
  11. local length = tonumber(50)
  12. if length < 1 then
  13.     print( "Tunnel length must be positive" )
  14.     return
  15. end
  16.    
  17. local depth = length
  18. local collected = 0
  19.  
  20. local function collect()
  21.     collected = collected + 1
  22.     if math.fmod(collected, 25) == 0 then
  23.         print( "Mined "..collected.." items." )
  24.     end
  25. end
  26.  
  27. local function tryDig()
  28.     while turtle.detect() do
  29.         if turtle.dig() then
  30.             collect()
  31.             sleep(0.5)
  32.         else
  33.             return false
  34.         end
  35.     end
  36.     return true
  37. end
  38.  
  39. local function tryDigUp()
  40.     while turtle.detectUp() do
  41.         if turtle.digUp() then
  42.             collect()
  43.             sleep(0.5)
  44.         else
  45.             return false
  46.         end
  47.     end
  48.     return true
  49. end
  50.  
  51. local function refuel()
  52.     local fuelLevel = turtle.getFuelLevel()
  53.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  54.         return
  55.     end
  56.    
  57.     local function tryRefuel()
  58.         for n=1,16 do
  59.             if turtle.getItemCount(n) > 0 then
  60.                 turtle.select(n)
  61.                 if turtle.refuel(1) then
  62.                     turtle.select(1)
  63.                     return true
  64.                 end
  65.             end
  66.         end
  67.         turtle.select(1)
  68.         return false
  69.     end
  70.    
  71.     if not tryRefuel() then
  72.         print( "Add more fuel to continue." )
  73.         while not tryRefuel() do
  74.             sleep(1)
  75.         end
  76.         print( "Resuming Tunnel." )
  77.     end
  78. end
  79.  
  80. local function tryUp()
  81.     refuel()
  82.     while not turtle.up() do
  83.         if turtle.detectUp() then
  84.             if not tryDigUp() then
  85.                 return false
  86.             end
  87.         elseif turtle.attackUp() then
  88.             collect()
  89.         else
  90.             sleep( 0.5 )
  91.         end
  92.     end
  93.     return true
  94. end
  95.  
  96. local function tryDown()
  97.     refuel()
  98.     while not turtle.down() do
  99.         if turtle.detectDown() then
  100.             if not tryDigDown() then
  101.                 return false
  102.             end
  103.         elseif turtle.attackDown() then
  104.             collect()
  105.         else
  106.             sleep( 0.5 )
  107.         end
  108.     end
  109.     return true
  110. end
  111.  
  112. local function tryForward()
  113.     refuel()
  114.     while not turtle.forward() do
  115.         if turtle.detect() then
  116.             if not tryDig() then
  117.                 return false
  118.             end
  119.         elseif turtle.attack() then
  120.             collect()
  121.         else
  122.             sleep( 0.5 )
  123.         end
  124.     end
  125.     return true
  126. end
  127.  
  128. print( "Tunnelling..." )
  129.  
  130. for n=1,length do
  131.     turtle.placeDown()
  132.     tryDigUp()
  133.     turtle.turnLeft()
  134.     tryDig()
  135.     tryUp()
  136.  tryDig()
  137.  tryUp()
  138.     tryDig()
  139.     turtle.turnRight()
  140.     turtle.turnRight()
  141.     tryDig()
  142.     tryDown()
  143.     tryDig()
  144.  tryDown()
  145.  tryDig()
  146.     turtle.turnLeft()
  147.    
  148.     if n<length then
  149.         tryDig()
  150.         if not tryForward() then
  151.             print( "Aborting Tunnel." )
  152.             break
  153.         end
  154.     else
  155.         print( "Tunnel complete." )
  156.     end
  157.  
  158. end
  159.  
  160.  
  161. print( "Returning to start..." )
  162.  
  163. -- Return to where we started
  164. turtle.turnLeft()
  165. turtle.turnLeft()
  166. tryUp()
  167. torch = 0
  168. while depth > 1 do
  169.     if turtle.forward() then
  170.         depth = depth - 1
  171.   torch = torch +1
  172.   if torch == 5 then
  173.    turtle.select(15)
  174.    turtle.placeDown()
  175.    torch = 0
  176.   end
  177.     else
  178.         turtle.dig()
  179.     end
  180. end
  181. turtle.turnRight()
  182. j = 0
  183. while j < 3 do
  184.  tryDig()
  185.  tryForward()
  186.  tryDigUp()
  187.  j = j +1
  188. end
  189. turtle.turnRight()
  190. tryDown()
  191. print("Tunnel complete.")
  192. rednet.send(92,"M01 - Tunnel complete.")
  193. rednet.send(92,"M01 - Mined "..collected.." items total." )
  194. shell.run("test")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement