Advertisement
hevohevo

ComputerCraft: auto_refuel_0_2

Jun 11th, 2014
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.18 KB | None | 0 0
  1. -- #########################################
  2. -- auto refuel
  3. -- version 0.2
  4. -- http://hevohevo.hatenablog.com/
  5.  
  6. -- You should prepare many many fuel items for the lovely turtle.
  7. -- By default setting (in CC1.6):
  8. --  Turtle FuelLimit is 10000 (e.g., 125 charcoal)
  9. --  Advanced Turtle FuelLimit is 100000 (e.g., 1250 charcoal)
  10.  
  11. -- #############################
  12. -- Config
  13. local suck = turtle.suckDown
  14. local drop = turtle.dropDown
  15.  
  16. -- #############################
  17. -- Functions
  18.  
  19. function myRefuel(goal_level)
  20.   local old_level = turtle.getFuelLevel()
  21.   turtle.refuel(1)
  22.   local new_level = turtle.getFuelLevel()
  23.   if new_level < goal_level then
  24.     local goal_num = (goal_level - new_level)/(new_level - old_level)
  25.     if  goal_num > 0 and goal_num <= turtle.getItemCount(turtle.getSelectedSlot()) then
  26.       turtle.refuel(math.floor(goal_num))
  27.       if turtle.getFuelLevel() < goal_level then turtle.refuel(1) end
  28.     else
  29.       turtle.refuel()
  30.     end
  31.   end
  32. end
  33.  
  34. function dropAll()
  35.   for i=1,16 do
  36.     if turtle.getItemCount(i) > 0 then
  37.       turtle.select(i)
  38.       drop()
  39.     end
  40.   end
  41. end
  42.  
  43. -- include({1,2,3}, 2) => true
  44. function include(tbl, elem)
  45.   for k,v in pairs(tbl) do
  46.     if elem == v then return true end
  47.   end
  48.   return false
  49. end
  50.  
  51. -- #############################
  52. -- main
  53. local limit_level = turtle.getFuelLimit()
  54.  
  55. -- see ComputerCraft.cfg
  56. if not limit_level or limit_level == 0 then
  57.   error("no FuelLimit")
  58. end
  59.  
  60. local args = {...}
  61. local goal_level = limit_level
  62.  
  63. if #args == 0 then
  64.   print("FuelLimit is ",limit_level)
  65.   print(turtle.getFuelLevel(),'/',limit_level)
  66.   while true do
  67.     write("\nReally? (y/n): ")
  68.     local str = read()
  69.     if include({"n", "N","no","No","NO"}, str)then
  70.       error("terminated")
  71.     elseif include({"y", "Y","yes","YES","Yes"}, str) then
  72.       break
  73.     end
  74.   end
  75. else
  76.   goal_level = tonumber(args[1])
  77.   if goal_level > limit_level then
  78.     error("Fuel Limit is "..limit_level)
  79.   end
  80. end
  81.  
  82. turtle.select(1)
  83. while (goal_level > turtle.getFuelLevel()) and suck() do
  84.   myRefuel(goal_level)
  85.   print(turtle.getFuelLevel(), '/' , goal_level)
  86. end
  87. print(turtle.getFuelLevel(), '/' , goal_level)
  88. dropAll()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement