Skip to content

Instantly share code, notes, and snippets.

@MEXAHOTABOP
Last active July 24, 2018 20:17
Show Gist options
  • Save MEXAHOTABOP/1a37f06c99607a3725e6a7bd7b173fa5 to your computer and use it in GitHub Desktop.
Save MEXAHOTABOP/1a37f06c99607a3725e6a7bd7b173fa5 to your computer and use it in GitHub Desktop.
trans = component.proxy(component.list("transposer")())
--[[
Bottom (bottom), Number: 0 -z
Top (top), Number: 1 +y
Back (back), Number: 2 -z
Front (front), Number: 3 +z
Right (right), Number: 4 -x
Left (left), Number: 5 +x
]]
reactor_side, chest_side = 3, 1
reactor_inventory_size = trans.getInventorySize(reactor_side)
chest_inventory_size = trans.getInventorySize(chest_side)
reflector_slots = {2, 10, 12, 20}
quad_rod_slots = {11}
dual_rod_slots = {}
single_rod_slots = {}
rods_slots = {Quad=quad_rod_slots, Dual=dual_rod_slots, Single=single_rod_slots}
function check_and_replace_reflector(num)
if trans.getStackInSlot(reactor_side, num) == nil then
for i = 1, chest_inventory_size do
local stack = trans.getStackInSlot(chest_side,i)
if stack ~= nil and stack.label:find("Refl") ~= nil then
trans.transferItem(chest_side, reactor_side, 1, i, num)
return
end
end
end
end
function check_and_replace_rod(num,size)
local stack = trans.getStackInSlot(reactor_side, num)
if stack == nil then return end -- если сувать стержни куда попало то может бахнуть
if stack.label:find("Depleted") ~= nil then
local first_empty = 0
local first_rod = 0
local need_drop_depleted, need_find_rod = true, true
for i = 1, chest_inventory_size do
local target_stack = trans.getStackInSlot(chest_side, i)
--поиск места под отработаный стержнь
if need_drop_depleted and first_empty == 0 and target_stack == nil then
first_empty = i
end
if need_drop_depleted and target_stack ~= nil and stack.label == target_stack.label and target_stack.size ~= target_stack.maxSize then
trans.transferItem(reactor_side, chest_side, 1, num, i)
need_drop_depleted = false
first_empty = 0
end
--поиск нового стержня
if need_find_rod and target_stack.label:find(size) ~= nil and target_stack.label:find("Depleted") == nil then
need_find_rod = false
first_rod = i
end
end
if first_empty ~= 0 then
trans.transferItem(reactor_side, chest_side, 1, num, first_empty)
need_drop_depleted = false
end
if not need_find_rod and not need_drop_depleted then
trans.transferItem(chest_side, reactor_side, 1, first_rod, num)
end
end
end
while true do
for i = 1, #reflector_slots do
check_and_replace_reflector(reflector_slots[i])
end
for k,v in pairs(rods_slots) do
for j = 1,#v do
check_and_replace_rod(v[j],k)
end
end
computer.pullSignal(1)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment