Advertisement
Vrill

Computercraft: farmer

Dec 14th, 2013
605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.34 KB | None | 0 0
  1. --------------------------------
  2. -- Vrill's farmer v 1.1       --
  3. --------------------------------
  4.  
  5. function move(n)
  6.  local can_move=true
  7.  local i
  8.  if n<0 then
  9.   n=-n
  10.   for i=1,n do
  11.    can_move=turtle.back()
  12.    while not can_move do
  13.     print("There is a something on my way!")
  14.     sleep(4)
  15.     can_move=turtle.back()  
  16.    end
  17.   end
  18.  else
  19.   for i=1,n do
  20.    can_move=turtle.forward()
  21.    while not can_move do
  22.     print("There is a something on my way!")
  23.     sleep(4)
  24.     can_move=turtle.forward()
  25.    end
  26.   end
  27.  end
  28. end
  29.  
  30. function moveUp(n)
  31.  local can_move=true
  32.  local i
  33.  if n<0 then
  34.   n=-n
  35.   for i=1,n do
  36.    can_move=turtle.down()
  37.    while not can_move do
  38.     print("There is a something on my way!")
  39.     sleep(4)
  40.     can_move=turtle.down()
  41.    end
  42.   end
  43.  else
  44.   for i=1,n do
  45.    can_move=turtle.up()
  46.    while not can_move do
  47.     print("There is a something on my way!")
  48.     sleep(4)
  49.     can_move=turtle.up()
  50.    end
  51.   end
  52.  end
  53. end
  54.  
  55. function placeDown()
  56.  local cnt=0
  57.  local thesame=false
  58.  
  59.  if slot<17 then
  60.   cnt=turtle.getItemCount(slot)
  61.  end
  62.  
  63.  if cnt>1 and slot<17 then
  64.   turtle.placeDown()
  65.  
  66.  elseif slot<16 then
  67.   slot=slot+1
  68.   turtle.select(slot)
  69.   thesame=turtle.compareTo(1)
  70.   while not thesame and slot<16 do  
  71.    slot=slot+1
  72.    turtle.select(slot)
  73.    thesame=turtle.compareTo(1)
  74.   end
  75.  
  76.   if thesame then
  77.    turtle.placeDown()
  78.   else
  79.    slot=17
  80.   end
  81.  
  82.  end
  83. end
  84.  
  85. function moveDigDown(n)
  86.  local i
  87.  for i=1,n do
  88.   turtle.digDown()
  89.   move(1)
  90.  end
  91. end
  92.  
  93. function movePlaceDown(n)
  94.  local i
  95.  for i=1,n do
  96.   placeDown()
  97.   move(1)
  98.  end
  99. end
  100.  
  101. function collectAll()
  102.  moveDigDown(3)
  103.  turtle.turnRight()
  104.  moveDigDown(6)
  105.  turtle.turnRight()
  106.  moveDigDown(6)
  107.  turtle.turnRight()
  108.  moveDigDown(6)
  109.  turtle.turnRight()
  110.  moveDigDown(2)
  111.  turtle.turnRight()
  112.  moveDigDown(1)
  113.  turtle.turnLeft()
  114.  moveDigDown(3)
  115.  turtle.turnRight()
  116.  moveDigDown(4)
  117.  turtle.turnRight()
  118.  moveDigDown(4)
  119.  turtle.turnRight()
  120.  moveDigDown(4)
  121.  turtle.turnRight()
  122.  moveDigDown(1)
  123.  turtle.turnRight()
  124.  move(1)
  125.  turtle.turnLeft()
  126.  moveDigDown(2)
  127.  turtle.turnRight()
  128.  moveDigDown(2)
  129.  turtle.turnRight()
  130.  moveDigDown(2)
  131.  turtle.turnRight()
  132.  moveDigDown(2)
  133.  
  134.  move(2)
  135.  turtle.turnRight()
  136.  move(1)
  137. end
  138.  
  139. function placeAll()
  140.  movePlaceDown(3)
  141.  turtle.turnRight()
  142.  movePlaceDown(6)
  143.  turtle.turnRight()
  144.  movePlaceDown(6)
  145.  turtle.turnRight()
  146.  movePlaceDown(6)
  147.  turtle.turnRight()
  148.  movePlaceDown(2)
  149.  turtle.turnRight()
  150.  movePlaceDown(1)
  151.  turtle.turnLeft()
  152.  movePlaceDown(3)
  153.  turtle.turnRight()
  154.  movePlaceDown(4)
  155.  turtle.turnRight()
  156.  movePlaceDown(4)
  157.  turtle.turnRight()
  158.  movePlaceDown(4)
  159.  turtle.turnRight()
  160.  movePlaceDown(1)
  161.  turtle.turnRight()
  162.  move(1)
  163.  turtle.turnLeft()
  164.  movePlaceDown(2)
  165.  turtle.turnRight()
  166.  movePlaceDown(2)
  167.  turtle.turnRight()
  168.  movePlaceDown(2)
  169.  turtle.turnRight()
  170.  movePlaceDown(2)
  171.  
  172.  move(2)
  173.  turtle.turnRight()
  174.  move(1)
  175.  
  176.  slot=1
  177. end
  178.  
  179. function dropSeeds()
  180.  local i=1
  181.  local dropcnt=0
  182.  
  183.  turtle.select(1)
  184.  dropcnt=turtle.getItemCount(1)-1
  185.  turtle.drop(dropcnt)
  186.  for i=2,16 do
  187.   turtle.select(i)
  188.   if turtle.compareTo(1) then
  189.    dropcnt=turtle.getItemCount(i)
  190.    turtle.drop(dropcnt)
  191.   end
  192.  end
  193.  turtle.select(1)
  194. end
  195.  
  196. function dropAll()
  197.  local i=1
  198.  local dropcnt=0
  199.  
  200.  for i=2,16 do
  201.   turtle.select(i)
  202.   dropcnt=turtle.getItemCount(i)
  203.   turtle.drop(dropcnt)
  204.  end
  205.  turtle.select(1)
  206. end
  207.  
  208. function refuelMe()
  209.  local i=2
  210.  local fuelcnt=0
  211.  
  212.  for i=2,16 do
  213.   turtle.select(i)
  214.   fuelcnt=turtle.getItemCount(i)
  215.   turtle.refuel(fuelcnt)
  216.  end
  217.  turtle.select(1)
  218. end
  219.  
  220. --------------------------------
  221. --global variables:
  222. slot=1
  223.  
  224. print("  *Label: ",os.getComputerLabel())
  225. print("  *'Farmer' prog. is active!")
  226. print("  *Fuel Level:",turtle.getFuelLevel())
  227. print("  *Waiting for redstone signal...")
  228.  
  229. os.pullEvent("redstone")
  230.  
  231. local flevel=0
  232.  
  233. refuelMe()
  234. flevel=turtle.getFuelLevel()
  235.  
  236. if turtle.getItemCount(1)<1 then
  237.  print("I need a seed in slot 1!")
  238.  
  239. elseif flevel<240 then
  240.  print("Not enough fuel!")
  241.  
  242. else
  243.  slot=1
  244.  turtle.select(slot)
  245.  
  246.  move(3)
  247.  turtle.turnLeft()
  248.  moveUp(-1)
  249.  
  250.  collectAll()
  251.  placeAll()
  252.  
  253.  turtle.turnLeft()
  254.  moveUp(1)
  255.  move(3)
  256.  turtle.turnLeft()
  257.  
  258.  dropSeeds()
  259.  
  260.  turtle.turnLeft()
  261.  turtle.turnLeft()
  262.  
  263.  dropAll()
  264.  
  265.  turtle.turnRight()
  266. end
  267. --
  268. --
  269. ---------------
  270. shell.run("farmer")
  271. ---------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement