Last active
July 24, 2018 20:17
-
-
Save MEXAHOTABOP/1a37f06c99607a3725e6a7bd7b173fa5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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