#include <wizlevels.h>#include <ansi.h>#include <logging.h>#include <magier.h>#include <thing/properties.h>#include <thing/description.h>#include <player.h>#include <moving.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| static mixed * | _query_localcmds () |
| private string | _zap_message (string str, object obj) |
| static int | _zap (string str) |
| static int | _verfolge (string str) |
| static int | _trans (string str) |
| static int | _frieden (string sname) |
| private int | _pwho_learner_test (object ob) |
| static int | _pwho () |
| static int | _zwinge (string str) |
| static int | _heile (string name) |
| static private string | _people_filename (object obj) |
| static int | _people () |
| private string | _spieler_time2string (int time) |
| static int | _spieler (string arg) |
| static int _frieden | ( | string | sname | ) | [static] |
Definiert in Zeile 195 der Datei players.c.
Benutzt find_living(), i, Name(), WEM und WER.
00196 { 00197 object *enem,obj; 00198 int i; 00199 string him; 00200 00201 if (!sname) 00202 { 00203 enem=all_inventory(environment()); 00204 map_objects(enem,"StopHuntingMode"); 00205 tell_room(environment(),sprintf("%s stiftet Frieden.\n",capitalize(getuid())), 00206 ({ this_object()})); 00207 printf("Du stiftest Frieden.\n"); 00208 return 1; 00209 } 00210 else 00211 { 00212 if (!obj=find_living(sname)) 00213 return printf("Kein solches Lebewesen im Spiel.\n"),1; 00214 him=(string)obj->name(WEM); 00215 i=sizeof(enem=(object *)(((mixed *)obj->StopHuntingMode())[0])); 00216 // Mistdriver ... object** waere richtig gewesen ... *seufz* 00217 while(i--) 00218 { 00219 enem[i]->StopHuntFor(obj); 00220 tell_object(obj,sprintf("%s beendet Deinen Kampf mit %s.\n", 00221 capitalize(getuid()),enem[i]->Name(WEM))); 00222 tell_object(enem[0],sprintf("%s beendet Deinen Kampf mit %s.\n", 00223 capitalize(getuid()),him)); 00224 } 00225 } 00226 printf("%s und alle Gegner wurden befriedet.\n",obj->Name(WER)); 00227 return 1; 00228 }

| static int _heile | ( | string | name | ) | [static] |
Definiert in Zeile 311 der Datei players.c.
00312 { 00313 object ob; 00314 int lpv, mpv; 00315 00316 if (!name) return USAGE("heile <name>"); 00317 name = lower_case(name); 00318 if ((!(ob = present(name,environment()))) 00319 ||!living(ob)) 00320 ob = find_living(name); 00321 if (!ob) 00322 { 00323 printf("'%s' ist momentan nicht da.\n",capitalize(name)); 00324 return 1; 00325 } 00326 lpv = (int)ob->QueryProp(P_HP); 00327 mpv = (int)ob->QueryProp(P_SP); 00328 ob->heal_self(1000000); 00329 if (!IS_LEARNER(ob) && (!ob->QueryProp(P_TESTPLAYER)|| 00330 (((string)ob->QueryProp(P_TESTPLAYER))[<5..<1]=="Gilde"))) 00331 log_file(SHELLLOG("HEAL"), 00332 sprintf("%s heilt %s (%s) %s (LP: %d -> %d, MP: %d -> %d)\n", 00333 capitalize(geteuid(this_player())), 00334 call_other(ob,"name"), capitalize(geteuid(ob)), 00335 dtime(time()), lpv, (int)ob->QueryProp(P_HP), 00336 mpv,(int)ob->QueryProp(P_SP))); 00337 tell_object(ob, QueryProp(P_NAME) + " heilt Dich.\n"); 00338 printf("Du heilst %s.\n",capitalize(name)); 00339 return 1; 00340 }
| static int _people | ( | ) | [static] |
Definiert in Zeile 356 der Datei players.c.
00357 { 00358 mixed *list, res; 00359 int i,j, a; 00360 string a_age,a_ipnum,a_name,a_level,a_idle,a_room,a_end, a_title; 00361 00362 switch(QueryProp("tty")) 00363 { 00364 case "vt100": 00365 a_ipnum = ""; a_name = ANSI_BOLD; 00366 a_level = ANSI_NORMAL; a_idle = ANSI_BLINK; 00367 a_room = ANSI_NORMAL; a_end = ANSI_NORMAL; 00368 a_title = ANSI_INVERS; a_age = ANSI_NORMAL; 00369 break; 00370 case "ansi": 00371 a_ipnum = ANSI_BLUE; a_name = ANSI_BOLD; 00372 a_level = ANSI_RED; a_idle = ANSI_BLACK+ANSI_BOLD; 00373 a_room = ANSI_BOLD+ANSI_BLUE; a_end = ANSI_NORMAL; 00374 a_title = ANSI_INVERS; a_age = ANSI_PURPLE; 00375 break; 00376 default: 00377 a_title = a_ipnum = a_name = a_level = a_idle = a_room = a_end = ""; 00378 a_age = ""; 00379 } 00380 list = sort_array(users(), function int (object a, object b) { 00381 return query_ip_number(a)>query_ip_number(b);} ); 00382 00383 j=sizeof(list); 00384 a=0;res=""; 00385 for(i=0; i<sizeof(list); i++) { 00386 string name_; 00387 name_ = capitalize(list[i]->query_real_name()||"<logon>"); 00388 res += sprintf( "%s%-15s%s %s%-13s%s %s%3d%s %s %s %s%s%s%s %s%s\n", 00389 a_ipnum, query_ip_number(list[i]),a_end,a_name, 00390 (list[i]->QueryProp(P_INVIS)?"("+name_+")":name_), 00391 a_end,a_level, MASTER->get_wiz_level(getuid(list[i])), 00392 a_end,a_age, 00393 time2string("%4x %0X",((int)list[i]->QueryProp(P_AGE))*2), 00394 query_idle(list[i])>=300?(a++,(a_idle+"I")):" ", 00395 a_end, 00396 query_editing(list[i])?a_idle+"E"+a_end:" ", 00397 query_input_pending(list[i])?a_idle+"M"+a_end:" ", 00398 environment(list[i])?a_room+_people_filename(list[i]):"", 00399 a_end); 00400 } 00401 if (a) 00402 res = sprintf("%s%d Spieler anwesend (%d aktiv). %s%s\n",a_title,j, 00403 (j-a),query_load_average(),a_end)+res; 00404 else 00405 res = sprintf("%s%d Spieler anwesend. %s%s\n",a_title,j, 00406 query_load_average(),a_end)+res; 00407 More(res); 00408 00409 return 1; 00410 }
| static private string _people_filename | ( | object | obj | ) | [static] |
| static int _pwho | ( | ) | [static] |
Definiert in Zeile 241 der Datei players.c.
00242 { 00243 mixed* spieler, res, *hands; 00244 int i; 00245 #if __VERSION__ < "3.2.9" 00246 spieler = filter(users(),#'_pwho_learner_test); 00247 #else 00248 spieler = filter(users(),(: return !IS_LEARNER($1); :)); 00249 #endif 00250 spieler = order_alist( 00251 ({map_objects(spieler,"QueryProp",P_LEVEL),spieler}))[1]; 00252 res = "Lvl Name Erfahrung QP Int Str Dex Con WC " 00253 "AC HANDS HP (max)\n" 00254 "--------------------------------------------------------------" 00255 "-----------------\n"; 00256 for (i=sizeof(spieler)-1; i>=0; i--) 00257 res += sprintf("%3d %-12s %9d %5d %3d %3d %3d %3d %4d %4d %5d " 00258 "%4d (%4d)\n", 00259 spieler[i]->QueryProp(P_LEVEL), 00260 capitalize(getuid(spieler[i])), 00261 spieler[i]->QueryProp(P_XP), 00262 spieler[i]->QueryProp(P_QP), 00263 spieler[i]->QueryAttribute(A_INT), 00264 spieler[i]->QueryAttribute(A_STR), 00265 spieler[i]->QueryAttribute(A_DEX), 00266 spieler[i]->QueryAttribute(A_CON), 00267 spieler[i]->QueryProp(P_TOTAL_WC), 00268 spieler[i]->QueryProp(P_TOTAL_AC), 00269 (sizeof(hands=((int *)spieler[i]->QueryProp(P_HANDS)))?hands[1]:0), 00270 spieler[i]->QueryProp(P_HP), 00271 spieler[i]->QueryProp(P_MAX_HP)); 00272 More(res); 00273 return 1; 00274 }
| private int _pwho_learner_test | ( | object | ob | ) |
Definiert in Zeile 235 der Datei players.c.
Benutzt IS_LEARNER.
00236 { 00237 return !IS_LEARNER(ob); 00238 }
| static mixed* _query_localcmds | ( | ) | [static] |
Definiert in Zeile 24 der Datei players.c.
Benutzt LEARNER_LVL und WIZARD_LVL.
00025 { 00026 return ({({"zap","_zap",0,WIZARD_LVL}), 00027 ({"verfolge","_verfolge",0,LEARNER_LVL}), 00028 ({"trans","_trans",0,LEARNER_LVL}), 00029 ({"peace","_frieden",0,LEARNER_LVL}), 00030 ({"frieden","_frieden",0,LEARNER_LVL}), 00031 ({"pwho","_pwho",0,WIZARD_LVL}), 00032 ({"zwinge","_zwinge",0,WIZARD_LVL}), 00033 ({"heal","_heile",0,WIZARD_LVL}), 00034 ({"heil","_heile",1,WIZARD_LVL}), 00035 ({"people","_people",0,LEARNER_LVL}), 00036 ({"spieler","_spieler",0,WIZARD_LVL})}); 00037 }
| static int _spieler | ( | string | arg | ) | [static] |
Definiert in Zeile 439 der Datei players.c.
00440 { 00441 string dummy,ip; 00442 object *spieler,pl; 00443 int i; 00444 00445 arg=_unparsed_args(); 00446 if(!strlen(arg) || sscanf(arg,"aus ip %s",dummy)!=1) 00447 return USAGE("spieler aus ip [von <spieler>|<ip>]"); 00448 arg=dummy; 00449 if (sscanf(arg,"von %s",dummy)==1) 00450 { 00451 dummy=lower_case(dummy); 00452 if (!(pl=find_player(dummy))) 00453 return notify_fail(sprintf("Spieler '%s' konnte nicht gefunden " 00454 "werden.\n",capitalize(dummy))),0; 00455 ip=query_ip_number(pl); 00456 } 00457 else ip=arg; 00458 ip=implode((explode(ip,".")-({""})+({"*","*","*","*"}))[0..3],"."); 00459 if (catch( 00460 spieler=filter(users(), 00461 (: return sizeof(regexp(({query_ip_number($1)}),$2)); :),"^"+glob2regexp(ip)+"$") 00462 00463 )) 00464 return printf("In der IP duerfen nur Zahlen(0-255), Punkte (.) und " 00465 "Sterne (*) vorkommen.\n"),1; 00466 if (!sizeof(spieler)) 00467 return printf("Es konnte kein Spieler mit der IP '%s' gefunden " 00468 "werden.\n",ip),1; 00469 arg=sprintf("\nFolgende Spieler haben die IP %s:\n" 00470 "================================================================" 00471 "===========\n" 00472 "Name: Zweitie von: Eingeloggt: " 00473 "Idle seit:\n" 00474 "----------------------------------------------------------------" 00475 "-----------\n",ip); 00476 i=sizeof(spieler); 00477 while(i--) 00478 { 00479 arg+=sprintf("%-11s %-17s %26s %-15s\n", 00480 capitalize(getuid(spieler[i])), 00481 ((dummy=(string)spieler[i]->QueryProp(P_SECOND))? 00482 (sizeof((mixed *)call_other(master(), 00483 "get_userinfo",dummy))? 00484 capitalize(dummy):"*ungueltig*"):""), 00485 dtime(spieler[i]->QueryProp(P_LAST_LOGIN)), 00486 _spieler_time2string(query_idle(spieler[i]))); 00487 } 00488 arg+="===============================================================" 00489 "============\n\n"; 00490 More(arg); 00491 return 1; 00492 }
| private string _spieler_time2string | ( | int | time | ) |
Definiert in Zeile 417 der Datei players.c.
00418 { 00419 string ret; 00420 00421 ret=""; 00422 if (time>=86400) 00423 { 00424 ret+=time/86400+"d "; 00425 time%=86400; 00426 } 00427 if(time<36000) ret+="0"; 00428 ret+=time/3600+":"; 00429 time%=3600; 00430 if(time<600) ret+="0"; 00431 ret+=time/60+":"; 00432 time%=60; 00433 if(time<10) ret+="0"; 00434 ret+=time+""; 00435 return ret; 00436 }
| static int _trans | ( | string | str | ) | [static] |
Definiert in Zeile 154 der Datei players.c.
Benutzt _notify_fail(), find_living(), IS_LEARNER, M_NOCHECK, M_TPORT, match_living(), QueryProp(), WEM und WER.
00155 { 00156 object living; 00157 00158 if (!strlen(str)) 00159 return _notify_fail("Syntax: trans <spielername>\n"),0; 00160 str=match_living(str,0); 00161 if (intp(str)) 00162 switch (str) 00163 { 00164 case -1: write("Das war nicht eindeutig.\n"); return 1; 00165 case -2: write("So ein Wesen gibt es nicht.\n"); return 1; 00166 } 00167 if(living=find_living(str)) 00168 { 00169 if (living->move(object_name(environment()), 00170 M_TPORT|M_NOCHECK)<=0) 00171 { 00172 printf("Teleportieren von %s fehlgeschlagen.\n",living->Name(WEM)); 00173 if (IS_LEARNER(living)) 00174 tell_object(living,sprintf("%s wollte Dich teleportieren, " 00175 "hat aber versagt!\n",capitalize(getuid()))); 00176 return 1; 00177 } 00178 tell_object(living,sprintf( 00179 "Ein seltsames Gefuehl ueberkommt Dich ...\n" 00180 "Du verlierst die Orientierung ...\n" 00181 +(QueryProp(P_INVIS)?"":"%s holt Dich zu sich.\n"), 00182 capitalize(getuid()))); 00183 printf("%s wurde herbeizitiert.\n",living->Name(WER)); 00184 return 1; 00185 } 00186 printf("Das Lebewesen '%s' konnte nicht gefunden werden.\n", 00187 capitalize(str)); 00188 return 1; 00189 }

| static int _verfolge | ( | string | str | ) | [static] |
Definiert in Zeile 114 der Datei players.c.
Benutzt find_living(), find_player(), lv(), match_living(), notify_fail(), P_PURSUERS, Query() und WEN.
00115 { 00116 mixed *pur, lv; 00117 object lv2; 00118 00119 if (!strlen(str)) 00120 { 00121 if (!pointerp(pur=Query(P_PURSUERS))) 00122 return notify_fail("Du verfolgst doch ueberhaupt niemanden.\n"),0; 00123 if (pur[0]) pur[0]->RemovePursuer(this_object()); 00124 printf("Verfolgungsmodus abgeschaltet.\n"); 00125 return 1; 00126 } 00127 str=lower_case(str); 00128 if (intp(lv=match_living(str))) 00129 { 00130 if (lv==-2) 00131 write("Kein solches Wesen gefunden.\n"); 00132 else 00133 printf("verfolge: '%s' ist nicht eindeutig.\n",capitalize(str)); 00134 return 1; 00135 } 00136 if (!(lv2=find_player(lv))) lv2=find_living(lv); 00137 if (!lv2) 00138 { 00139 printf("verfolge: Unerklaerlicher Fehler beim Finden von '%s'.\n", 00140 capitalize(lv)); 00141 return 1; 00142 } 00143 lv2->AddPursuer(this_object()); 00144 printf("Du verfolgst jetzt %s.\n",lv2->name(WEN)); 00145 lv2->TakeFollowers(); 00146 return 1; 00147 }

| static int _zap | ( | string | str | ) | [static] |
Definiert in Zeile 53 der Datei players.c.
Benutzt _zap_message(), message, P_ZAP_MSG, QueryProp(), spieler, USAGE und WEN.
00054 { 00055 object opfer; 00056 string *message, dummy; 00057 int spieler; 00058 00059 if (!str) return USAGE("zap <name>"); 00060 if (sscanf( str, "spieler %s", dummy )) 00061 { 00062 str = dummy; 00063 spieler = 1; 00064 } 00065 if (opfer=present(str,environment())) 00066 { 00067 if ( !living(opfer) ) 00068 { 00069 printf("%s ist doch gar kein Lebewesen!\n",capitalize(str) ); 00070 return 1; 00071 } 00072 if (query_once_interactive(opfer)&&!spieler ) 00073 { 00074 printf( "Spieler kannst Du nur mit der Syntax 'zap spieler <name>' " 00075 "toeten!\n" ); 00076 return 1; 00077 } 00078 else 00079 if ( !query_once_interactive(opfer) && spieler ) 00080 { 00081 printf( "Aber %s ist doch gar kein Spieler!\n",capitalize(str)); 00082 return 1; 00083 } 00084 00085 message = QueryProp(P_ZAP_MSG); 00086 00087 if ( !pointerp(message) || sizeof(message) != 3 ){ 00088 tell_room(environment(),sprintf("%s beschwoert einen Blitz " 00089 "vom Himmel.\n",capitalize(getuid())),({ this_object() })); 00090 printf("Du toetest %s.\n",opfer->name( WEN,2)); 00091 } 00092 else 00093 { 00094 printf(_zap_message(message[0],opfer)); 00095 tell_room(environment(),_zap_message(message[1],opfer), 00096 ({this_player(),opfer})); 00097 tell_object(opfer,_zap_message(message[2],opfer)); 00098 } 00099 00100 opfer->die(); 00101 return 1; 00102 } 00103 else{ 00104 printf("Sowas siehst Du hier nicht.\n"); 00105 return 1; 00106 } 00107 }

| private string _zap_message | ( | string | str, | |
| object | obj | |||
| ) |
Definiert in Zeile 43 der Datei players.c.
Benutzt name, WEM, WEN, WER und WESSEN.
Wird benutzt von _zap().
00044 { 00045 str=regreplace(str,"@@wer@@",(string)obj->name(WER,2),1); 00046 str=regreplace(str,"@@wessen@@",(string)obj->name(WESSEN,2),1); 00047 str=regreplace(str,"@@wem@@",(string)obj->name(WEM,2),1); 00048 str=regreplace(str,"@@wen@@",(string)obj->name(WEN,2),1); 00049 str=regreplace(str,"@@ich@@",name(WER,2),1); 00050 return capitalize(str); 00051 }

| static int _zwinge | ( | string | str | ) | [static] |
Definiert in Zeile 280 der Datei players.c.
00281 { 00282 object living; 00283 string what, rest; 00284 string living_name; 00285 00286 str = _unparsed_args(); 00287 if(!str|| sscanf( str, "%s %s", living_name, what ) != 2 ) 00288 return _notify_fail("Zwinge WEN zu WAS?\n"),0; 00289 if( sscanf( what, "zu %s", rest ) == 1 ) what = rest; 00290 if (!(living = find_living(living_name))) 00291 return printf ("Ein Lebewesen namens '%s' konnte nicht gefunden werden!\n", 00292 capitalize(living_name)),1; 00293 if (living->command_me(what)) 00294 { 00295 printf("Du zwingst %s zu \"%s\".\n",capitalize(living_name),what); 00296 if (!IS_ARCH(this_object())&&getuid()!=(string)living->QueryProp(P_TESTPLAYER)) 00297 log_file(SHELLLOG("ZWINGE"), 00298 sprintf("%s zwingt %s (%s) zu %s [%s]\n", 00299 capitalize(getuid()),living->Name(),capitalize(getuid(living)), 00300 what,dtime(time()))); 00301 } 00302 else 00303 write("Hat leider nicht geklappt!\n"); 00304 return 1; 00305 }
1.6.3