Dokumentation zu: AddCmd(L)

HR Image


FUNKTION:
        void AddCmd( string regeln, string funktion, string errormsg )    (1)
        void AddCmd( string cmd, string funktion )                        (2)

	eher nicht verwenden:
        void AddCmd( string cmd, string funktion, int flag )              (3)
        void AddCmd( string *cmdliste, string funktion, int flag )        (4)

ARGUMENTE:
        cmd, cmdliste: Befehle, auf die reagiert werden soll.
        funktion:      Name der Funktionsname in "" oder die Closure, die
                       bei den Befehlen aufgerufen wird.
        regeln:        string mit den noetigen Keywords und deren Synonymen
                       (fuer komplexere Syntaxen, vor allem bei Quests)
        errormsg:      Fehlermeldungen (per notify_fail) bei Nichterfuellung
                       einer Regel

FUNKTION:
        Wenn ein Spieler im Einflussbereich des Objektes den Befehl eingibt,
        wird die entsprechende Funktion im Objekt aufgerufen. Die Verben
        sollten Imperative sein und keine Verben in erster Person.

	Nach jedem AddCmd() werden die Kommandos in die Kommandolisten der
	in der Naehe befindlichen Lebewesen eingetragen.

	Es ist die vorgehensweise nach den Prototypen 1 und 2 oben vorzu-
	ziehen, also mit Regeln beziehnungsweise ohne 'Flag' oder
	Kommandoarray.

        Funktion:
            Statt des Funktionsnamens kann auch eine Closure uebergeben
            werden. Dann muss diese jedoch vorher definiert sein.
            Die Funktion wird mit den vom Spieler eingegebenen Argumenten
            als String aufgerufen, bzw. 0 wenn es keine gab.

        Regeln: (nur bei Methode 1)
            Bei komplexen Syntaxen wird ein String angegeben, der die
            notwendigen Schluesselworte und deren zulaessige Synonyme
            beschreibt, analog den AddInfo(L)-Schluesselwoertern. z.B:

            "ritz|ritze|schnitz|schnitze&herz|herzchen&rinde|baumrinde"+
            "&messer|schnitzmesser"

            Nur wenn aus JEDER der durch & getrennten Synonymgruppen
            ein Wort im Spielerkommando enthalten ist, wird der Befehl
            ausgefuehrt. Zum Beispiel:
            > ritz mit dem Messer ein Herz in die Rinde des Baumes
            > schnitz in die Baumrinde mit dem Messer ein Herzchen

            Als Regel kann man auch "$MYID$" angeben. Dies steht dann
            fuer eine gueltige ID fuer das betroffene Objekt. Hierbei
            werden keine Adjektive beruecksichtigt (das ginge nicht so
            recht), wohl aber nachgestellte Nummern wie 'ding 2' als auch
            die Inventarnummer-Notation 'i2'.

        Errormsg: (nur bei Methode 1, optional)
            Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
            fehlende Synonymgruppen angegeben werden. Sie werden in
            derselben Reihenfolge wie die Synonymgruppen angegeben.

            Z.B. fuer obige Regeln:
            "Was willst du schnitzen?|Wohinein willst du schnitzen?|Mit "+
            "welchem Werkzeug willst du schnitzen?"
     
        Flag:   (nur bei Methode 3 und 4)
            Wenn AddCmd mit einem dritten Parameter ungleich 0 auf-
            gerufen wird, so muss nicht das ganze Verb, das der Spieler
            eingibt, mit dem ersten Parameter uebereinstimmen, sondern
            es genuegt auch, wenn das Verb, das Spieler eingibt, laenger
            ist. (Bitte nur im Ausnahmefall benutzen, es kann leicht
            Ueberschneidungen geben!!!)
            Nur dieses Flag ist erlaubt und wird unterstuetzt, was 
            dem AA_SHORT von add_action() entspricht. Die anderen Moeglich-
            keiten von add_action() werden nicht unterstuetzt.

            Achtung: Ist ein Verb direkt passend definiert (zB nach
            Methode 1 oder 2), so wird ausschliesslich dieses dann
            beruecksichtigt, auch wenn es fehlschlaegt! Hier ist also
            etwas Sorgfalt von noeten. Im Zweifelsfall kein Verb mit
            gesetztem Flag benutzen oder einen erfahrenen Magier fragen.

RÜCKGABEWERT:
        keiner

BEMERKUNG: 
        Fuer AddCmds sollten z.B. Verben des Put&Get, sowie alle anderen, 
        die durch Events abgefangen werden koennen, nach Moeglichkeit nicht 
        ueberschrieben werden! Um das Ueberschreiben von "nimm" abzufangen, 
        eignet sich z.B. die Anlage eines evtl. unsichtbaren Trays.

BEISPIELE:
        AddCmd( "loesch|loesche|ersticke&feuer|brand|flammen&decke|"
                "wolldecke",  "loeschen", "Was willst du loeschen?|"
                "Womit willst du loeschen?" );
        AddCmd( "breche|brich&zweig|ast", #'abbrechen, "Was willst Du "
                "abbrechen?");
        AddCmd( "iss&$MYID$", "mampf", "Was willste futtern?" );
        AddCmd( ({ "kletter", "klettere" }), "klettern" ); /* gut */
        AddCmd( "kletter", "klettern", 1 ); /* schlecht */
        AddCmd( "lese", "lesen" ); /* verboten, es muss lies heissen. Ausser-
                dem ist dafuer AddReadDetail oder P_READ_MSG zu verwenden! */

SIEHE AUCH:
	RemoveCmd(L), add_action(E)


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