Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local c = require("component")
- local e = require("event")
- local t = require("term")
- local com = c.computer
- local m = c.modem
- local gpu = c.gpu
- local port = 123
- local router = "44827529-209a-4cb6-afdd-2bf536d7cb93"
- local running
- local Alert = 0
- local x, y = gpu.getResolution()
- function msg(_, rAdr, lAdr, _, _, message)
- if message == "on" then
- running = true
- elseif message == "off" then
- running = false
- elseif message == "shutdown" then
- running = false
- event.ignore("modem_message",msg)
- com.beep(750,1)
- os.shutdown()
- end
- end
- if c.isAvailable("modem") then
- print("Modem available")
- else
- print("ERROR: NO MODEM")
- os.exit()
- end
- os.sleep(0.1)
- print("Opening port "..port)
- os.sleep(0.1)
- local ok = m.open(port)
- if not ok then
- print("ERROR OPENING PORT")
- m.close(123)
- os.exit()
- end
- os.sleep(0.1)
- print("starting listener")
- local ok = e.listen("modem_message",msg)
- if not ok then
- print("ERROR STARTING LISTENER")
- e.ignore("modem_message",msg)
- os.exit()
- end
- os.sleep(0.2)
- t.clear()
- running = true
- while running do
- if c.isAvailable("br_reactor") then
- local r = c.br_reactor
- local rStatus = {}
- t.clear()
- rStatus.temp = {"Temp", r.getCasingTemperature()}
- rStatus.fuel = {"Fuel", r.getFuelAmount()}
- rStatus.fuelMax = {"Max Fuel", r.getFuelAmountMax()}
- rStatus.fuelP = {"Fuel level", rStatus.fuel[2]/rStatus.fuelMax[2]*100}
- rStatus.burnRate = {"Burn Rate", r.getFuelConsumedLastTick()}
- rStatus.storedRF = {"Stored Power", r.getEnergyStored()}
- rStatus.maxRF = {"Max RF", 10000000}
- rStatus.RFP = {"Energy level", rStatus.storedRF[2]/rStatus.maxRF[2]*100}
- if rStatus.fuelP[2] <= 5 then
- Alert = 3
- m.send(router,port,"LowFuel")
- elseif rStatus.fuelP[2] <= 10 then
- Alert = 2
- elseif rStatus.fuelP[2] <= 20 then
- Alert = 1
- end
- if rStatus.RFP[2] < 30 then
- r.setActive(true)
- elseif rStatus.RFP[2] > 80 then
- r.setActive(False)
- end
- if Alert > 0 then
- com.beep(700*Alert, 0.1)
- if Alert == 3 then
- break
- end
- end
- gpu.set(x/2-8,1,"[REACTOR CONTROL]")
- gpu.set(x/4,3,"Temp: "..rStatus.temp[2].."C")
- gpu.set(x/4,4,"Fuel levels: "..rStatus.fuelP[2].."%")
- gpu.set(x/4,5,"Energy levels: "..rStatus.RFP[2].."%")
- gpu.set(x/4,6,"Burn rate: "..rStatus.burnRate[2])
- os.sleep(2)
- else
- t.clear()
- gpu.set(x/2-5,y/2,"[NO SIGNAL]")
- os.sleep(2)
- end
- end
- while not running do
- t.clear()
- gpu.set(x/2-4,y/2,"[OFFLINE]")
- os.sleep(2)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement