Advertisement
sinkir

lua turtle myexcavate 2

Sep 20th, 2013
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 24.90 KB | None | 0 0
  1. -- pastebin get YLxi9KKX startup
  2. -- -------------------------------------------
  3. -- My excavate -Sinkir-
  4. -- Version 2.0
  5. -- slot 1 ender Chest resources      +-+-+-+-+
  6. -- slot 2 ender Chest fuel           |C|C|L|F|
  7. -- slot 3 chuck Loader or anchor     |S|D| | |
  8. -- slot 4 Fuel                       | | | | |
  9. -- slot 5 Stone(block to ignore 1)   | | | | |
  10. -- slot 6 Dirt (block to ignore 2)   +-+-+-+-+
  11. -- -------------------------------------------
  12. --   _____
  13. --  |  ___|   _ _ __   ___
  14. --  | |_ | | | | '_ \ / __|
  15. --  |  _|| |_| | | | | (__
  16. --  |_|   \__,_|_| |_|\___|
  17. --
  18. dataFilePath = "data"
  19. -- Exemple of data file:
  20. -- --------------------
  21. -- 1,0,0,n
  22. -- 2,0,0,n
  23. -- 3,0,0,n
  24. -- 4,0,0,n
  25. -- 4,0,1,n
  26. -- 4,0,2,n
  27. -- 4,0,3,n
  28. -- 4,0,3,s
  29. -- 3,0,3,s
  30. -- 2,0,3,s
  31. -- 1,0,3,s
  32. -- ...
  33. -- --------------------
  34. -- we keep 5 last move
  35. -- format : x,y,z,facing
  36. --               (n e s w)
  37. -- last line keep the info of the actual action
  38. --
  39. --
  40. -- `.+x       |-z     +y.'
  41. --   `.       |       .'
  42. --     `.     |up   .'
  43. --  north`.   |   .' east
  44. --         `. | .'
  45. --           :+:
  46. --         .' | `.
  47. --   west.'   |   `. south
  48. --     .'     |     `.
  49. --   .'       |down   `.
  50. -- .'-y     +z|       -x`.
  51. --
  52. -- yes +z is for down
  53.  
  54.  
  55. -- si x est egale a 0 on est sur la colone de bloc devan l'anchor
  56. -- si x est egale a 8 on est sur la colone de fin
  57. -- si y est egale a 1 on remonte pour retrouvé l'anchor
  58. -- si y est egale a 0 on continue de dessendre
  59. -- si z est egale a 0 on est sur la ligne de bloc de l'anchor
  60.  
  61. -- si x = 8 && z == 0 on dessend
  62. -- si x = 8 && z == 3 on stop dessendre on ce retourne
  63. -- si x = 0 && z == 3 on dessend
  64. -- si x = 0 && z == 6 on stop dessendre on ce retourne
  65. -- si x = 8 && z == 6 on dessend
  66. -- si x = 8 && z == 9 on stop dessendre on ce retourne
  67.  
  68. function testFuel()
  69.     if(fuel() < 16)then
  70.         print('Plus de coco, test de refuel')
  71.         select(4)
  72.         turtle.refuel(1)
  73.     end
  74.     if(count(4) == 0)then
  75.         return false
  76.     end
  77.     return true
  78. end
  79. function checkFuel()
  80.     if(turtle.compareTo(4) == true)then
  81.         if(count(4) < 64) then
  82.             turtle.transferTo(4, turtle.getItemSpace(4))
  83.         end
  84.     end
  85. end
  86. function go(i)
  87.     if(i == nil)then
  88.         i = 0
  89.     end
  90.  
  91.  
  92.     if(turtle.detect()==true)then
  93.         if(turtle.dig()==false)then
  94.             fileSet(dataFilePath.."-IMPORTANT", "move,digUp,up")
  95.             z = z-1
  96.             return false
  97.         elseif(turtle.detect()==true)then
  98.             while(i<50)do
  99.                 i=i+1
  100.                 if(turtle.dig()==true)then
  101.                     if(turtle.forward()==true)then
  102.                         return true
  103.                     else
  104.                         return go(i)
  105.                     end
  106.                 end
  107.                 sleep(0.2)
  108.                
  109.             end
  110.         else
  111.             if(turtle.forward()==true)then
  112.                 return true
  113.             else
  114.                 return go(i)
  115.             end
  116.         end
  117.     else
  118.         if(turtle.forward()==true)then
  119.             return true
  120.         else
  121.             while(i<50 and turtle.attack() == true)do
  122.                 i=i+1
  123.                 sleep(0.2)
  124.                
  125.             end
  126.             return go(0)
  127.         end
  128.     end
  129.  
  130.     return false
  131. end
  132.  
  133. function up(i)
  134.  
  135.     if(i == nil)then
  136.         i = 0
  137.     end
  138.  
  139.    
  140.     if(turtle.detectUp()==true)then
  141.         select(7)
  142.         if(turtle.digUp()==false)then
  143.             return false
  144.         elseif(turtle.detectUp()==true)then
  145.             while(i<50)do
  146.                 i=i+1
  147.                 if(turtle.digUp()==true)then
  148.                     if(turtle.up()==true)then
  149.                         return true
  150.                     else
  151.                         return up(i)
  152.                     end
  153.                 end
  154.                 sleep(0.2)
  155.                
  156.             end
  157.         else
  158.             if(turtle.up()==true)then
  159.                 return true
  160.             else
  161.                 return up(i)
  162.             end
  163.         end
  164.     else
  165.         if(turtle.up()==true)then
  166.             return true
  167.         else
  168.             while(i<50 and turtle.attackUp() == true)do
  169.                 i=i+1
  170.                 sleep(0.2)
  171.                
  172.             end
  173.             return up(0)
  174.         end
  175.     end
  176.  
  177.     return false
  178. end
  179.  
  180. function down(i)
  181.     if(i == nil)then
  182.         i = 0
  183.     end
  184.    
  185.     if(turtle.detectDown()==true)then
  186.         select(7)
  187.         if(turtle.digDown()==false)then
  188.             return false
  189.         elseif(turtle.detectDown()==true)then
  190.             while(i<50)do
  191.                 i=i+1
  192.                 if(turtle.digDown()==true)then
  193.                     if(turtle.down()==true)then
  194.                         return true
  195.                     else
  196.                         return down(i)
  197.                     end
  198.                 end
  199.                 sleep(0.2)
  200.                
  201.             end
  202.         else
  203.             if(turtle.down()==true)then
  204.                 return true
  205.             else
  206.                 return down(i)
  207.             end
  208.         end
  209.     else
  210.         if(turtle.down()==true)then
  211.             return true
  212.         else
  213.             while(i<50 and turtle.attackDown() == true)do
  214.                 i=i+1
  215.                 sleep(0.2)
  216.                
  217.             end
  218.             return down(0)
  219.         end
  220.     end
  221.  
  222.     return false
  223. end
  224. left = function()
  225.     if(turtle.turnLeft()==false)then
  226.         sleep(1)
  227.         left()
  228.     else
  229.         return true
  230.     end
  231. end
  232.  
  233. right = function()
  234.     if(turtle.turnRight()==false)then
  235.         sleep(1)
  236.         right()
  237.     else
  238.         return true
  239.     end
  240. end
  241.  
  242.  
  243. function downGps()
  244.     if(down(0)==true)then
  245.         z=z+1
  246.         return savedata()
  247.     else
  248.         print('down return false x ='..x)
  249.         if(x == numberBlock)then
  250.             if(y == 0)then
  251.            
  252.                     fileSet(dataFilePath.."-IMPORTANT", "move,right,go,testUpDown,test,right")
  253.                     local ligne1 = x..","..tostring(y+1)..","..z..",s\n"
  254.                     local ligne2 = x..","..tostring(y+1)..","..z..",e\n"
  255.                     local ligne3 = x..","..y..","..z..",e\n"
  256.                     local ligne4 = tabCoord[1][1]..","..tabCoord[1][2]..","..tabCoord[1][3]..","..tabCoord[1][4].."\n"
  257.                     local ligne5 = tabCoord[2][1]..","..tabCoord[2][2]..","..tabCoord[2][3]..","..tabCoord[2][4].."\n"
  258.                     local ligne6 = numberBlock..",0"
  259.                     return fileSet(dataFilePath, ligne1..ligne2..ligne3..ligne4..ligne5..ligne6)
  260.            
  261.             else
  262.                 print("wtf? call DownGps with y ="..y)
  263.             end
  264.         else
  265.             if(y == 0)then
  266.                     fileSet(dataFilePath.."-IMPORTANT", "move,left,go,testUpDown,test,left")
  267.                     local ligne1 = x..","..tostring(y+1)..","..z..",n\n"
  268.                     local ligne2 = x..","..tostring(y+1)..","..z..",e\n"
  269.                     local ligne3 = x..","..y..","..z..",e\n"
  270.                     local ligne4 = tabCoord[1][1]..","..tabCoord[1][2]..","..tabCoord[1][3]..","..tabCoord[1][4].."\n"
  271.                     local ligne5 = tabCoord[2][1]..","..tabCoord[2][2]..","..tabCoord[2][3]..","..tabCoord[2][4].."\n"
  272.                     local ligne6 = numberBlock..",0"
  273.                     return fileSet(dataFilePath, ligne1..ligne2..ligne3..ligne4..ligne5..ligne6)
  274.             else
  275.                 print("wtf? call DownGps with y ="..y)
  276.             end
  277.         end
  278.         return true
  279.     end
  280. end
  281. function savedata()
  282.     local ligne1 = x..","..y..","..z..","..f.."\n"
  283.     local ligne2 = tabCoord[1][1]..","..tabCoord[1][2]..","..tabCoord[1][3]..","..tabCoord[1][4].."\n"
  284.     local ligne3 = tabCoord[2][1]..","..tabCoord[2][2]..","..tabCoord[2][3]..","..tabCoord[2][4].."\n"
  285.     local ligne4 = tabCoord[3][1]..","..tabCoord[3][2]..","..tabCoord[3][3]..","..tabCoord[3][4].."\n"
  286.     local ligne5 = tabCoord[4][1]..","..tabCoord[4][2]..","..tabCoord[4][3]..","..tabCoord[4][4].."\n"
  287.     local ligne6 = numberBlock..",0"
  288.     return fileSet(dataFilePath, ligne1..ligne2..ligne3..ligne4..ligne5..ligne6)
  289.  
  290. end
  291. function gps()
  292.  
  293.     if(x == 0 and y == 0 and z ==0 and f == "n")then
  294.         if(go()==true)then
  295.             x = x+1
  296.         end
  297.         return savedata()
  298.     end
  299.     if(x == 0 and y == 1 and z ==0 and f == "s")then
  300.         if(right()==true)then
  301.             f = "w"
  302.         end
  303.         return savedata()
  304.     end
  305.     if(x == 0 and y == 1 and z ==0 and f == "w")then
  306.         if(go()==true)then
  307.             y=y-1
  308.         end
  309.         return savedata()
  310.     end
  311.     if(x == 0 and y == 0 and z ==0 and f == "w")then
  312.         select(3)
  313.         if(turtle.compareUp() == true)then 
  314.             -- on est en dessou du chuck loader, tout va bien :)
  315.             print('My chunck loader <3')
  316.             fileSet(dataFilePath.."-IMPORTANT", "changeLoader,left,left,go,testUpDown,go,testUpDown,test,digUp,placeUp,back,back,digUp,go,go,left")
  317.             return fileSet(dataFilePath, "0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n\n"..numberBlock..",0")
  318.  
  319.         else
  320.             print("i'm in 0,0,0 and ... no Anchor ? :'(")
  321.         end
  322.         return savedata()
  323.     end
  324.  
  325.  
  326.  
  327.     if(x > 0 and x < numberBlock)then
  328.         if(f=="n")then
  329.             if(go()==true)then
  330.                 x = x+1
  331.             end
  332.         elseif(f=="s")then
  333.             if(go()==true)then
  334.                 x = x-1
  335.             end
  336.         end
  337.         return savedata()
  338.     end
  339.  
  340.     if(x == numberBlock)then
  341.         if(f == "e")then
  342.             if(right()==true)then
  343.                 f = "s"
  344.             end
  345.             return savedata()
  346.         end
  347.        
  348.        
  349.         if(z == 0)then
  350.             if(y == 0)then
  351.                 return downGps()
  352.             else
  353.                 if(f == "n")then
  354.                     if(right()==true)then
  355.                         f = "e"
  356.                     end
  357.                 elseif(f == "e")then
  358.                     if(right()==true)then
  359.                         f = "s"
  360.                     end            
  361.                 else
  362.                     if(go()==true)then
  363.                         x = x-1
  364.                     end
  365.                 end
  366.             end
  367.             return savedata()
  368.         end
  369.         if(z == tonumber(tabCoord[2][3]))then
  370.             -- si z est le meme que au dernier mouvement-1
  371.             if(f == "s")then
  372.                 if(go()==true)then
  373.                     x = x-1
  374.                 end
  375.             else
  376.                 if(y == 0)then
  377.                     return downGps()
  378.                 else
  379.                     if(up()==true)then
  380.                         z = z-1
  381.                     end
  382.                 end
  383.             end
  384.         else
  385.             if(tonumber(tabCoord[2][3]) == tonumber(tabCoord[3][3]))then
  386.                 -- si, au avant-dernier mouvement on venais du meme z
  387.                 -- on continue de dessendre
  388.                 if(y == 0)then
  389.                     return downGps()
  390.                 else
  391.                     if(up()==true)then
  392.                         z = z-1
  393.                     end
  394.                 end
  395.             else
  396.                 if(tonumber(tabCoord[3][3]) == tonumber(tabCoord[4][3]))then
  397.                     -- si, au avant-avant-dernier mouvement on venais du meme z
  398.                     -- on dessend encor une fois
  399.                     if(y == 0)then
  400.                         return downGps()
  401.                     else
  402.                         if(up()==true)then
  403.                             z = z-1
  404.                         end
  405.                     end
  406.                 else
  407.                     -- on ce retourne
  408.                     if(right()==true)then
  409.                         f = "e"
  410.                     end
  411.                 end
  412.             end
  413.         end
  414.         return savedata()
  415.     end
  416.  
  417.  
  418.     if(x == 0)then
  419.         if(f == "e")then
  420.             if(left()==true)then
  421.                 f = "n"
  422.             end
  423.             return savedata()
  424.         end
  425.         if(z == 0)then
  426.             if(y == 0)then
  427.                 -- change anchor (not your bisnesse gps dude)
  428.             end
  429.             return savedata()
  430.         end
  431.  
  432.         --print(z.." == "..tabCoord[2][3])
  433.         if(z == tonumber(tabCoord[2][3]))then
  434.             -- si z est le meme que au dernier mouvement-1
  435.             if(f == "n")then
  436.                 if(go()==true)then
  437.                     x = x+1
  438.                 end
  439.             else
  440.                 if(y == 0)then
  441.                     return downGps()
  442.                 else
  443.                     if(up()==true)then
  444.                         z = z-1
  445.                     end
  446.                 end
  447.             end
  448.         else
  449.             if(tonumber(tabCoord[2][3]) == tonumber(tabCoord[3][3]))then
  450.                 -- si, au avant-dernier mouvement on venais du meme z
  451.                 -- on continue de dessendre
  452.                 if(y == 0)then
  453.                     return downGps()
  454.                 else
  455.                     if(up()==true)then
  456.                         z = z-1
  457.                     end
  458.                 end
  459.             else
  460.                 if(tonumber(tabCoord[3][3]) == tonumber(tabCoord[4][3]))then
  461.                     -- si, au avant-avant-dernier mouvement on venais du meme z
  462.                     -- on dessend encor une fois
  463.                     if(y == 0)then
  464.                         return downGps()
  465.                     else
  466.                         if(up()==true)then
  467.                             z = z-1
  468.                         end
  469.                     end
  470.                 else
  471.                     -- on ce retourne
  472.                    
  473.                     if(left()==true)then
  474.                         f = "e"
  475.                     end
  476.                 end
  477.             end
  478.         end
  479.         return savedata()
  480.     end
  481.  
  482. end
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490. function getCoordinates()
  491.     local r = {}
  492.     local tab = split(fileGet(dataFilePath), "\n")
  493.     for k,v in pairs(tab) do
  494.         table.insert(r,split(v, ","))
  495.     end
  496.     return r
  497. end
  498.  
  499. --
  500. --
  501. count = function(id)
  502.     return turtle.getItemCount(id)
  503. end
  504. back = function()
  505.     return turtle.back()
  506. end
  507. select = function(id)
  508.     return turtle.select(id)
  509. end
  510. fuel = function()
  511.     return turtle.getFuelLevel()
  512. end
  513. move = function(id, nb)
  514.     return turtle.transferTo(id, nb)
  515. end
  516. --
  517. --
  518. function fileGet(path)
  519.     if(fs.exists(path))then
  520.         tabFile = fs.open(path, "r")
  521.         text = tabFile.readAll()
  522.         tabFile.close()
  523.         return text
  524.     else
  525.         print("fileGet() File not found.")
  526.         print(path)
  527.         return false
  528.     end
  529. end
  530.  
  531. function fileSet(path, text)
  532.     if(fs.isReadOnly(path))then
  533.         print("fileSet() File is read only.")
  534.         print(path)
  535.         return false
  536.     else
  537.         tabFile = fs.open(path, "w")
  538.         tabFile.write(text)
  539.         tabFile.close()
  540.         return true
  541.     end
  542. end
  543.  
  544. function split(str, pat)
  545.     -- source of the function :
  546.     -- http://lua-users.org/wiki/SplitJoin
  547.     -- Compatibility: Lua-5.1
  548.     local t = {}  -- NOTE: use {n = 0} in Lua-5.0
  549.     local fpat = "(.-)" .. pat
  550.     local last_end = 1
  551.     local s, e, cap = str:find(fpat, 1)
  552.     while s do
  553.         if s ~= 1 or cap ~= "" then
  554.             table.insert(t,cap)
  555.         end
  556.         last_end = e+1
  557.         s, e, cap = str:find(fpat, last_end)
  558.     end
  559.     if last_end <= #str then
  560.         cap = str:sub(last_end)
  561.         table.insert(t, cap)
  562.     end
  563.     return t
  564. end
  565.  
  566. function printTab(tab)
  567.     for key, value in pairs(tab) do
  568.         print("[".. key .."]"..value.."")  
  569.     end
  570. end
  571.  
  572. --
  573. --
  574.  
  575. function init()
  576.     if(count(1) == 0)then
  577.         print("No ender chest for resources in slot 1.., exit")
  578.         return false
  579.     end
  580.     if(count(2) == 0)then
  581.         print("No ender chest for fuel in slot 2, exit")
  582.         return false
  583.     end
  584.     if(count(3) == 0)then
  585.         print("No chuck loader/anchor in slot 3, exit")
  586.         return false
  587.     end
  588.     if(count(4) == 0)then
  589.         print("No fuel in slot 4, exit")
  590.         return false
  591.     end
  592.     if(count(5) == 0)then
  593.         print("No block to ignore in slot 5, exit")
  594.         return false
  595.     end
  596.     if(count(6) == 0)then
  597.         print("No block to ignore in slot 6, exit")
  598.         return false
  599.     end
  600.     select(3)
  601.     if(count(3) == 2)then
  602.         if(turtle.detectUp() == true)then
  603.             while(turtle.digUp()==true)do
  604.                 sleep(2)
  605.             end
  606.             if(turtle.placeUp()==true)then
  607.                 return true
  608.             else
  609.                 print("Can' placeUp the loader/anchor  :'(")
  610.                 return false
  611.             end
  612.         else
  613.             if(turtle.placeUp()==true)then
  614.                 return true
  615.             else
  616.                 print("Can' placeUp the loader/anchor  :'(")
  617.                 return false
  618.             end        
  619.         end
  620.     else
  621.         if(turtle.compareUp()==true)then
  622.             -- ok we are under the chuck loader/anchor
  623.             return true
  624.         else
  625.             print("I'm lost :'(")
  626.             return false
  627.         end
  628.     end
  629.     return true
  630. end
  631.  
  632.  
  633. function checkSlotVide()
  634.     if(count(16) == 0 and count(15) == 0)then
  635.         return true
  636.     end
  637.     return false
  638. end
  639. function checkInv(nbflag)
  640.     -- check si il reste un slot de vide
  641.     if(checkSlotVide() == false) then
  642.         if(videInv(nbflag)==false)then
  643.             return false
  644.         end
  645.     end
  646.     if(testFuel() == false) then
  647.         if(getFuel()==false)then
  648.             return false
  649.         end
  650.     end
  651.     return true
  652. end
  653.  
  654.  
  655.  
  656. function getFuel()
  657.     select(7)
  658.     if(turtle.detect()==false)then
  659.         while(turtle.attack()==true)do
  660.             sleep(0.1)
  661.         end
  662.         select(2)
  663.         if(turtle.place() == true)then
  664.             fileSet(dataFilePath.."-IMPORTANT", "getFuel,suck,dig")
  665.             return false
  666.         end
  667.     elseif(turtle.detectUp()==false)then
  668.         while(turtle.attackUp()==true)do
  669.             sleep(0.1)
  670.         end
  671.         select(2)
  672.         if(turtle.placeUp() == true)then
  673.             fileSet(dataFilePath.."-IMPORTANT", "getFuel,suckUp,digUp")
  674.             return false
  675.         end
  676.     elseif(turtle.detectDown()==false)then
  677.         while(turtle.attackDown()==true)do
  678.             sleep(0.1)
  679.         end
  680.         select(2)
  681.         if(turtle.placeDown() == true)then
  682.             fileSet(dataFilePath.."-IMPORTANT", "getFuel,suckDown,digDown")
  683.             return false
  684.         end
  685.     else
  686.         if(back()==true)then
  687.             sleep(0.2)
  688.             if(turtle.detect()==false)then
  689.                 select(2)
  690.                 if(turtle.place() == true)then
  691.                     fileSet(dataFilePath.."-IMPORTANT", "getFuel,suck,dig,go")
  692.                     return false
  693.                 else
  694.                     go()
  695.                     getFuel()
  696.                 end
  697.             end
  698.         end
  699.         if(turtle.detect()==true)then
  700.             if(turtle.dig()==false)then
  701.                 if(up()==true)then
  702.                     if(turtle.detectDown()==false)then
  703.                         select(2)
  704.                         if(turtle.placeDown() == true)then
  705.                             fileSet(dataFilePath.."-IMPORTANT", "getFuel,suckDown,digDown,down")
  706.                             return false
  707.                         else
  708.                             down()
  709.                             getFuel()
  710.                         end
  711.                     end
  712.                 elseif(down()==true)then
  713.                     if(turtle.detectUp()==false)then
  714.                         select(2)
  715.                         if(turtle.placeUp() == true)then
  716.                             fileSet(dataFilePath.."-IMPORTANT", "getFuel,suckUp,digUp,up")
  717.                             return false
  718.                         else
  719.                             up()
  720.                             getFuel()
  721.                         end
  722.                     end
  723.                 else
  724.                     print("can't go: back,up,down and can't dig")
  725.                     while (right()==false)do
  726.                         sleep(0.1)
  727.                     end
  728.                     while (right()==false)do
  729.                         sleep(0.1)
  730.                     end
  731.                     while (dig()==true)do
  732.                         sleep(0.1)
  733.                     end
  734.                     select(1)
  735.                     if(turtle.place() == true)then
  736.                         fileSet(dataFilePath.."-IMPORTANT", "getFuel,suck,dig,left,left")
  737.                         return false
  738.                     else
  739.                         getFuel()
  740.                     end
  741.                 end
  742.             else
  743.                 getFuel()
  744.             end
  745.         elseif(turtle.digUp()==true)then
  746.             getFuel()
  747.         elseif(turtle.digDown()==true)then
  748.             getFuel()
  749.         end
  750.     end
  751.     return true
  752. end
  753.  
  754. function videInv(nbflag)
  755.     select(7)
  756.     if(turtle.detect()==false)then
  757.         while(turtle.attack()==true)do
  758.             sleep(0.1)
  759.         end
  760.         select(1)
  761.         if(turtle.place() == true)then
  762.             if(nbflag == 0)then
  763.                 fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAll,dig")
  764.             else
  765.                 fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAll,dig")
  766.             end
  767.             return false
  768.         end
  769.     elseif(turtle.detectUp()==false)then
  770.         while(turtle.attackUp()==true)do
  771.             sleep(0.1)
  772.         end
  773.         select(1)
  774.         if(turtle.placeUp() == true)then
  775.             if(nbflag == 0)then
  776.                 fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAllUp,digUp")
  777.             else
  778.                 fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAllUp,digUp")
  779.             end
  780.             return false
  781.         end
  782.     elseif(turtle.detectDown()==false)then
  783.         while(turtle.attackDown()==true)do
  784.             sleep(0.1)
  785.         end
  786.         select(1)
  787.         if(turtle.placeDown() == true)then
  788.             if(nbflag == 0)then
  789.                 fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAllDown,digDown")
  790.             else
  791.                 fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAllDown,digDown")
  792.             end
  793.             return false
  794.         end
  795.     else
  796.         if(back()==true)then
  797.             sleep(0.2)
  798.             if(turtle.detect()==false)then
  799.                 select(1)
  800.                 if(turtle.place() == true)then
  801.                     if(nbflag == 0)then
  802.                         fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAll,dig,go")
  803.                     else
  804.                         fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAll,dig,go")
  805.                     end
  806.                     return false
  807.                 else
  808.                     go()
  809.                     videInv(0)
  810.                 end
  811.             end
  812.         end
  813.         if(turtle.detect()==true)then
  814.             if(turtle.dig()==false)then
  815.                 if(up()==true)then
  816.                     if(turtle.detectDown()==false)then
  817.                         select(1)
  818.                         if(turtle.placeDown() == true)then
  819.                             if(nbflag == 0)then
  820.                                 fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAllDown,digDown,down")
  821.                             else
  822.                                 fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAllDown,digDown,down")
  823.                             end
  824.                             return false
  825.                         else
  826.                             down()
  827.                             videInv(0)
  828.                         end
  829.                     end
  830.                 elseif(down()==true)then
  831.                     if(turtle.detectUp()==false)then
  832.                         select(1)
  833.                         if(turtle.placeUp() == true)then
  834.                             if(nbflag == 0)then
  835.                                 fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAllUp,digUp,up")
  836.                             else
  837.                                 fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAllUp,digUp,up")
  838.                             end
  839.                             return false
  840.                         else
  841.                             up()
  842.                             videInv(0)
  843.                         end
  844.                     end
  845.                 else
  846.                     print("can't go: back,up,down and can't dig")
  847.                     while (right()==false)do
  848.                         sleep(0.1)
  849.                     end
  850.                     while (right()==false)do
  851.                         sleep(0.1)
  852.                     end
  853.                     while (dig()==true)do
  854.                         sleep(0.1)
  855.                     end
  856.                     select(1)
  857.                     if(turtle.place() == true)then
  858.                         if(nbflag == 0)then
  859.                             fileSet(dataFilePath.."-IMPORTANT", "videInv,dropAll,dig,left,left")
  860.                         else
  861.                             fileSet(dataFilePath.."-IMPORTANT2", "videInv,dropAll,dig,left,left")
  862.                         end
  863.                         return false
  864.                     else
  865.                         videInv(0)
  866.                     end
  867.                 end
  868.             else
  869.                 videInv(0)
  870.             end
  871.         elseif(select(3)==true and turtle.compareUp() == false and turtle.digUp()==true)then
  872.             videInv(0)
  873.         elseif(turtle.digDown()==true)then
  874.             videInv(0)
  875.         end
  876.     end
  877.     return true
  878. end
  879.  
  880. function testUpDown(nbflag)
  881.     if(turtle.detectUp() == true or turtle.detectDown())then
  882.         select(5)
  883.         flagDown = turtle.compareDown()
  884.         flagUp = turtle.compareUp()
  885.         select(3)
  886.         if(turtle.compareUp()==true)then
  887.             flagUp = true
  888.         end
  889.         select(6)
  890.         if(flagDown == false and turtle.compareDown() == false)then
  891.             repeat
  892.                 flag = turtle.suckDown()
  893.                 if(flag == true)then
  894.                     if(checkInv(nbflag)==false)then
  895.                         return false
  896.                     end
  897.                 end
  898.             until flag == false
  899.             turtle.digDown()
  900.             if(checkInv(nbflag)==false)then
  901.                 return false
  902.             end
  903.         end
  904.         if(flagUp == false and turtle.compareUp() == false)then
  905.             repeat
  906.                 flag = turtle.suckUp()
  907.                 if(flag == true)then
  908.                     if(checkInv(nbflag)==false)then
  909.                         return false
  910.                     end
  911.                 end
  912.             until flag == false
  913.             turtle.digUp()
  914.             if(checkInv(nbflag)==false)then
  915.                 return false
  916.             end
  917.         end
  918.     end
  919.     return true
  920. end
  921. function test(nbflag)
  922.     if(turtle.detect() == true)then
  923.         select(5)
  924.         if(turtle.compare() == false)then
  925.             select(6)
  926.             if(turtle.compare() == false)then
  927.                 repeat
  928.                     flag = turtle.suck()
  929.                     if(flag == true)then
  930.                         if(checkInv(nbflag)==false)then
  931.                             return false
  932.                         end
  933.                     end
  934.                 until flag == false
  935.                 turtle.dig()
  936.                 if(checkInv(nbflag)==false)then
  937.                     return false
  938.                 end
  939.             end
  940.         end
  941.     end
  942.     return true
  943. end
  944.  
  945. function Shaundi()
  946.     local save = function(data, path)
  947.         local str = data[1]..","
  948.         for k,v in ipairs(data)do
  949.             if(k>2)then
  950.                 str = str..v
  951.                 if(data[k+1] ~= nil)then
  952.                     str = str..","
  953.                 end
  954.             end
  955.         end
  956.         if(str == data[1]..",")then
  957.             fs.delete(dataFilePath..path)
  958.         else
  959.             fileSet(dataFilePath..path, str)
  960.         end
  961.     end
  962.     local path = "-IMPORTANT"
  963.     if(fs.exists(dataFilePath.."-IMPORTANT2")==true)then
  964.         path = "-IMPORTANT2"
  965.     end
  966.     local data = split(fileGet(dataFilePath..path), ",")
  967.    
  968.    
  969.    
  970.     if(data[1] == "videInv")then
  971.         select(1)
  972.     end
  973.     if(data[1] == "getFuel")then
  974.         select(2)
  975.     end
  976.     if(data[1] == "changeLoader")then
  977.         select(7)
  978.     end
  979.    
  980.    
  981.  
  982.     if(data[2]=="test")then
  983.         if(test(1)==true)then
  984.             save(data, path)
  985.         end
  986.     elseif(data[2]=="testUpDown")then
  987.         if(testUpDown(1)==true)then
  988.             save(data, path)
  989.         end
  990.     elseif(data[2]=="go")then
  991.         if(go()==true)then
  992.             save(data, path)
  993.         end
  994.     elseif(data[2]=="back")then
  995.         if(back()==true)then
  996.             save(data, path)
  997.         end
  998.     elseif(data[2]=="left")then
  999.         if(left()==true)then
  1000.             save(data, path)
  1001.         end    
  1002.     elseif(data[2]=="right")then
  1003.         if(right()==true)then
  1004.             save(data, path)
  1005.         end    
  1006.     elseif(data[2]=="up")then
  1007.         if(up()==true)then
  1008.             save(data, path)
  1009.         end
  1010.     elseif(data[2]=="down")then
  1011.         if(down()==true)then
  1012.             save(data, path)
  1013.         end
  1014.     elseif(data[2]=="dig")then
  1015.         if(turtle.dig()==true)then
  1016.             save(data, path)
  1017.         end
  1018.     elseif(data[2]=="digUp")then
  1019.         if(data[1] == "changeLoader")then
  1020.             select(3)
  1021.         end    
  1022.        
  1023.         if(turtle.detectUp() == false or turtle.digUp()==true)then
  1024.             save(data, path)
  1025.         end    
  1026.        
  1027.     elseif(data[2]=="digDown")then
  1028.         if(turtle.digDown()==true)then
  1029.             save(data, path)
  1030.         end
  1031.     elseif(data[2]=="placeUp")then
  1032.         if(turtle.detectUp() == true)then
  1033.             turtle.digUp()
  1034.         else
  1035.             if(data[1] == "changeLoader")then
  1036.                 select(3)
  1037.             end
  1038.             if(turtle.placeUp()==true)then
  1039.                 save(data, path)
  1040.             end    
  1041.         end
  1042.     end
  1043.    
  1044.    
  1045.     if(data[1] == "videInv")then
  1046.         if(data[2]=="dropAll")then
  1047.             if(dropAll("go")==true)then
  1048.                 save(data, path)
  1049.             end
  1050.         elseif(data[2]=="dropAllUp")then
  1051.             if(dropAll("up")==true)then
  1052.                 save(data, path)
  1053.             end
  1054.         elseif(data[2]=="dropAllDown")then
  1055.             if(dropAll("down")==true)then
  1056.                 save(data, path)
  1057.             end
  1058.         end
  1059.     end
  1060.     if(data[1] == "getFuel")then
  1061.         if(data[2]=="suck")then
  1062.             select(4)
  1063.             if(count(4)>0)then
  1064.                 turtle.transferTo(16, count(4))
  1065.             end
  1066.             if(suck("go")==true)then
  1067.                 save(data, path)
  1068.             end
  1069.         elseif(data[2]=="suckUp")then
  1070.             select(4)
  1071.             if(count(4)>0)then
  1072.                 turtle.transferTo(16, count(4))
  1073.             end
  1074.             if(suck("up")==true)then
  1075.                 save(data, path)
  1076.             end
  1077.         elseif(data[2]=="suckDown")then
  1078.             select(4)
  1079.             if(count(4)>0)then
  1080.                 turtle.transferTo(16, count(4))
  1081.             end
  1082.             if(suck("down")==true)then
  1083.                 save(data, path)
  1084.             end
  1085.         end
  1086.     end
  1087.        
  1088.     select(7)
  1089.    
  1090. end
  1091. function suck(dir)
  1092.     local flag
  1093.     if(dir == "go")then
  1094.         flag = turtle.suck()
  1095.     elseif(dir == "up")then
  1096.         flag = turtle.suckUp()
  1097.     elseif(dir == "down")then
  1098.         flag = turtle.suckDown()
  1099.     end
  1100.    
  1101.     if(flag == false)then
  1102.         return false
  1103.     end
  1104.     return true
  1105. end
  1106.  
  1107. function dropAll(dir)
  1108.     local flag
  1109.     for i=7,16 do
  1110.         if(count(i)>0)then
  1111.             select(i)
  1112.             checkFuel()
  1113.             if(dir == "go")then
  1114.                 flag = turtle.drop()
  1115.             elseif(dir == "up")then
  1116.                 flag = turtle.dropUp()
  1117.             elseif(dir == "down")then
  1118.                 flag = turtle.dropDown()
  1119.             end
  1120.             if(flag == false)then
  1121.                 sleep(1)
  1122.                 i = i-1
  1123.             end
  1124.         end
  1125.     end
  1126.     return true
  1127. end
  1128.  
  1129. --  __  __       _        ____
  1130. -- |  \/  | __ _(_)_ __  / /\ \
  1131. -- | |\/| |/ _` | | '_ \| |  | |
  1132. -- | |  | | (_| | | | | | |  | |
  1133. -- |_|  |_|\__,_|_|_| |_| |  | |
  1134. --                       \_\/_/
  1135.  
  1136. --fileSet(dataFilePath, "0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n")
  1137.  
  1138. args = { ... }
  1139. if( args[1]==null)then
  1140.     args[1] = 16
  1141.     --print("Début de 'tree', par defaut, "..args[1].." blocks")
  1142. else
  1143.     --print("Début de 'tree', "..args[1].." blocks")
  1144. end
  1145.  
  1146.  
  1147. stop=false
  1148.  
  1149. if(fs.exists(dataFilePath))then
  1150.     -- on continue
  1151. tabCoord = getCoordinates()
  1152. numberBlock = tabCoord[6][1]
  1153. else
  1154.     if(init()==false) then
  1155.         stop=true
  1156.     else
  1157.         --print("Hi Master, please press any key to start")
  1158.         --os.pullEvent("key")
  1159.         numberBlock = args[1]
  1160.  
  1161.         fileSet(dataFilePath, "0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n\n0,0,0,n\n"..numberBlock..",0")
  1162.     end
  1163. end
  1164. testFuel()
  1165. numberBlock = tonumber(numberBlock)
  1166. i = 0
  1167. --while(stop==false)do
  1168. while(stop==false)do
  1169.     if(fs.exists(dataFilePath.."-IMPORTANT2")==true)then
  1170.         Shaundi()
  1171.     elseif(fs.exists(dataFilePath.."-IMPORTANT")==true)then
  1172.         Shaundi()
  1173.     elseif(testUpDown(0) == true and test(0) == true)then
  1174.         tabCoord = getCoordinates()
  1175.         x = tonumber(tabCoord[1][1])
  1176.         y = tonumber(tabCoord[1][2])
  1177.         z = tonumber(tabCoord[1][3])
  1178.         f = tabCoord[1][4]
  1179.         if(gps()==false)then
  1180.             stop = true
  1181.         end
  1182.         if(testFuel() == false) then
  1183.             getFuel()
  1184.         else
  1185.             checkInv(0)
  1186.         end
  1187.        
  1188.         --print(i..":"..x..","..y..","..z..","..f) 
  1189.  
  1190.    
  1191.     end
  1192.     select(6)
  1193.     sleep(0.2)
  1194. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement