Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local term = require("term")
- local ser = require("serialization")
- local shell = require("shell")
- local term = require("term")
- local colors = require("colors")
- local sides = require("sides")
- local gpu = component.gpu
- rebuffer = 10000000
- tebuffer = 1000000
- reactors = {}
- turbines = {}
- tanks = {}
- numtanks = 0
- numreactors = 0
- numturbines = 0
- steamreq = 0
- bufferlevel = 0
- buffercapacity = 0
- function findReactors()
- for add, _ in component.list("br_reactor") do
- reactors[add] = component.proxy(add)
- numreactors = numreactors + 1
- end
- print("Found " .. numreactors .. " reactors at:")
- for add, _ in pairs(reactors) do
- print(add)
- end
- os.sleep(2)
- end
- function findTurbines()
- for add, _ in component.list("br_turbine") do
- turbines[add] = component.proxy(add)
- numturbines = numturbines + 1
- end
- print("Found " .. numturbines .. " turbines at:")
- for add, _ in pairs(turbines) do
- print(add)
- end
- os.sleep(2)
- end
- function findTanks()
- for add, _ in component.list("tank_controller") do
- tanks[add] = component.proxy(add)
- numtanks = numtanks + 1
- end
- print("Found " .. numtanks .. " tanks at:")
- for add, proxy in pairs(tanks) do
- print(add)
- buffercapacity = buffercapacity + proxy.getTankCapacity(sides.up)
- end
- print("Total Buffer Capacity = " .. buffercapacity .. " mb")
- os.sleep(2)
- end
- function fillBuffer()
- for add, proxy in pairs(reactors) do
- proxy.setAllControlRodLevels(100)
- while proxy.getHotFluidAmount() < proxy.getHotFluidAmountMax() do
- for i = 0, (proxy.getNumberOfControlRods() - 1) do
- if ((proxy.getCoolantAmount() / proxy.getCoolantAmountMax()) * 100) >= 50 then
- if proxy.getControlRodLevel(i) > 0 then
- proxy.setControlRodLevel(i, proxy.getControlRodLevel(i) - 1)
- os.sleep(0.5)
- end
- else
- break
- end
- end
- end
- end
- end
- findReactors()
- findTurbines()
- findTanks()
- --fillBuffer()
- function displayStatus()
- term.clear()
- for add, _ in pairs(reactors) do
- --print("Reactor Load: " .. reactors[add].load .. "%")
- end
- for add, _ in pairs(turbines) do
- print("Turbine Rotor Speed: " .. turbines[add].rpm .. " RPM")
- end
- print("Buffer Tank Level: " .. math.floor(((bufferlevel / buffercapacity) * 100)) .. "%")
- print("Turbine Steam Requirements: " .. steamreq .. " mb/t")
- end
- print("setup complete!")
- while true do
- steamreq = 0
- bufferlevel = 0
- for add, proxy in pairs(turbines) do
- if proxy.getActive() then
- if proxy.getRotorSpeed() < 1775 then
- proxy.setFluidFlowRateMax(proxy.getFluidFlowRateMaxMax())
- proxy.setInductorEngaged(false)
- elseif proxy.getRotorSpeed() > 1825 then
- proxy.setFluidFlowRateMax(0)
- end
- if ((proxy.getEnergyStored() / tebuffer) * 100) < 10 and proxy.getRotorSpeed() > 1775 then
- proxy.setInductorEngaged(true)
- elseif ((proxy.getEnergyStored() / tebuffer) * 100) > 90 then
- proxy.setInductorEngaged(false)
- end
- turbines[add].rpm = math.floor(proxy.getRotorSpeed())
- steamreq = steamreq + proxy.getFluidFlowRateMax()
- end
- end
- for add, proxy in pairs(tanks) do
- bufferlevel = bufferlevel + proxy.getTankLevel(sides.up)
- end
- for add, proxy in pairs(reactors) do
- for i = 0, (proxy.getNumberOfControlRods() - 1) do
- proxy.setControlRodLevel(i, (bufferlevel / buffercapacity) * 100)
- end
- -- if proxy.getActive() then
- -- proxy.setAllControlRodLevels(100 - (steamreq / proxy.getHotFluidAmountMax()) * 100)
- -- end
- end
- displayStatus()
- os.sleep(0.5)
- end
- --[[
- file = io.open("reactorstatus", "w")
- file:write(ser.serialize(reactors))
- file:close()
- os.exit()
- file = io.open("reactorstatus", "r")
- reactors = ser.unserialize(file:read("*all"))
- file:close()
- ]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement