Ertyui

Mine2

Jan 21st, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.77 KB | None | 0 0
  1. ------------
  2. --slot 1 is crapslot
  3.  
  4. direction = "north"
  5. tdirection = "north"
  6. x = 0
  7. y = 0
  8. z = 0
  9.  
  10. lx = 0
  11. ly = 0
  12. lz = 0
  13.  
  14. tx = 0
  15. ty = 0
  16. tz = 0
  17. gotnumber = false
  18. dropCobble = true
  19. finished = false
  20. movedown = false
  21. full = false
  22. fuelComeBack = true
  23. digup = false
  24. digdown = false
  25. function mine()
  26.     if digup then turtle.digUp() end
  27.     if digdown then turtle.digDown()end
  28.     turtle.dig()
  29. end
  30.  
  31. function compareItems()
  32.  
  33.     if not turtle.detect() then return true end
  34.     for i=1 , 16 do
  35.         turtle.select(i)
  36.         amount = turtle.getItemCount(i)
  37.         if amount == 0 then return true end
  38.         if turtle.compare() and amount<64 then return true end
  39.        
  40.     end
  41.     return false
  42. end
  43. function dumpItems()
  44.     if not turtle.detect() then return false end
  45.     if not dropCobble then
  46.         turtle.select(1)
  47.         if not turtle.drop() and turtle.getItemCount(i) > 0 then
  48.             return false
  49.         end
  50.     end
  51.     for i=2 , 16 do
  52.         turtle.select(i)
  53.         if not turtle.drop() and turtle.getItemCount(i) > 0 then
  54.             return false
  55.         end
  56.     end
  57.     return true
  58. end
  59. function goFurther()
  60.     turtle.turnRight()
  61.     turtle.turnRight()
  62.     while ly < ty do
  63.         turtle.down()
  64.         ly = ly + 1
  65.     end
  66.     if tdirection == "west" then tz = tz - 1 end
  67.     while lz < tz do
  68.        
  69.         while not turtle.forward() do turtle.dig() end
  70.         lz = lz + 1
  71.     end
  72.     turtle.turnRight()
  73.     while lx < tx do
  74.        
  75.         while not turtle.forward() do turtle.dig() end
  76.         lx = lx + 1
  77.     end
  78.     direction = "east"
  79.     if tdirection == "north" then
  80.        
  81.         turtle.turnLeft()
  82.         direction = "north"
  83.     end
  84.     if tdirection == "west" then
  85.        
  86.         turtle.turnLeft()
  87.        
  88.         while not turtle.forward() do turtle.dig() end
  89.         lz = lz + 1
  90.         turtle.turnLeft()
  91.         direction = "west"
  92.     end
  93.  
  94. end
  95. function goBack()
  96.  
  97.     tx = lx
  98.     ty = ly
  99.     tz = lz
  100.     tdirection = direction
  101.     if direction == "west" then
  102.         turtle.turnLeft()
  103.         turtle.forward()
  104.         turtle.turnRight()
  105.     end
  106.  
  107.     --- first go back to x = 0
  108.     if direction == "north" then
  109.         direction = "west"
  110.         turtle.turnLeft()
  111.     end
  112.     if direction == "east" then
  113.         direction = "west"
  114.         turtle.turnLeft()
  115.         turtle.turnLeft()
  116.     end
  117.  
  118.     while lx > 0 do
  119.         turtle.forward()
  120.         lx = lx - 1
  121.     end
  122.     turtle.turnLeft()
  123.    
  124.     --- then go back to chest
  125.     while lz > 0 do
  126.         turtle.forward()
  127.         lz = lz - 1
  128.     end
  129.     if ly == y  and not full then
  130.         finished = true
  131.         print("I'm at the correct level")
  132.     end
  133.    
  134.     tlevel = ly
  135.     while ly > 0 do
  136.         turtle.up()
  137.         ly = ly - 1
  138.     end
  139.     if not dumpItems() then
  140.         finished = true
  141.         print("I couldn't drop my items")
  142.     end
  143.     turtle.select(1)
  144.    
  145.    
  146.     --multiple level check
  147.     levelsLeft = y-tlevel
  148.     levelToProceed = 0
  149.     if digdown then levelsLeft = levelsLeft - 1 end
  150.     if levelsLeft == 0 then finished = true end
  151.     if levelsLeft > 0 then
  152.         levelToProceed = tlevel + 1
  153.         if digdown then levelToProceed = levelToProceed + 1 end    
  154.     end
  155.     digup = false
  156.     digdown = false
  157.     if levelsLeft > 1 then
  158.         levelToProceed = levelToProceed + 1
  159.         digup = true
  160.     end
  161.     if levelsLeft > 2 then
  162.         digdown = true
  163.     end
  164.    
  165.     if full then
  166.         goFurther()
  167.     elseif not finished and movedown then
  168.        
  169.        
  170.         while ly < levelToProceed do
  171.             turtle.digDown()
  172.             turtle.down()  
  173.             ly = ly + 1
  174.         end
  175.         turtle.turnRight()
  176.         turtle.turnRight()
  177.         direction = "north"
  178.     end
  179.     movedown = false
  180.     full = false
  181. end
  182.  
  183. function move()
  184.     while not turtle.forward() do
  185.         mine()
  186.     end
  187.     if direction == "north" then lz = lz + 1
  188.     elseif direction == "west" then lx = lx - 1
  189.     elseif direction == "east" then lx = lx + 1
  190.     else lz = lz - 1
  191.     end
  192.    
  193.     if lx == 0 and direction == "north" then
  194.         turtle.turnRight()
  195.         direction = "east"
  196.     end
  197.    
  198.     if lx == x and direction == "north" then
  199.         turtle.turnLeft()
  200.         direction = "west"
  201.     end
  202.    
  203.     if lx == 0 and direction == "west" then
  204.    
  205.         turtle.turnRight()
  206.         direction = "north"
  207.         if lz == z then
  208.             if digup then turtle.digUp() end           
  209.             if digdown then turtle.digDown() end
  210.             movedown = true
  211.             goBack()
  212.         end
  213.     end
  214.    
  215.     if lx == x  and direction == "east" then
  216.        
  217.         turtle.turnLeft()
  218.         direction = "north"    
  219.         if lz == z then
  220.             if digup then turtle.digUp() end           
  221.             if digdown then turtle.digDown() end
  222.             movedown = true
  223.             goBack()
  224.         end
  225.        
  226.     end
  227.    
  228.  
  229. end
  230. function checkItems()
  231.     for i=1 , 16 do
  232.         n = turtle.getItemCount(i)
  233.         if n == 64 then
  234.             if i == 1 and dropCobble == true then
  235.                 turtle.select(1)
  236.                 turtle.drop(63)            
  237.             else
  238.                 full = true
  239.                 goBack()
  240.             end        
  241.         end
  242.     end
  243. end
  244.  
  245. function checkFuel()
  246.  
  247.     fuelNeeded = lx+lz+ly+5
  248.     fuelLevel = turtle.getFuelLevel()
  249.     if fuelComeBack and fuelLevel<fuelNeeded then
  250.         finished = true
  251.         goBack()
  252.         print("Fuel is up")
  253.     elseif fuelLevel<1 then
  254.         finished = true
  255.         print("Fuel is up")
  256.     end
  257.  
  258.  
  259. end
  260.  
  261.  
  262. ---------------------------------------start------------------------------------------
  263. turtle.select(1)
  264. term.clear()
  265. term.setCursorPos(1,1)
  266. print("What dimensions do you want?")
  267. print("")
  268.  
  269.  
  270. while not gotnumber do
  271.     term.write("X: ")
  272.     x = io.read()
  273.     gotnumber = true
  274.     if not tonumber(x) or x == "0" then
  275.         print("Please enter a number higher than 0")
  276.         gotnumber = false
  277.         end
  278.     end
  279. gotnumber = false
  280. while not gotnumber do
  281.     term.write("Y: ")
  282.     y = io.read()
  283.     gotnumber = true
  284.     if not tonumber(y) or y == "0" then
  285.         print("Please enter a number higher than 0")
  286.         gotnumber = false
  287.         end
  288.     end
  289.  
  290. gotnumber = false
  291. while not gotnumber do
  292.     term.write("Z: ")
  293.     z = io.read()
  294.     gotnumber = true
  295.     if not tonumber(z) or z == "0" then
  296.         print("Please enter a number higher than 0")
  297.         gotnumber = false
  298.         end
  299.     end
  300. answer = "no"
  301. gotnumber = false
  302. while not gotnumber do
  303.     term.write("Drop cobblstone? ")
  304.     answer = io.read()
  305.     gotnumber = true
  306.     if answer == "no" or answer == "yes" or answer == "y" or answer == "n" or answer == "true" or answer == "false" or answer == "1" or answer == "0" then break end
  307.     print("Please say yes or no")
  308.     gotnumber = false
  309. end
  310. if answer == "yes" or answer == "y" or answer == "true" or answer == "1" then dropCobble = true else dropCobble = false end
  311.  
  312. answer = "no"
  313. gotnumber = false
  314. while not gotnumber do
  315.     print("Come back when fuel is up? ")
  316.     answer = io.read()
  317.     gotnumber = true
  318.     if answer == "no" or answer == "yes" or answer == "y" or answer == "n" or answer == "true" or answer == "false" or answer == "1" or answer == "0" then break end
  319.     print("Please say yes or no")
  320.     gotnumber = false
  321. end
  322. if answer == "yes" or answer == "y" or answer == "true" or answer == "1" then fuelComeBack = true else fuelComeBack = false end
  323.  
  324.  
  325. x = math.abs(tonumber(x))-1
  326. y = math.abs(tonumber(y))-1
  327. z = math.abs(tonumber(z))
  328.  
  329. if y>0 then
  330.     digup = true
  331.     turtle.digDown()
  332.     turtle.down()
  333.     ly = ly + 1
  334. end
  335.  
  336. if y>1 then
  337.     digdown = true
  338.     turtle.digDown()
  339. end
  340.  
  341. while not finished do
  342.     --if not compareItems() then full = true goBack() end
  343.     mine()
  344.     checkItems()
  345.     move() 
  346.     checkFuel()
  347.    
  348. end
  349. turtle.turnRight()
  350. turtle.turnRight()
Advertisement
Add Comment
Please, Sign In to add comment