AddCmd()
========

AddCmd(L)
---------
::

FUNKTION
--------
::

    varargs void AddCmd(mixed cmd, mixed func, [mixed flag, [mixed id]]);

DEFINIERT IN
------------
::

    /std/thing/commands.c

ARGUMENTE
---------
::

    cmd
       Verben, auf die reagiert werden soll

       ODER

       Regel mit Triggerverb und noetigen Keywords/Synonymen
    func
       Funktionsname im selben Objekt oder Closure (Funktionspointer)
    flag (optional)
       Unscharfe Ausfuehrung == 1

       ODER

       Fehlermeldungen bei Nutzung von Regeln
    id (optional)
       eine ID, ueber die das Kommando eindeutig wieder geloescht
       werden kann

BESCHREIBUNG
------------
::

    Wenn ein Spieler im Einflussbereich des Objektes das Verb benutzt,
    wird die entsprechende Funktion im Objekt aufgerufen:
    - die Verben sollten Imperative sein
    - die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
      (sonst werden evtl. weitere Funktionen mit diesem Kommandoverb gerufen)
    - innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
      Misserfolg des Kommandos mit notify_fail gesetzt werden
      (anstatt "Wie bitte?")

    AddCmd ist ein dynamischer Ersatz fuer add_action - im Gegensatz
    zu add_action koennen auch ohne erneuten Aufruf der init() neue
    Kommandos hinzugefuegt werden.

    AddCmd kann das Leben einfacher machen mit:
    ### REGELN: ###
      Bei komplexen Syntaxen kann ein String angegeben werden, der die
      _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
      zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
      Teil eigener Auswertung ersparen.

      Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
      Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
      die zugehoerige Funktion ausgefuehrt.

      Trenner sind: | fuer Alternativen
                    & fuer Konjunktionen

      Beispiel:
        "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
        "herz|herzchen&rinde|baumrinde"
      wuerde z.B. durch
        "ritz mit dem Messer ein Herz in die Rinde des Baumes"
        "schnitz mit Messer Herzchen Baumrinde"
        "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
      erfuellt werden.

      Spezialregelteile sind:
      - @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
      - @ID:      entspricht der ID des kommandobesitzenden Objektes
                  (wo die Kommandomethode definiert ist, ist noch unwichtig)
      - @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
                  entsprechend den Filteroptionen fuer find_obs()
      ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
               sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
               Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
               interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
               Teil des Objekt-ID-Strings.
               Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
                        5 fuer @PUT... ("kristall 2 in beutel 3")

    ### FEHLERMELDUNGEN (bei Anwendung von Regeln): ###
      Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
      fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
      angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
      Synonymgruppen angegeben.

      Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
      kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
      und Umgebung ausgeben. Siehe dazu AddCmd_bsp.

      Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
                    ^ um
                       - die Auswertung (ab dieser Fehlermeldung!) mit
                         "return 1;" zu beenden und
                       - eine write^say-Meldung zu trennen und
                       - (fuer funktionslose AddCmd auch FPs zu vergeben!)

      Beispielfehlermeldungen fuer obige Regel:
        "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
        "Wohinein willst Du das schnitzen?"

      Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
      werden:
      - @verb (ersetzt durch query_verb() ohne beendendes 'e')
      - @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
      - @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
        - @WE..1 ist immer der aktive Spieler
        - alle folgenden sind die matchenden Parameter der Spielereingabe
          - (x-1)<=Fehlermeldung (da x=1 Spieler und
                                  (x-1)>Fehlermeldungsobjekt nicht existent)

      Ausfuehrungsbeispiel:
        AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
               "herz|herzchen&rinde|baumrinde",#'fun,
              "Willst Du mit etwas @verben?|Womit willst du @verben?|"
              "Was willst du mit dem @WEM3 @verben?|"
              "Wohinein willst Du das @WEN4 schnitzen?");
        1. "ritze" == "Willst Du mit etwas ritzen?"
        2. "schnitz mit" == "Womit willst du schnitzen?"
        3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
        4. "ritze mit dem messer ein herz" ==
             "Wohinein willst Du das herz schnitzen?"
        5. "ritze mit dem messer ein herzchen in die baumrinde"
             == Erfolg!

    ### UNSCHARFER AUSFUEHRUNG: ###
      Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
      ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
      bisher noch nicht behandelt wurde.
      Dieses Verhalten sollte nur beim generellen Abfangen von
      Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
      entsprich add_action("fun","kommando",1).


      Beispiel:
        1. AddCmd("klett","fun",1);
        2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");

        a) "klett"
        b) "kletter"
        c) "klettere hoch"

        Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
       (1 wuerde also immer ausgefuehrt)
        Fehlermeldung bei: 2b ("Wohin klettern?")

BEMERKUNGEN
-----------
::

    - Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
      werden zu ueberschreiben - dazu sind invis Container da
    - benutzt man fuer <function> eine Closure, kann man die Fkt. auch
      protected oder private deklarieren _und_ sie kann in einem
      anderen Objekt sein
    - bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
      ein Array der erfuellenden Eingabeteile uebergeben:
      "steck&@PRESENT&in&loch" bei Erfuellung -> ({<Objekt>,"in","loch})
      - bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
        Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
    - juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
      ausgewertet
    - @PUT_GET_XXX kosten sehr viel Auswertungszeit

BEISPIELE (SIEHE AUCH ADDCMD_BSP):
    // SIMPEL: ganz simpel, beinahe wie add_action
    AddCmd("befiehl","action_befehlen");
    ...
    int action_befehlen(string str) {
     if(!str || !strlen(str))
      // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
      notify_fail("Was willst du befehlen?!\n");
     else {
      write("Du befiehlst \""+str+"\", und alle folgen!\n");
      say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
      return 1;  // ERFOLG - Abbruch der Kommandoauswertung
     }
     return 0;  // MISSERFOLG - Fehlermeldung oben gesetzt
    }

    // SIMPEL .. weitere Beispiele
    AddCmd(({"kletter","klettere"}),"action_klettern" );
    AddCmd(({"renn","renne"}),#'action_rennen);

    // REGELN: eine komplexere Regel
    AddCmd("loesch|loesche|ersticke&feuer|brand|flammen&decke|wolldecke",
           "action_loeschen",
           "Was willst du loeschen?|Womit willst du loeschen?");

    // REGELN: mit Platzhaltern im Fehlerstring
    AddCmd("spring|springe|huepf|huepfe&von|vom&baum|ast|eiche",
           #'action_huepfe,
           "Willst du von etwas @verben?|Von wo willst du @verben?");

    // SCHLECHT: eine unscharfe Regel - sie sollten eine Ausnahme sein (!)
    AddCmd("kletter","fun_klettern",1);

    // FALSCH: sehr schlecht, kein Imperativ verwendet
    // ausserdem sollte man fuer solche Syntaxen AddReadDetail benutzen
    AddCmd("lese","eval_lesen");

    // SIMPLE REGEL OHNE METHODE
    // mit Regeln kann man auch Aktivitaeten im Raum erlauben, ohne eine
    // Funktion aufrufen zu muessen: die letzte Regel ist fuer Spieler
    // unmoeglich zu erfuellen, die dazugehoerige Fehlermeldung wird mit
    // dem ^ (write-Flag) versehen und entsprechend an den Spieler
    // (und den Raum (hinter dem ^)) ausgegeben
    AddCmd("spring|springe&herunter|runter&\n\bimpossible",0,
           "Wohin oder wovon willst Du springen?|"
           "Du springst vom Baum und kommst hart auf.^"
           "@WER1 springt vom Baum und kommt hart auf.");

SIEHE AUCH
----------
::

    AddCmd_bsp, RemoveCmd(L), init(E)
    Fehlermeldungen: notify_fail(E), _notify_fail(E)
    Argumentstring: query_verb(E), _unparsed_args(L)
    Sonstiges:  replace_personal(E), enable_commands(E)
    Alternativen: AddAction(L), add_action(E)

30. Aug 2013 Gloinson

