- Lua 100%
|
|
||
|---|---|---|
| programme | Update stellwerk.lua | |
| stellwerke | Projektierung Montabau | |
| LICENSE.md | Neues Readme, Lizenz umbenannt | |
| README.md | Documented more files in README | |
ESTW-TC
Ein elektronisches Stellwerk für den Minecraft-Mod ComputerCraft.
Stellwerk-Rechners
Der typische Aufbau eines Stellwerk-Rechners (Server, der mit dem Bildschirm) ist wie folgt:
- bin
- stellwerk.lua
- log.lua
- ...
- log (Ordner wird automatisch erstellt)
- config.lua
- fahrstrassen.tmp (Datei wird automatisch erstellt, wenn speichereFahrstrassen aktiviert ist)
- gleisbild.txt
- startup
Aufbau startup
Durch die Erstellung einer Datei namens startup wird das ESTW gestartet, sobald der Computer startet (insb. wenn der Chunk wieder geladen wird, weil ein Spieler in die Nähe kommt).
shell.run("bin/stellwerk.lua")
Aufbau gleisbild.txt
Hier kommt das Gleisbild (Hintergrundbild) als reiner Text hinein. Backslashes \ brauchen nicht verdoppelt werden. Bitte daran denken, dass die untersten 3 Zeilen von der ESTW-Software benötigt werden
Aufbau config.lua
Die Projektierung des Stellwerks (Konfiguration der Anzeige, Ein-/Ausgänge etc.) erfolgt über eine Config-Datei im Lua-Format.
Folgende Konstanten sollten am Anfang der Config-Datei definiert werden:
local SIGNAL_HP = "hp"
local SIGNAL_SH = "sh"
local SIGNAL_ERS = "ers"
local SIGNAL_ZA = "za"
local WEICHE_GERADE = 0
local WEICHE_ABZW = 1
Bei Eingängen gibt es zwei Aktionen:
Wenn anAktion wird einmalig ausgeführt, wenn ein Redstone-Signal angelegt wirdSolange anAktion wird dauerhaft ausgeführt, solange ein Redstone-Signal anliegt
Datentyp "Eingang": Table mit folgenden Werten:
pcZahl oder String: Bezeichnung des ClientsauString: Seite des Clients, einer aus {"top", "bottom", "left", "right", "front", "back"}fbZahl: Farbe im Bundled Cable, siehe ComputerCraft-Wiki
Datentyp "Position":
xZahl: Position des Signals im Gleisbild auf der X-Achse, linkeste Spalte ist 1yZahl: Position des Signals im Gleisbild auf der Y-Achse, oberste Zeile ist 1
Die Reihenfolge der benannten Schlüssel kann beliebig geändert werden.
-
signaleSignale werden zum Anzeigen von Signalbegriffen sowie zum Einstellen von Fahrstraßen verwendet.Ein Klick schreibt den Namen des Signals in das Feld EIN und stellt ggf. eine Fahrstraße ein.
Hat ein Signal entweder die Eigenschaft "hp" oder "stelle_hp", wird es als Hauptsignal angezeigt. Hat ein Signal entweder die Eigenschaft "stelle_za" oder "za", ist das Signal eine Zustimmungsabgabe an ein anderes Stellwerk, ohne ein Signal vor Ort zu stellen. In allen anderen Fällen wird ein Sperrsignal angezeigt.
"hp" und "stelle_hp" sollten nicht gleichezeitig verwendet werden, genauso wie "sh" und "stelle_sh" sowie "za" und "stelle_za".
- Name des Signals
- Position: Positionierung auf dem Gleisbild
richtungString: Ausrichtung des Signals, einer aus {"l", "r"}hpEingang: Solange an wird das Signal als grün (Fahrtbegriff) angezeigtshEingang: Solange an wird das Signal als weiß (Rangierfahrtbegriff) angezeigtzaEingang: Solange an wird das Signal als orange (Zustimmungsabgabe) angezeigtstelle_hpAusgang: Ist an, wenn das Signal einen Fahrtbegriff zeigen sollstelle_shAusgang: Ist an, wenn das Signal einen Rangierfahrtbegriff zeigen sollstelle_ersAusgang: Ist an, wenn das Signal einen Ersatzsignalbegriff zeigen sollstelle_zaAusgang: Ist an, wenn das Signal eine Zustimmungsabgabe isthaltAbschnitteListe von Strings: Namen von Haltabschnitten oder Gleisen. Beim Belegen einer der Abschnitte wird das Signal auf Halt gestellthaltAusgang: Impuls, wenn das Signal im ESTW auf Halt gestellt wird
- Name des Signals
-
fsZieleVerhält sich für das Einstellen von Fahrstraßen wie ein Signal. Ein Klick schreibt den Namen des Fahrstraßenziels in das Feld EIN und stellt ggf. eine Fahrstraße ein.- Name des Fahrstraßenziels
- Position: Positionierung auf dem Gleisbild
lengthZahl: Anzahl der Zeichen, die auf Klick reagieren sollen
- Name des Fahrstraßenziels
-
fsAufloeser- Name des FS-Auflösers
- Eingang: Wenn an, werden alle Fahrstraßen, die den Namen des FS-Auflösers in "aufloeseAbschn" definiert haben, aufgelöst
- Name des FS-Auflösers
-
bahnuebergaenge- Name des Bahnübergangs
- Eingang: Solange an, wird der Bahnübergang als gesichert angezeigt
- Position: Positionierung auf dem Gleisbild
hoeheZahl: Anzahl Zeilen, über die der Bahnübergang gezeichnet werden soll
- Name des Bahnübergangs
-
gleise- Name des Gleises
- Eingang:
- Solange an, wird das Gleis als Besetzt angezeigt.
- Wenn an, werden Signale, die den Namen des Gleises in "haltAbschnitte" enthalten, auf Halt gestellt
- Wenn an, werden Signale der Fahrstraßen, die den Namen des Gleises in "haltAbschnitte" enthalten, auf Halt gestellt
- Position: Positionierung auf dem Gleisbild
textString: anzuzeigender Text (wird gefärbt)weicheTable mit folgenden 2 Werten:- String: Name der Weiche
- Zahl: Eine von {WEICHE_GERADE, WEICHE_ABZW}
- Eingang:
- Name des Gleises
-
weichen- Name der Weiche
- Ausgang: Ist an, wenn die Weiche abzweigend gestellt sein soll
- Name der Weiche
-
fahrstrassenteileGleise können ebenfalls als FS-Teile verwendet werden und müssen bei gleichem Namen nicht zusätzlich hier definiert werden.Hinweis zur Benennung: Ist in der Fahrstraße das FS-Teil "A" definiert, werden davon die FS-Teile "A", "A/1", "A/2" und "A/3" angesprochen. Dies ist z.B. bei Kurven sinnvoll, wenn zusammengehörige Teile in verschiedenen Zeilen sind. Diese Regel gilt analog für Gleise.
- Name des Fahrstraßenteils
- Position: Positionierung auf dem Gleisbild
textString: anzuzeigender Text (wird gefärbt)
- Name des Fahrstraßenteils
-
fahrstrassen- Name der Fahrstraße: "Start.Ziel" für eine Zugstraße von Start nach Ziel, "Start-Ziel" für eine Rangierstraße von Start nach Ziel. Beispiel: "A.N1" für Signale A und N1 sowie "N1.XAP" für Signal A nach Fahrstraßenziel XAP
fsTeileListe von Strings: Namen von Fahrstraßenteilen oder Gleisen, die gefärbt werden sollen, wenn die Fahrstraße eingestellt istmelderEingang: Solange an, wird die Fahrstraße als eingestellt angezeigtanstossEingang: Wenn an wird versucht, die Fahrstraße einzustellenstellerAusgang: Impuls, wenn die Fahrstraße eingestellt werden sollaufloeserAusgang: Impuls, wenn die Fahrstraße (manuell) augelöst werden sollgleiseListe von Strings: Namen von Gleisen, die nicht belegt sein dürfen, wenn die Fahrstraße eingestellt werden sollsignaleSignale, die einen Signalbegriff anzeigen sollen, wenn die Fahrstraße eingestellt ist. Wird die Fahrstraße aufgelöst, werden alle Signale der Fahrstraße auf Halt gestellt.- Name des Signals: String, einer aus {SIGNAL_HP, SIGNAL_SH, SIGNAL_ERS, SIGNAL_ZA}
haltAbschnitteListe von Strings: Namen von Gleisen, wenn diese belegt werden, werden alle Signale der Fahrstraße auf Halt gestelltaufloeseAbschnString: Name des Auflöseabschnitts, wenn dieser belegt wird, wird die Fahrstraße aufgelöstweichenListe von Strings: Namen von Weichen, die auf abzweigende Lage gebracht werden sollenrangierenBoolean: Ob die Fahrstraße eine Rangierstraße (blau statt grün) ist, einer von {true, false}, default ist false
- Name der Fahrstraße: "Start.Ziel" für eine Zugstraße von Start nach Ziel, "Start-Ziel" für eine Rangierstraße von Start nach Ziel. Beispiel: "A.N1" für Signale A und N1 sowie "N1.XAP" für Signal A nach Fahrstraßenziel XAP
-
gleisbildDateiString, erforderlich: Name der Datei mit dem Hintergrundtext für das Gleisbild -
stellwerkNameString, erforderlich: Name des Stellwerks für die Kommunikation mit den Clients -
bildschirmString, erforderlich: Seite des Bildschirms, einer aus {"top", "bottom", "left", "right", "front", "back"} -
modemString, erforderlich: Seite des Modems, einer aus {"top", "bottom", "left", "right", "front", "back"} -
speichereFahrstrassenBoolean: Ob Fahrstraßen über einen Reboot des Stellwerks hinweg gespeichert werden sollen, einer von {true, false}, default ist false
Client-Rechner
Der typische Aufbau eines Client-Rechners (der mit dem Bildschirm) ist wie folgt:
- bin
- client.lua
- log.lua
- ...
- log (Ordner wird automatisch erstellt)
- config.lua
- startup
Aufbau startup
Durch die Erstellung einer Datei namens startup wird das ESTW gestartet, sobald der Computer startet (insb. wenn der Chunk wieder geladen wird, weil ein Spieler in die Nähe kommt).
shell.run("bin/client.lua")
Aufbau config.lua
Die Projektierung des Stellwerks (Konfiguration der Anzeige, Ein-/Ausgänge etc.) erfolgt über eine Config-Datei im Lua-Format.
Folgende Variablen können gesetzt werden:
-
stellwerkNameString, erforderlich: Name des Stellwerks für die Kommunikation mit dem Server -
roleString, erforderlich: Kennung des Clients innerhalb des Stellwerks, wird in der Server-Config alspcreferenziert -
modemString, erforderlich: Seite des Modems, einer aus {"top", "bottom", "left", "right", "front", "back"} -
sidesTable mit den Seiten, an denen die Bundeled Redstone-Kabel angeschlossen sind. Pro Eintrag ist der Schlüssel einer aus {"top", "bottom", "left", "right", "front", "back"}, der Wert ist immertrue.Beispiel:
sides = { right = true, }