Lpc Manpages

FUNKTION:
    varargs void AddInfo(mixed fragen, mixed antwort, string indent,
                         mixed silent);

DEFINIERT IN:
    /std/npc/info.c

ARGUMENTE:
    fragen : String oder Array von Strings mit den Fragen, auf die geant-
             wortet werden soll.

    antwort : String oder Closure oder Array aus Strings oder Closures
              oder Mapping mit der Antwort des NPCs. 'antwort' wird durch 
              MakeString geschickt.

    indent : Text, der bei mehrzeiligen Antworten jeweils am Anfang der
             Zeile steht.

    silent : (optional)
             Entweder 1 oder ein String.
             Legt fest, wie die Ausgabe im raum erfolgt.

BESCHREIBUNG:
    Wenn ein Spieler ein NPC mittels 'frage <monstername> nach <text>'
    nach einer Information fragt, so wird die entsprechende Meldung
    ausgegeben. Dieser Meldung wird der Name des Monsters vorangestellt.

    Wird als Antwort ein Array aus Strings oder Closures oder gemischt
    benutzt, wird per Random eine Antwort aus diesem Array auf die
    Frage ausgegeben.

    Falls eine Meldung nicht in eine Zeile passt, wird sie umgebrochen.
    Jeder Zeile wird ein Indent vorangestellt. Ein typischer Indent ist
    "sagt: ".
    Auf das Leerzeichen nach dem Doppelpunkt achten. Laest man es weg,
    wird die Antwort des NPC ohne Leerzeichen an den Indent angehaengt.

    Wird der optionale Parameter 'silent' auf 1 gesetzt, so wird weder
    die Frage noch die Antwort an den Raum ausgegeben. Wenn man 'silent'
    auf einen String setzt, wird dieser statt der Antwort an den Raum
    ausgegeben.

    Mittels der in <npc/info.h> definierten Frage DEFAULT_INFO kann eine
    Meldung gesetzt werden, die gegeben werden soll, wenn der Spieler
    etwas fragt, auf das keine Antwort vorgegeben ist
    (frueher: SetProp(P_DEFAULT_INFO,"text")).

    Fuer besondere Informationen kann als Meldung eine Closure uebergeben
    werden, dieser wird dann beim Aufruf die Frage als Parameter uebergeben.
    Die Closure gibt dann einen String zurueck, der an den Spieler
    zurueckgegeben wird.

RUECKGABEWERT:
    keiner
	
BEISPIELE:

    1. Ein NPC starrt einem nur in die Augen, wenn er nix weiss:

       AddInfo(DEFAULT_INFO,"starrt Dir in die Augen.\n" )

       Ausserdem weiss er noch etwas zum Stichwort 'Geld':

       AddInfo("geld","Ich habe zwar kein Geld, aber vielleicht kann Dir "
        "der Zwerg dort welches geben","sagt: ");

       Die Eingabe 'frage monster nach geld' ergibt dann:

       Das Monster sagt: Ich habe zwar kein Geld, aber vielleicht kann Dir der
       Das Monster sagt: Zwerg dort welches geben.

    2. Wird als Info eine Closure angegeben, wird die Funktion, auf die die
       Closure zeigt, aufgerufen. Als Rueckgabewert wird ein  String erwartet,
       der dann als Info ausgegeben wird. An die Closure-Funktion wird immer
       die originale Frage mit uebergeben:

       string info_geld( string frage )
       {
         return "Geld regiert die Welt!";
       }

       AddInfo( ({"geld","muenzen"}), #'info_geld, "sagt: ");

    3. Wenn die Info aus einem Array aus Strings und/oder Closures besteht,
       wird eine Antwort daraus zufaellig ausgewaehlt:

       string info_default()
       {
         return "Lass mich in Ruhe!";
       }

       AddInfo(DEFAULT_INFO,({
              "Davon weiss ich nichts.",
              "Das geht Dich nichts an!",
               #'info_default,
              }),"sagt: ");

    4. Gibt man ein Array aus zwei Elementen an, so ist das zweite Element der
       indent, also *wie* jemand etwas sagt:

       AddInfo(DEFAULT_INFO,({
              ({"Davon weiss ich nichts.","meint: "}),
              ({"Das geht Dich nichts an!","schreit: "}),
                "Hau ab!",
                "Verschwinde!",
             }),"sagt: ");

    5. Als Mapping kann man die Antwort auch rassenabhaengig gestalten:

       INFO_DEFAULT: definiert in /sys/npc/info.h
       CL_DWARF etc: definiert in /sys/thing/class.h

       AddInfo(({"baum"}),([
               INFO_DEFAULT: "Baeume sind gruen.",
               CL_DWARF:     "Du hasst Baeume.",
               CL_ELF:       "Du liebst Baeume.",
              ]),"sagt: ");


SIEHE AUCH:
    Infos:      RemoveInfo, GetInfo, P_INFOS, P_PRE_INFO
    Ersetzen:   MakeString, replace_personal
    Loggen:     P_LOG_INFO
    Standard:   P_DEFAULT_INFO

----------------------------------------------------------------------------
01.02.18, Torin