GetGroupMembers()
*****************


FUNKTION
========

   string *GetGroupMembers(string grp)


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

   /p/daemon/materialdb.c (MATERIALDB)


ARGUMENTE
=========

   string grp - Gruppenname


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

   Gibt alle dieser Gruppe zugehoerigen Materialien zurueck. Dazu gut, sich
   einen Ueberblick ueber die aktuelle Liste zu verschaffen.


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

   Array von Strings mit Materialien oder ({})


BEISPIELE
=========

   // wir wollen irgend ein Metall haben, nennen dies aber beim Namen
   int ind;
   string* likeit;
   likeit=MATERIALDB->GetGroupMembers(MATGROUP_METAL);
   ind=random(sizeof(likeit));
   ...
   write("Der Schmied sagt: Mir fehlt noch "+
         MATERIALDB->MaterialName(likeit[ind], WER, 100)+".\n");
   ...


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

   Konzepte:    material, materialerkennung
   Grundlegend: P_MATERIAL, /sys/thing/material.h
   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
                GroupName(), MaterialName(),
                GetMatMembership()

7. Mai 2004 Gloinson
