Guest User

Tunnel_Q

a guest
Feb 23rd, 2013
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.30 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(6)
  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.  tryUp()
  140.  tryDig()
  141.  tryUp()
  142.     tryDig()
  143.     turtle.turnRight()
  144.     turtle.turnRight()
  145.     tryDig()
  146.  tryForward()
  147.  tryDig()
  148.  tryDigDown()
  149.     tryDown()
  150.     tryDig()
  151.  tryDigDown()
  152.  tryDown()
  153.  tryDig()
  154.  tryDigDown()
  155.  tryDown()
  156.  tryDig()
  157.  tryDigDown()
  158.  tryDown()
  159.  tryDig()
  160.     turtle.turnLeft()
  161.    
  162.     if n<length then
  163.         tryDig()
  164.         if not tryForward() then
  165.             print( "Aborting Tunnel." )
  166.             break
  167.         end
  168.     else
  169.         print( "Tunnel complete." )
  170.     end
  171.  
  172. end
  173.  
  174.  
  175. print( "Returning to start..." )
  176.  
  177. -- Return to where we started
  178. turtle.turnLeft()
  179. turtle.turnLeft()
  180. tryUp()
  181. torch = 0
  182. while depth > 1 do
  183.     if turtle.forward() then
  184.         depth = depth - 1
  185.   torch = torch +1
  186.   if torch == 5 then
  187.    turtle.select(15)
  188.    turtle.placeDown()
  189.    torch = 0
  190.   end
  191.     else
  192.         turtle.dig()
  193.     end
  194. end
  195. turtle.turnRight()
  196. j = 0
  197. while j < 4 do
  198.  tryDig()
  199.  tryForward()
  200.  tryDigUp()
  201.  j = j +1
  202. end
  203. turtle.turnRight()
  204. tryDown()
  205. print("Tunnel complete.")
  206. rednet.send(92,"M01 - Tunnel complete.")
  207. rednet.send(92,"M01 - Mined "..collected.." items total." )
  208. shell.run("test")
Advertisement
Add Comment
Please, Sign In to add comment