bob558

Карьер - выкидывает каблу

Dec 17th, 2015
176
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Если бур надо заряжать, в первый слот кладем
  2. --энергохранилище во второй ключ, ставим
  3. --на игнор 2 слота и подключаем апгрейд
  4. --контроллера инвентаря
  5. ------------Настройки---------------
  6. incont=false;--заряжать кирку?
  7. slots=16--количество слотов у робота?
  8. propusk=1;--игнорировать первые N слотов
  9. slotstocheck=2--выгрузка если заполнены последние N слотов
  10. cobblestone=1
  11. ------------Переменные---------------
  12. local computer = require('computer')
  13. local component = require("component")
  14. if require("component").isAvailable("generator") then
  15.   generator=require("component").generator
  16. end
  17. if require("component").isAvailable("inventory_controller") then
  18.   incontrol=require("component").inventory_controller
  19. end
  20. if require("component").isAvailable("chunkloader") then
  21.   component.chunkloader.setActive(true)
  22.   loader=require("component").chunkloader
  23. end
  24. robot=require("robot")
  25.  
  26. withg=(generator~=nil)
  27. propusk=propusk+1;
  28. coords={x=0,y=0,z=0,side=1}
  29. extcoords={x=0,y=0,z=0,side=1}
  30. sx={0,1,0,-1}
  31. sy={1,0,-1,0}
  32. -------------Функции-----------------
  33. function go() while not robot.forward() do robot.swing()end coords.x=coords.x + sx[coords.side];coords.y = coords.y + sy[coords.side] end
  34. function godown() while not robot.down() do robot.swingDown()end coords.z = coords.z - 1 end
  35. function goup() while not robot.up() do robot.swingUp()end coords.z = coords.z + 1 end
  36. function check() return robot.count(slots-(slotstocheck-1)) == 0 end
  37. function energy() return computer.energy()>((computer.maxEnergy()*5)/100) end
  38. function turnLeft() robot.turnLeft(); coords.side = (coords.side + 3)%4;if coords.side == 0 then coords.side =4 end; end
  39. function turnRight() robot.turnRight(); coords.side = (coords.side + 1)%4; if coords.side == 0 then coords.side =4 end; end
  40. function tosurf()
  41.     extcoords.x=coords.x
  42.     extcoords.y=coords.y
  43.     extcoords.z=coords.z
  44.     extcoords.side=coords.side
  45.     while coords.z ~= 0 do goup() end
  46.     while coords.side ~= 3 do turnRight() end
  47.     while coords.y ~= 0 do go() end
  48.     turnRight();
  49.     while coords.x ~= 0 do go() end
  50.     turnLeft();
  51. end
  52. function back()
  53.     while coords.z ~= extcoords.z do godown() end
  54.     while coords.side~= 1 do turnRight() end
  55.     while coords.y ~= extcoords.y do go() end
  56.     turnRight();
  57.     while coords.x ~= extcoords.x do go() end
  58.     while coords.side ~= extcoords.side do turnRight() end
  59. end
  60. function clearinv()
  61.   alreadyhave=false
  62.   for invcounter=propusk,slots do
  63.     robot.select(invcounter)
  64.     if withg then
  65.       suc,error=generator.insert()
  66.       if (error=="selected slot does not contain fuel" or alreadyhave) then
  67.         robot.drop()
  68.       else
  69.         alreadyhave=true
  70.       end
  71.     else
  72.       robot.drop()
  73.     end
  74.   end
  75. robot.select(1)
  76. end
  77.  
  78. function cobbleDel()
  79.   if incontrol.getStackInInternalSlot(cobblestone).name=='minecraft:cobblestone' then
  80.     if robot.count(cobblestone)>1 then
  81.       robot.select(cobblestone)
  82.       if robot.count()==1 then
  83.         robot.select(1)
  84.       else
  85.         robot.dropDown(robot.count()-1)
  86.         robot.select(1)
  87.       end
  88.     end
  89.   end
  90. end
  91.  
  92. function prevent()
  93. --print((check()) and (energy()) and (robot.durability()>0.01),check(),energy(),(robot.durability()>0.01))
  94.   -- if ((check()) and (energy()) and (robot.durability()>0.01))==false then
  95.     if ((check()) and (energy())==false then
  96.       tosurf()
  97.       clearinv()
  98.       if computer.energy()<((computer.maxEnergy()*5)/100) then
  99.         while computer.energy()<computer.maxEnergy()-20 do
  100.           computer.beep(2000, 5)
  101.           print('ТРЕВОГА!!! Низкий уровень энергии. ',computer.energy())
  102.           print('Сохранение данных не поддерживается')
  103.           os.sleep(30);
  104.         end
  105.       end
  106.       --if (incont and robot.durability()>0.01)==false then
  107.        -- robot.turnLeft()
  108.        -- robot.place()--ставим буфер
  109.        -- incontrol.equip()--извлекаем бур
  110.        -- robot.drop()--пихаем в буфер
  111.        -- os.sleep(25)
  112.        -- robot.select(2)
  113.        -- incontrol.equip()--берем ключ из второго слота
  114.         --robot.suck()--забрать бур(2 слот)
  115.         --robot.select(1)
  116.        -- robot.use()--свинтить буфер (1 слот)
  117.        -- robot.select(2)
  118.         --incontrol.equip()--меняем ключ и бур
  119.         --robot.select(1)
  120.         --turnRight()
  121.       -- end
  122.        back()
  123.      end
  124.  end
  125.  
  126. function digrow(n)
  127.   prevent()
  128.   robot.swingUp()
  129.   robot.swingDown()
  130.   for k=1,n do
  131.     go()
  132.     robot.swingUp()
  133.     robot.swingDown()
  134.     cobbleDel()
  135.     prevent()
  136.   end
  137. end
  138. function digdim(x,y)
  139.   godown()
  140.   godown()
  141.   for n=1,y do
  142.     if tl then turnLeft() else turnRight() end
  143.     digrow(ex)
  144.     if tl then turnRight() else turnLeft() end
  145.     tl = not tl
  146.     if n==y then print("ok") else go() end
  147.   end
  148.   turnRight();
  149.   turnRight();
  150.   tl= not tl
  151. end
  152. ------------Глав прог-----------------
  153. x,y,z=...
  154. tl=false
  155. x=x+0
  156. y=y+0
  157. z=z+0
  158. ex=x-1
  159. fullz=(z-z%3)/3
  160. print("Fullz = " .. fullz)
  161. do
  162. if incont==true then
  163.   if (incontrol~=nil)==false then
  164.     print("!!!ОШИБКА!!!")
  165.     print("Вы забыли установить контроллер инвентаря, зарядка невозможна без него")
  166.     print("Продолжить работать без него?(1-продолжить, 0-выйти)")
  167.     a=io.read(1)
  168.     if a=='1' then
  169.       print('Продолжаем работать, зарядка отключена')
  170.       incont=false;
  171.     else
  172.       print('Инициализация выхода...')
  173.       os.sleep(3)
  174.       computer.shutdown()
  175.     end
  176.   else
  177.     print('Контроллер инвентаря подключен, бур будет заряжаться, не забудьте положить энергохранилище и ключ')
  178.   end
  179. else
  180.   print('Зарядка рабочего инструмента отключена')
  181. end
  182. end
  183. print('Запуск генератора... ',generator~=nil)
  184. print('Запуск чанклодера... ',loader~=nil)
  185. print('Объем рабочей зоны - ',x*y*z,' м^3, будет добыто ~',math.ceil((x*y*z)/64))
  186. print('Проверка завершена, запуск...')
  187. for i=1,fullz do
  188.   digdim(x,y)
  189.   godown()
  190. end
  191. if fullz*3==z then
  192.   elseif fullz*3+1==z then
  193.     goup();
  194.     goup();
  195.     digdim(tl,x,y)
  196. else
  197.   goup();
  198.   digdim(tl,x,y)
  199. end
  200. tosurf()
  201. clearinv()
  202. computer.shutdown()
RAW Paste Data Copied