Dokumentation zu: AddExit(L)

HR Image


FUNKTION:
	varargs void AddExit(mixed cmd, mixed room, mixed dest, mixed msgs)

ARGUMENTE:
	cmd:  Kommando oder Liste vom Kommandos, die durch den Ausgang
	      fuehren sollen (string oder string*)
	room: Pfadname des Raumes, zu dem der Ausgang fuehrt (vergl. Bemerk.)
              oder Closure.
        dest: (optional) String der die Richtung des Ausgangs beim Durch-
              schreiten darstellt (wenn 0 wird Richtung aus 'cmd' erstellt)
	msgs: (optional) Meldungen die beim Durchschreiten des Exits ausge-
              geben werden (string, string* oder closure)

BESCHREIBUNG:
	Erzeugt in einem Raum einen neuen sichtbaren Ausgang, d.h. er wird
        als 'sichtbarer Ausgang' mit der Langbeschreibung angezeigt. Gibt ein
        Spieler das Kommando 'cmd' ein, wird er in den Raum 'room' bewegt.

        Ist 'room' eine Closure wird diese mit dem eingegbenen Verb als
        Argument aufgerufen. Das Moven und die Ausgabe der Meldungen an den
        Raum oder Spieler muss diese Closure selbst uebernehmen. Die anderen
        Argumente von AddExit() werden ignoriert. Die Closure muss bei Erfolg
        als Returnwert 1 liefern.

	Die Closure kann auch einen String zurueckliefern. Dieser wird dann
	als Zielraum benutzt, als haette man ihn direkt in AddExit()
	angegeben.

	Sowohl der direkt angegebene Raumstring als auch der evt. von der
	Closure zurueckgelieferte sollte immer mit '/' beginnen und niemals
	mit ".c" enden. '..' sowie '.' wird korrekt ausgewertet. '~' oder
	'~name' fuehrt in das Homedir des entsprechenden Magier in der
	Domain oder in /players. '+domain' in eine andere Region etc...

        Ist kein 'dest' angegeben oder dest==0 dann wird beim Durchschreiten
        aus 'cmd' die Richtung erstellt. Wenn 'cmd' "norden" ist, kommt bei
        sichtbaren Spielern: "<Name> geht nach Norden." Dies funktioniert je-
        doch nur solange 'cmd' eine Himmelsrichtung oder "oben" bzw. "unten"
        ist.

        Ist 'dest' angegeben, muss es 0 oder ein String sein, der eine Rich-
        tung darstellt. Bsp: "in das Void". Beim Durchschreiten des Exits
        steht dann da: "<Name> geht in das Void."
        Das Argument 'dest' ersetzt damit die _alte_ Form des 'room' Argu-
        ments: "in das Void#/room/void". Die alte Form funktioniert vorerst
        trotzdem noch.

	Ist 'msgs' nicht angegeben, werden die standardmaessigen Movemel-
        dungen wie eben geschildert ausgegeben. 'msgs' ist ein dreielemen-
        tiges Array aus Strings:
	({ Meldung an Spieler, Meldung an alten Raum, Meldung an Zielraum })
	Ungebrauchte Elemente sind auf 0 zu setzen; das Array wird auto-
        matisch mit 0-Elementen aufgefuellt, wenn es nicht 3 Elemente gross
        ist.

        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        ACHTUNG! Das Format von *msgs hat sich geaendert. Frueher setzt man:
        ({ "Du watest ins Void.", "watet ins Void" , "watet herein"})
        Der Name des Spielers und Satzzeichen wurde dann automatisch ange-
        fuegt. JETZT muss/kann man das selbst tun. Man erreicht das Beispiel
        von eben so: ({ "Du watest ins Void.", "&Name watet ins Void." ,
        "&Name watet herein."})
        Ist '&Name' im String enthalten, wird der capitalized'te Name an
        diese Stelle gesetzt. '&name' wird durch den Name ohne capitalize()
        ersetzt.
        Files, die vor Son, 18. Jul 1999, 00:00:00 Uhr geschrieben wurden
        (file_date), werden momentan noch aufs neue Format gepatcht. Aendert
        man etwas an dem File, MUSS(!!!) man die Messages korrigieren, da
        sonst die Move-Messages etwas seltsam aussehen. gleiches gilt, wenn
        die Meldungen von einer Closure erzeugt werden! Der Patch wird aber
        nur uebergangsweise laufen, um nicht alle Exits auf einmal aendern
        zu muessen.

        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        Wird nur ein String anstelle eines Arrays angegeben, wird dieser als
	'Meldung an Spieler' gewertet.

        Wird eine Closure angegeben, muss diese einen String oder ein Array
        fuer msgs zurueckgeben.

BEMERKUNG:
	Normalerweise sollten verschiedene Kommandos auch in verschiedene Raeume
	fuehren, also kein Array fuer cmd benutzt werden.
	Standardrichtungen (norden nordwesten westen suedwesten sueden suedosten
	osten nordosten oben unten) reagieren automatisch auch auf die ent-
	sprechenden Kuerzel (n nw w ...)
	Fuer Treppen die sehr langgezogen sind, also nach oben als auch nach
	norden (zB) fuehren, bitte nicht zwei Exits benutzen (norden und oben)
        - das verwirrt nur - sondern nur einen von beiden. Auch Konstrukte wie
        "nordoben" sollten vermieden werden, da diese bei den Spielern nicht
        auf Gegenliebe stossen.

MNPC MOVING:
        Wenn P_MSG_FORCE gesetzt ist, werden die Meldungen in 'msgs' _NICHT_
        ausgegeben und das P_MSGOUT des Livings wird _IMMER_ benutzt. Bei 
        Spielern ist das sinnlos. Bei MNPCs kann das sinnvoll sein, wenn die
        Ausgaenge anders benutzen sollen, als Spieler. Zum Beispiel wuerde

        AddExit("norden","/room/void","ins Void",
            ({ 0, "&Name watet ins Void." , "&Name watet herein."}) );

        dazu fuehren, dass ein MNPC 'Fliege' nicht mehr ins Void fliegt,
        sondern ins Void watet. :-) Will man das verhindern, muss man:
        - Bei 'dest' die Richtung "ins Void" setzen.
        - in der Fliege P_MSGOUT auf "fliegt" setzen.
        - in der Fliege P_MSG_FORCE auf 1 setzen.
        Dann kommt bei diesem Exit immer: "Die Fliege fliegt ins Void."

BEISPIELE:
	AddExit("norden", "/room/void");
        an den Raum: <Name> geht nach Norden.

        AddExit("norden", "/room/void", "in das Void");
        an den Raum: <Name> geht in das Void.

        OBSOLET:
        AddExit("norden", "in das Void#/room/void");
        Alte Methode, gleiche Funktion wie letztes Beispiel.

	AddExit("norden", "/room/void", 0, "Du stolperst nach Norden.");
        an den Spieler: Du stolperst nach Norden.
        an den Raum:    <Name> geht nach Norden.

        AddExit("norden", "/room/void", 0, ({"Du betrittst das Void.",
            "&Name betritt ehrfuerchtig das Void.",
            "&Name kommt ins Void."}));
        an den Spieler: Du betrittst das Void.
        an den Raum:    <Name> betritt ehrfuerchtig das Void.
        an das Ziel:    <Name> kommt ins Void.

        OBSOLET:
        AddExit("norden", "/room/void", 0, ({"Du betrittst das Void.",
            "betritt ehrfuerchtig das Void", "kommt ins Void"}));
        Gleiches Beispiel wie eben, funktioniert aber nurnoch in Files,
        die vor Son, 18. Jul 1999, 00:00:00 Uhr geschrieben wurden!

        AddExit("norden", "/room/void", 0, ({"Du verschwindest ins Void.",
            "Es knallt laut und &name fliegt ins Void.",
            "&Name kommt ins Void."}));
        an den Spieler: Du verschwindest ins Void.
        an den Raum:    Es knallt laut und <Name> fliegt ins Void.
        an das Ziel:    <Name> kommt ins Void.

        AddExit("norden", #'myfun);
        Die Closure myfun wird mit dem eingegebenen Verb als Argument aus-
        gefuehrt. Ersetzt AddSpecialExit().

SIEHE AUCH:
        P_EXITS, P_SPECIAL_EXITS, P_WIZ_EXITS, P_MSGIN, P_MSGOUT,
        P_MSG_FORCE, RemoveExit(L), AddSpecialExit(L), RemoveSpecialExit(L),
        AddWizExit(L), RemoveWizExit(L)


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