Перейти к содержимому
  • 0
maxutka99

Как открывать коробки утилисырья роботом из OpenComputers

Вопрос

Подскажите пожалуйста как открывать коробки утилисырья из IC2 роботом из OpenComputers

Чтобы он брал коробки из сундука поворачивал направо и открывал их

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

В сундуке только коробки утильсырья ? 

Как расположены сундуки вокруг робота? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 часа назад, maxutka99 сказал:

Подскажите пожалуйста как открывать коробки утилисырья из IC2 роботом из OpenComputers

Чтобы он брал коробки из сундука поворачивал направо и открывал их

А зачем поворачивать направо для открытия коробок?

 

Открывать коробки можно, не отворачиваясь от сундука. А если сундук для готовой продукции расположен сверху или снизу, то можно вообще обойтись без поворотов.

 

Открыть стак коробок можно, поместив их в руку робота и выполнив скрипт for i=1,64 do robot.use(nil,true) end.

Также нужно позаботиться о том, чтобы в инвентаре робота было достаточно слотов для приёма результата распаковки.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

как мне перемещать коробки из сундука в руку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, maxutka99 сказал:

как мне перемещать коробки из сундука в руку?

Перемещение из сундука в руку выполняется в два этапа: перемещение коробок во внутренний инвентарь робота, а из него в руку:

robot.suck()
inventory_controller.equip()

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
--подарки сверху в сундук закидывать
--сыпуху вниз будет скидывать

local r = require('robot')
local in_con = require('component').inventory_controller

while true do
  r.select(1)
  if r.suckUp(64) then
    local rep = r.count(1)
    in_con.equip()
    for i=1,rep do
      while not r.use() do
        os.sleep(0)
      end
    end

    for i=1, r.inventorySize() do
      if r.count(i) > 0 then
        r.select(i)
        r.dropDown(64)
      end
    end
  else
    os.sleep(15)
  end
end

Всегда пожалуйста ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@Asior Дроп из коробок может не поместиться в инвентаре робота.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
12 часа назад, eu_tomat сказал:

@Asior Дроп из коробок может не поместиться в инвентаре робота.

У меня открытие по 1 стаку потом очистка. 16 слотов не хватит думаешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
45 минут назад, Asior сказал:

У меня открытие по 1 стаку потом очистка. 16 слотов не хватит думаешь?

Эксперимент:

Скрытый текст


7Yk5HVg.png

 

Реальный ассортимент больше в несколько раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Изменил логику работы, теперь открывает все коробки без ожидания поступления новых

В приоритете выгрузка лута

Скрытый текст

--[[открытие коробок утильсырья

в судук над роботом ложим коробки
лут будет скидывать в низ
]]--

local com = require("component")
local term = require("term")

local box,drop = 0,0

if not com.isAvailable("robot") then
  print("только роботы могут использовать эту программу")
  os.exit()
end
local r = require('robot')

if not com.isAvailable("inventory_controller") then
  print("для работы нужен контроллер инвентаря")
  os.exit()
end
local i_c = require('component').inventory_controller

local function unload()
  print("складываю лут...")
  for i = 2, r.inventorySize() do
    if r.count(i) > 0 then
      drop = drop + r.count(i)
      r.select(i)
      if not r.dropDown() then
        print("в сундуке нет места :(")
        os.exit()
      end
    end
  end
  r.select(1)
end

while true do
  term.clear()
  print("всего открыто коробок  "..box)
  print("всего скинуто лута     "..math.ceil(drop).."\n")
  if r.count(1) > 0 or r.suckUp(64) then
    r.select(1)
    i_c.equip()
    r.select(2)
    print("открываю коробки...")
    while r.use() do
      box = box + 1
      if r.count(r.inventorySize()-2) > 0 then
        unload()
      end
    end
    unload()
  else
    print("нет коробок, жду...")
    os.sleep(10)
  end
end

 

 

Изменено пользователем serafim

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...