QueryWizardsForUID()

FUNKTION:
    varargs string* QueryWizardsForUID(string uid, int recursive);

DEFINIERT IN:
    /secure/master/userinfo.c

ARGUMENTE:
    uid
      Die UID, fuer die man die Magier ermitteln will, die fuer sie
      zustaendig sind.
    recursive (optional)
      gibt an, ob das QueryWizardsForUID() (indirekt) aus einem 
      QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
      werden.

BESCHREIBUNG:
    Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.

RUeCKGABEWERT:
    Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
    Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
    Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle 
    UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird 
    "Rumata" ueber eine rekursive Suche gefunden.

BEMERKUNGEN:
    Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im 
    Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die 
    seit Laden des Master bereits einmal get_userinfo() oder 
    QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
    Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
    was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
    entsprechenden Code gerade nicht warten...

BEISPIELE:
    string *wiz = master()->QueryWizards("GUILD.klerus");
    // wiz enthaelt nun: ({"morgoth","magdalena"})

SIEHE AUCH:
    QueryUIDsForWizard(), 
		AddWizardForUID(), RemoveWizardFromUID()

16.12.2007, Zesstra

