Advertisement
sinkir

lua turtle myexcavate 2.1

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