Dokumentation zu: gildenbestenliste(WL)

HR Image


KONZEPT:
        Bestenliste der Gilden

AUTOR:
        Archon@Wunderland (21.06.2000)

EINLEITUNG:
        Damit nicht jede einzelne Gilde eine eigene Bestenliste erstellen
        muss, gibt es ab sofort einen Deamon. Dieser erzeugt einmal pro
        Tag automatisch eine Bestenliste fuer jede angemeldete Gilde. 
        Bei der Erstellung werden automatisch alle Gildenskills 
        beruecksichtigt.

WIE KANN MAN DIESEN DEAMON NUTZEN?
        Zuerst einmal muss die Gilde angemeldet sein. (D.h. sie muss in 
        ALL_GUILDS - home.h stehen.) Ist dies der Fall, erfolgt durch das
        Setzen von bestimmten Properties, die im folgenden erklaert
        werden, die Erstellung der Liste automatisch.

DIE PROPERTIES
        Um den Deamon zu nutzen, muss man zuerst <daemon/bestenliste.h>
        includen. Danach stehen folgende Properties zur Verfuegung:

  P_TOPLIST_WANTLIST
        Soll fuer die Gilde eine Liste erstellt werden? Werte: (0/1)
        Bsp: SetProp(P_TOPLIST_WANTLIST,1);
          
  P_TOPLIST_OUTPUT 
        Da der Deaemon die Ausgabe der Liste nicht selber uebernehmen 
        kann, erwartet der Deamon eine Funktion, an die er die fertige
        Liste uebergeben kann. Die Funktion erhaelt eine Liste der
        Form: ({ ({ DATA_ARRAY }) }).
        
        Welche Funktion erhaelt die erstellte Liste? Werte: (0/closure)
        Bsp: SetProp(P_TOPLIST_OUTPUT,#'TopListenOutput);
             mit der Funktion: public void TopListenOutput(mixed *list)

  P_TOPLIST_CALCULATE
        Der Deamon berechnet fuer jeden Spieler einen Skillwert. Dieser
        entsteht als Summe seines Koennens in jedem Skill. Mit Setzen
        dieses Properties kann man Einfluss auf diesen Wert nehmen. Die
        Funktion erhaelt einen Array der Form: ({ DATA_ARRAY })
        
        Soll Einfluss auf die Berechnung genommen werden? (0/closure)
        Bsp: SetProp(P_TOPLIST_CALCULATE,#'Calculate);
             mit der Funktion: public int Calculate(mixed *array)

  P_TOPLIST_ADDSPELLS
        Sollen weitere Nicht-Gildenskills beruecksichtigt werden?
        Werte: (0/string/array von strings)
        Bsp: SetProp(P_TOPLIST_ADDSPELLS,({"ruestung","fluchtrichtung"}));

WIE SIEHT DER DATAARRAYS AUS?
        Die Daten eines Spielers werden in einem Array gespeichert.
        Um auf die Elemente des Arrays zuzugreifen, stehen folgende
        Properties zur Verfuegung:
        (ACHTUNG! Nur mit diesen Properties auf den Array zugreifen!)

        LISTPLAYERNAME  - der Name des Spielers
        LISTPUNKTE      - die berechneten Punkte (hier ggf. eigene setzen)
        LISTGENDER      - das Geschlecht
        LISTSEER        - "" oder "Seher"
        LISTGILDENLEVEL - das Gildenlevel
        LISTLEVEL       - das normale Level
        LISTAGE         - wie alt ist der Spieler?
        LISTLAST        - wann war der Spieler das letzte mal da?
        LISTXP          - XPs
        LISTGXP         - Giga-XPs
        LISTQP          - QPs
        LISTEP          - EPs
        LISTZT          - Zts
        LISTINT         - aktueller Int-Wert
        LISTMAXINT      - maximaler Int-Wert
        LISTSTR         - aktueller Str-Wert
        LISTMAXSTR      - maximaler Str-Wert
        LISTDEX         - aktueller Dex-Wert
        LISTMAXDEX      - maximaler Dex-Wert
        LISTCON         - aktueller Con-Wert
        LISTMAXCON      - maximaler Con-Wert
        LISTRACE        - Rassenbezeichnung (noch nicht gesetzt!)
        LISTPROCENT     - bei Ausgabe Procent gegenueber dem Besten

  
Ein Beispiel:
-------------

#include <deamon/bestenliste.h>

//Hier wird der berechnete Wert gewichtet nach Gildenlevel und Anwesenheit
public int Calculate(mixed *list)
{
  float gewichtet;
  int monate;
  
  if (list[LISTGILDENLEVEL]<1) { gewichtet=1.0; } 
    else { gewichtet=1.0+list[LISTGILDENLEVEL]/10.0; }
  monate=((time_jetzt-list[LISTLAST])/2592000)-1;
  if (monate>9) monate=9; 
  if (monate) gewichtet=gewichtet-monate/10.0;   
    
  return (int)((float)list[LISTPUNKTE]*gewichtet);
}

//Die Liste wird in ein File geschrieben
public void TopListenOutput(mixed *list)
{
  int x,j,i;
  rm("/gilden/magiekundige/save/magiekundigen.gen");
  for (((x=sizeof(list))>LISTMAX?j=LISTMAX:j=x),i=0;i<j;i++)
  {
    write_file("/gilden/magiekundige/save/magiekundigen.gen", 
      sprintf("%2d %-15s %2d %2d %6.2f %6s %10s\n",
      i+1, capitalize(list[i][LISTPLAYERNAME]), list[i][LISTGILDENLEVEL], 
      list[i][LISTLEVEL], list[i][LISTPROCENT], list[i][LISTSEER], list[i][LISTRACE]));
  }
}

void create()
{
  ...
  SetProp(P_TOPLIST_WANTLIST,1);
  SetProp(P_TOPLIST_OUTPUT,#'TopListenOutput);
  SetProp(P_TOPLIST_CALCULATE,#'Calculate);
  SetProp(P_TOPLIST_ADDSPELLS,({"ruestung","fluchtrichtung"}));
  ...
}

SIEHE AUCH:
        P_GUILD_SKILLS, P_GUILD_LEVEL, P_GUILD_LEVELS, P_GUILD_TITLES, 
        P_LEVEL


Start » Magierhandbuch » Docu » Konzepte » Gildenbestenliste Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!