daily pastebin goal
38%
SHARE
TWEET

a

a guest Nov 30th, 2016 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local com = require("component")
  2. local robot = require("robot")
  3. local term = require("term")
  4.  
  5. local vcegoyacheek = robot.inventorySize()        -- определение сколько всего ячеек, присвоение постоянной этого значения
  6.  
  7. -- Соединение материала в полные пачки (64 шт в пачке - максимум)
  8.  
  9. local function popolnit()               -- функция пополнения текущей ячейки до максимума из ячеек, следующих за текущей
  10.   local NAN = robot.select()              -- начальный индекс при входе в цикл, позволяет вернуться в начальную ячейку
  11. --  local NZN = NAN + 1                 -- следующий индекс, прижимает остатки в угол, отделяя готовое от не готового.
  12.   for i = (NAN + 1), vcegoyacheek do          -- идем до конца отсчета ячеек хранения, отталкиваясь от уже готового
  13.     if (robot.compareTo(i) == true) and (robot.space() ~= 0) then -- подбирает одинаковые ячейки для объединения (сравнивается активная с текущей) и исключает полные пачки
  14.       robot.select(i)               -- выбрать текущую ячейку (сделать её активной, сбросив активность с начальной ячейки)
  15.       robot.transferTo(NAN,robot.space(NAN))    -- перенести предметы из текущей ячейки в начальную ячейку; перенос в кол-ве, необходимым до максимума в нач.ячейке
  16.       robot.select(NAN)             -- снова сделать активной Начальную ячейку, чтобы в следующем цикле сравнение было правильным, собираем ячейки идущие за "следующей".
  17.       if robot.space(NAN) == 0 then         -- Если пачка уже полна, то пора выходить из цикла
  18.         break
  19.       end
  20.     end
  21.  
  22.   end
  23. end
  24.  
  25. local function edin()                   -- Функция объединения одинаковых ячеек
  26.   for i = 1, vcegoyacheek do
  27.     robot.select(i)                 -- встаем на текущую ячейку
  28.    
  29.     -- проверяем: "а она не пустая?";"а она не полная?"; - тогда заполнить её из других ячеек, до возможного максимума
  30.     if (robot.count() > 0) and (robot.space() ~= 0) then
  31.       popolnit()
  32.     end
  33.   end
  34. end
  35.  
  36. -- Уплотнение.
  37. -- Уплотнение нужно чтобы строительный материал всегда был у робота "под рукой", без пробелов между пачками
  38. local function perenoc()                -- в пустую ячейку перенести содержимое любой не пустой ячейки из оставшихся вариантов
  39.   local NAN = robot.select()              -- начальный индекс при входе в цикл, позволяет вернуться в начальную ячейку
  40. --  local NZN = NAN + 1                 -- следующий индекс, прижимает остатки в угол, отделяя готовое от не готового.
  41.   for i = (NAN + 1), vcegoyacheek do
  42.     if (robot.count(i) > 0) and (robot.count(NAN) == 0) then  -- верно для не пустой текущей ячейки и пустой начальной ячейки, соответственно
  43.       robot.select(i)               -- выбрать текущую ячейку (сделать её активной, сбросив активность с начальной ячейки)
  44.       robot.transferTo(NAN)           -- перенести предметы из текущей ячейки в начальную ячейку; перенос в кол-ве, необходимым до максимума в нач.ячейке
  45.       robot.select(NAN)             -- снова сделать активной Начальную ячейку, чтобы в следующем цикле сравнение было правильным, собираем ячейки идущие за "следующей".
  46.     end
  47.   end
  48. end
  49.  
  50. -- уплотнение хранилища, упорядочивание пачек так, чтобы пачки шли одна за другой
  51. local function ryad()
  52.   for i=1, vcegoyacheek do
  53.     robot.select(i)                 --встаем на текущую ячейку
  54.     if robot.count() == 0 then
  55.       perenoc()
  56.     end
  57.   end
  58. end
  59.  
  60. edin()  -- находит пачку с материалом и, если не пустая, то дополняет её таким же материалом из последующих ячеек
  61. ryad()  -- Устанавливает пачки в ряд, так, чтобы не было пробелов между пачками
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top