Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Fonction pour s'assurer que le turtle dispose de suffisamment de carburant
- local function checkFuel(blockSlot)
- local fuelLevel = turtle.getFuelLevel()
- if fuelLevel == "unlimited" then
- print("Carburant illimité activé.")
- return true
- end
- print("Niveau de carburant actuel : " .. fuelLevel)
- -- Vérifie et tente de recharger si le carburant est insuffisant
- while fuelLevel < 200 do
- print("Carburant insuffisant, tentative de ravitaillement...")
- turtle.select(1) -- Slot 1 pour le carburant
- if not turtle.refuel(1) then
- print("Pas assez de carburant dans le slot 1 ! Ajoutez du carburant et appuyez sur une touche pour continuer.")
- os.pullEvent("key") -- Attend une action de l'utilisateur
- else
- fuelLevel = turtle.getFuelLevel()
- print("Ravitaillement réussi. Niveau de carburant : " .. fuelLevel)
- end
- end
- -- Retour au slot de blocs après le ravitaillement
- if blockSlot then
- turtle.select(blockSlot)
- end
- print("Carburant suffisant : " .. fuelLevel .. " unités disponibles.")
- return true
- end
- -- Fonction pour vider l'inventaire de la turtle sauf le slot 1 dans un coffre en dessous
- local function emptyInventory()
- print("Vidage de l'inventaire en cours...")
- for slot = 2, 16 do
- turtle.select(slot)
- local itemCount = turtle.getItemCount()
- if itemCount > 0 then
- print("Dépose du contenu du slot " .. slot .. " (" .. itemCount .. " items).")
- if not turtle.dropDown() then
- print("Erreur : Impossible de déposer les items du slot " .. slot .. ".")
- end
- end
- end
- turtle.select(1) -- Retourne au slot 1
- print("Inventaire vidé avec succès (sauf le slot 1).")
- end
- -- Fonction pour creuser et avancer sur une ligne
- local function digLine(length, blockSlot)
- for i = 1, length do
- print("Creusage, étape : " .. i .. "/" .. length)
- if not checkFuel(blockSlot) then
- print("Arrêt de la ligne en cours à l'indice : " .. i)
- return false
- end
- turtle.dig()
- turtle.forward()
- end
- return true
- end
- -- Fonction pour revenir en arrière en plaçant des blocs
- local function placeLine(length, slot)
- turtle.select(slot)
- for i = 1, length do
- print("Placement de blocs, étape : " .. i .. "/" .. length)
- -- Vérification de carburant uniquement avant de débuter le mouvement
- while not checkFuel(slot) do
- print("Attente de carburant pour continuer...")
- end
- -- Déplacement arrière
- print("Déplacement arrière à l'étape : " .. i)
- turtle.back()
- -- Placement du bloc
- print("Placement du bloc à l'étape : " .. i)
- turtle.place()
- end
- return true
- end
- -- Fonction principale pour creuser et placer une ligne
- local function processLine(length, slot, iteration)
- print("Début du traitement de la ligne...")
- if not digLine(length, slot) then
- print("Échec du creusage de la ligne.")
- return
- end
- if not placeLine(length, slot) then
- print("Échec du placement des blocs sur la ligne.")
- return
- end
- print("Ligne complétée avec succès.")
- end
- -- Vérification initiale du carburant
- if not checkFuel(2) then
- return
- end
- -- Configuration des paramètres
- local lineLength = 25
- local blockSlot = 2
- local levels = 3
- local repetitions = 9 -- Nombre de répétitions du processus complet
- local moveCounter = 0 -- Compteur pour les déplacements
- -- Fonction pour déplacer la turtle de 2 blocs sur la droite
- local function moveRight()
- print("Déplacement à droite de 2 blocs.")
- while not checkFuel(2) do
- print("Attente de carburant pour continuer...")
- end
- turtle.turnRight()
- turtle.forward()
- moveCounter = moveCounter + 1
- if moveCounter % 2 ~= 0 then
- emptyInventory() -- Vide l'inventaire une fois sur deux
- end
- turtle.forward()
- turtle.turnLeft()
- end
- -- Réalisation des répétitions
- for rep = 1, repetitions do
- print("Répétition : " .. rep .. "/" .. repetitions)
- for level = 1, levels do
- print("Niveau : " .. level .. "/" .. levels)
- processLine(lineLength, blockSlot, rep)
- if level < levels then
- while not checkFuel(blockSlot) do
- print("Attente de carburant pour continuer...")
- end
- print("Montée d'un niveau.")
- turtle.up()
- end
- end
- -- Retour à la position initiale
- for step = 1, levels - 1 do
- while not checkFuel(blockSlot) do
- print("Attente de carburant pour descendre...")
- end
- print("Descente d'un niveau : étape " .. step .. "/" .. (levels - 1))
- turtle.down()
- end
- -- Déplacement à droite après chaque répétition sauf la dernière
- if rep < repetitions then
- moveRight()
- end
- end
- turtle.turnRight()
- turtle.forward()
- emptyInventory()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement