
AddSpecialInfo()
****************


FUNKTION
========

   varargs void AddSpecialInfo( frage, meldung
                         [, indent [, [silent [, casebased] ] ] );


ARGUMENTE
=========

   string/string* frage
      Schluesseltext(e) auf die Informationen gegeben werden sollen.
   string/closure function
      Methodenname im NPC/Closure
   string indent
      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
   int/string silent
      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
   string/closure casebased
      Funktionsname oder Closure mit Returnwert string oder int.


DEFINIERT IN
============

   /std/npc/info.c


BESCHREIBUNG
============

   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
   einer Information mit dem Schluessel frage fragt, so wird die Methode
   "function" gerufen. Die Rueckgabe wird als Meldung ausgegeben.

   Fuer die Beschreibung der weiteren Parameter siehe man AddInfo(L).

   AddSpecialInfo(keys, "function", ...) entspricht:
   - AddInfo(keys, #'function, ...)


BEMERKUNGEN
===========

   Da AddSpecialInfo() und AddInfo() auf die gleichen Daten zugreifen,
   kann man Informationen, die mit AddSpecialInfo() gesetzt wurden, auch
   mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().


BEISPIELE
=========

   // Das folgende Beispiel ist auch unter man AddInfo(L) zu finden.
   ### dynamisch ###
   AddSpecialInfo(({"keks","kekse"}),
                  "query_kekse",      // der Methodenname
                  "sagt: ");
   // ist uebrigens das gleiche wie:
   // static string query_kekse();
   // ...
   // AddInfo(({"keks","kekse"}),
   //         #'query_kekse,          // ein Verweis auf die Methode
   //         "sagt: ");
   ...
   static string query_kekse() {
    if(present("keks"))
     return("Ich hab noch welche. Aetsch!");
    return("Menno. Keine mehr da!");
   }

   // "frage monster nach keks":
   // - wenn es noch Kekse hat, hoeren alle:
   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
   // - sonst:
   //   "Das Monster sagt: "Menno. Keine mehr da!


SIEHE AUCH
==========

   AddInfo(L), RemoveInfo(L)

7.Apr 2004 Gloinson
