werliste.c-Dateireferenz

#include <properties.h>
#include <wizlevels.h>
#include <ansi.h>
#include <werliste.h>
Include-Abhängigkeitsdiagramm für werliste.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define MIN(a, b)   (((a) > (b)) ? (b) : (a))
#define ABS(a)   (((a) < 0) ? -(a) : (a))
#define OFFSET(sp)   ((maxi/4) * sp + ((sp <= maxi%4) ? sp : maxi%4))

Funktionen

static private int is_alph_greater (object a, object b)
static private int is_greater (object a, object b)
static private string stat (object ob, int ist_magier)
static private string idlestat (object ob)
static private string wegstat (object ob)
static private string hcstat (object ob)
static private string get_location (object ob)
varargs static private mixed QueryView (object ob, int ist_magier, int sh, int obs, string tty, string opt)
static private object * make_unique (object *arr)
public varargs string * QueryWhoListe (int ist_magier, int short, int obs, string arg, int old)
public varargs int query_prevent_shadow (object ob)

Variablen

inherit std user_filter
mixed * erwarte

Makro-Dokumentation

#define ABS (  )     (((a) < 0) ? -(a) : (a))

Definiert in Zeile 13 der Datei werliste.c.

Wird benutzt von is_greater().

#define MIN ( a,
 )     (((a) > (b)) ? (b) : (a))

Definiert in Zeile 12 der Datei werliste.c.

Wird benutzt von is_greater().

#define OFFSET ( sp   )     ((maxi/4) * sp + ((sp <= maxi%4) ? sp : maxi%4))

Definiert in Zeile 256 der Datei werliste.c.

Wird benutzt von create(), GetOffset(), LongRangeSkill(), QueryWhoListe() und TryDefaultAttackSpell().


Dokumentation der Funktionen

static private string get_location ( object  ob  )  [static]

Definiert in Zeile 137 der Datei werliste.c.

Benutzt country() und P_LOCATION.

Wird benutzt von QueryView().

00138 {
00139     string res;
00140 
00141     if ( stringp(res = ob->Query(P_LOCATION)) )
00142         res = capitalize(res) + " (ueber " + country(ob) + ")";
00143     else
00144         res = country(ob);
00145 
00146     return res;
00147 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static private string hcstat ( object  ob  )  [static]

Definiert in Zeile 118 der Datei werliste.c.

Wird benutzt von QueryView().

00119 {
00120     int hcstat;
00121     
00122     hcstat=ob->query_hc_play();
00123     
00124     if(!hcstat)
00125     {
00126       return ".";
00127     }
00128     
00129     if(hcstat>1)
00130         return "+";
00131     
00132     return "c";
00133 
00134 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static private string idlestat ( object  ob  )  [static]

Definiert in Zeile 92 der Datei werliste.c.

Wird benutzt von QueryView().

00093 {
00094     switch( query_idle(ob) ){
00095     case 1800 .. 7199:
00096         return "j";
00097     case 600 .. 1799:
00098         return "I";
00099     case 120 .. 599:
00100         return "i";
00101     case 0 .. 119:
00102         return ".";
00103     default:
00104         return "J";
00105     }
00106 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static private int is_alph_greater ( object  a,
object  b 
) [static]

Definiert in Zeile 17 der Datei werliste.c.

00018 {
00019     return geteuid(a) > geteuid(b);
00020 }

static private int is_greater ( object  a,
object  b 
) [static]

Definiert in Zeile 25 der Datei werliste.c.

Benutzt ABS, MIN, P_LEVEL und query_wiz_level().

00026 {
00027     int a1, b1;
00028     
00029     a1 = 26000 * query_wiz_level(a) +
00030         26 * MIN( 2121, ABS(a->QueryProp(P_LEVEL)) ) + getuid(a)[0]-'a';
00031     
00032     b1 = 26000 * query_wiz_level(b) +
00033         26 * MIN( 2121, ABS(b->QueryProp(P_LEVEL)) ) + getuid(b)[0]-'a';
00034     
00035     return a1 > b1;
00036 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static private object* make_unique ( object *  arr  )  [static]

Definiert in Zeile 243 der Datei werliste.c.

Benutzt i.

Wird benutzt von QueryWhoListe().

00244 {
00245     int i;
00246 
00247     // muss ueber eine Schleife gemacht werden, um die Reihenfolge zu erhalten!
00248     for ( i = sizeof(arr); i-- > 1; )
00249         if( arr[i] == arr[i-1] )
00250             arr[i] = 0;
00251 
00252     return arr - ({ 0 });
00253 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

public varargs int query_prevent_shadow ( object  ob  ) 

Definiert in Zeile 346 der Datei werliste.c.

00347 {
00348     return 1;
00349 }

varargs static private mixed QueryView ( object  ob,
int  ist_magier,
int  sh,
int  obs,
string  tty,
string  opt 
) [static]

Definiert in Zeile 151 der Datei werliste.c.

Benutzt ANSI_GREEN, ANSI_NORMAL, ANSI_RED, ANSI_UNDERL, country(), erwarte, get_location(), hcstat(), idlestat(), IS_LEARNER, P_FROG, P_GUILD, P_RACE, P_SECOND, P_SECOND_MARK, P_TEAM, P_TESTPLAYER, race, ROOTID, stat() und wegstat().

00153 {
00154     string race, ret, tmp, prefix, a_prefix, normal;
00155 
00156     if ( !ist_magier && ob->QueryProp(P_INVIS) )
00157         return "";
00158     
00159     prefix = "";
00160     a_prefix = "";
00161         
00162     ret = capitalize(getuid(ob));
00163     
00164     switch(tty){
00165     case "ansi":
00166         if ( IS_LEARNER(ob) )
00167             a_prefix = ANSI_UNDERL;
00168         
00169         if ( ob->QueryProp(P_FROG) )
00170             a_prefix += ANSI_GREEN;
00171 
00172         if ( pointerp(erwarte) && member( erwarte, ret ) != -1 )
00173             a_prefix += ANSI_RED;
00174         
00175         normal = ANSI_NORMAL;
00176         break;
00177         
00178     default:
00179         if ( pointerp(erwarte) && member( erwarte, ret ) != -1 )
00180             prefix = "*";
00181         else
00182             prefix = "";
00183 
00184         normal = "";
00185     }
00186 
00187     if ( ret == ROOTID )
00188         ret = "Logon";
00189 
00190     if ( sh ){ // kwer
00191         if ( ob->QueryProp(P_INVIS) )
00192             ret = sprintf( "%s(%-11'.'s).%s%s", a_prefix, prefix + ret,
00193                          hcstat(ob) + idlestat(ob) + wegstat(ob) + stat(ob,ist_magier), normal );
00194         else
00195             ret = sprintf( "%s%-13'.'s.%s%s", a_prefix, prefix + ret,
00196                          hcstat(ob) + idlestat(ob) + wegstat(ob) + stat(ob,ist_magier), normal );
00197     } 
00198     else if ( opt == "k" ){ // wer -k
00199         ret = sprintf( "[%s] %-13s %15s / %-20s %22s", stat(ob,ist_magier),
00200                        ob->QueryProp(P_INVIS) ? "(" + ret + ")" : ret,
00201                        stringp(race = ob->QueryProp(P_RACE)) ?
00202                        capitalize(race)[0..14] : "<keine Rasse>",
00203                        stringp(race = ob->QueryProp(P_GUILD)) ?
00204                        capitalize(race)[0..19] : "<keine Gilde>",
00205                        "[" + country(ob)[0..19] + "]" );
00206     } 
00207     else { // wer, wer -o, wer -s
00208         if ( tmp = ob->short() ){
00209             ret = tmp[0..<3];
00210 
00211             if ( ob->QueryProp(P_TEAM) )
00212                 ret = ob->TeamPrefix() + ret;
00213         }
00214         else
00215             ret = "(" + ret + ")";
00216 
00217         if ( !IS_LEARNER(ob) && ob->Query(P_TESTPLAYER) )
00218             tmp = " <TestSpieler>";
00219         else
00220             tmp = "";
00221 
00222         if ( !IS_LEARNER(ob) && ob->QueryProp(P_SECOND) &&
00223              ob->QueryProp(P_SECOND_MARK) > -1 )
00224             tmp += " <Zweitie>";
00225         
00226         ret = sprintf( "%s%s - %s%s%s",
00227                        (opt == "o") ? "" : "[" + stat(ob,ist_magier) + "] ", ret,
00228                        stringp(race = ob->QueryProp(P_RACE)) ?
00229                        capitalize(race) : "<keine Rasse>",
00230                        (opt == "s") ? " - [" + get_location(ob) + "]" :
00231                        (stringp(race = ob->QueryProp(P_GUILD)) ?
00232                         "/" + capitalize(race) : "/<keine Gilde>"),
00233                        (opt == "o") ? tmp : "" );
00234     }
00235             
00236     if ( obs )
00237         return ({ ob, ret });
00238     else
00239         return ret;
00240 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

public varargs string* QueryWhoListe ( int  ist_magier,
int  short,
int  obs,
string  arg,
int  old 
)

Definiert in Zeile 260 der Datei werliste.c.

Benutzt dtime(), erwarte, filter_users(), i, make_unique(), OFFSET, P_TTY, P_WAITFOR, pl, QueryProp(), WHO_ALPHA, WHO_PLAYER_VIEW, WHO_SHORT und WHO_VERTICAL.

Wird benutzt von kwho(), udp_query() und who().

00261 {
00262     object *pl;
00263     string *pls, *s, opt;
00264     int i, j, k, l, *t, maxi;
00265 
00266     erwarte = 0;
00267     
00268     if ( short & WHO_SHORT ){
00269         if ( previous_object() )
00270             erwarte = previous_object()->QueryProp(P_WAITFOR);
00271         
00272         if ( !pointerp(erwarte) )
00273             erwarte = ({});
00274     }
00275 
00276     // Wer Spielersicht moechte, soll Spielersicht bekommen
00277     if ( short & WHO_PLAYER_VIEW )
00278     {               
00279                     ist_magier = 0;
00280     }
00281 
00282     
00283     if ( old ){
00284         opt = "o";
00285         arg = 0;
00286     }
00287     else if ( arg == "k" || arg == "s" ){
00288         opt = arg;
00289         arg = 0;
00290     }
00291     else if ( strlen(arg) == 1 ) // (noch) unbekannte Option
00292         arg = 0;
00293   
00294     pl = filter_users(arg);
00295     
00296     if ( short & WHO_ALPHA )
00297         pl = sort_array( pl, #'is_alph_greater/*'*/ );
00298     else
00299         pl = sort_array( pl, #'is_greater/*'*/ );
00300     
00301     pl = make_unique( pl );
00302     
00303     pls = map( pl, #'QueryView/*'*/, ist_magier, short, obs,
00304                      previous_object()->QueryProp(P_TTY), opt ) - ({""});
00305     
00306     if ( !(short & WHO_SHORT) )
00307         return pls;
00308     
00309     maxi = sizeof(pls);
00310     s = allocate( maxi / 4 + (maxi % 4 ? 1 : 0) );
00311     
00312     if ( short & WHO_VERTICAL ) { // senkrecht sortieren !
00313         // wird so nur einmal berechnet
00314         t = ({ 0, OFFSET(1), OFFSET(2), OFFSET(3), maxi });
00315         
00316         for ( i = 0, l = sizeof(s); i < l; i++ ) {
00317             s[i] = "";
00318             
00319             for ( j = 0; j < 4; j++ ) {
00320                 if ( (k = i+t[j]) < t[j+1] && pls[k] != "" )
00321                     s[i] += pls[k];
00322                 
00323                 if( j < 3 )
00324                     s[i] += " ";
00325             }
00326         }
00327     }
00328     else {
00329         for ( i = 0; i < maxi; i++ ) {
00330             if ( !s[i/4] )
00331                 s[i/4] = "";
00332             
00333             if ( pls[i] != "" )
00334                 s[i/4] += pls[i];
00335             
00336             if ( (i%4 != 3) && i < maxi-1 )
00337                 s[i/4] += " ";
00338         }
00339     }
00340 
00341     return ({ sprintf( "%|78s", "Liste der Mitspieler vom " + dtime(time()) +
00342                      sprintf( " (%d Teilnehmer)", maxi )), "" }) + s;
00343 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

static private string stat ( object  ob,
int  ist_magier 
) [static]

Definiert in Zeile 39 der Datei werliste.c.

Benutzt ARCH_LVL, DOMAINMEMBER_LVL, ELDER_LVL, GOD_LVL, LEARNER_LVL, LORD_LVL, P_SECOND, P_SECOND_MARK, P_TESTPLAYER, query_wiz_level(), SEER_LVL, SPECIAL_LVL und WIZARD_LVL.

00040 {
00041     int l;
00042   
00043     l = query_wiz_level(ob);
00044     
00045     if ( ob->Query(P_TESTPLAYER) ){
00046         if ( l < SEER_LVL )
00047             return "t";
00048         else if ( l < LEARNER_LVL )
00049             return "T";
00050     }
00051     
00052     if ( ob->Query(P_SECOND)) {
00053       if (ob->Query(P_SECOND_MARK) > -1 ){
00054         if ( l < SEER_LVL )
00055             return "z";
00056         else if ( l < LEARNER_LVL )
00057             return "Z";
00058       } else
00059       if (ist_magier) {
00060         if ( l < SEER_LVL )
00061             return "n";
00062         else if ( l < LEARNER_LVL )
00063             return "N";
00064       }
00065     }
00066 
00067     switch(l){
00068     case GOD_LVL .. 666:
00069         return "G";
00070     case ARCH_LVL .. GOD_LVL-1:
00071         return "E";
00072     case ELDER_LVL .. ARCH_LVL-1:
00073         return "W";
00074     case LORD_LVL .. ELDER_LVL-1:
00075         return "R";
00076     case SPECIAL_LVL .. LORD_LVL-1:
00077         return "H";
00078     case DOMAINMEMBER_LVL .. SPECIAL_LVL-1:
00079         return "M";
00080     case WIZARD_LVL .. DOMAINMEMBER_LVL-1:
00081         return "m";
00082     case LEARNER_LVL .. WIZARD_LVL-1:
00083         return "L";
00084     case SEER_LVL .. LEARNER_LVL-1:
00085         return "S";
00086     default:
00087         return "s";
00088     }
00089 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static private string wegstat ( object  ob  )  [static]

Definiert in Zeile 109 der Datei werliste.c.

Benutzt P_AWAY.

Wird benutzt von QueryView().

00110 {
00111     if ( ob->QueryProp(P_AWAY) )
00112         return "w";
00113     
00114     return ".";
00115 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:


Variablen-Dokumentation

mixed* erwarte

Definiert in Zeile 10 der Datei werliste.c.

Wird benutzt von QueryView() und QueryWhoListe().

inherit std user_filter

Definiert in Zeile 3 der Datei werliste.c.

Erzeugt am Thu Jun 3 14:40:31 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3