AddWizardForUID()
=================

FUNKTION
--------
::

    string* AddWizardForUID(string uid, string wizard);

DEFINIERT IN
------------
::

    /secure/master/userinfo.c

ARGUMENTE
---------
::

    uid
      Die UID, fuer die man einen (weiteren) verantwortlichen Magier
      explizit eintragen moechte.
    wizard
      Der Magier, den man eintragen moechte.

BESCHREIBUNG
------------
::

    Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
    Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
		anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".

		Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
    die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
    Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
    d.inseln.zesstra eintragen.

RUeCKGABEWERT
-------------
::

    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
    fuer die dier Magier jetzt explizit eingetragen ist.

BEMERKUNGEN
-----------
::

    Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
    einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
    fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen 
    werden.

BEISPIELE
---------
::

    master()->AddWizardForUID("p.waterluh","zook");

		

		string *uids = master()->AddWizardForUID("jof","zook");
    printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));

SIEHE AUCH
----------
::

    QueryWizardsForUID(), QueryUIDsForWizard,
		RemoveWizardFromUID()

20.02.2007, Zesstra

