Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local turbine = peripheral.wrap("back")
- local modem = peripheral.wrap("top")
- local desiredSpeed = 1800
- local perfectFlowThrough = 1742
- local myChannel = 10
- function reTimeTurbine()
- print("retiming Turbine")
- while not (turbine.getRotorSpeed() == desiredSpeed and turbine.getFluidFlowRateMax() == perfectFlowThrough) do
- local rotorSpeed = turbine.getRotorSpeed()
- if rotorSpeed == desiredSpeed then
- turbine.setFluidFlowRateMax(perfectFlowThrough)
- turbine.setInductorEngaged(true)
- elseif rotorSpeed < desiredSpeed then
- if rotorSpeed < (desiredSpeed - 200) then
- turbine.setFluidFlowRateMax(2000)
- turbine.setInductorEngaged(false)
- else
- turbine.setFluidFlowRateMax(perfectFlowThrough + 50)
- turbine.setInductorEngaged(true)
- end
- elseif rotorSpeed > desiredSpeed then
- if rotorSpeed > (desiredSpeed + 200) then
- turbine.setFluidFlowRateMax(0)
- turbine.setInductorEngaged(true)
- else
- turbine.setFluidFlowRateMax(perfectFlowThrough - 50)
- turbine.setInductorEngaged(true)
- end
- end
- end
- sleep(0.5)
- end
- function sendMessage(destination, message)
- modem.transmit(destination, myChannel, message)
- end
- function mainLoop()
- while true do
- local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- if message == "reTime" then reTimeTurbine()
- elseif message == "monAll" then monAll(replyChannel)
- elseif message == "disengage" then turbine.setInductorEngaged(false)
- elseif message == "engage" then turbine.setInductorEngaged(true)
- elseif message == "stop" then turbine.setActive(false)
- elseif message == "start" then turbine.setActive(true)
- elseif message == "active" then sendMessage(replyChannel, turbine.getActive())
- elseif message == "stored" then sendMessage(replyChannel, turbine.getEnergyStored())
- elseif message == "speed" then sendMessage(replyChannel, turbine.getRotorSpeed())
- elseif message == "maxflow" then sendMessage(replyChannel, turbine.getFluidFlowMax())
- elseif message == "realflow" then sendMessage(replyChannel, turbine.getFluidFlowRate())
- elseif message == "energyProduced" then sendMessage(replyChannel, turbine.getEnergyProducedLastTick())
- elseif message == "inductor" then sendMessage(replyChannel, turbine.getInductorEngaged())
- end
- end
- end
- function init()
- modem.open(myChannel)
- mainLoop()
- end
- init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement