Advertisement
Birog

Tunnel_Q

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