CONCEPT:
uhr.changefile
BESCHREIBUNG:
Dies ist eine Detailseite zu uhr.change(WL), welche wiederum eine
Detailseite zu uhr(WL) ist. Fuer allgemeine Informationen siehe
erstmal dort.
Hier wird die komplexe Syntax fuer Verzeichnisstruktur-spezifische
Lichtwechselmeldungen beschrieben. Wenn man mit dem Begriff nichts
anfangen kann sollte man erst die o.g. Dokumentation verstehen!
Die Textdatei kann durch Befehlssequenzen angereichert werden um
verschiedene, zufaellig ausgewaehlte Texte zu verwenden oder einen
Master um den Text zu bitten. Wichtig ist, dass bereits auf der
ersten Zeile direkt am Anfang ein Kommandowort steht, damit die
Datei als erweitert erkannt werden kann.
Im Folgenden werden die Kommandos zusammen mit ihren Parametern
beschrieben:
CHANGE [MORN|DUSK|EVEN|DAWN] <n>
Hiernach beginnt ein Block fuer den gegebenen Lichtwechsel.
Die folgende Zahl n ist auf die Anzahl der alternativen
zu setzen. CHANGE EVEN 5 sagt also aus, dass der folgende
Block aus 5 Zeilen Lichtwechselmeldungen zur Nacht sind.
Wenn die Zahl n hier falsch verwendet wird, so kann es zu
ungewollten Meldungen kommen.
CHANGE [MORN|DUSK|EVEN|DAWN] MASTER
In der folgenden Zeile steht der absolute Pfad eines LPC-Objektes,
welches den Lichtwechseltext liefern soll. In dem Objekt wird
die ebenfalls anzugebende Funktion aufgerufen, mit dem Lichtwechsel-
Status als Argument. Achtung, wenn der Master nicht geladen werden
kann oder keinen String liefert, wird diese ganze Datei ignoriert.
Die darauffolgende Zeile hat das Format "Pfadname Funktionsname".
Auf keinen Fall duerfen Leerzeichen oder ^M folgen! Fehler beim
Aufruf des jeweiligen Masters landen in /log/UHR.
Direkte Texte und Master koennen fuer verschiedene Lichtwechsel
gemischt werden. Werden fuer einen Lichtwechsel mehrere Blocke
definiert, so gilt nur der jeweils erste!
Jede Zeile eines Blockes mit direkten Texten (<n> nicht MASTER)
steht fuer eine Variante eines Lichtwechseltextes. Einer davon
wird zufaellig ausgewaehlt und fuer alle Raeume fuer die diese
Datei gilt verwendet. Um einen Umbruch in die Zeile einzubauen
(ohne sie zu zwei Zeilen zu machen) ist auch hier der Text '\n'
einzufuegen.
Wiederum ist es sehr wichtig die Datei im 'Unix-Format' zu
speichern, also nicht mit ^M von M$DOS o.ae. Ggf sollte man die
Dateien nach dem Heraufladen mit einem Tool umwandeln (zb 'dos2unix'
des Ztools).
Zu beachten ist weiterhin, dass keine Zeile ausser Kommandozeilen
mit dem Teilstring "CHANGE" beginnen duerfen. Es sollten so
wenig wie moeglich von diesen Dateien angelegt werden, da sie
doch ein bisschen Rechenaufwand erfordern. Da jede Datei pro
Lichtwechsel aber nur einmal ausgewertet wird, ist es egal wieviele
Raeume sich auf eine einzelne Datei beziehen.
Die Master duerfen keine (!) Nebeneffekte ausloesen, also wirklich
nur den Text errechnen und ausgeben. Ausserdem sollte darauf
geachtet werden sie effizient zu programmieren.
BEISPIEL:
Hier ein Beispiel fuer eine erweiterte light_change.init Datei. Sie
ist eingerueckt, damit sie zum Format der Hilfeseite passt. Jeder
Zeilenanfang ist durch ^ markiert. Dies ist nur fuer die Hilfeseite
so, die Zeichen muss man weglassen!
---
^CHANGE MORN 1
^Was fuer ein toller Tag steht uns wieder bevor?\nNun los!
^CHANGE DUSK 2
^Das Licht ist bald zu schlecht zum Lesen.
^Es wird immer dunkler.
^CHANGE DAWN MASTER
^/d/smaragdenstadt/master/changemaster GetLight
---
Zum Morgengrauen wird also changemaster->GetLight(DAWN) ausgefuehrt.
DAWN usw sind in uhr.h definiert.
SIEHE AUCH:
uhr(WL), uhr.change(WL)
|