#include <properties.h>#include <wizlevels.h>#include <ansi.h>#include <werliste.h>
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 |
| #define ABS | ( | a | ) | (((a) < 0) ? -(a) : (a)) |
Definiert in Zeile 13 der Datei werliste.c.
Wird benutzt von is_greater().
| #define MIN | ( | a, | |||
| b | ) | (((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().
| 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 }


| 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 }

| 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 }

| static private int is_alph_greater | ( | object | a, | |
| object | b | |||
| ) | [static] |
Definiert in Zeile 17 der Datei werliste.c.
| 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 }

| 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 }

| public varargs int query_prevent_shadow | ( | object | ob | ) |
Definiert in Zeile 346 der Datei werliste.c.
| 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 }

| 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 }


| 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 }

| static private string wegstat | ( | object | ob | ) | [static] |
Definiert in Zeile 109 der Datei werliste.c.
Benutzt P_AWAY.
Wird benutzt von QueryView().

| 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.
1.6.3