
wizlist()
*********


SYNOPSIS
========

   varargs void wizlist(string name, int sortkey )


DESCRIPTION
===========

   wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten
         zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
   10 vor <name>, <name> selbst und 10 nach <name>.

   Die Liste ist dabei folgendermassen aufgebaut:

         1. WL_NAME
            Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
      nur die von Magiern.
      Das heisst, Objekte unter /d/polar/vanion/eispalast
            werden nicht unter "vanion" sondern unter "d.polar.vanion"
            abgerechnet.

         2. WL_COMMANDS
      Anzahl der diesem Objekt zugeordneten commands.

         3. WL_COMMANDS * 100 / total_cmd
      Prozentualer Anteil an den gesamt verbrauchten commands.

         4. WL_COST (links in der eckigen Klammer)
      Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
      nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.

   5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
      Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
      Nicht zeitlich gewichtet.

         6. WL_HEART_BEATS
      Anzahl der ausgeloesten heart beats.



   7. WL_ARRAY_TOTAL

   8. WL_MAPPING_TOTAL

PARAMETERS:
   Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit in
   der Liste dargestellt wird. Wird name nicht angegeben, wird es
   automatisch auf this_player()->query_real_name() gesetzt.

   Wird als name "TOP100" angegeben, wird die Top-100-Liste
   ausgegeben.

   Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
   gegeben.

   Durch Angabe von sortkey kann die Liste nach einer der Spalten
   sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
   gebenen Defines.

EXAMPLE
   > xeval wizlist("vanion", WL_HEART_BEATS)
      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste
      anhand der durch die EUIDs ausgefuehrten heart beats.

   > xeval wizlist("ALL", WL_EVAL_COST)
      Zeigt die komplette Liste nach eval ticks-Verbauch sortiert an.


SEE ALSO
========

   wizlist_info(E)


LAST UPDATED
============

   09.05.2015, Zesstra
