Advertisement
meuced

[LUA] Minage turtle optimisée V0.1

Feb 17th, 2013
839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.37 KB | None | 0 0
  1. local direction = 0                     --direction
  2. local drapeauBedrock = false            --indicateur pour savoir si on est arrivé à la bedrock
  3. local profondeur = 0                    --indique de combien on a creusé
  4. local niveauFuelMini = 5                -- niveau de déplacements auquel on doit refaire le plein de fuel
  5. local niveauCharbonMini = 5             -- quantité de charbons restants à laquelle on doit refaire le plein de charbon
  6.  
  7. local premierSlot = 4                   -- premier slot où se trouve le minerai ramassé
  8. local dernierSlot = 13                  -- dernier slot à surveiller pour enclencher le vidage de l'inventaire
  9. local enderchestSlot = 14               -- slot où se trouve l'enderchest pour les minerais
  10. local enderchestCharbonSlot = 15        -- slot où se trouve l'enderchest pour les minerais
  11. local charbonSlot = 16                  -- slot ou est stocké le charbon
  12.  
  13.  
  14.  
  15. -- fonction qui compare et mine, tourne à droite et direction++
  16. function compare_mine()
  17.  
  18.     local slot = 0
  19.     local resultat = false
  20.    
  21.     for slot=1,3 do
  22.         turtle.select(slot)
  23.         if turtle.compare() or resultat then
  24.             resultat = true
  25.         end
  26.     end
  27.    
  28.     if resultat == false then
  29.         turtle.dig()
  30.         if turtle.getItemCount(dernierSlot) > 0 then  -- on vérifie si on doit vider l'inventaire de la tortue
  31.             print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  32.             videInventaire()
  33.         end
  34.     end
  35.    
  36.     turtle.turnRight()
  37.     direction=direction+1
  38.    
  39. end
  40.  
  41. function verifFuel() -- vérifie si on a assez de fuel (déplacements) en réserve.
  42.   -- 1 charbon = 96 deplacements
  43.   -- On vérifie le niveau de fuel
  44.     local niveauFuel = turtle.getFuelLevel()
  45.     if (niveauFuel ~= "unlimited") then
  46.         if (niveauFuel < niveauFuelMini) then
  47.             -- On a besoin de faire le plein
  48.             turtle.select(charbonSlot)
  49.             if turtle.getItemCount(charbonSlot) < niveauCharbonMini then
  50.                 rechargeCharbon() -- on refait le plein de charbon
  51.             end
  52.             turtle.refuel(1) -- on recharge pour 96 deplacements
  53.         end
  54.     end
  55. end
  56.  
  57. function rechargeCharbon() -- permet de refaire le plein en charbon
  58.    
  59.     turtle.dig()
  60.    
  61.     if turtle.getItemCount(dernierSlot-1) > 0 then  -- on vérifie si on doit vider l'inventaire de la tortue
  62.             print("vidage inventaire rech_charbon1; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  63.             videInventaire()
  64.     end
  65.    
  66.     turtle.select(enderchestCharbonSlot)
  67.     turtle.place()
  68.     turtle.select(charbonSlot)
  69.     turtle.suck()
  70.    
  71.     turtle.select(enderchestCharbonSlot)
  72.     turtle.dig()
  73.    
  74. end
  75.  
  76. function videInventaire()
  77.  
  78.     local slot
  79.     turtle.select(enderchestSlot)
  80.     turtle.place()
  81.     for slot=premierSlot,dernierSlot do
  82.         turtle.select(slot)
  83.         while turtle.getItemCount(slot) > 0 do
  84.             turtle.drop(turtle.getItemCount(slot))
  85.             if turtle.getItemCount(slot) > 0 then
  86.                 sleep(0.5)
  87.             end
  88.         end
  89.     end
  90.  
  91.     turtle.select(enderchestSlot)
  92.     turtle.dig()
  93.    
  94. end
  95.  
  96.  
  97. --********************************************--
  98. --********** Programme principal *************--
  99. --********************************************--
  100.  
  101. verifFuel()
  102. turtle.digDown() --creuse le bloc dessous
  103. turtle.down() --descend d'un cran
  104. profondeur = profondeur+1
  105. verifFuel()
  106.  
  107. while drapeauBedrock == false do
  108.  
  109.     -- ici, direction = 0
  110.     while direction~=4 do
  111.         --compare et mine, tourne à droite et direction++
  112.         compare_mine()
  113.     end
  114.     direction=0
  115.    
  116.     if turtle.detectDown() == true then   -- on vérifie si il y a un bloc en dessous
  117.         if turtle.digDown() == false then -- si on n'arrive pas à creuser en dessous, alors c'est la bedrock
  118.             drapeauBedrock = true         -- donc je met le drapeau à true pour sortir de la boucle
  119.             print("bedrock !")
  120.         else
  121.             if turtle.getItemCount(dernierSlot) > 0 then  -- on vérifie si on doit vider l'inventaire de la tortue
  122.                 print("vidage inventaire princ1; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  123.                 videInventaire()
  124.             end
  125.             turtle.down()
  126.             profondeur = profondeur+1
  127.             verifFuel()
  128.         end
  129.     else                    -- si il n'y a pas de bloc alors c'est de l'air, de l'eau ou de la lave
  130.         turtle.down()       -- alors on descend simplement (la tortue ne craint pas la lave ou l'eau) et on continue à miner
  131.         profondeur = profondeur+1
  132.         verifFuel()
  133.     end
  134.    
  135. end
  136. print("fin de la boucle "..profondeur)
  137. -- ici je remonte à la surface
  138. while profondeur ~= 0 do
  139.     turtle.up()
  140.     profondeur = profondeur-1
  141.     verifFuel()
  142. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement