Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- term.clear()
- term.setCursorPos(1,1)
- print("ReactorOs\n")
- local reactor = peripheral.wrap("back") --Wrap dat ass
- local buffer = reactor.getEnergyStored() --Put currect buffer amount in var.
- local controlRodsAmount = reactor.getNumberOfControlRods() --Get number of control rods. Can later be used to loop over each and set percentages.
- local BUFFER_MAX = 10000000 --Max internal buffer.
- local keepAtBuffer = 8000000
- local lastBufferAmount = buffer
- local currentRodLevel = 50 --Set controll rods at 50% for start and do math stuffz later to figure out how much % it should be to power ze shittz.
- local changeSpeed = 10
- local updateDelay = 0.1 --How many seconds of delay there should be each loop. (os.sleep(ThisIsTheVariable))
- local allowedChange = 128 --Amount of change acceptable between the desired output and the actual buffer. This prevents it going up and down every second like a sine wave lol.
- print("ReactorOS fully loaded.")
- function LiftRods() --Made this functions because it needs to check if its above 100% each time.
- if (currentRodLevel - changeSpeed) >= 0 then
- currentRodLevel = (currentRodLevel - changeSpeed)
- else
- currentRodLevel = 0
- end
- end
- function DropRods()
- if (currentRodLevel + changeSpeed) <= 100 then --Cant go -1%... 0% is max...
- currentRodLevel = (currentRodLevel + changeSpeed)
- else
- currentRodLevel = 100
- end
- end
- function Reactor()
- local buffer = reactor.getEnergyStored()
- print("buffer: " .. buffer .. "\nchangeSpeed: " .. changeSpeed .. "\nChange: " .. math.abs(buffer - keepAtBuffer) .. "\ncurrentRodLevel: " .. currentRodLevel .. "\n\n")
- if math.abs(buffer - keepAtBuffer) > 10000 then
- --changeSpeed = 10
- else
- --changeSpeed = 1
- end
- if(buffer + allowedChange) == keepAtBuffer or (buffer - allowedChange) == keepAtBuffer then
- return
- end
- if(buffer < keepAtBuffer and (buffer + allowedChange) < keepAtBuffer) then --Reactor is below min perc...
- print("Lifting rods by " .. changeSpeed .. " step(s).")
- LiftRods()
- reactor.setAllControlRodLevels(currentRodLevel)
- else if (buffer > keepAtBuffer and (buffer - allowedChange) > keepAtBuffer) then
- print("dropping rods by " .. changeSpeed .. " step(s).")
- DropRods()
- reactor.setAllControlRodLevels(currentRodLevel)
- end
- end
- os.sleep(updateDelay) --There is no reason to be SPEEEEEED.
- --Yield bios.
- os.queueEvent("fakeEvent");
- os.pullEvent();
- end
- local doOnce = true
- function SimpleReactor()
- local allowedOffset = 10
- buffer = reactor.getEnergyStored()
- local updateDelay = 0.1 -- 0.1 means update 10 times a second. 1 means every second.
- if doOnce then
- reactor.setAllControlRodLevels(0) --Put this outside loop instead of this dumb shit.
- doOnce = false
- end
- reactor.setActive(buffer < keepAtBuffer)
- os.sleep(updateDelay)
- end
- print("Starting SimpleReactor().")
- while(true) do
- SimpleReactor()
- --Yield bios.
- os.queueEvent("fakeEvent");
- os.pullEvent();
- end
- -- pastebin run HdLq4jDC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement