Advertisement
Spytox

Untitled

Jan 17th, 2025 (edited)
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.10 KB | Gaming | 0 0
  1. -- Fonction pour s'assurer que le turtle dispose de suffisamment de carburant
  2. local function checkFuel(blockSlot)
  3.     local fuelLevel = turtle.getFuelLevel()
  4.     if fuelLevel == "unlimited" then
  5.         print("Carburant illimité activé.")
  6.         return true
  7.     end
  8.  
  9.     print("Niveau de carburant actuel : " .. fuelLevel)
  10.  
  11.     -- Vérifie et tente de recharger si le carburant est insuffisant
  12.     while fuelLevel < 200 do
  13.         print("Carburant insuffisant, tentative de ravitaillement...")
  14.         turtle.select(1) -- Slot 1 pour le carburant
  15.         if not turtle.refuel(1) then
  16.             print("Pas assez de carburant dans le slot 1 ! Ajoutez du carburant et appuyez sur une touche pour continuer.")
  17.             os.pullEvent("key") -- Attend une action de l'utilisateur
  18.         else
  19.             fuelLevel = turtle.getFuelLevel()
  20.             print("Ravitaillement réussi. Niveau de carburant : " .. fuelLevel)
  21.         end
  22.     end
  23.  
  24.     -- Retour au slot de blocs après le ravitaillement
  25.     if blockSlot then
  26.         turtle.select(blockSlot)
  27.     end
  28.  
  29.     print("Carburant suffisant : " .. fuelLevel .. " unités disponibles.")
  30.     return true
  31. end
  32.  
  33. -- Fonction pour vider l'inventaire de la turtle sauf le slot 1 dans un coffre en dessous
  34. local function emptyInventory()
  35.     print("Vidage de l'inventaire en cours...")
  36.     for slot = 2, 16 do
  37.         turtle.select(slot)
  38.         local itemCount = turtle.getItemCount()
  39.         if itemCount > 0 then
  40.             print("Dépose du contenu du slot " .. slot .. " (" .. itemCount .. " items).")
  41.             if not turtle.dropDown() then
  42.                 print("Erreur : Impossible de déposer les items du slot " .. slot .. ".")
  43.             end
  44.         end
  45.     end
  46.     turtle.select(1) -- Retourne au slot 1
  47.     print("Inventaire vidé avec succès (sauf le slot 1).")
  48. end
  49.  
  50. -- Fonction pour creuser et avancer sur une ligne
  51. local function digLine(length, blockSlot)
  52.     for i = 1, length do
  53.         print("Creusage, étape : " .. i .. "/" .. length)
  54.         if not checkFuel(blockSlot) then
  55.             print("Arrêt de la ligne en cours à l'indice : " .. i)
  56.             return false
  57.         end
  58.         turtle.dig()
  59.         turtle.forward()
  60.     end
  61.     return true
  62. end
  63.  
  64. -- Fonction pour revenir en arrière en plaçant des blocs
  65. local function placeLine(length, slot)
  66.     turtle.select(slot)
  67.     for i = 1, length do
  68.         print("Placement de blocs, étape : " .. i .. "/" .. length)
  69.         -- Vérification de carburant uniquement avant de débuter le mouvement
  70.         while not checkFuel(slot) do
  71.             print("Attente de carburant pour continuer...")
  72.         end
  73.  
  74.         -- Déplacement arrière
  75.         print("Déplacement arrière à l'étape : " .. i)
  76.         turtle.back()
  77.  
  78.         -- Placement du bloc
  79.         print("Placement du bloc à l'étape : " .. i)
  80.         turtle.place()
  81.     end
  82.     return true
  83. end
  84.  
  85. -- Fonction principale pour creuser et placer une ligne
  86. local function processLine(length, slot, iteration)
  87.     print("Début du traitement de la ligne...")
  88.     if not digLine(length, slot) then
  89.         print("Échec du creusage de la ligne.")
  90.         return
  91.     end
  92.     if not placeLine(length, slot) then
  93.         print("Échec du placement des blocs sur la ligne.")
  94.         return
  95.     end
  96.     print("Ligne complétée avec succès.")
  97. end
  98.  
  99. -- Vérification initiale du carburant
  100. if not checkFuel(2) then
  101.     return
  102. end
  103.  
  104. -- Configuration des paramètres
  105. local lineLength = 25
  106. local blockSlot = 2
  107. local levels = 3
  108. local repetitions = 9 -- Nombre de répétitions du processus complet
  109. local moveCounter = 0 -- Compteur pour les déplacements
  110.  
  111. -- Fonction pour déplacer la turtle de 2 blocs sur la droite
  112. local function moveRight()
  113.     print("Déplacement à droite de 2 blocs.")
  114.     while not checkFuel(2) do
  115.         print("Attente de carburant pour continuer...")
  116.     end
  117.     turtle.turnRight()
  118.     turtle.forward()
  119.     moveCounter = moveCounter + 1
  120.     if moveCounter % 2 ~= 0 then
  121.         emptyInventory() -- Vide l'inventaire une fois sur deux
  122.     end
  123.     turtle.forward()
  124.     turtle.turnLeft()
  125. end
  126.  
  127. -- Réalisation des répétitions
  128. for rep = 1, repetitions do
  129.     print("Répétition : " .. rep .. "/" .. repetitions)
  130.     for level = 1, levels do
  131.         print("Niveau : " .. level .. "/" .. levels)
  132.         processLine(lineLength, blockSlot, rep)
  133.         if level < levels then
  134.             while not checkFuel(blockSlot) do
  135.                 print("Attente de carburant pour continuer...")
  136.             end
  137.             print("Montée d'un niveau.")
  138.             turtle.up()
  139.         end
  140.     end
  141.  
  142.     -- Retour à la position initiale
  143.     for step = 1, levels - 1 do
  144.         while not checkFuel(blockSlot) do
  145.             print("Attente de carburant pour descendre...")
  146.         end
  147.         print("Descente d'un niveau : étape " .. step .. "/" .. (levels - 1))
  148.         turtle.down()
  149.     end
  150.  
  151.     -- Déplacement à droite après chaque répétition sauf la dernière
  152.     if rep < repetitions then
  153.         moveRight()
  154.     end
  155. end
  156. turtle.turnRight()
  157. turtle.forward()
  158. emptyInventory()
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement