Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- reactor_client.lua
- -- Client-Skript, das auf Nachrichten (rednet) reagiert
- -- und die von dir gefundenen Methoden bereitstellt.
- -----------------------------------------
- -- KONFIG
- -----------------------------------------
- local reactorSide = "back" -- Dort, wo dein Reactor-Port ist
- local modemSide = "top" -- Modem (Wireless/Wired)
- -----------------------------------------
- -- INIT
- -----------------------------------------
- local reactor = peripheral.wrap(reactorSide)
- if not reactor then
- error("Reaktor-Port an Seite '"..reactorSide.."' nicht gefunden!")
- end
- local modem = peripheral.wrap(modemSide)
- if not modem then
- error("Modem an Seite '"..modemSide.."' nicht gefunden!")
- end
- rednet.open(modemSide)
- print("Reaktor-Client gestartet. ID:", os.getComputerID())
- print("Warte auf Kommandos via rednet...")
- -----------------------------------------
- -- HAUPTSCHLEIFE
- -----------------------------------------
- while true do
- local senderID, msg, proto = rednet.receive("REACTOR_PROTO")
- -- Wir erwarten msg = { cmd="...", ... }
- if type(msg) ~= "table" or not msg.cmd then
- rednet.send(senderID, {error="Ungültiges Kommando"}, "REACTOR_PROTO")
- else
- local cmd = msg.cmd
- if cmd == "GET_DATA" then
- -- Sammle alle Daten, die wir haben wollen:
- local active = reactor.getActive()
- local rfTick = reactor.getEnergyProducedLastTick() or 0
- local fuelAmt = reactor.getFuelAmount() or 0
- local fuelMax = reactor.getFuelAmountMax() or 1
- local fuelCons = reactor.getFuelConsumedLastTick() or 0
- local reac = reactor.getFuelReactivity() or 0
- local temp = reactor.getFuelTemperature() or 0
- local casingT = reactor.getCasingTemperature() or 0
- local rods = reactor.getNumberOfControlRods()
- local rodLevel = 0
- if rods > 0 then
- rodLevel = reactor.getControlRodLevel(0) -- oder Mittelwert, etc.
- end
- local energyStored = reactor.getEnergyStored() or 0
- local energyCap = reactor.getEnergyCapacity() or 1
- local data = {
- active = active,
- energyProduced = rfTick,
- fuelAmount = fuelAmt,
- fuelAmountMax = fuelMax,
- fuelConsumed = fuelCons,
- reactivity = reac,
- fuelTemp = temp,
- casingTemp = casingT,
- rodLevel = rodLevel,
- rods = rods,
- energyStored = energyStored,
- energyCapacity = energyCap
- }
- rednet.send(senderID, data, "REACTOR_PROTO")
- elseif cmd == "SET_ACTIVE" then
- if type(msg.active)=="boolean" then
- reactor.setActive(msg.active)
- rednet.send(senderID, {ok=true}, "REACTOR_PROTO")
- else
- rednet.send(senderID, {error="active muss boolean sein"}, "REACTOR_PROTO")
- end
- elseif cmd == "SET_ROD_LEVEL" then
- if type(msg.level)=="number" then
- local rods = reactor.getNumberOfControlRods()
- for i=0, rods-1 do
- reactor.setControlRodLevel(i, msg.level)
- end
- rednet.send(senderID, {ok=true}, "REACTOR_PROTO")
- else
- rednet.send(senderID, {error="level muss number sein"}, "REACTOR_PROTO")
- end
- else
- rednet.send(senderID, {error="Unbekanntes cmd: "..tostring(cmd)}, "REACTOR_PROTO")
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement