
notify_player_change()
**********************

void notify_player_change(string/object who, int rein [, int invis])


FUNKTION
========

   void /notify_player_change(object who, int rein)
   void /std/player/base::notify_player_change(string who, int rein,
                                               int invis)


GERUFEN VON
===========

   /std/player/base.c (d.h. alle Spielershells/-Objekte)


ARGUMENTE
=========

   string who
     getuid() eines Spielers
   object who
     Spieler-Objekt
   int rein
     0 fuer das MUD verlassende, 1 fuer hereinkommende Spieler
   int invis
     1 fuer unsichtbare Spieler (Magier)


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

   Diese Funktion wird von Lebewesen fuer hereinkommende und das Spiel
   verlassende Spieler an verschiedenen Stellen aufgerufen:



   * in anderen Spielern mit notify_player_change() mit drei Parametern
     - dies dient fuer die "erwarte"-Funktionalitaet
   * in der Gilde des Spielern mit zwei Parameter
     - damit koennen Gilden notwendige Anpassungen vornehmen

   Diese Funktionen werden auch gerufen, wenn Magier "invis -e" bzw.
   "vis e" benutzen.


BEISPIELE
=========

   // in einer Gilde:
   void notify_player_change(object pl, int rein) {
     if (rein && objectp(pl)) {
       // Checks, ob Spielerskills in Ordnung sind
       mapping bete = pl->QuerySkill("bete");



       if (!mappingp(bete)) {
         if (IS_LEARNER(pl) || pl->QueryProp(P_TESTPLAYER)) {
           tell_object(pl, break_string(
             "Du bist ein kaputter Test-Kleriker ...", 78,
             "Arkshat teilt dir mit: "));
           // notduerftige Reparaturen
         } else
           raise_error("Klerus: Kaputter oder gesetzer Kleriker!\n");
       }
     }
   }


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

   RegisterEvent mit (EVT_LIB_LOGIN, EVT_LIB_LOGOUT)
   erwarte

1. Sep 2011 Gloinson
