
match_living()
**************

match_living(sefun)


FUNKTION
========

   varargs mixed match_living( string str, int players_only,
                               string *exclude)


ARGUMENTE
=========

   string str         - Kuerzel, nach dem die living_names durchsucht
                        werden soll
   int players_only   - 1, um nur Spieler (Interactives) zu suchen
   string *exlude     - welche Namen sollen ignoriert werden


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

   Sucht alle Lebewesen, deren Namen mit str beginnen.


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

   Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
   muss genau passen).
   -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
   -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.


BEISPIELE
=========

   match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
   match_living("war");    => "wargon", wenn es kein anderes Lebewesen
                              gibt, dessen Name mit "war" beginnt.


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

   find_living(E), find_player(E), find_netdead(E)

27. Mai 2004 Gloinson
