Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- matrix_client.lua
- -- Läuft auf dem Computer, der direkt an der Mekanism Induction Port sitzt.
- -- Erkennt automatisch, welche Methoden existieren und ruft nur diese auf.
- -- Antwortet per rednet mit einem Daten-Objekt.
- -----------------------------------------
- -- 1) KONFIG
- -----------------------------------------
- local matrixSide = "back" -- Seite, wo dein Induction-Port sitzt
- local modemSide = "top" -- Seite, wo dein (wireless/wired) Modem ist
- -----------------------------------------
- -- 2) INIT
- -----------------------------------------
- local matrix = peripheral.wrap(matrixSide)
- if not matrix then
- error("Konnte Induction-Port an Seite '"..matrixSide.."' nicht finden!")
- end
- local modem = peripheral.wrap(modemSide)
- if not modem then
- error("Modem an Seite '"..modemSide.."' nicht gefunden!")
- end
- rednet.open(modemSide)
- print("Mekanism-Induction-Client gestartet. ID: "..os.getComputerID())
- print("Warte auf Abfragen via rednet...")
- -- Alle verfügbaren Methoden ermitteln
- local methodList = peripheral.getMethods(matrixSide) or {}
- local methodSet = {}
- for _, m in ipairs(methodList) do
- methodSet[m] = true
- end
- -- Kleine Hilfsfunktion: Ruft eine Methode sicher auf
- local function safeCall(methodName, ...)
- if methodSet[methodName] then
- -- Dann rufen wir "matrix[methodName](...)" per Lua-Reflection auf
- return matrix[methodName](...)
- end
- return nil
- end
- -----------------------------------------
- -- 3) HAUPTSCHLEIFE
- -----------------------------------------
- while true do
- local sender, msg, proto = rednet.receive("mekanism_matrix")
- if type(msg) ~= "table" or not msg.cmd then
- rednet.send(sender, {error="Ungueltiges Kommando"}, "mekanism_matrix")
- else
- if msg.cmd == "GET_DATA" then
- -- Versuche diverse Felder zu holen:
- -- (Wir wissen nicht, welche existieren => safeCall)
- local stored = safeCall("getEnergy") or safeCall("getEnergyStored") or 0
- local capacity = safeCall("getMaxEnergy") or safeCall("getMaxEnergyStored") or 1
- local inputRate = safeCall("getInputRate") or safeCall("getLastInput") or 0
- local outputRate= safeCall("getOutputRate") or safeCall("getLastOutput") or 0
- -- Baue Rueckgabe
- local data = {
- stored = stored,
- capacity = capacity,
- inputRate = inputRate,
- outputRate = outputRate
- }
- rednet.send(sender, data, "mekanism_matrix")
- else
- rednet.send(sender, {error="Unbekanntes Kommando: "..tostring(msg.cmd)}, "mekanism_matrix")
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment