Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- critLvl = 1000000
- lowLvl = 5000000
- highLvl = 9000000
- -- I made some edits so that the status can be
- -- viewed on wireless pocket computers via
- -- wireless modem /Sudo
- modem = peripheral.wrap("right")
- modem.open(231)
- function displayStatus(state, rodLvl,energy)
- -- displayStatusToMon(term,state,rodLvl,energy)
- monitor = peripheral.wrap("monitor_4")
- print("displayonmon")
- displayStatusToMon(monitor,state,rodLvl,energy)
- end
- function displayStatusToMon(mon,state,rodLvl,energy)
- reactorState = false
- reactorState = state
- mon.clear()
- print(reactorState)
- print("Mon")
- -- sleep(5)
- if mon.setTextScale ~= nil then
- mon.setTextScale(1)
- end
- width, height = mon.getSize()
- local width,height = mon.getSize()
- if width < 15 or height < 5 then
- if mon.setTextScale ~= nil then
- mon.setTextScale(0.5)
- print(width..height)
- else
- return
- end
- -- width, height = mon.getSize()
- if width < 15 or height < 5 then
- return
- end
- else
- print("test2")
- local scale =math.min(width / 16, height / 5, 5)
- --print("Scaling")
- scale = math.floor(scale * 2) / 2
- if scale > 1 and mon.setTextScale ~= nil then
- mon.setTextScale(scale)
- width, height = mon.getSize()
- end
- end
- --print("test====="..state)
- mon.setCursorPos(1,1)
- mon.write("Reactor")
- --sleep(10)
- mon.setCursorPos(1,3)
- --sleep(10)
- mon.write("Status ")
- --print("state===")
- --sleep(10)
- if reactorState then
- mon.setTextColor(colors.green)
- -- writeColor(mon, colors.green, "ON")
- mon.write("ON")
- mon.setTextColor(colors.white)
- else
- -- writeColor(mon, color.red, "OFF")
- mon.setTextColor(colors.red)
- mon.write("OFF")
- mon.setTextColor(colors.white)
- end
- mon.setCursorPos(1,4)
- mon.write("Rod Level; " ..rodLvl .. "%")
- mon.setCursorPos(1,5)
- if width < 16 then
- mon.write("Cell: ")
- else
- mon.write("Energy: ")
- end
- local c
- if energy < critLvl then
- c = colors.red
- elseif energy > lowLvl then
- c = colors.green
- else
- c = colors.orange
- end
- mon.setTextColor(c)
- mon.write(string.format("%d", math.floor(energy/1000 +0.5)))
- -- writeColor(mon,c,string.format("%d",math.floor(energy/1000 +0.5)))
- mon.write("kRF")
- end
- function findReactor()
- --print("Check")
- local pList = peripheral.getNames()
- local i,name
- for i, name in pairs(pList) do
- if peripheral.getType(name) == "BigReactors-Reactor" then
- return peripheral.wrap(name)
- end
- end
- print("Did MCNut break the reactor -- No man daves not here")
- exit()
- end
- function getRodLvl(curLvl)
- local diffEnergy = highLvl - critLvl
- local calcEnergy = curLvl - critLvl
- if calcEnergy < 0 then
- calcEnergy = 0
- elseif calcEnergy > diffEnergy then
- calcEnergy = diffEnergy
- end
- --print(calcEnergy)
- --print(diffEnergy)
- return math.floor(calcEnergy * 100 / diffEnergy * 100 +0.5)
- end
- reactor = findReactor()
- function sendStatus()
- print("Waiting for message")
- local e, s, c, r, m = os.pullEvent("modem_message")
- --print(m)
- --print(m == "reactorStatus")
- if m == "reactorStatus" then
- print("Sending status.")
- local res = {}
- res.active = reactor.getActive()
- res.energyStored = reactor.getEnergyStored()
- res.casingTemperature = reactor.getCasingTemperature()
- res.fuelAmount = reactor.getFuelAmount()
- res.fuelConsumption = reactor.getFuelConsumedLastTick()
- res.energyProduced = reactor.getEnergyProducedLastTick()
- modem.transmit(r, c, textutils.serialize(res))
- end
- end
- -- Can't pass arguments through parallel.waitForAny()
- -- Need a wrapper
- function wait()
- os.sleep(5)
- end
- --print("Startup")
- --reactor = findReactor()
- --print("Echecked Reactor")
- while true do
- --print("Get Energy")
- --print(reactor.getEnergyStored())
- energy = reactor.getEnergyStored()
- if energy < lowLvl then
- reactor.setActive(true)
- rodLvl=0
- elseif energy > highLvl then
- --reactor.setActive(false)
- rodLvl=80
- elseif energy > lowLvl then
- rodLvl = getRodLvl(energy)
- end
- reactor.setAllControlRodLevels(rodLvl)
- print("Rod Level: "..rodLvl.."%")
- --print(reactor.getActive())
- --sleep(10)
- displayStatus(reactor.getActive(),rodLvl, energy)
- if energy < critLvl then
- print("We use To Much Energy its Ransak's Fault")
- elseif energy > lowLvl then
- print("We are Gravy")
- else
- print("Not To Much Not To Little")
- end
- -- print(c
- printEnergy = math.floor(energy/1000 +0.5)
- print(printEnergy.."kRF")
- -- print(math.floor(energy/100.."kRF"))
- parallel.waitForAny(wait, sendStatus)
- term.clear()
- term.setCursorPos(1,1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement