Lpc Manpages

AddInfo()

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 <frage>"
	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 der 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 (Dieses ist die
	neue Form von SetProp( P_DEFAULT_INFO )).
	
	Fuer besondere Informationen kann als Meldung eine Closure ueber-
	geben werden, dieser wird dann beim Aufruf die Frage als Parameter
	uebergeben. Die Closure gibt dann einen String zurueck, der an den
	Spieler ausgegeben wird.

RUECKGABEWERT:
	keiner
	
BEISPIELE:
	AddInfo( DEFAULT_INFO, "starrt Dir in die Augen.\n" )
	    (Dasselbe wie SetProp( P_DEFAULT_INFO, "starrt..." );)
	
	AddInfo( "geld",
	         "Ich habe zwar kein Geld, aber vielleicht kann dir"
	         "Mupfelinchen welches geben", "sagt: ");
	
        Die Frage:
	    frage monster nach geld
	Ergibt dann:
	    Das Monster sagt: Ich habe zwar kein Geld, aber vielleicht
	 
        Das Monster sagt: kann dir Mupfelinchen welches geben.
	
        
        * 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:

          static string ausgabe(string frage)
          {
            return "Antwort";
          }
          
          AddInfo( ({"geld","muenzen"}), #'ausgabe, "sagt: ");
	  
        * Wenn das Info aus ein Array aus Strings oder Closures besteht, wird 
          eine Antwort daraus zufaellig ausgewaehlt:
         
          string meine_funktion()
          {
            return "test";
          }

          AddInfo(DEFAULT_INFO,({
                                  "Davon weiss ich nicht.",
                                  "Das geht mich nichts an",
                                  #'meine_funktion,
                               }),"sagt: ");

        * Man kann auch das Verb, wie jemand etwas sagt, mit angeben. 
          Dafuer muss die Antwort nur ein Array aus zwei Elementen sein.
          Das 1. Element ist dann die Antwort, das 2. Element das 
          zu verwendende Verb:

          AddInfo(DEFAULT_INFO,({
                                  ({"Davon weiss ich nicht.","flucht: "}),

                                  ({"Das geht mich nichts an","schreit"}),
                                  
                                  "Hau ab!",
                                  
                                  "Verschwinde!",

                               ]),"sagt:");

        * 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(({"test"}),
          ([
             INFO_DEFAULT:"Dies ist ein Text fuer alle.",

             CL_DWARF: "Dies ist ein Text fuer Zwerge.",

             CL_ELF:   "Dies ist ein Text fuer Elfen.",

          ]),"sagt: ");
        
SIEHE AUCH:
	RemoveInfo(), GetInfo(), MakeString(), P_LOG_INFO, 
        P_DEFAULT_INFO, /std/npc/info.c