Dokumentation zu: uhr.change(WL)

HR Image


CONCEPT:
	uhr.change

BESCHREIBUNG:
	Dies ist eine Detailseite zu uhr(WL). Fuer allgemeine Informationen
	siehe erstmal dort.

	Wenn die Sonne auf- oder untergeht sowie bei der jeweils etwa
	fuenf Minuten vorher anfangenden Daemmerung bekommen die
	Spieler einen entsprechenden Text ausgegeben, solange sie nicht
	in einem geschlossenen Raum sind. Das heisst, es darf nicht
	P_INDOORS gesetzt sein, oder wenn es gesetzt ist, muss gleichzeitig
	auch P_SEE_LIGHT wahr sein.

	Es gibt also eigentlich vier verschiedene Texte, die mudweit erstmal
	wie folgt sind:
		MORN: "Der Tag bricht an."
		DUSK: "Der Abend daemmert..."
		EVEN: "Die Nacht bricht herein."
		DAWN: "Dem Morgen graut..."

	Da das recht langweilig ist, wenn man diese nicht an die Situation
	des Raums anpassen kann, gibt es dazu verschiedene Mechanismen zur
	Aenderung der Texte. Diese sind unterschiedlich speziell, haben
	dabei auch unterschiedliche Prioritaet. Von niedrieger nach hoher
	Prioritaet sortiert sind dies:
	   - Standardmeldung (s.o.)
	   - Zeitzonenspezifische Meldung
	   - Verzeichnisstruktur-spezifische Meldung
	   - Raumspezifische Meldung

	Im Folgenden wird auf jede der Moeglichkeiten in dieser Reihenfolge
	eingegangen. Wichtig ist es zu wissen, dass wenn eine Moeglichkeit
	mit hoeherer Prioritaet einen aktuellen Ausgabetext bestimmt, alle
	anderen nicht zum Zuge kommen. Liefert eine Moeglichkeit allerdings
	nur Meldungen fuer zB MORN und EVEN, so wird weiter nach anderen
	Quellen gesucht, wenn gerade DAWN ausgegeben werden soll.

	Daran anschliessend sind noch einige Hinweise zur Erzeugung der
	Texte zu finden.

	Zeitzonenspezifische Meldung
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Jede der Zeitzonen kann eigene Meldungen definieren, die den
	mudweiten Standard ueberdecken. Dies ist besonders deswegen
	sinnvoll, da die Raeume in einer Zeitzone normalerweise ein
	raeumlich zusammenhaengendes Gebiet sind, auch wenn sie ueber
	verschiedene Verzeichnisse verstreut abgelegt wurden.
	Hier kann also ein Regionsmagier mit sehr wenig Aufwand ein
	komplettes Gebiet gestalten, und dies vor allem an einem
	zentralen Punkt - wenn eine Aenderung noetig ist, so muss nur
	eine Stelle bearbeitet werden, nicht duzende oder hunderte von
	Dateien.
	Die Meldungen sind in /sys/uhr.h abgelegt und koennen nur von
	entsprechend berechtigten Personen geaendert werden, also in
	der Regel Erzmagier und hoeher. Der Aenderungswunsch sollte
	vom verantwortlichen Regionsmagier kommen, dem die Zeitzone
	gehoert.

	Verzeichnisstruktur-spezifische Meldung
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Legt man in ein Verzeichnis die Datei light_change.init,
	so gilt fuer alle Raeume in dieser Datei, sowie fuer alle
	Raeume in dessen Unterverzeichnissen die dort angegebene Info.
	Eine solche Datei in /d/wunderland beeinflusst also alle Raeume
	in der Region, eine weitere in /d/wunderland/kogida hebt die
	Aenderungen fuer alle Raeume in Kogida wieder auf oder besser
	gesagt ueberschreibt die Aenderungen durch neue Aenderungen
	(ein echtes Aufheben ist nicht moeglich).

	Hierbei wird jedoch immer verzeichnisbasiert vorgegangen. Liegt
	also eine Wiese, die sich in Kogida befindet, im Verzeichnis
	/d/wunderland/bluelight/room, so wird deren Text selbstverstaendlich
	nur von /d/wunderland/light_change.init beeinflusst, nicht aber
	von /d/wunderland/kogida/light_change.init !

	Der Aufbau der Datei ist recht einfach. Es werden immer nur die
	ersten vier Zeilen der Datei beachtet (weiter unten koennte man
	Kommentare unterbringen). Jede Zeile steht fuer einen Lichtwechsel-
	Zustand: die erste Zeile fuer MORN, die zweite fuer DUSK usw.
	Leerzeilen gelten dabei als 'hier soll keine Aenderung erfolgen',
	es bestimmen also naeher zur Verzeichniswurzel liegende light_change
	Dateien, die zeitzonenbestimmte Meldung oder der mudweite Standard
	die Texte. Ebenso verhaelt es sich, wenn die Zeile gar nicht
	existiert (die Datei hat nur drei Zeilen: DAWN ist unbeeinflusst
	durch diese Datei. Leerzeile heisst uebrigens in diesem Zusammenhang,
	dass auch keinerlei 'whitespaces' (Leerzeichen, Tabulator) enthalten
	sein duerfen.

	Moechte man einen Umbruch in einem der Texte einbauen, so ist dies
	durch ein \n im Text moeglich. Dies ist nicht mit "\n" in LPC
	zu verwechseln, sondern entspricht in LPC "\\n". Wem das jetzt
	nichts sagt: Macht nichts, einfach '\' und 'n' im Editor eintippen.
	Es gibt zZ allerdings keine Moeglichkeit ein \n im Text unterzu-
	bringen, ohne dass es so interpretiert wird (kein Escape vorhanden);
	jedoch sollte es kaum Texte geben wo das erforderlich waere.
	Siehe hierzu auch das Beispiel unten.

	Fuer etwas kompliziertere Faelle kann eine erweiterte Syntax
	benutzt werden. Diese ist der Uebersichtlichkeit wegen in der
	eigenen Seite uhr.changefile(WL) erlaeutert.

	Weiterhin 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).

	Raumspezifische Meldung
	~~~~~~~~~~~~~~~~~~~~~~~
	Die spezifischste Moeglichkeit, die auch die hoechste Prioritaet
	hat, erfolgt durch im Raum abgelegte Informationen - in der Eigenschaft
	P_LIGHT_CHANGE. Dort abgelegte Meldungen gelten nur fuer diesen
	einen Raum. Damit kann man sehr genau vorgehen, andererseits
	hat man auch sehr viel Arbeit. Wie die Daten aussehen muessen, ist
	in der Hilfe zu der Eigenschaft beschrieben, so dass hier nicht
	naeher darauf eingegangen werden soll.

HINWEISE:
	Die Texte werden von der Uhr selbst umgebrochen und an die Spieler
	ausgegeben. Es sollten in der Regel Texte ohne interne Umbrueche
	sein, ausserdem duerfen sie keine Sonderzeichen wie Farbattribute
	enthalten.

	Die raumspezifische Meldung koennte einen Magier dazu verleiten,
	die Eigenschaft zu missbrauchen. Es sind nur (!) Texte abzulegen,
	diese duerfen sich insbesondere nicht von Abfrage der Eigenschaft
	zu Abfrage aendern. Die Abfrage darf keine Nebeneffekte ausloesen,
	da einerseits nicht garantiert wird, dass ein Spieler im Raum ist
	und andererseits nicht garantiert wird, dass sie immer aufgerufen
	wird, da die Texte in der Uhr gepuffert werden! Es ist durchaus
	moeglich (und realistisch), dass die Eigenschaft in der Zukunft
	Nebeneffekte aktiv verhindert.
	Moechte man soetwas umsetzen, so sollte man doch die speziell
	dafuer bereitgestellten Methoden benutzen, die in uhr(WL) be-
	schrieben werden.

BEISPIEL:
	Hier mal ein Beispiel fuer eine 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!

	---
	^Du raekelst Dich schlaefrig.
	^
	^Es wird immer dunkler.\nDu wirst muede.
	---

	Die Datei hat nur 3 Zeilen, also wird DAWN nicht beeinflusst.
	Weiterhin ist die 2. Zeile leer, also wird auch DUSK nicht
	veraendert. Beim Tagesanbruch wird "Du raekelst Dich schlaefrig."
	ausgegeben; beim Nachtanbruch zwei Zeilen, einmal
	"Es wird immer dunkler." und "Du wist muede.".

SIEHE AUCH:
	uhr(WL), P_TIMEZONE, P_LIGHT_CHANGE, uhr.changefile(WL)


Start » Magierhandbuch » Docu » Konzepte » Uhr.change Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!