Advertisement
RLPGhost

Minage Zone

Feb 7th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.76 KB | None | 0 0
  1. -- Programme de Minage de zone
  2. -- http://pastebin.com/CiyHEnUd
  3.  
  4.  
  5. local charbonSlot = 16
  6. local touchSlot = 15
  7. local idChannel = 123
  8.  
  9. local niveauFuelMini = 5          -- niveau de déplacements auquel on doit refaire le plein de fuel
  10. local niveauCharbonMini = 5
  11.  
  12. local premierSlot = 1             -- foction inventaire
  13. local dernierSlot = 13
  14. local thermalChestSlot = 14
  15.  
  16. -- fonction refuel
  17.  
  18. function verifFuel()              -- vérifie si on a assez de fuel (déplacements) en réserve.
  19.   -- 1 charbon = 96 deplacements
  20.   -- On vérifie le niveau de fuel
  21.         local niveauFuel = turtle.getFuelLevel()
  22.         if (niveauFuel ~= "unlimited") then
  23.                 if (niveauFuel < niveauFuelMini) then
  24.                         -- On a besoin de faire le plein
  25.                         turtle.select(charbonSlot)
  26.                         turtle.refuel(1) -- on recharge pour 96 deplacements
  27.                 end
  28.         end
  29. end
  30.  
  31. function mineDevant()
  32.     while turtle.detect() do turtle.dig() end
  33. end
  34.  
  35. function mineBas()
  36.     while turtle.detectDown() do turtle.digDown() end
  37. end
  38.  
  39. function movForward()
  40.     while not turtle.forward() do
  41.         sleep(1)
  42.     end
  43.     return true
  44. end
  45.  
  46. function movDown()
  47.     while not turtle.down() do
  48.         sleep(1)
  49.     end
  50.     return true
  51. end
  52.  
  53. function videInventaire()   -- if turtle.getItemCount(dernierSlot) > 0
  54.  
  55.         local slot
  56.         turtle.select(thermalChestSlot)
  57.         turtle.placeUp()
  58.         for slot=premierSlot,dernierSlot do
  59.                 turtle.select(slot)
  60.                 while turtle.getItemCount(slot) > 0 do
  61.                         turtle.dropUp(turtle.getItemCount(slot))
  62.                         if turtle.getItemCount(slot) > 0 then
  63.                                 sleep(0.5)
  64.                         end
  65.                 end
  66.         end
  67.  
  68.         turtle.select(thermalChestSlot)
  69.         turtle.digUp()
  70. end
  71.  
  72. function turn(Str)
  73.     if Str == "G" then turtle.turnLeft()
  74.     else turtle.turnRight()
  75.     end
  76. end
  77.  
  78. function turninv(Str)
  79.     if Str == "G" then turtle.turnRight()
  80.     else turtle.turnLeft()
  81.     end
  82. end
  83.  
  84.  
  85.  
  86. --********************************************--
  87. --********** Programme principal *************--
  88. --********************************************--
  89. modem = peripheral.wrap("left")
  90. modem.transmit(idChannel,idChannel,"etat:attente")
  91.  
  92. print("Entrez la dimensions de la zone a miner ?")
  93. print("")
  94. print("Longueur : ")
  95. longueur = tonumber(read())
  96. print("")
  97. print("Largeur : ")
  98. largeur = tonumber(read())
  99. print("")
  100. print("Profondeur : ")
  101. profondeur = tonumber(read())
  102.  
  103.  
  104.  
  105. print("Je mine vers la Gauche ou la Droite ?")
  106. print("")
  107. print("G ou D : ")
  108. result = read()
  109.  
  110. if(result=="G") then
  111.     print("Appuyez sur [ENTREE] pour commencer !")
  112.     print("!! Noubliez pas le charbon , les torches et le coffre  !!")
  113.     read()
  114. elseif (result=="D") then
  115.     print("Appuyez sur [ENTREE] pour commencer !")
  116.     print("!! Noubliez pas le charbon , les torches et le coffre  !!")
  117.     read()
  118. else
  119.     print("Vous devez écrire G ou D :")
  120.     result = read()
  121. end
  122.  
  123. -- Début du minage
  124.  
  125. modem.transmit(idChannel,idChannel,"etat:encours")
  126.  
  127. local p=1
  128. while p<profondeur do -- Minage de la profondeur
  129.    
  130.     mineBas()
  131.     turtle.down()
  132.     p = p + 1
  133.    
  134.     local ll=1
  135.     while ll<=largeur do
  136.    
  137.         ll = ll + 1
  138.         local l=1
  139.         while l<=longueur do -- Minage de la longueur
  140.             print("rentre dans boucle: "..l)
  141.             modem.transmit(idChannel,idChannel,"lPuits:"..l)
  142.             mineDevant()
  143.             verifFuel()
  144.             movForward()
  145.             if turtle.getItemCount(dernierSlot) > 0 then videInventaire() end
  146.             l = l+1
  147.         end
  148.        
  149.         turtle.turnRight()
  150.         turtle.turnRight()
  151.  
  152.         -- demi-tour fait et revient
  153.  
  154.         turtle.select(touchSlot)
  155.         turtle.placeDown()
  156.  
  157.         l=1
  158.         local t=1
  159.         while l<=longueur do
  160.             verifFuel()
  161.             mineDevant()
  162.             turtle.forward()
  163.             l = l+1
  164.             t = t+1
  165.             if (t>8) and (p==profondeur) then
  166.                     turtle.select(touchSlot)
  167.                     turtle.placeDown()
  168.                     t=0
  169.             end
  170.         end
  171.  
  172.    
  173.         turn(result)
  174.         mineDevant()
  175.         turninv(result)
  176.        
  177.     end
  178.    
  179. end
  180.  
  181. videInventaire()
  182.  
  183. modem.transmit(idChannel,idChannel,"etat:fin")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement