Advertisement
Vrill

Computercraft: melon/pumpkin/sugar_cane farmer

Dec 19th, 2013
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.08 KB | None | 0 0
  1. ---------------------------------------------
  2. -- Vrill's melon/pumpkin/sugar_cane farmer --
  3. -- v 1.1 (size: 16 + 16)                   --
  4. --                                         --
  5. -- 1. edit startup                         --
  6. -- 2. shell.run("melon")                   --
  7. -- 3. save                                 --
  8. ---------------------------------------------
  9.  
  10. function isnumber(myvar)
  11.  local num
  12.  
  13.  if type(myvar)=="number" then return true end
  14.  if type(myvar)~="string" then return false end
  15.  num=tonumber(myvar)
  16.  if num~=nil then return true end
  17.  return false
  18. end
  19.  
  20. function move(n)
  21.  local can_move=true
  22.  local i
  23.  if n<0 then
  24.   n=-n
  25.   for i=1,n do
  26.    can_move=turtle.back()
  27.    while not can_move do
  28.     print("There is a something on my way!")
  29.     sleep(2)
  30.     turtle.attack()
  31.     can_move=turtle.back()  
  32.    end
  33.   end
  34.  else
  35.   for i=1,n do
  36.    can_move=turtle.forward()
  37.    while not can_move do
  38.     print("There is a something on my way!")
  39.     sleep(2)
  40.     turtle.attack()
  41.     can_move=turtle.forward()
  42.    end
  43.   end
  44.  end
  45. end
  46.  
  47. function moveUp(n)
  48.  local can_move=true
  49.  local i
  50.  if n<0 then
  51.   n=-n
  52.   for i=1,n do
  53.    can_move=turtle.down()
  54.    while not can_move do
  55.     print("There is a something on my way!")
  56.     sleep(2)
  57.     turtle.attackDown()
  58.     can_move=turtle.down()
  59.    end
  60.   end
  61.  else
  62.   for i=1,n do
  63.    can_move=turtle.up()
  64.    while not can_move do
  65.     print("There is a something on my way!")
  66.     sleep(2)
  67.     turtle.attackUp()
  68.     can_move=turtle.up()
  69.    end
  70.   end
  71.  end
  72. end
  73.  
  74. function itemsInInventory()
  75.  local itmsum=0
  76.  local i
  77.  
  78.  for i=1,16 do
  79.   itmsum=itmsum+turtle.getItemCount(i)
  80.  end
  81.  if itmsum>0 then
  82.   return true
  83.  end
  84.  return false
  85. end
  86.  
  87. function dropAll()
  88.  local i=1
  89.  local dropcnt=0
  90.  
  91.  for i=16,1,-1 do
  92.   dropcnt=turtle.getItemCount(i)
  93.   if dropcnt > 0 then
  94.    turtle.select(i)
  95.    turtle.drop(dropcnt)
  96.   end
  97.  end
  98. end
  99.  
  100. function refuelMe()
  101.  local i=1
  102.  local fuelcnt=0
  103.  
  104.  for i=16,1,-1 do
  105.   turtle.select(i)
  106.   fuelcnt=turtle.getItemCount(i)
  107.   turtle.refuel(fuelcnt)
  108.  end
  109.  
  110.  if itemsInInventory() then
  111.   turtle.turnRight()
  112.   turtle.turnRight()
  113.   dropAll()
  114.   turtle.turnLeft()
  115.   turtle.turnLeft()
  116.  end
  117. end
  118.  
  119. function GUI(posX,posY,flevel)
  120.  local i
  121.  
  122.  term.clear()
  123.  term.setCursorPos(1+posX, 1+posY)
  124.  term.write("+-melon/pumpkin/sugar_cane farmer-+")
  125.  for i=2,5 do
  126.  term.setCursorPos(1+posX, i+posY)
  127.  term.write("|                                 |")
  128.  end
  129.  term.setCursorPos(1+posX, 6+posY)
  130.  term.write("+---------------------------------+")
  131.  
  132.  term.setCursorPos(3+posX, 3+posY)
  133.  print("  <Label> ",os.getComputerLabel())
  134.  term.setCursorPos(3+posX, 4+posY)
  135.  print("  <Fuel Level> ",turtle.getFuelLevel())
  136.  
  137.  if turtle.getFuelLevel() < flevel then
  138.  for i=5,8 do
  139.  term.setCursorPos(1+posX, i+posY)
  140.  term.write("|                                 |")
  141.  end
  142.  term.setCursorPos(1+posX, 9+posY)
  143.  term.write("+---------------------------------+")
  144.  term.setCursorPos(10+posX, 6+posY)
  145.  print("Not enough fuel!")
  146.  term.setCursorPos(6+posX, 7+posY)
  147.  print("Please feed me with fuel.")
  148.  end
  149. end
  150.  
  151. --------------------------------
  152. --Locals:
  153. local i
  154. local need_work=false
  155. local fuelneed=80
  156. local aisle_width=1
  157. local field_length=16
  158.  
  159. fuelneed=field_length*2 + 2 + (aisle_width+1)*2 + 10
  160.  
  161. while true do
  162.  
  163. need_work=false
  164. if itemsInInventory() then
  165.  refuelMe()
  166. end
  167. GUI(2,2,fuelneed)
  168. if turtle.detect() then need_work=true end
  169. if turtle.getFuelLevel() < fuelneed then need_work=false end
  170.  
  171. if need_work then
  172.  moveUp(1)
  173.  for i=1,field_length do
  174.   turtle.dig()
  175.   move(1)
  176.   if turtle.detectDown() then
  177.    turtle.digDown()
  178.   end
  179.  end
  180.  turtle.turnRight()
  181.  --
  182.  move(aisle_width)
  183.  --
  184.  turtle.dig()
  185.  move(1)
  186.  turtle.turnRight()
  187.  if turtle.detectDown() then
  188.   turtle.digDown()
  189.  end
  190.  for i=1,field_length do
  191.   turtle.dig()
  192.   move(1)
  193.   if turtle.detectDown() then
  194.    turtle.digDown()
  195.   end
  196.  end
  197.  turtle.turnRight()
  198.  --
  199.  move(aisle_width+1)
  200.  --
  201.  turtle.turnLeft()
  202.  moveUp(-1)
  203.  dropAll()
  204.  turtle.turnLeft()
  205.  turtle.turnLeft()
  206. end
  207.  
  208.  
  209. sleep(10)
  210. end
  211. ------------------
  212. --shell.run("melon")
  213. ------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement