mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 19:19:21 +01:00
88 lines
2.4 KiB
Lua
88 lines
2.4 KiB
Lua
|
|
local component = require("component")
|
|
local sides = require("sides")
|
|
local robot = require("robot")
|
|
local event = require("event")
|
|
local serialization = require("serialization")
|
|
|
|
local inventory_controller = component.inventory_controller
|
|
|
|
local QUAD_FUEL = "IC2:reactorMOXQuad"
|
|
local DIAM_VENT = "IC2:reactorVentDiamond"
|
|
local IRON_VENT = "IC2:reactorVentSpread"
|
|
local STON_VENT = "IC2:reactorVent"
|
|
local GOLD_VENT = "IC2:reactorHeatSwitchSpread"
|
|
local RCTR_PLAT = "IC2:reactorPlating"
|
|
|
|
local allowed = {
|
|
[QUAD_FUEL] = true,
|
|
[DIAM_VENT] = true,
|
|
[IRON_VENT] = true,
|
|
[STON_VENT] = true,
|
|
[GOLD_VENT] = true,
|
|
[RCTR_PLAT] = true,
|
|
}
|
|
|
|
local map = {
|
|
DIAM_VENT, GOLD_VENT, DIAM_VENT, IRON_VENT, RCTR_PLAT, IRON_VENT, DIAM_VENT, GOLD_VENT, DIAM_VENT,
|
|
IRON_VENT, DIAM_VENT, QUAD_FUEL, DIAM_VENT, IRON_VENT, DIAM_VENT, QUAD_FUEL, DIAM_VENT, IRON_VENT,
|
|
STON_VENT, IRON_VENT, DIAM_VENT, IRON_VENT, DIAM_VENT, IRON_VENT, DIAM_VENT, IRON_VENT, STON_VENT,
|
|
GOLD_VENT, DIAM_VENT, IRON_VENT, DIAM_VENT, QUAD_FUEL, DIAM_VENT, IRON_VENT, DIAM_VENT, GOLD_VENT,
|
|
DIAM_VENT, QUAD_FUEL, DIAM_VENT, IRON_VENT, DIAM_VENT, IRON_VENT, DIAM_VENT, QUAD_FUEL, DIAM_VENT,
|
|
IRON_VENT, DIAM_VENT, GOLD_VENT, STON_VENT, IRON_VENT, STON_VENT, GOLD_VENT, DIAM_VENT, IRON_VENT,
|
|
}
|
|
|
|
local args = {...}
|
|
|
|
if args[1] == "fill" then
|
|
print("Filling...")
|
|
|
|
local filledMap = {}
|
|
for robotSlot = 1, robot.inventorySize() do
|
|
local stack = inventory_controller.getStackInInternalSlot(robotSlot)
|
|
if stack and allowed[stack.name] then
|
|
for mapSlot = 1, #map do
|
|
if map[mapSlot] == stack.name and not filledMap[mapSlot] then
|
|
robot.select(robotSlot)
|
|
print("Drop status", inventory_controller.dropIntoSlot(sides.front, mapSlot, 1))
|
|
filledMap[mapSlot] = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif args[1] == "count" then
|
|
print("Checking...")
|
|
|
|
local need, have = {}, {}
|
|
for i = 1, #map do
|
|
need[map[i]] = (need[map[i]] or 0) + 1
|
|
end
|
|
|
|
for i = 1, robot.inventorySize() do
|
|
local stack = inventory_controller.getStackInInternalSlot(i)
|
|
if stack and allowed[stack.name] then
|
|
have[stack.name] = (have[stack.name] or 0) + stack.size
|
|
end
|
|
end
|
|
|
|
for key, value in pairs(need) do
|
|
local name = key:sub(12, -1)
|
|
|
|
if have[key] then
|
|
if have[key] < value then
|
|
print(name .. ": put " .. (value - (have[key] or 0)))
|
|
else
|
|
print(name .. ": OK, over " .. (have[key] - value))
|
|
end
|
|
else
|
|
print(name .. ": put " .. value)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|