Advertisement
sinkir

lua turtle myexcavate 2.2 web

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