Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print('ReactorControl Engaged. View Monitor.')
- -- Vars
- emptyflag = 0
- offlineflag = 0
- flashflag = 0
- local reactorName = ""
- local monitorWrap = ""
- write("Name of reactor, e.g. BigReactors-Reactor_x")
- reactorName = io.read()
- write("Where is monitor located?")
- monitorWrap = io.read()
- -- Peripherals
- reactor = peripheral.wrap(reactorName )
- monitor = peripheral.wrap(monitorWrap )
- -- Monitor Settings
- monitor.setTextScale(1)
- monitor.setBackgroundColor(colors.black)
- if fs.exists("ProgressBar") then
- write("You have the API")
- else
- write("Downloading API")
- shell.run("pastebin get Rzxj0KKM ProgressBar")
- end
- --Load ProgressBar API
- os.loadAPI('ProgressBar')
- ProgressBar.SetPeripheral(monitorWrap )
- -- Main Function
- while true do
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.setTextColor(colors.white)
- monitor.write('Fuel Level:')
- monitor.setCursorPos(1,2)
- monitor.setTextColor(colors.yellow)
- -- Fuel Bar
- fuelMax = reactor.getFuelAmountMax()
- fuelAmount = reactor.getFuelAmount()
- fuelAmountText = math.floor(((reactor.getFuelAmount()/reactor.getFuelAmountMax())*100)+0.5)
- ProgressBar.SetTable("Fuel", fuelMax, fuelAmount, 2,17,2)
- --ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(20, 2)
- monitor.setTextColor(colors.yellow)
- monitor.write(fuelAmountText..' % Fuel')
- --------------------------------------------------
- monitor.setCursorPos(1,3)
- -- Waste Bar
- monitor.setTextColor(colors.lightBlue)
- wasteMax = reactor.getFuelAmountMax()
- wasteAmount = reactor.getWasteAmount()
- wasteAmountText = math.floor(((reactor.getWasteAmount()/reactor.getFuelAmountMax())*100)+0.5)
- ProgressBar.SetTable("Waste", wasteMax, wasteAmount, 2,17,3)
- --ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(20, 3)
- monitor.setTextColor(colors.cyan)
- monitor.write(wasteAmountText..' % Waste')
- --------------------------------------------------
- monitor.setCursorPos(1,5)
- -- Control Rod %
- monitor.setTextColor(colors.white)
- monitor.write('Control Rod Levels:')
- --------------------------------------------------
- monitor.setTextColor(colors.green)
- monitor.setCursorPos(1,6)
- monitor.write('R1: ')
- monitor.setCursorPos(20,6)
- monitor.write(' '..(100-(reactor.getControlRodLevel(0)))..'% Depth')
- r1 = (100-(reactor.getControlRodLevel(0)))
- ProgressBar.SetTable("R1", 100, r1, 4,15,6)
- --ProgressBar.DrawToPeripheral()
- --------------------------------------------------
- monitor.setCursorPos(1,7)
- monitor.write('R2: ')
- monitor.setCursorPos(20,7)
- monitor.write(' '..(100-(reactor.getControlRodLevel(1)))..'% Depth')
- r2 = (100-(reactor.getControlRodLevel(1)))
- ProgressBar.SetTable("R2", 100, r2, 4,15,7)
- --ProgressBar.DrawToPeripheral()
- --------------------------------------------------
- monitor.setCursorPos(1,8)
- monitor.write('R3: ')
- monitor.setCursorPos(20,8)
- monitor.write(' '..(100-(reactor.getControlRodLevel(2)))..'% Depth')
- r3 = (100-(reactor.getControlRodLevel(2)))
- ProgressBar.SetTable("R3", 100, r3, 4,15,8)
- --ProgressBar.DrawToPeripheral()
- --------------------------------------------------
- monitor.setCursorPos(1,9)
- monitor.write('R4: ')
- monitor.setCursorPos(20,9)
- monitor.write(' '..(100-(reactor.getControlRodLevel(3)))..'% Depth')
- r4 = (100-(reactor.getControlRodLevel(3)))
- ProgressBar.SetTable("R4", 100, r4, 4,15,9)
- --ProgressBar.DrawToPeripheral()
- --------------------------------------------------
- monitor.setCursorPos(1,11)
- -- Temps and Heat
- monitor.setTextColor(colors.white)
- monitor.write('Temperature:')
- monitor.setCursorPos(1,12)
- monitor.setTextColor(colors.lightGray)
- monitor.write('Casing: ')
- if reactor.getCasingTemperature()>=650 then
- monitor.setTextColor(colors.purple)
- else if reactor.getCasingTemperature()>=950 then
- monitor.setTextColor(colors.red)
- else
- monitor.setTextColor(colors.green)
- end
- end
- casingTemp = math.floor(reactor.getCasingTemperature()*100)+0.5
- ProgressBar.SetTable("CasingTemp", 10000, casingTemp, 9,20,12)
- --ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(26,12)
- monitor.write(casingTemp..' C')
- --------------------------------------------------
- monitor.setCursorPos(1,13)
- monitor.setTextColor(colors.yellow)
- monitor.write('Fuel: ')
- if reactor.getFuelTemperature()>=650 then
- monitor.setTextColor(colors.purple)
- else if reactor.getFuelTemperature()>=950 then
- monitor.setTextColor(colors.red)
- else
- monitor.setTextColor(colors.green)
- end
- end
- --monitor.write(reactor.getFuelTemperature()..'C')
- fuelTemp = reactor.getFuelTemperature()
- ProgressBar.SetTable("FuelTemp", 10000, fuelTemp, 9,20,13)
- --ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(26,12)
- monitor.write(fuelTemp..' C')
- --------------------------------------------------
- monitor.setCursorPos(1,15)
- -- Flux Information
- monitor.setTextColor(colors.white)
- -- Title
- monitor.write('Flux:')
- monitor.setCursorPos(1,16)
- monitor.setTextColor(colors.green)
- -- RF Stored
- rfStored = reactor.getEnergyStored()
- rfStoredFormat = rfStored / 1000
- if reactor.getEnergyProducedLastTick()>=500 and reactor.getEnergyProducedLastTick()<2000 then
- monitor.setTextColor(colors.orange)
- end
- if reactor.getEnergyProducedLastTick()>=2000 then
- monitor.setTextColor(colors.red)
- end
- ProgressBar.SetTable("RFStored", 10000000, rfStored, 2,20,16)
- --ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(15,16)
- monitor.write(rfStoredFormat..'K Stored')
- --------------------------------------------------
- -- RF Per Tick
- monitor.setCursorPos(1,17)
- monitor.setTextColor(colors.orange)
- rfPerTick = reactor.getEnergyProducedLastTick()
- ProgressBar.SetTable("RFPerTick", 10000000, rfPerTick, 2,20,17)
- monitor.setCursorPos(22,17)
- monitor.write((math.floor(reactor.getEnergyProducedLastTick()+0.5))..' RF/t')
- --------------------------------------------------
- ProgressBar.DrawToPeripheral()
- monitor.setCursorPos(1,18)
- if flashflag==0 then
- flashflag=1
- if offlineflag==1 then
- monitor.setCursorPos(1,19)
- monitor.setTextColor(colors.lightGray)
- monitor.write('OFFLINE - Manual Override')
- end
- if emptyflag==1 then
- monitor.setCursorPos(1,19)
- monitor.setTextColor(colors.pink)
- monitor.write('OFFLINE - Fuel Exhausted')
- end
- if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)>75 then
- monitor.setCursorPos(1,19)
- monitor.setTextColor(colors.yellow)
- monitor.write('ONLINE - Low Power Mode')
- end
- if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)<=75 then
- monitor.setCursorPos(1,19)
- monitor.setTextColor(colors.orange)
- monitor.write('ONLINE - High Power Mode')
- end
- else
- flashflag=0
- monitor.setCursorPos(1,19)
- monitor.clearLine()
- end
- if reactor.getEnergyStored()<=10000000 and reactor.getEnergyStored()>100 then
- reactor.setAllControlRodLevels(0+(math.floor(reactor.getEnergyStored()/100000)))
- else
- reactor.setAllControlRodLevels(0)
- end
- if reactor.getFuelAmount()<=100 and offlineflag==0 then
- reactor.setAllControlRodLevels(100)
- reactor.setActive(false)
- emptyflag=1
- else
- emptyflag=0
- end
- if rs.getInput('bottom')==false and emptyflag==0 then
- reactor.setActive(true)
- offlineflag=0
- end
- if rs.getInput('bottom')==true and emptyflag==0 then
- reactor.setActive(false)
- reactor.setAllControlRodLevels(100)
- offlineflag=1
- end
- sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement