Advertisement
AdslHouba

FTB-ultimate : auto tome Alkahest

May 5th, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.57 KB | None | 0 0
  1. -- video http://youtu.be/mkOB_U7ITjM
  2. -- inventaire vide sauf case 1 tome Alkahest
  3. -- coffre dessous 64 fer
  4. -- coffre dessus 64 lapis
  5. -- coffre face vide (sortie)
  6. -- coffre gauche redstone
  7. -- block derriere
  8. -- droite vide
  9.  
  10. -- demande de x fer
  11. -- ferNb quantite
  12. function fer(ferNb)
  13.     -- direction du coffre de redstone
  14.     turtle.turnLeft()
  15.     -- Calcul quantite de lapis
  16.     local lapisNb=ferNb*4
  17.     local lapisStack=math.floor(lapisNb/64)
  18.     local lapisReste=lapisNb%64
  19.  
  20.     -- boucle pour crafter chaque stack de lapis
  21.     lapisI = 0
  22.     while lapisI<lapisStack do
  23.         lapis(64,lapisI*64,lapisNb)
  24.         lapisI=lapisI+1
  25.     end
  26.     -- craft du reste de lapis
  27.     if lapisReste ~= 0 then
  28.         lapis(lapisReste,lapisStack*64,lapisNb)
  29.     end
  30.    
  31.     -- direction du coffre de sortie
  32.     turtle.turnRight()
  33.    
  34.     -- Calcul quantite de fer
  35.     local ferStack=math.floor(ferNb/64)
  36.     local ferReste=ferNb%64
  37.  
  38.     -- boucle pour crafter chaque stack de fer
  39.     local ferI = 0
  40.     while ferI<ferStack do
  41.         ferCraf(64,ferI*64,ferNb)
  42.         ferI=ferI+1
  43.     end
  44.     -- craft fin de fer
  45.     if ferReste ~= 0 then
  46.         ferCraf(ferReste,ferI*64,ferNb)
  47.     end
  48.     info("Fini")
  49. end
  50. -- fonction interne, craft du fer
  51. -- qte : quantite
  52. -- deja : quantite deja crafte
  53. -- total : total demande (fonction fer())
  54. function ferCraf(qte,deja,total)       
  55.     info("FER "..deja.."/"..total.." : chargement lapis ("..qte..")")
  56.     suck(5,qte,"up")
  57.     suck(6,qte,"up")
  58.     suck(9,qte,"up")
  59.     suck(10,qte,"up")
  60.  
  61.     info("FER "..deja.."/"..total.." : chargement fer  ("..qte..")")   
  62.     suck(2,qte,"down")
  63.  
  64.     -- Craft fer 1
  65.     turtle.select(13)
  66.     i = 1
  67.     while i <= qte do
  68.         dejafait= deja+i
  69.         info("FER "..dejafait.."/"..total.." : craft fer")
  70.         turtle.craft()
  71.         -- 1 vers la sortie
  72.         turtle.drop(1)
  73.         -- 1 buffer pour copie
  74.         turtle.dropDown(1)
  75.         i = i + 1
  76.     end
  77. end
  78. -- fonction interne, craft du lapis
  79. -- qte : quantite
  80. -- deja : quantite deja crafte
  81. -- total : total demande (fonction fer())
  82. function lapis(qte,deja,total)
  83.     info("LAPIS "..deja.."/"..total.." : Chargement redstone ("..qte..")")
  84.     suck(5,qte,"")
  85.     suck(6,qte,"")
  86.     suck(9,qte,"")
  87.     suck(10,qte,"")
  88.  
  89.     info("LAPIS "..deja.."/"..total.." : Chargement lapis ("..qte..")")
  90.     suck(2,qte,"up")
  91.  
  92.     -- craft
  93.     turtle.select(13)
  94.     i = 1
  95.     while i <= qte do
  96.         dejafait= deja+i
  97.         info("LAPIS "..dejafait.."/"..total.." : craft")
  98.         turtle.craft()     
  99.         turtle.dropUp()
  100.         i = i + 1
  101.     end
  102. end
  103.  
  104. -- fonction récupere dans un coffre
  105. -- slot = slot de reception
  106. -- qte = quantite demande
  107. -- ou = emplacement du coffre
  108. function suck(slot,qte,ou)
  109.     turtle.select(slot)
  110.     total=0
  111.     -- boucle jusqu'a quantite demande
  112.     while total~=qte do    
  113.         if ou=="down" then
  114.             turtle.suckDown()
  115.         elseif ou=="up" then
  116.             turtle.suckUp()
  117.         else
  118.             turtle.suck()
  119.         end
  120.        
  121.         -- suppression de l’excedent
  122.         total = turtle.getItemCount(slot)  
  123.         i = total - qte
  124.         if i > 0 then
  125.             if ou=="down" then
  126.                 turtle.dropDown(i)
  127.             elseif ou=="up" then
  128.                 turtle.dropUp(i)
  129.             else
  130.                 turtle.drop(i)
  131.             end
  132.            
  133.             total=qte
  134.         end
  135.     end
  136.     -- Verification si un trop plein sur le slot suivant
  137.     total =  turtle.getItemCount(slot+1)
  138.     if total ~= 0 then
  139.         turtle.select(slot+1)
  140.         if ou=="down" then
  141.             turtle.dropDown()
  142.         elseif ou=="up" then
  143.             turtle.dropUp()
  144.         else
  145.             turtle.drop()
  146.         end
  147.     end
  148. end
  149.  
  150. -- fonction affichage
  151. function info(text)
  152.     term.clear()
  153.     term.setCursorPos(1,1)
  154.     print(text)
  155. end
  156.  
  157. -- Mise en place de la tortue vers le vide
  158. info("Alignement turtle")
  159. while turtle.detect() do
  160.     turtle.turnLeft()
  161. end
  162.  
  163. -- direction sortie
  164. turtle.turnLeft()
  165.  
  166. -- demande de quantite
  167. info("Combien ?")
  168. nb = read()
  169. fer(tonumber(nb))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement