
GetInfoArr()
************


FUNKTION
========

   static mixed *GetInfoArr(string str)


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

   /std/npc/info.c


ARGUMENTE
=========

   string str  - Schluesselwort der Frage


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

   Sucht nach einem Schluesselwort in den abgelegten Antworten
   und gibt die Informationen oder einen 0er-Array zurueck.


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

   Ueberschreibbar :)


RUECKGABEWERT
=============

   Siehe Parameter von AddInfo:

   Array mit:
   ({ <Infostring> (0 fuer keine Antwort),
      <Indent-String> (Default: 0),
      <Silent> (Default: 0),
      <Casebased> (Default: 0)
   })


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

   Verwandt: AddInfo, do_frage

31.Mar 2007 Gloinson
