user_filter.c-Dateireferenz

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

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define ME   this_object()

Funktionen

static int is_in (object ob, mixed x)
static int is_at (object ob, mixed x)
static int is_wiz_level_lt (object ob, mixed x)
static int is_wiz_level_ge (object ob, mixed x)
static int is_prop_set (object ob, mixed x)
static int is_second (object ob, mixed x)
static int is_mage_second (object ob)
static int is_in_gilde (object ob, mixed x)
static int is_in_team (object ob, mixed x)
static int is_name_in (object ob, mixed x)
static int is_in_region (object ob, mixed x)
static int is_region_member (object ob, mixed x)
static int is_region_master (object ob, mixed x)
static int is_guild_master (object ob, mixed x)
static int is_gender (object ob, mixed x)
static int is_race (object ob, mixed x)
static int is_unmarried (object ob)
static int is_idle (object ob, mixed x)
static int is_hc (object ob)
static int is_ghost (object ob)
static int uses_ssl (object ob)
protected int is_active_guide (object ob)
object * filter_users (string str)

Variablen

private nosave mapping guild_aliases

Makro-Dokumentation

#define ME   this_object()

Definiert in Zeile 17 der Datei user_filter.c.


Dokumentation der Funktionen

object* filter_users ( string  str  ) 

Definiert in Zeile 174 der Datei user_filter.c.

Benutzt ARCH_LVL, FEMALE, find_living(), find_player(), GOD_LVL, guild_aliases, i, LEARNER_LVL, MALE, ME, old_explode(), P_AWAY, P_FROG, SEER_LVL und x.

Wird benutzt von kkwho() und QueryWhoListe().

00175 {
00176   object *res, *orig, *zwi;
00177   string *words;
00178   int i, sz, f, l,t;
00179   mixed x;
00180   
00181   orig = users();
00182   
00183   if (!str)
00184     return orig;
00185   
00186   res = ({});
00187   words = old_explode( lower_case(str), " " );
00188   sz = sizeof(words);
00189   
00190   for ( i = 0; i < sz; i++ ){
00191     zwi = ({});
00192     
00193     switch (words[i]) {
00194     case "ausser":
00195     case "ohne":
00196     case "nicht":
00197       f=-1;
00198       if (!i) res=orig;
00199       continue;
00200       
00201     case "oder":
00202       f=0;
00203       continue;
00204       
00205     case "und":
00206       f=1;
00207       continue;
00208       
00209     case "alle":
00210       zwi = orig;
00211       break;
00212 
00213     case "in":
00214     case "aus":
00215       if ( ++i >= sz )
00216         break;
00217       zwi = filter( orig, "is_in", ME, words[i] );
00218       break;
00219       
00220     case "region":
00221       if ( ++i >= sz )
00222         break;
00223       zwi = filter( orig, "is_in_region", ME, "/d/" + words[i] );
00224       break;
00225       
00226     case "mitarbeiter":
00227     case "regionsmitarbeiter":
00228       if ( ++i >= sz )
00229         break;
00230       zwi = filter( orig, "is_region_member", ME, words[i] );
00231       break;
00232       
00233     case "regionsmagier":
00234       if ( ++i >= sz )
00235         break;
00236       zwi = filter( orig, "is_region_master", ME, words[i] );
00237       break;
00238       
00239     case "gildenmagier":
00240       if ( ++i >= sz )
00241                 break;
00242       zwi = filter (orig, "is_guild_master", ME, words[i] );
00243       break;
00244       
00245     case "gilde":
00246       if ( ++i >= sz )
00247         break;
00248       zwi = filter( orig, "is_in_gilde", ME, 
00249                   guild_aliases[words[i]] || words[i] );
00250       break;
00251       
00252     case "team":
00253       if ( ++i >= sz )
00254         break;
00255       zwi = filter( orig, "is_in_team", ME,
00256                           lower_case("team " + words[i]) );
00257       break;
00258       
00259     case "bei":
00260       if ( ++i >= sz )
00261         break;
00262       if ( !objectp(x = find_player(words[i]) ) &&
00263            !objectp(x = find_living(words[i])) )
00264         break;
00265       if ( x->QueryProp(P_INVIS) )
00266         break;
00267       zwi = filter( orig, "is_at", ME, environment(x) );
00268       break;
00269 
00270     case "goetter":
00271       zwi = filter( orig, "is_wiz_level_ge", ME, GOD_LVL );
00272       break;
00273       
00274     case "erzmagier":
00275     case "erzi":
00276     case "erzis":
00277       zwi = filter( orig, "is_wiz_level_ge", ME, ARCH_LVL );
00278       break;
00279       
00280     case "magier":
00281       zwi = filter( orig, "is_wiz_level_ge", ME, LEARNER_LVL );
00282       break;
00283       
00284     case "spieler":
00285       zwi = filter( orig, "is_wiz_level_lt", ME, SEER_LVL );
00286       break;
00287       
00288     case "seher":
00289       zwi = filter( filter( orig, "is_wiz_level_lt", ME,
00290                                         LEARNER_LVL),
00291                           "is_wiz_level_ge", ME, SEER_LVL );
00292       break;
00293 
00294     case "maennlich":
00295       zwi = filter( orig, "is_gender", ME, MALE );
00296       break;
00297       
00298     case "weiblich":
00299       zwi = filter( orig, "is_gender", ME, FEMALE );
00300       break;
00301       
00302     case "ledig":
00303       zwi = filter( orig, "is_unmarried" );
00304       break;
00305 
00306     case "ssl":
00307     case "stunnel":
00308       zwi = filter(orig,"uses_ssl");
00309       break;
00310       
00311     case "hardcore":
00312       zwi = filter( orig, "is_hc" );
00313       break;
00314       
00315     case "geist":
00316     case "tot":
00317       zwi = filter( orig, "is_ghost" );
00318       break;
00319       
00320     case "mensch":
00321       zwi = filter( orig, "is_race", ME, "Mensch" );
00322       break;
00323       
00324     case "zwerg":
00325       zwi = filter( orig, "is_race", ME, "Zwerg" );
00326       break;
00327       
00328     case "elf":
00329       zwi = filter( orig, "is_race", ME, "Elf" );
00330       break;
00331       
00332     case "feline" :
00333       zwi = filter( orig, "is_race", ME, "Feline" );
00334       break;
00335       
00336     case "hobbit":
00337       zwi = filter( orig, "is_race", ME, "Hobbit" );
00338       break;
00339       
00340     case "dunkelelf":
00341       zwi = filter( orig, "is_race", ME, "Dunkelelf" );
00342       break;
00343 
00344     case "goblin":
00345       zwi = filter( orig, "is_race", ME, "Goblin" );
00346       break;
00347 
00348     case "frosch":
00349       zwi = filter( orig, "is_prop_set", ME, P_FROG );
00350       break;
00351 
00352     case "weg":
00353       zwi = filter( orig, "is_prop_set", ME, P_AWAY );
00354       break;
00355 
00356     case "idle":
00357       zwi = filter( orig, "is_idle", ME, 120 );
00358       break;
00359 
00360     case "idlezeit":
00361       if ( ++i >= sz )
00362         break;
00363       sscanf(words[i],"%d",t);
00364       zwi = filter( orig, "is_idle", ME, 60*t );
00365       break;
00366 
00367     case "cicerone":
00368     case "cicerones":
00369       // is_active_guide() ist in /std/player/guide.c
00370       zwi = filter( orig, #'is_active_guide);
00371       break;
00372 
00373     case "testie":
00374     case "testies":
00375     case "testspieler":
00376       zwi = filter( orig, "is_prop_set", ME, P_TESTPLAYER );
00377       break;
00378       
00379     case "zweitie":
00380     case "zweities":
00381     case "zweitspieler":
00382         if (IS_LEARNER(this_player()))
00383           zwi = filter( orig, "is_second", ME, -2 );
00384         else
00385           zwi = filter( orig, "is_second", ME, -1 );
00386       break;
00387 
00388     case "magierzweitie":
00389     case "magierzweities":
00390     case "magierzweitspieler":
00391         if (IS_ARCH(this_player()))
00392           zwi = filter( orig, "is_mage_second");
00393       break;
00394 
00395     case "erwartete":
00396       if ( i < (sz-1) && words[i+1] == "wegen" ) {
00397         i++;
00398 
00399         if ( !mappingp(x = (mixed)this_player()->QueryProp(P_WAITFOR_REASON)) ||
00400              !pointerp(x = m_indices(x)) )
00401           break;
00402         
00403         zwi = filter( orig, "is_name_in", ME, x );
00404         break;
00405       }
00406       
00407       if ( !pointerp(x = (mixed)this_player()->QueryProp(P_WAITFOR)) )
00408         break;
00409       zwi = filter( orig, "is_name_in", ME, x );
00410       break;
00411 
00412     case "icq":
00413       zwi = filter( orig, "is_prop_set", ME, P_ICQ );
00414       break;
00415 
00416     case "url":
00417     case "www":
00418       zwi = filter( orig, "is_prop_set", ME, P_HOMEPAGE );
00419       break;
00420           
00421     default:
00422       continue;
00423     }
00424     
00425     switch (f) {
00426     case -1:
00427       res -= zwi;
00428       break;
00429       
00430     case 1:
00431       res &= zwi;
00432       break;
00433 
00434     default:
00435       res += zwi;
00436     }
00437   }
00438   
00439   return res;
00440 }

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

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

protected int is_active_guide ( object  ob  ) 

Definiert in Zeile 158 der Datei user_filter.c.

Benutzt P_NEWBIE_GUIDE.

00158                                          {
00159     int cic=(int)ob->QueryProp(P_NEWBIE_GUIDE);
00160     if (!intp(cic) || cic <= 0)
00161       return 0;
00162     else if (cic < 60)
00163       return 1; // kleiner 60s in der Prop -> immer aktiv.
00164     else if (cic <= 86400) {
00165       // wenn laenger idle als cic -> inaktiv
00166       if (query_idle(ob) > cic)
00167                 return 0;
00168       return 1;
00169     }
00170     // ungueltiger Wertebereich -> inaktiv.
00171     return 0;
00172 }

static int is_at ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 41 der Datei user_filter.c.

00042 {
00043   return environment(ob) == x;
00044 }

static int is_gender ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 117 der Datei user_filter.c.

Benutzt P_GENDER.

00118 {
00119   return ob->QueryProp(P_GENDER) == x;
00120 }

static int is_ghost ( object  ob  )  [static]

Definiert in Zeile 142 der Datei user_filter.c.

Benutzt P_GHOST.

00143 {
00144   return (int)ob->QueryProp(P_GHOST);
00145 }

static int is_guild_master ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 112 der Datei user_filter.c.

Benutzt master.

00113 {
00114   return (int)master()->guild_master(geteuid(ob), x);
00115 }

static int is_hc ( object  ob  )  [static]

Definiert in Zeile 137 der Datei user_filter.c.

00138 {
00139   return ob->query_hc_play()>0;
00140 }

static int is_idle ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 132 der Datei user_filter.c.

00133 {
00134   return query_idle(ob) >= x;
00135 }

static int is_in ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 35 der Datei user_filter.c.

Benutzt country() und P_LOCATION.

00036 {
00037   return (strstr( lower_case(country(ob)), x ) != -1 ||
00038           strstr( lower_case(ob->Query(P_LOCATION) || ""), x ) != -1);
00039 }

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

static int is_in_gilde ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 71 der Datei user_filter.c.

Benutzt P_VISIBLE_GUILD.

00072 {
00073   string str;
00074   
00075   if ( !stringp(str = (string)ob->QueryProp(P_VISIBLE_GUILD)) )
00076     return 0;
00077   
00078   return lower_case(str)[0..strlen(x)-1] == x;
00079 }

static int is_in_region ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 96 der Datei user_filter.c.

00097 {
00098   return environment(ob) &&
00099     (object_name(environment(ob))[0..(strlen(x)-1)] == x);
00100 }

static int is_in_team ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 81 der Datei user_filter.c.

Benutzt P_TEAM und team.

00082 {
00083   object team;
00084   
00085   if ( !objectp(team = (object)ob->QueryProp(P_TEAM)) )
00086     return x == "";
00087   
00088   return lower_case((string)team->Name()) == x;
00089 }

static int is_mage_second ( object  ob  )  [static]

Definiert in Zeile 66 der Datei user_filter.c.

Benutzt IS_LEARNER und P_SECOND.

00067 {
00068   return ob->QueryProp(P_SECOND) && IS_LEARNER(ob->QueryProp(P_SECOND));
00069 }

static int is_name_in ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 91 der Datei user_filter.c.

00092 {
00093   return member( x, capitalize(geteuid(ob)) ) >= 0;
00094 }

static int is_prop_set ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 56 der Datei user_filter.c.

00057 {
00058   return (mixed)ob->QueryProp(x) != 0;
00059 }

static int is_race ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 122 der Datei user_filter.c.

Benutzt P_RACE.

00123 {
00124   return ob->QueryProp(P_RACE) == x;
00125 }

static int is_region_master ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 107 der Datei user_filter.c.

Benutzt master.

00108 {
00109   return (int)master()->domain_master( geteuid(ob), x );
00110 }

static int is_region_member ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 102 der Datei user_filter.c.

Benutzt master.

00103 {
00104   return (int)master()->domain_member( geteuid(ob), x );
00105 }

static int is_second ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 61 der Datei user_filter.c.

Benutzt P_SECOND und P_SECOND_MARK.

00062 {
00063   return ob->QueryProp(P_SECOND) && ob->QueryProp(P_SECOND_MARK) > x;
00064 }

static int is_unmarried ( object  ob  )  [static]

Definiert in Zeile 127 der Datei user_filter.c.

Benutzt P_MARRIED.

00128 {
00129   return ob->QueryProp(P_MARRIED) == 0;
00130 }

static int is_wiz_level_ge ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 51 der Datei user_filter.c.

Benutzt query_wiz_level().

00052 {
00053   return query_wiz_level(ob) >= x;
00054 }

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

static int is_wiz_level_lt ( object  ob,
mixed  x 
) [static]

Definiert in Zeile 46 der Datei user_filter.c.

Benutzt query_wiz_level().

00047 {
00048   return query_wiz_level(ob) < x;
00049 }

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

static int uses_ssl ( object  ob  )  [static]

Definiert in Zeile 147 der Datei user_filter.c.

Benutzt IS_LEARNER.

00148 {
00149   if(!this_interactive() || !IS_LEARNER(this_interactive()))
00150     return 0;
00151 #if __EFUN_DEFINED__(tls_query_connection_info)
00152   return tls_query_connection_info(ob) != 0;
00153 #else
00154   return 0;
00155 #endif
00156 }


Variablen-Dokumentation

private nosave mapping guild_aliases
Initialisierung:
 ([
    "zaubara" : "zauberer",
    "abentoira" : "abenteurer",
    "kaos" : "chaos",
    "biaschuettla" : "bierschuettler",
    "kaznkriega" : "katzenkrieger",
    "klerikae" : "kleriker",
    "dunklelfn" : "dunkelelfen",
    "kaempfa" : "kaempfer",
    "karatae" : "karate",
    "weawoelf" : "werwoelfe",
    "magia" : "magus",
    "trves" : "kaempfer",
    ])

Definiert in Zeile 20 der Datei user_filter.c.

Wird benutzt von filter_users().

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