[Пример] Автокрафт (электросхемы) для робота OpenComputers

Artmoneyse

Администратор
Команда форума
Администратор
Вот самая последняя версия программы для крафтов электросхем.
Код стал теперь короче чем был при крафте медных изолированных проводов но фиксов больше.
Код легко можно изменить под крафты других вещей, достаточно изменить массив "itemforcraft" и добавить проверку на null в цикле загрузки вещей из сундука(если в крафте используются не все 9 слотов верстака).

Скорость работы вполне приемлемая, быстрее чем автоверстак buildcraft.

Код:
local component = require("component")
local c = component.crafting
local ic = component.inventory_controller
local r = require("robot")
setkacrafta = {1, 2, 3,5, 6, 7,9, 10, 11}
itemforcraft = {"Insulated Copper Cable", "Insulated Copper Cable", "Insulated Copper Cable","Redstone", "Iron Ingot", "Redstone","Insulated Copper Cable", "Insulated Copper Cable", "Insulated Copper Cable"}

r.select(4)

function craftthis(counts)
i = 0
while i < counts do
c.craft(2)
r.dropUp(2)
i = i + 1
end
end

numslot = ic.getInventorySize(1)
if numslot == nil then
print("Сундук над роботом не найден!")
else
print("Всего слотов в сундуке:"..numslot)
end

function loadItem(robotslot, chestslot)
if chestslot == 0 then
print("В сундуке не найден нужный предмет!")
else
ic.suckFromSlot(1,chestslot,64)
r.transferTo(robotslot,64)
end
end

function finditem(nameitem)
i = 0
while i < numslot do
i = i + 1
ItemStack = ic.getStackInSlot(1,i)
if ItemStack ~= nil then
if ic.getStackInSlot(1,i)["label"] == nameitem then
return i
end
end
end
return 0
end

doWork = true
while doWork do
craftthis(16)
for j = 1, 9 do

  if r.count(setkacrafta[j]) < 1 then
  print("Кончилось "..itemforcraft[j].." в слоте "..setkacrafta[j].."...")
  loadItem(setkacrafta[j],finditem(itemforcraft[j]))
     if r.count(setkacrafta[j]) < 1 then
     doWork = false
     break
     end
  end
end

end
Результат работы:
результат.jpg


В планах сделать универсальную программу, чтобы можно было подстроить под любой крафт без изменения кода, задавать крафт прямо через сундук.
 
  • Like
Реакции: Gera
Сверху