find_player()
*************


FUNKTION
========

   object find_player(string uid)


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

   Findet den Spieler mit dem Namen bzw. der User-ID <uid>.



   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
   zurueckliefern, wenn das die UUID "Jof_1234" hat).

   Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
   ansonsten 0.


BEISPIEL
========

   object ob;
   ob = find_player("deepthought");

   if(ob)
     tell_object(ob,"Tach Du!\n");

   oder auch

   if(ob = find_player("deepthought"))
     tell_object(ob,"Tach Du!\n");


ANMERKUNGEN
===========

   Via find_player() werden auch unsichtbare Magier gefunden. In
   Objekten, die fuer Spieler gedacht sind, muss dies dann extra
   per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.

   Netztote Spieler und Monster werden nicht gefunden da find_player
   den Namen aus set_living_name() verwendet, der in player.c ge-
   setzt wird.


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

   find_living(E), set_living_name(E), find_object(E), find_netdead(E)

Letzte Aenderung: 06.01.2009, Zesstra
