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 

