Keledan

Turtle Raccogli Grano by Keledan75

Jan 21st, 2013
2,372
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.00 KB | None | 0 0
  1. -- Turtle coltivatrice diretta by youtube.com/Keledan75
  2. -- raccoglie tutto il grano, parte solo quando davanti vede un ostacolo (grano cresciuto)
  3. -- si blocca quando l'ostacolo è una fence, che deve stare nel secondo slot. Al primo giro falcia
  4. --tutto, al secondo raccoglie tutto
  5. -- scarica tutti gli oggetti tranne quelli dei primi due slot (semi e fence)
  6.  
  7. totaleFalciato = 0
  8. granoFalciato = 1
  9. unloaded = 0
  10. y = 0
  11. passiAvanti = 0
  12. pausa = 3600
  13.  
  14. -- local tArgs = { ... }
  15. -- if #tArgs ~= 1 then
  16.     -- print( "Uso: fattore <larghezza campo>" )
  17.     -- return
  18. -- end
  19.  
  20. local function scarica()
  21.     print( "Scaricando Oggetti..." )
  22.     for n=3,16 do
  23.         unloaded = unloaded + turtle.getItemCount(n)
  24.         turtle.select(n)
  25.         turtle.drop()
  26.     end
  27.     collected = 0
  28.     turtle.select(1)
  29. end
  30.  
  31. -- crea uno stack di almeno 64 semi o del massimo numero di
  32. -- semi disponibile nel primo slot
  33. function ammassaSemi()
  34.     for n=3,16 do
  35.         turtle.select(1)   
  36.         if turtle.compareTo(n) then
  37.        
  38.         semi = turtle.getItemCount(n)
  39. --      print (semi)
  40.         turtle.select(n)
  41.         turtle.transferTo(1, semi)
  42.         end
  43.     end
  44. end
  45.  
  46. -- Falcia fino a quando non incontra una fence, restituisce il numero di blocchi falciati
  47. function falciaAvanti()
  48.     turtle.select(2)
  49.     fence = turtle.compare()
  50.     while not fence do
  51.         turtle.select(1)       
  52.         turtle.digDown()
  53.         turtle.placeDown()
  54.         turtle.forward()
  55.         turtle.select(2)       
  56.         fence = turtle.compare()
  57.         passiAvanti = passiAvanti + 1
  58.     end
  59.    
  60.     turtle.digDown()
  61.     turtle.select(1)
  62.     turtle.placeDown()
  63.  
  64.     ammassaSemi()
  65.     return passiAvanti
  66. end
  67.  
  68. -- Se è a un passaggio pari, gira a sx, va avanti fino in fondo poi gira a sx
  69. -- Se è un passaggio dispari, gira a dx, va avanti fino in fondo e poi gira a sx e va avanti x -1
  70. function ritornaChest(x, y)
  71. -- Passaggio dispari
  72.     if (x % 2) == 1 then
  73.         turtle.turnRight()
  74.         turtle.select(2)
  75.         fence = turtle.compare()   
  76.         -- avanti fino in fondo
  77.         while not fence do
  78.             turtle.forward()
  79.             turtle.select(2)
  80.             fence = turtle.compare()
  81.         end
  82.         turtle.turnLeft()
  83.        
  84.         for i=1,y do
  85.             turtle.forward()
  86.         end
  87.     else
  88. -- Passaggio pari
  89.         turtle.turnLeft()
  90.         fence = turtle.compare()   
  91.         -- avanti fino in fondo
  92.         while not fence do
  93.             turtle.forward()
  94.             turtle.select(2)           
  95.             fence = turtle.compare()
  96.         end
  97.         turtle.turnLeft()      
  98.         turtle.forward()       
  99.     end
  100.     turtle.down()
  101. end
  102.  
  103. -- controlla che ci siano elementi nel primo e nel secondo slot
  104. function controlloInventario()
  105.     slot1 = 0
  106.     slot2 = 0
  107.     slot1 = turtle.getItemCount(1)
  108.     slot2 = turtle.getItemCount(2)
  109.     print ("slot 1  = " .. slot1 .. "sltot 2 : " .. slot2)
  110.     if (slot1 < 1 or slot2 < 1) then
  111.         return false
  112.     else
  113.         return true
  114.     end
  115. end
  116.  
  117.  
  118. -- cammina fino al delimitare del campo e ne restituisce le dimensioni
  119. function dimCampo()
  120.     local dimensioni = {0, 0}
  121.     x = 1
  122.     y = 1
  123.     turtle.up()
  124.     turtle.forward()   
  125.     for i = 1, 4 do
  126.         turtle.select(2)
  127.         fence = turtle.compare()
  128.         while not fence do
  129.             turtle.forward()
  130.             if i == 1 then y = y + 1
  131.             elseif i == 2 then x = x + 1 end
  132.             fence = turtle.compare()       
  133.         end
  134.         turtle.turnRight()
  135.     end
  136.     turtle.back()
  137.     turtle.down()
  138.     dimensioni = {x,y}
  139.     return dimensioni  
  140. end
  141.    
  142.  
  143. dimensioni = dimCampo()
  144. print ("Larghezza campo: " .. dimensioni[1])
  145. print ("Altezza campo: " .. dimensioni[2])
  146.  
  147. x = dimensioni[1]
  148. y = dimensioni[2]
  149.    
  150. raccogli = true
  151. -- ciclo di raccolta
  152.  
  153. if not controlloInventario then
  154.     print ("Carica semi nel primo slot e un oggetto delimitatore nel secondo.")
  155.  
  156. else
  157.  
  158.     while raccogli do
  159.  
  160.         turtle.up()
  161.         turtle.forward()
  162.         for i = 1, x do
  163.             granoFalciato = falciaAvanti()
  164.             totaleFalciato = totaleFalciato + granoFalciato
  165.             -- passaggio dispari
  166.             if (i%2==1) then
  167.                 turtle.turnRight()
  168.                 turtle.forward()
  169.                 turtle.turnRight()     
  170.             -- passaggio pari
  171.             else
  172.                 turtle.turnLeft()
  173.                 turtle.forward()
  174.                 turtle.turnLeft()      
  175.             end
  176.            
  177.         end
  178.  
  179.         ritornaChest(x, y) 
  180.         scarica()
  181.         turtle.turnRight()
  182.         turtle.turnRight() 
  183.         print ("Totale grano falciato: " .. totaleFalciato)
  184.         sleep (pausa)
  185.     end
  186. end
Advertisement
Add Comment
Please, Sign In to add comment