#include <properties.h>#include <language.h>#include <wizlevels.h>#include <moving.h>#include <defines.h>#include "merkzettel.h"

gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| void | create () |
| int | AddNotiz (string str) |
| int | LiesNotiz (string str) |
| int | RemoveNotiz (string str) |
| int | FinishNotiz (string str) |
| int | ListNotizen (string str) |
| int | ChangeDep (string str) |
| int | ChangePrio (string str) |
| int | ChangeHelper (string str) |
| int | ChangeStatus (string str) |
| int | ErsetzeText (string str) |
| int | ErgaenzeText (string str) |
| int | ZeigeZettel (string str) |
| int | WedelZettel (string str) |
| int | LiesDeps (string str) |
| int | Expire (string str) |
| static string | _LiesNotiz (int id) |
| static int | note_filter (int id, int filterstate) |
| static int | aelter_als (int id, int zeit) |
| static string | update_deps (string str, int id) |
| static int * | getDeps (int id, int rec) |
| static int * | getUnresolvedDeps (int id) |
| void | init () |
| static nomask status | check_allowed () |
| static int | restore_me () |
| varargs void | save_me (int delay) |
| varargs int | remove (int silent) |
| static string | query_autoloadobj () |
| static string | set_autoloadobj (mixed arg) |
| int | query_prevent_shadow () |
| static varargs int | checkStatus (int nocache) |
| static status | sort_prio (int key1, int key2) |
| mapping | QueryNotizen () |
| int | QuerySize () |
| string | QueryOwner () |
Variablen | |
| inherit std | secure_thing |
| mapping | notizen |
| int | maxusedID |
| static string | owner |
| #define NEED_PROTOTYPES |
Definiert in Zeile 19 der Datei merkzettel.c.
| static string _LiesNotiz | ( | int | id | ) | [static] |
Definiert in Zeile 902 der Datei merkzettel.c.
Wird benutzt von LiesNotiz().
00902 { 00903 //Funktion verlaesst sich drauf, dass id existiert. ;-) 00904 string res,txt; 00905 res=BSL(sprintf("%-11s: %d","Notiz-Nr.",id)); 00906 res+=break_string(notizen[id,NOTE_TEXT],78,"Notiztext : ", 00907 BS_INDENT_ONCE|BS_LEAVE_MY_LFS); 00908 res+=sprintf("%-11s: %d\n","Prioritaet",notizen[id,NOTE_PRIO]); 00909 //wenn nicht aktiv: Status anzeigen 00910 if (notizen[id,NOTE_STATUS]!=NOTE_ACTIVE) { 00911 switch(notizen[id,NOTE_STATUS]) { 00912 case NOTE_INACTIVE: 00913 txt="Inaktiv/Pause"; 00914 break; 00915 case NOTE_FINISHED: 00916 txt="Abgeschlossen"; 00917 break; 00918 case NOTE_PENDING: 00919 txt="Warte auf Rueckmeldung"; 00920 break; 00921 default: txt=sprintf("%d",notizen[id,NOTE_STATUS]); break; 00922 } 00923 res+=sprintf("%-11s: %s\n","Status",txt); 00924 //wenn abgeschlossen: Endezeit anzeigen 00925 if (notizen[id,NOTE_STATUS]==NOTE_FINISHED) 00926 res+=sprintf("%-11s: %s\n","Endezeit", 00927 dtime(notizen[id,NOTE_CLOSETIME])); 00928 } 00929 res+=sprintf("%-11s: %s\n","Merkzeit",dtime(notizen[id,NOTE_STARTTIME])); 00930 //nur wenn Abhaengigkeiten: anezeigen 00931 if (pointerp(notizen[id,NOTE_DEPS]) && sizeof(notizen[id,NOTE_DEPS])) { 00932 txt=implode(map(notizen[id,NOTE_DEPS],#'to_string)," "); 00933 res+=sprintf("%-11s: %s\n","abh. von",txt); 00934 } 00935 //nur wenn Helfer: anezeigen 00936 if (pointerp(notizen[id,NOTE_HELPER]) && sizeof(notizen[id,NOTE_HELPER])) 00937 res+=sprintf("%-11s: %s\n","Helfer", 00938 implode(notizen[id,NOTE_HELPER]," ")); 00939 return(res); 00940 }

| int AddNotiz | ( | string | str | ) |
Definiert in Zeile 100 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, MAX_NOTE_LENGTH, maxusedID, NOTE_ACTIVE, notizen, P_GENDER, PL, save_me(), TI und WER.
00100 { 00101 00102 if(!objectp(TI)) return(0); 00103 if(!check_allowed()) { 00104 if(objectp(this_interactive())) 00105 tell_object(this_interactive(), 00106 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00107 return(0); 00108 } 00109 //ggf. nur Einlesen, Cache muss hier nicht aktualisiert werden ;-) 00110 checkStatus(1); 00111 str=(string)PL->_unparsed_args(0); //kein parsing 00112 if (!stringp(str) || !strlen(str)) { 00113 tell_object(PL, 00114 "Was moechtest Du Dir denn notieren?\n"); 00115 return(1); 00116 } 00117 if (strlen(str)>MAX_NOTE_LENGTH) { 00118 tell_object(PL,BS( 00119 sprintf("Deine Notiz ist mit %d Zeichen zu lang! Leider passen auf " 00120 "Deinen Merkzettel nur % Zeichen drauf.", 00121 strlen(str),MAX_NOTE_LENGTH))); 00122 return(1); 00123 } 00124 00125 //m_allocate gilt nur bis Funktionsende, daher hilft das in 00126 //checkStatus leider nicht. 00127 if (!mappingp(notizen) || !sizeof(notizen)) 00128 notizen=m_allocate(0,7); 00129 00130 //freie ID finden (maxusedID+1 sollte die naechste frei sein, aber falls 00131 //da mal was kaputtgegangen ist: Pruefen ;-) ) 00132 while(member(notizen,maxusedID)) {maxusedID++;} 00133 //Reihenfolge: s. merkzettel.h 00134 notizen+=([maxusedID:str;0;time();({});({});NOTE_ACTIVE;0]); 00135 /* notizen+=([maxusedID]); 00136 notizen[maxusedID,NOTE_TEXT]=str; 00137 notizen[maxusedID,NOTE_PRIO]=0; 00138 notizen[maxusedID,NOTE_STARTTIME]=time(); 00139 notizen[maxusedID,NOTE_DEPS]=({}); 00140 */ 00141 00142 //cache=({}); //cache invalidieren 00143 //in Kuerze speichern, aber nicht fuer jede Aenderung speichern 00144 save_me(60); 00145 tell_object(PL,BS( 00146 sprintf("Du schreibst sorgfaeltig Deine Notiz auf Deinen Merkzettel. " 00147 "Es ist nun die %d. Notiz.",maxusedID))); 00148 tell_room(environment(TI), 00149 BS(sprintf("%s notiert sich etwas auf %s Merkzettel.\n", 00150 capitalize((string)TI->name(WER)), 00151 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00152 )),({TI})); 00153 return(1); 00154 }

| static int aelter_als | ( | int | id, | |
| int | zeit | |||
| ) | [static] |
Definiert in Zeile 952 der Datei merkzettel.c.
Benutzt NOTE_CLOSETIME und notizen.
00952 { 00953 //liefert 1 zurueck, wenn Schliesszeit der Notiz laenger als 'sekunden' her ist, sonst 0. 00954 if (notizen[id,NOTE_CLOSETIME]<zeit) return(1); 00955 return(0); 00956 }
| int ChangeDep | ( | string | str | ) |
Definiert in Zeile 382 der Datei merkzettel.c.
00382 { 00383 int id; 00384 string *arr; 00385 int *deps; 00386 00387 notify_fail("Bitte eine ID und eine min. eine Abhaengigkeit angeben!\n"); 00388 if(!objectp(TI)) return(0); 00389 if(!check_allowed()) { 00390 if(objectp(this_interactive())) 00391 tell_object(this_interactive(), 00392 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00393 return(0); 00394 } 00395 str=(string)PL->_unparsed_args(0); 00396 if (!stringp(str) || !strlen(str)) 00397 return(0); 00398 00399 if (!checkStatus()) { 00400 tell_object(PL,BS( 00401 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00402 "Hast Du nix zu tun?")); 00403 return(1); 00404 } 00405 arr=explode(str," "); 00406 arr-=({""}); // "" entfernen, wichtig. ;-) 00407 if (sizeof(arr)<2) 00408 return(0); 00409 id=to_int(arr[0]); 00410 arr-=({arr[0]}); //eigene ID loeschen 00411 if (sizeof(arr)<1) 00412 return(0); //mehrfach die eigene ID gilt nicht.;-) 00413 if (!member(notizen,id)) { 00414 tell_object(PL, 00415 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00416 return(1); 00417 } 00418 //dies updated direkt die Abhaengigkeiten in 'notizen'! 00419 map(arr,#'update_deps,id); 00420 save_me(60); 00421 tell_object(PL,BS( 00422 sprintf("Du aenderst die Abhaengigkeiten von Notiz %d.\n", 00423 id))); 00424 tell_room(environment(TI), 00425 BS(sprintf("%s kritzelt auf %s Merkzettel herum.\n", 00426 capitalize((string)TI->name(WER)), 00427 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00428 )),({TI})); 00429 return(1); 00430 }
| int ChangeHelper | ( | string | str | ) |
Definiert in Zeile 485 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, NOTE_HELPER, notify_fail(), notizen, P_GENDER, PL, save_me(), TI und WER.
00485 { 00486 int id; 00487 string *arr; 00488 00489 notify_fail("Bitte eine ID und eine min. einen Namen angeben!\n"); 00490 if(!objectp(TI)) return(0); 00491 if(!check_allowed()) { 00492 if(objectp(this_interactive())) 00493 tell_object(this_interactive(), 00494 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00495 return(0); 00496 } 00497 str=(string)PL->_unparsed_args(0); 00498 if (!stringp(str) || !strlen(str)) 00499 return(0); 00500 00501 if (!checkStatus()) { 00502 tell_object(PL,BS( 00503 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00504 "Hast Du nix zu tun?")); 00505 return(1); 00506 } 00507 arr=explode(str," "); 00508 arr-=({""}); // "" entfernen, wichtig. ;-) 00509 if (sizeof(arr)<2) 00510 return(0); 00511 id=to_int(arr[0]); 00512 arr-=({arr[0]}); //eigene ID loeschen 00513 if (sizeof(arr)<1) 00514 return(0); //mehrfach die eigene ID gilt nicht.;-) 00515 if (!member(notizen,id)) { 00516 tell_object(PL, 00517 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00518 return(1); 00519 } 00520 notizen[id,NOTE_HELPER]=arr; 00521 save_me(60); 00522 tell_object(PL,BS( 00523 sprintf("Mitarbeiter von Notiz %d geaendert.",id))); 00524 tell_room(environment(TI), 00525 BS(sprintf("%s kritzelt auf %s Merkzettel herum.\n", 00526 capitalize((string)TI->name(WER)), 00527 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00528 )),({TI})); 00529 return(1); 00530 }

| int ChangePrio | ( | string | str | ) |
Definiert in Zeile 432 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, NOTE_PRIO, notify_fail(), notizen, P_GENDER, PL, save_me(), TI und WER.
00432 { 00433 int id, prio; 00434 string* arr; 00435 00436 notify_fail("Bitte eine ID und eine neue Prioritaet angeben!\n"); 00437 if(!objectp(TI)) return(0); 00438 if(!check_allowed()) { 00439 if(objectp(this_interactive())) 00440 tell_object(this_interactive(), 00441 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00442 return(0); 00443 } 00444 str=(string)PL->_unparsed_args(0); 00445 if (!stringp(str) || !strlen(str)) 00446 return(0); 00447 00448 if (!checkStatus()) { 00449 tell_object(PL,BS( 00450 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00451 "Hast Du nix zu tun?")); 00452 return(1); 00453 } 00454 arr=explode(str," "); 00455 if (sizeof(arr)>2) { 00456 notify_fail("Bitte nur eine ID und eine neue Prioritaet angeben!"); 00457 return(0); 00458 } 00459 else if(sizeof(arr)==2) { 00460 id=to_int(arr[0]); 00461 prio=to_int(arr[1]); 00462 } 00463 else 00464 return(0); 00465 00466 if (!member(notizen,id)) { 00467 tell_object(PL, 00468 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00469 return(1); 00470 } 00471 notizen[id,NOTE_PRIO]=prio; 00472 //cache=({}); //cache invalidieren 00473 save_me(60); 00474 tell_object(PL,BS( 00475 sprintf("Du aenderst die Prioritaet von Notiz %d auf %d.", 00476 id,notizen[id,NOTE_PRIO]))); 00477 tell_room(environment(TI), 00478 BS(sprintf("%s kritzelt auf %s Merkzettel herum.\n", 00479 capitalize((string)TI->name(WER)), 00480 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00481 )),({TI})); 00482 return(1); 00483 }

| int ChangeStatus | ( | string | str | ) |
Definiert in Zeile 532 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, NOTE_ACTIVE, NOTE_INACTIVE, NOTE_STATES, NOTE_STATUS, notify_fail(), notizen, P_GENDER, PL, save_me(), TI und WER.
00532 { 00533 int id, state; 00534 string *arr; 00535 00536 notify_fail(BS( 00537 "Bitte min. eine ID angeben, um den Status umzuschalten oder " 00538 "eine ID und den neuen Status (1==Aktiv, 2==Wartend, " 00539 "-1==Inaktiv/Pause)")); 00540 if(!objectp(TI)) return(0); 00541 if(!check_allowed()) { 00542 if(objectp(this_interactive())) 00543 tell_object(this_interactive(), 00544 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00545 return(0); 00546 } 00547 str=(string)PL->_unparsed_args(0); 00548 if (!stringp(str) || !strlen(str)) 00549 return(0); 00550 if (!checkStatus()) { 00551 tell_object(PL,BS( 00552 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00553 "Hast Du nix zu tun?")); 00554 return(1); 00555 } 00556 arr=explode(str," "); 00557 if (sizeof(arr)>2) { 00558 notify_fail("Bitte nur eine ID und einen neuen Status angeben!"); 00559 return(0); 00560 } 00561 else if(sizeof(arr)==2) { 00562 id=to_int(arr[0]); 00563 state=to_int(arr[1]); 00564 } 00565 else if(sizeof(arr)==1) { 00566 id=to_int(arr[0]); 00567 } 00568 else 00569 return(0); 00570 00571 if (!member(notizen,id)) { 00572 tell_object(PL, 00573 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00574 return(1); 00575 } 00576 if(member(NOTE_STATES,state)==-1) { 00577 if (notizen[id,NOTE_STATUS]==NOTE_ACTIVE) { 00578 tell_object(PL,BS( 00579 sprintf("%d ist ein unbekannter Status, setzt Notiz %s auf " 00580 "'Inaktiv'.",state,id))); 00581 state=NOTE_INACTIVE; 00582 } 00583 else { 00584 tell_object(PL,BS( 00585 sprintf("%d ist ein unbekannter Status, setzt Notiz %s auf " 00586 "'Aktiv'.",state,id))); 00587 state=NOTE_ACTIVE; 00588 } 00589 } 00590 notizen[id,NOTE_STATUS]=state; 00591 save_me(60); 00592 tell_object(PL,BS( 00593 sprintf("Status von Notiz %d geaendert.",id))); 00594 tell_room(environment(TI), 00595 BS(sprintf("%s kritzelt auf %s Notizzettel herum.\n", 00596 capitalize((string)TI->name(WER)), 00597 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00598 )),({TI})); 00599 return(1); 00600 }

| static nomask status check_allowed | ( | ) | [static] |
Definiert in Zeile 1020 der Datei merkzettel.c.
Wird benutzt von AddNotiz(), ChangeHelper(), ChangePrio(), ChangeStatus(), ErgaenzeText(), ErsetzeText(), FinishNotiz(), LiesNotiz(), RemoveNotiz() und ZeigeZettel().
01020 { 01021 //Zugriff auf die Daten fuer den Eigentuemer 01022 if(objectp(this_interactive()) && 01023 getuid(this_interactive())==owner 01024 && !process_call()) 01025 return(1); 01026 return(0); 01027 }

| static varargs int checkStatus | ( | int | nocache | ) | [static] |
Definiert in Zeile 1082 der Datei merkzettel.c.
Wird benutzt von AddNotiz(), ChangeHelper(), ChangePrio(), ChangeStatus(), ErgaenzeText(), ErsetzeText(), FinishNotiz(), LiesNotiz(), RemoveNotiz() und ZeigeZettel().
01082 { 01083 //schaut, ob Notizen da, ob der Cache Ok ist, etc. 01084 //liefert Anzahl der Notizen auf dem Merkzettel 01085 01086 //wenn keine Notizen da sind, schauen, ob das Savefile eingelesen werden 01087 //kann 01088 if (!mappingp(notizen) || !sizeof(notizen)) 01089 restore_me(); 01090 if (!mappingp(notizen)) return(0); 01091 /* Cache ist eigentlich nicht noetig und mir gerade zu unpraktisch, raus damit. 01092 //wenn keine Aktualisierung des Cache erwuenscht ist 01093 if(nocache) return(0); 01094 01095 if (sizeof(notizen)) { 01096 if(!pointerp(cache) || !sizeof(cache)) { 01097 //cache erneuern 01098 cache=sort_array(m_indices(notizen),"sort_prio"); 01099 } 01100 } 01101 return(sizeof(cache)); //aequivalent zu sizeof(notizen) 01102 */ 01103 return(sizeof(notizen)); 01104 }

| void create | ( | ) |
Definiert in Zeile 30 der Datei merkzettel.c.
Benutzt AddCmd(), AddId(), break_string(), create(), F_MODE_AS, F_SET_METHOD, MALE, P_ARTICLE, P_AUTOLOADOBJ, P_GENDER, P_INFO, P_LONG, P_NAME, P_NEVERDROP, P_NODROP, P_SHORT, P_VALUE, P_WEIGHT, PROTECTED, Set(), set_autoloadobj() und SetProp().
00030 { 00031 ::create(); 00032 SetProp(P_NAME, "Merkzettel"); 00033 SetProp(P_SHORT, "Ein Merkzettel"); 00034 AddId(({"merkzettel","zettel"})); 00035 //Absicht, damit die Blueprint eine ID, P_NAME und P_SHORT hat. 00036 if(!clonep(this_object())) return; 00037 00038 SetProp(P_LONG, 00039 "Was wolltest Du gleich nochmal schoenes proggen? ;-)\n" 00040 "Befehlsliste:\n" 00041 "zmerke/znotiz <string> : Etwas auf den Merkzettel schreiben\n" 00042 "zliste : 20 wichtigsten Notizen anzeigen\n" 00043 "zliste <int> : <int> wichtigste Notizen anzeigen\n" 00044 " (unwichtigste, wenn <int> negativ)\n" 00045 " Angabe von 0 oder 'alle' gibt alle aus\n" 00046 "zliste <int> <filter> : <int> wichtigste Notizen anzeigen\n" 00047 " (Filter: 'aktiv', 'wartend'\n" 00048 " 'inaktiv', 'abgehakt', 'alle'|'0')\n" 00049 " Ohne Angabe eines Filter gilt 'aktiv'\n" 00050 "zstatus <int> : Status von Notiz mit ID umschalten\n" 00051 "zstatus <int> <int2> : Status von Notiz mit ID auf <int> setzen \n" 00052 "zloesche/zrm <int> : Notiz mit ID <int> loeschen\n" 00053 "zlies/zlese <int> : Notiz mit ID <int> anzeigen\n" 00054 "zdeplies <int> <int2> : Abhaengigkeiten von <int> lesen, \n" 00055 " : rekursiv, wenn <int2> != 0\n" 00056 "zfertig/zhake <int> : Notiz mit ID <int> abhaken (fertig)\n" 00057 "zprio <int1> <int2> : Notiz mit ID <int> mit Prioritaet <int2>\n" 00058 " versehen.\n" 00059 "zdep <int1> <int2> : Notiz mit ID <int> soll von Notiz mit ID\n" 00060 " <int2> abhaengen.\n" 00061 "zhelfer <int1> <namen> : Notiz mit ID <int> wird (mit)bearbeitet\n" 00062 " von den angegebenen Personen\n" 00063 "zergaenze <int> <text> : haengt <text> an Notiz <int> an\n" 00064 "zersetze <int> <text> : ersetzt Text von Notiz <int> durch <text>\n" 00065 "zexpire <int> : alle abgehakten Notizen archivieren und loeschen,\n" 00066 " : die aelter als <int> Tage sind.\n" 00067 "zzeige <name> ; zeige <name>, wie furchtbar viel Du zu tun hast\n" 00068 "zwedel <name> : <name> aus der Ferne vor der Nase rumwedeln.\n" 00069 ); 00070 SetProp(P_INFO,break_string("Ein Merkzettel fuer Magier. ;-).")); 00071 SetProp(P_GENDER, MALE); 00072 SetProp(P_ARTICLE, 1); 00073 SetProp(P_WEIGHT, 0); 00074 SetProp(P_VALUE, 0); 00075 Set(P_AUTOLOADOBJ,#'query_autoloadobj,F_QUERY_METHOD); 00076 Set(P_AUTOLOADOBJ,#'set_autoloadobj,F_SET_METHOD); 00077 Set(P_AUTOLOADOBJ,PROTECTED,F_MODE_AS); 00078 SetProp(P_NEVERDROP,1); 00079 SetProp(P_NODROP,1); 00080 AddCmd(({"zmerke","znotiz"}),"AddNotiz"); 00081 AddCmd(({"zliste","ztodo"}),"ListNotizen"); 00082 AddCmd(({"zloesche","zrm"}),"RemoveNotiz"); 00083 AddCmd(({"zfertig","zhake"}),"FinishNotiz"); 00084 AddCmd(({"zlies","zlese"}),"LiesNotiz"); 00085 AddCmd(({"zprio"}),"ChangePrio"); 00086 AddCmd(({"zdep"}),"ChangeDep"); 00087 AddCmd(({"zstatus"}),"ChangeStatus"); 00088 AddCmd(({"zersetze"}),"ErsetzeText"); 00089 AddCmd(({"zergaenze"}),"ErgaenzeText"); 00090 AddCmd(({"zhelfer","zdelegiere"}),"ChangeHelper"); 00091 AddCmd(({"zzeige"}),"ZeigeZettel"); 00092 AddCmd(({"zwedel"}),"WedelZettel"); 00093 AddCmd(({"zdeplies"}),"LiesDeps"); 00094 AddCmd(({"zexpire"}),"Expire"); 00095 //cache=({}); 00096 00097 }

| int ErgaenzeText | ( | string | str | ) |
Definiert in Zeile 650 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, NOTE_TEXT, notify_fail(), notizen, P_GENDER, PL, save_me(), TI und WER.
00650 { 00651 string *arr; 00652 int id; 00653 00654 notify_fail("Bitte eine ID und einen Text angeben!\n"); 00655 if(!objectp(TI)) return(0); 00656 if(!check_allowed()) { 00657 if(objectp(this_interactive())) 00658 tell_object(this_interactive(), 00659 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00660 return(0); 00661 } 00662 str=(string)PL->_unparsed_args(0); 00663 if (!stringp(str) || !strlen(str)) 00664 return(0); 00665 00666 if (!checkStatus()) { 00667 tell_object(PL,BS( 00668 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00669 "Hast Du nix zu tun?")); 00670 return(1); 00671 } 00672 arr=explode(str," "); 00673 arr-=({""}); // "" entfernen 00674 if (sizeof(arr)<2) 00675 return(0); 00676 id=to_int(arr[0]); 00677 str="\n"; 00678 str+=implode(arr[1..]," "); //text wiederherstellen 00679 if (!member(notizen,id)) { 00680 tell_object(PL, 00681 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00682 return(1); 00683 } 00684 notizen[id,NOTE_TEXT]+=str; 00685 save_me(60); 00686 tell_object(PL,BS( 00687 sprintf("Text von Notiz %d ergaenzt.",id))); 00688 tell_room(environment(TI), 00689 BS(sprintf("%s ergaenzt etwas auf %s Notizzettel.\n", 00690 capitalize((string)TI->name(WER)), 00691 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00692 )),({TI})); 00693 return(1); 00694 }

| int ErsetzeText | ( | string | str | ) |
Definiert in Zeile 602 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, NOTE_TEXT, notify_fail(), notizen, P_GENDER, PL, save_me(), TI und WER.
00602 { 00603 string *arr; 00604 int id; 00605 00606 notify_fail("Bitte eine ID und einen neuen Text angeben!\n"); 00607 if(!objectp(TI)) return(0); 00608 00609 if(!check_allowed()) { 00610 if(objectp(this_interactive())) 00611 tell_object(this_interactive(), 00612 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00613 return(0); 00614 } 00615 str=(string)PL->_unparsed_args(0); 00616 if (!stringp(str) || !strlen(str)) 00617 return(0); 00618 00619 if (!checkStatus()) { 00620 tell_object(PL,BS( 00621 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00622 "Hast Du nix zu tun?")); 00623 return(1); 00624 } 00625 arr=explode(str," "); 00626 arr-=({""}); // "" entfernen 00627 if (sizeof(arr)<2) 00628 return(0); 00629 id=to_int(arr[0]); 00630 str=implode(arr[1..]," "); //text wiederherstellen, ohne erstes Element 00631 if (!strlen(str)) return(0); 00632 if (!member(notizen,id)) { 00633 tell_object(PL, 00634 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00635 return(1); 00636 } 00637 notizen[id,NOTE_TEXT]=str; 00638 save_me(60); 00639 tell_object(PL,BS( 00640 sprintf("Text von Notiz %d ersetzt.",id))); 00641 tell_room(environment(TI), 00642 BS(sprintf("%s radiert zuerst etwas auf %s Notizzettel herum und " 00643 "schreibt anschliessend sorgfaeltig etwas neues auf.\n", 00644 capitalize((string)TI->name(WER)), 00645 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00646 )),({TI})); 00647 return(1); 00648 }

| int Expire | ( | string | str | ) |
Definiert in Zeile 853 der Datei merkzettel.c.
00853 { 00854 float age; 00855 int sekunden, i; 00856 int *liste; 00857 string res; 00858 00859 notify_fail("Bitte angeben, wie alt zu loeschende Notizen sein sollen (in Tagen)!\n"); 00860 if(!objectp(TI)) return(0); 00861 if(!check_allowed()) { 00862 if(objectp(this_interactive())) 00863 tell_object(this_interactive(), 00864 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00865 return(0); 00866 } 00867 str=(string)PL->_unparsed_args(0); 00868 if (!stringp(str) || !strlen(str)) 00869 return(0); 00870 age=to_float(str); 00871 if (age<=0) return(0); 00872 sekunden=time() - (int)(age*86400); 00873 if (!checkStatus()) { 00874 tell_object(PL,BS( 00875 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00876 "Hast Du nix zu tun?")); 00877 return(1); 00878 } 00879 //abgehakte Notizen ermitteln 00880 liste=filter(m_indices(notizen),#'note_filter,NOTE_FINISHED); 00881 //Notizen ermitteln, die lang genug abgehakt sind. 00882 liste=filter(liste,#'aelter_als,sekunden); 00883 if (!sizeof(liste)) { 00884 tell_object(PL,BS("Keine Notizen gefunden, die lang genug abgehakt sind.")); 00885 return(1); 00886 } 00887 res=sprintf("Archivierte Notizen vom %s\n\n",dtime(time())); 00888 for (i=sizeof(liste);i--;) { 00889 //Infos noch einmal ausgeben und loeschen 00890 res+=_LiesNotiz(liste[i])+"\n"; 00891 efun::m_delete(notizen,liste[i]); 00892 } 00893 res+="\n"; 00894 write_file(ARCHIVE(owner),res); 00895 tell_object(PL,BS(sprintf( 00896 "%d alte Notizen wurden nach %s archiviert und geloescht.", 00897 sizeof(liste),ARCHIVE(owner)))); 00898 return(1); 00899 }
| int FinishNotiz | ( | string | str | ) |
Definiert in Zeile 233 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), getUnresolvedDeps(), id(), liste(), NOTE_FINISHED, NOTE_STATUS, notizen, PL und TI.
00233 { 00234 int id; 00235 mixed liste; 00236 if(!objectp(TI)) return(0); 00237 if(!check_allowed()) { 00238 if(objectp(this_interactive())) 00239 tell_object(this_interactive(), 00240 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00241 return(0); 00242 } 00243 if (!stringp(str) || !strlen(str) || !id=to_int(str)) { 00244 tell_object(PL, 00245 "Welche Notiz moechtest Du abhaken? Bitte eine ID angeben!\n"); 00246 return(1); 00247 } 00248 if (!checkStatus()) { 00249 tell_object(PL, 00250 "Es gibt keine Notiz, die Du abhaken koenntest!\n"); 00251 return(1); 00252 } 00253 if (!member(notizen,id)) { 00254 tell_object(PL, 00255 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00256 return(1); 00257 } 00258 if(notizen[id,NOTE_STATUS]==NOTE_FINISHED) { 00259 tell_object(PL, 00260 sprintf("Notiz %d ist schon abgehakt!\n",id)); 00261 return(1); 00262 } 00263 liste=getUnresolvedDeps(id); //liste ist Array von ints 00264 if (sizeof(liste)) { 00265 liste=map(liste,#'to_string); //liste ist Array von strings 00266 tell_object(PL,BS(sprintf("Du kannst Notiz %d nicht abhaken, da noch " 00267 "nicht erledigte Abhaengigkeiten existieren. IDs: %s.", 00268 id,CountUp(liste)))); 00269 return(1); 00270 } 00271 notizen[id,NOTE_STATUS]=NOTE_FINISHED; 00272 notizen[id,NOTE_CLOSETIME]=time(); 00273 tell_object(PL,BS( 00274 sprintf("Du malst zufrieden einen schoenen grossen Haken hinter " 00275 "die Notiz Nr. %d. Hach - was bist Du nun zufrieden! :-)\n",id))); 00276 tell_room(environment(TI), 00277 BS(sprintf("%s hakt erfreut etwas auf %s Merkzettel ab.\n", 00278 capitalize((string)TI->name(WER)), 00279 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00280 )),({TI})); 00281 return(1); 00282 }

| static int* getDeps | ( | int | id, | |
| int | rec | |||
| ) | [static] |
Definiert in Zeile 973 der Datei merkzettel.c.
Benutzt i, NOTE_DEPS, notizen und PL.
Wird benutzt von getUnresolvedDeps().
00973 { 00974 //ermittelt (ggf. rekursiv bei rec!=0) die Abhaengigkeiten einer Notiz 00975 int i, *liste; 00976 liste=notizen[id,NOTE_DEPS]; 00977 //jetzt ggf. noch rekursiv weiterholen 00978 if (rec) { 00979 i=0; 00980 while(i<sizeof(liste)) { 00981 //nicht schreien. ;-) 00982 if (get_eval_cost()<100000) { 00983 tell_object(PL,"Fehler: Zu lange Rekursion bei " 00984 "Ermitteln der Abhaengigkeiten, Abbruch\n"); 00985 return(liste); 00986 } 00987 //Abhaengigkeiten der anderen Abhaengigkeiten hinten anhaengen. 00988 liste+=notizen[liste[i],NOTE_DEPS]; 00989 i++; 00990 } 00991 } 00992 return(liste); 00993 }

| static int* getUnresolvedDeps | ( | int | id | ) | [static] |
Definiert in Zeile 995 der Datei merkzettel.c.
Benutzt getDeps().
Wird benutzt von FinishNotiz().
00995 { 00996 //liefert die Anzahl der nicht abgehakten Notizen, von denen eine 00997 //Notiz abhaengig ist (rekursiv) 00998 int *liste; 00999 //Abhaengigkeiten rekursiv holen 01000 liste=getDeps(id,1); 01001 //nicht abgehakte zurueckgeben 01002 return(liste-filter(liste,#'note_filter,NOTE_FINISHED)); 01003 }


| void init | ( | ) |
Definiert in Zeile 1005 der Datei merkzettel.c.
01005 { 01006 ::init(); 01007 //wenn kein Env, Env kein magier oder nicht der Eigentuemer ist: weg 01008 if (!objectp(environment()) || !IS_LEARNER(environment()) 01009 || (stringp(owner) && getuid(environment())!=owner) ) { 01010 if (find_call_out("remove") == -1) 01011 call_out("remove",1,1); 01012 return; 01013 } 01014 //beim erstmaligen Bewegen in einen Magier wird der als Eigentuemer 01015 //registriert. Danach kommt diese Info aus P_AUTOLOAD 01016 if (!stringp(owner)) 01017 owner=getuid(environment()); 01018 }
| int LiesDeps | ( | string | str | ) |
Definiert in Zeile 792 der Datei merkzettel.c.
00792 { 00793 //erstmal (rekursiv) alle Abhaengigkeiten einer Notiz ermitteln 00794 string *arr; 00795 int id, rec, i; 00796 int *liste; 00797 00798 notify_fail("Bitte eine ID und ggf. '1' fuer rekursive Suche angeben!\n"); 00799 if(!objectp(TI)) return(0); 00800 if(!check_allowed()) { 00801 if(objectp(this_interactive())) 00802 tell_object(this_interactive(), 00803 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00804 return(0); 00805 } 00806 str=(string)PL->_unparsed_args(0); 00807 if (!stringp(str) || !strlen(str)) 00808 return(0); 00809 00810 if (!checkStatus()) { 00811 tell_object(PL,BS( 00812 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00813 "Hast Du nix zu tun?")); 00814 return(1); 00815 } 00816 arr=explode(str," "); 00817 arr-=({""}); // "" entfernen 00818 if (sizeof(arr)==1) { 00819 id=to_int(arr[0]); 00820 rec=0; //Standard: keine Rekursion 00821 } 00822 else if (sizeof(arr)>=2) { 00823 id=to_int(arr[0]); 00824 rec=to_int(arr[1]); 00825 } 00826 else { 00827 return(0); 00828 } 00829 if (!member(notizen,id)) { 00830 tell_object(PL, 00831 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00832 return(1); 00833 } 00834 //Notizen, von denen id abhaengt, holen 00835 //und nur aktive Notizen behalten 00836 liste=filter(getDeps(id,rec),#'note_filter,NOTE_ACTIVE); 00837 //nach Prioritaet sortieren 00838 liste=sort_array(liste,#'sort_prio); 00839 //dann mal ausgeben. 00840 i=sizeof(liste); 00841 tell_object(PL,BS(sprintf("Du vertiefst Dich in die Abhaenhigkeiten von Notiz: %d\n",id))); 00842 while(i--) { 00843 tell_object(PL,_LiesNotiz(liste[i])+"\n"); 00844 } 00845 tell_room(environment(TI), 00846 BS(sprintf("%s liest etwas auf %s Merkzettel.\n", 00847 capitalize((string)TI->name(WER)), 00848 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00849 )),({TI})); 00850 return(1); 00851 }
| int LiesNotiz | ( | string | str | ) |
Definiert in Zeile 156 der Datei merkzettel.c.
Benutzt _LiesNotiz(), BS, check_allowed(), checkStatus(), FEMALE, id(), notizen, P_GENDER, PL, TI und WER.
00156 { 00157 int id; 00158 00159 if(!objectp(TI)) return(0); 00160 if(!check_allowed()) { 00161 if(objectp(this_interactive())) 00162 tell_object(this_interactive(), 00163 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00164 return(0); 00165 } 00166 if (!stringp(str) || !strlen(str) || !id=to_int(str)) { 00167 tell_object(PL, 00168 "Welche Notiz moechtest Du lesen? Bitte eine ID angeben!\n"); 00169 return(1); 00170 } 00171 if (!checkStatus()) { 00172 tell_object(PL, 00173 "Es gibt keine Notiz, die Du lesen koenntest!\n"); 00174 return(1); 00175 } 00176 if (!member(notizen,id)) { 00177 tell_object(PL, 00178 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00179 return(1); 00180 } 00181 //Ausgabetext holen und ausgeben 00182 tell_object(PL,sprintf("\nDu vertiefst Dich in Deinen Merkzettel und liest:\n%s\n",_LiesNotiz(id))); 00183 tell_room(environment(TI), 00184 BS(sprintf("%s liest etwas auf %s Merkzettel.\n", 00185 capitalize((string)TI->name(WER)), 00186 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00187 )),({TI})); 00188 return(1); 00189 }

| int ListNotizen | ( | string | str | ) |
Definiert in Zeile 284 der Datei merkzettel.c.
00284 { 00285 int zahl,notizzahl,i,id,filterstate; 00286 string txt; 00287 string *arr; 00288 status invers; 00289 00290 if(!objectp(TI)) return(0); 00291 str=(string)PL->_unparsed_args(0); 00292 if(!check_allowed()) { 00293 if(objectp(this_interactive())) 00294 tell_object(this_interactive(), 00295 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00296 return(0); 00297 } 00298 if (!notizzahl=checkStatus()) { 00299 tell_object(PL,BS( 00300 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00301 "Hast Du nix zu tun?")); 00302 return(1); 00303 } 00304 //Argumente parsen 00305 if(stringp(str) && strlen(str)) 00306 arr=explode(str," "); 00307 if (pointerp(arr)) arr-=({""}); //doppelte leerzeichen im String 00308 if (pointerp(arr) && sizeof(arr)>=2) { 00309 zahl=to_int(arr[0]); 00310 switch(arr[1]) { 00311 case "aktiv": 00312 filterstate=NOTE_ACTIVE; break; 00313 case "inaktiv": 00314 filterstate=NOTE_INACTIVE; break; 00315 case "wartend": 00316 case "pending": 00317 filterstate=NOTE_PENDING; break; 00318 case "abgehakt": 00319 case "fertig": 00320 case "abgeschlossen": 00321 filterstate=NOTE_FINISHED; break; 00322 case "alle": 00323 filterstate=0; break; 00324 default: 00325 filterstate=to_int(arr[1]); 00326 break; 00327 } 00328 } 00329 else if (pointerp(arr) && sizeof(arr)==1) { 00330 zahl=to_int(arr[0]); 00331 filterstate=NOTE_ACTIVE; 00332 } 00333 else { 00334 //Voreinstellungen 00335 zahl=20; 00336 filterstate=NOTE_ACTIVE; 00337 } 00338 //1. Argument "all" oder "alle" ist: alle anzeigen 00339 if (pointerp(arr) && sizeof(arr) && stringp(arr[0]) && 00340 strlen(arr[0]) && arr[0]=="alle") 00341 zahl=notizzahl; //alle anzeigen 00342 00343 //wenn die gewuenschte Zahl die Anzahl gespeicherter 00344 //Notizen ueberschreitet (oder 0 ist) 00345 if(!zahl || zahl>notizzahl) zahl=notizzahl; 00346 00347 //wenn 1. Argument negativ: Liste in umgekehrter Reihenfolge 00348 if (zahl<0) { 00349 invers=1; 00350 zahl=zahl*-1; 00351 } 00352 txt=sprintf("\n|%:9|s|%:56|s|%:7|s|\n","ID","Notiztext","Prio."); 00353 txt+=sprintf("%:78'-'s\n","-"); 00354 //alle passenden Notizen ermitteln 00355 arr=filter(m_indices(notizen),#'note_filter,filterstate); 00356 //sortieren 00357 arr=sort_array(arr,#'sort_prio); 00358 if (zahl>sizeof(arr)) zahl=sizeof(arr); 00359 //ausgeben 00360 for(i=0;i<zahl;i++) { 00361 if (!invers) 00362 id=to_int(arr[i]); 00363 else 00364 //von hinten 00365 id=to_int(arr[<i+1]); // i+1 ist wirklich Absicht. ;-) 00366 txt+=sprintf("| %:7|d | %:54-s | %:5|d |\n", 00367 id, 00368 //nur bis zum ersten \n anzeigen 00369 explode(notizen[id,NOTE_TEXT],"\n")[0], 00370 notizen[id,NOTE_PRIO]); 00371 } 00372 txt+=sprintf("%:78'-'s\n\n","-"); 00373 tell_object(PL,txt); 00374 tell_room(environment(TI), 00375 BS(sprintf("%s wirft einen Blick auf %s Merkzettel.\n", 00376 capitalize((string)TI->name(WER)), 00377 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihren" : "seinen") 00378 )),({TI})); 00379 return(1); 00380 }
| static int note_filter | ( | int | id, | |
| int | filterstate | |||
| ) | [static] |
Definiert in Zeile 943 der Datei merkzettel.c.
Benutzt NOTE_STATUS und notizen.
00943 { 00944 //kein filter -> passt immer 00945 if (!filterstate) return(1); 00946 if (member(notizen,id) && 00947 notizen[id,NOTE_STATUS]==filterstate) 00948 return(1); 00949 return(0); 00950 }
| static string query_autoloadobj | ( | ) | [static] |
Definiert in Zeile 1067 der Datei merkzettel.c.
01067 { 01068 //in P_AUTOLOAD wird nur der Eigentuemer gespeichert 01069 return owner; 01070 }
| int query_prevent_shadow | ( | ) |
Definiert in Zeile 1080 der Datei merkzettel.c.
| mapping QueryNotizen | ( | ) |
Definiert in Zeile 1117 der Datei merkzettel.c.
01117 { 01118 01119 if(!check_allowed()) { 01120 if(objectp(this_interactive())) 01121 tell_object(this_interactive(), 01122 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 01123 return(0); 01124 } 01125 checkStatus(); 01126 return(notizen); 01127 }
| string QueryOwner | ( | ) |
Definiert in Zeile 1133 der Datei merkzettel.c.
01133 {return(owner);}
| int QuerySize | ( | ) |
Definiert in Zeile 1131 der Datei merkzettel.c.
01131 {return(sizeof(notizen));}
| varargs int remove | ( | int | silent | ) |
Definiert in Zeile 1059 der Datei merkzettel.c.
01059 { 01060 //erstmal speichern. ;-) 01061 save_me(); 01062 while(find_call_out("save_me")!=-1) 01063 remove_call_out("save_me"); 01064 return(::remove(silent)); 01065 }
| int RemoveNotiz | ( | string | str | ) |
Definiert in Zeile 191 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), FEMALE, id(), m_delete(), notizen, P_GENDER, PL, save_me(), TI und WER.
00191 { 00192 int id; 00193 00194 if(!objectp(TI)) return(0); 00195 if(!check_allowed()) { 00196 if(objectp(this_interactive())) 00197 tell_object(this_interactive(), 00198 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00199 return(0); 00200 } 00201 if (!stringp(str) || !strlen(str) || !id=to_int(str)) { 00202 tell_object(PL, 00203 "Welche Notiz moechtest Du ausradieren? Bitte eine ID angeben!\n"); 00204 return(1); 00205 } 00206 if (!checkStatus()) { 00207 tell_object(PL, 00208 "Es gibt keine Notiz, die Du ausradieren koenntest!\n"); 00209 return(1); 00210 } 00211 if (!member(notizen,id)) { 00212 tell_object(PL, 00213 sprintf("Es gibt keine Notiz mit der ID: %d\n",id)); 00214 return(1); 00215 } 00216 //direkt Loeschen, keine Kopie, daher efun::m_delete() 00217 efun::m_delete(notizen,id); 00218 //in Kuerze speichern, aber nicht fuer jede Aenderung speichern 00219 save_me(60); 00220 //cache invalidieren 00221 //cache=({}); 00222 tell_object(PL, 00223 sprintf("Sorgfaeltig radierst Du Notiz %d von Deinem Merkzettel.\n", 00224 id)); 00225 tell_room(environment(TI), 00226 BS(sprintf("%s radiert sorgfaeltig etwas von %s Merkzettel.\n", 00227 capitalize((string)TI->name(WER)), 00228 (((int)TI->QueryProp(P_GENDER))==FEMALE ? "ihrem" : "seinem") 00229 )),({TI})); 00230 return(1); 00231 }

| static int restore_me | ( | ) | [static] |
Definiert in Zeile 1029 der Datei merkzettel.c.
| varargs void save_me | ( | int | delay | ) |
Definiert in Zeile 1041 der Datei merkzettel.c.
Wird benutzt von _add_entry(), _query_questpoints(), AddNote(), AddNotiz(), adjust_percents(), ChangeHelper(), ChangePrio(), ChangeStatus(), ErgaenzeText(), ErsetzeText(), heart_beat(), log_state(), moeglichkeit(), QuerySBanished(), quit(), raise(), RegisterArmour(), RegisterEvent(), remove(), RemoveNotiz(), RemoveSin(), reset(), ResetDamagers(), save_me(), SelectWhich(), UnregisterEvent(), waehle_2() und wahlthema().
01041 { 01042 //speichert Savefile im Home vom Magier 01043 if(!stringp(owner)) return(0); 01044 if (!check_allowed()) return(0); 01045 //wenn maxusedID==0 wurde der zettel noch nicht ordentlich initialisiert 01046 //bzw. restauriert. In diesem Fall wuerde ein leeres Savefile geschrieben 01047 if (maxusedID==0) 01048 restore_me(); 01049 if(!delay) 01050 //direkt speichen. ;-) 01051 save_object(SAVEFILE(owner)); 01052 else { 01053 //verzoegert speichern, wenn schon ein call_out laeuft, nehm ich den 01054 if(find_call_out("save_me")==-1) 01055 call_out("save_me",delay); 01056 } 01057 }

| static string set_autoloadobj | ( | mixed | arg | ) | [static] |
Definiert in Zeile 1072 der Datei merkzettel.c.
Wird benutzt von create().
01072 { 01073 //Eigentuemer aus P_AUTOLOAD restaurieren 01074 if (stringp(arg)) 01075 owner=arg; 01076 return(owner); 01077 }

| static status sort_prio | ( | int | key1, | |
| int | key2 | |||
| ) | [static] |
| static string update_deps | ( | string | str, | |
| int | id | |||
| ) | [static] |
Definiert in Zeile 958 der Datei merkzettel.c.
Benutzt NOTE_DEPS und notizen.
00958 { 00959 //wandelt str nach int um 00960 //schaut, ob dep positiv und noch nicht bekannt ist, wenn ja: 00961 //zu deps hinzufuegen 00962 //wenn dep < 0 und bekannt ist: aus deps entfernen 00963 //Rueckgabewert ist egal. ;-) 00964 int dep; 00965 dep=to_int(str); 00966 if (dep>0 && member(notizen[id,NOTE_DEPS],dep)==-1) 00967 notizen[id,NOTE_DEPS]+=({dep}); 00968 else if (dep<0 && member(notizen[id,NOTE_DEPS],dep*-1)!=-1) 00969 notizen[id,NOTE_DEPS]-=({dep*-1}); 00970 return(""); 00971 }
| int WedelZettel | ( | string | str | ) |
Definiert in Zeile 759 der Datei merkzettel.c.
00759 { 00760 object pl; 00761 string rwedel; 00762 //wedelt anderen mit dem Zettel vor der Nase herum. 00763 notify_fail("Wem willst Du Deinen Merkzettel zeigen?\n"); 00764 if (!objectp(TI)) return(0); 00765 if (!environment() || !environment(environment())) 00766 return(0); 00767 if (!stringp(str) || !strlen(str)) return(0); 00768 if(!check_allowed()) { 00769 if(objectp(this_interactive())) 00770 tell_object(this_interactive(), 00771 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00772 return(0); 00773 } 00774 if (!objectp(pl=find_player(str))) return(0); 00775 if (!present(pl,environment(environment()))) 00776 rwedel="aus der Ferne"; 00777 00778 tell_object(PL,BS("Du wedelst "+pl->Name(WEM) 00779 + (rwedel?" "+rwedel:"") 00780 +" heftig mit Deinem Merkzettel vor der Nase herum.")); 00781 tell_object(pl,BS(PL->Name(WER)+ " wedelt Dir " 00782 + (rwedel?rwedel+" ":"") +"heftig mit " 00783 +PL->QueryPossPronoun(MALE,WEM,SINGULAR) 00784 +" Merkzettel vor der Nase herum.")); 00785 tell_room(environment(pl),BS(PL->Name(WER) + " wedelt " 00786 +pl->Name(WEM) + (rwedel?" "+rwedel:"") + " heftig mit " 00787 +PL->QueryPossPronoun(MALE,WEM,SINGULAR) 00788 +" Merkzettel vor der Nase herum."),({PL,pl})); 00789 return(1); 00790 }
| int ZeigeZettel | ( | string | str | ) |
Definiert in Zeile 696 der Datei merkzettel.c.
Benutzt BS, check_allowed(), checkStatus(), count, ids, notify_fail(), notizen, PL, pl und TI.
00696 { 00697 //anderen zeigen, wie furchtbar viel man zu tun hat. 00698 object pl; 00699 int count; 00700 int *ids; 00701 00702 notify_fail("Wem willst Du Deinen Merkzettel zeigen?\n"); 00703 if (!objectp(TI)) return(0); 00704 if (!environment() || !environment(environment())) 00705 return(0); 00706 if (!stringp(str) || !strlen(str)) return(0); 00707 if(!check_allowed()) { 00708 if(objectp(this_interactive())) 00709 tell_object(this_interactive(), 00710 BS("Dieser Zugriff auf den Merkzettel wurde nicht erlaubt.")); 00711 return(0); 00712 } 00713 if (!checkStatus()) { 00714 tell_object(PL,BS( 00715 "Dein Merkzettel ist bluetenweiss und leer! Wie kommt das denn?? " 00716 "Hast Du nix zu tun? Du willst anderen Leuten doch bestimmt nicht " 00717 "zeigen, dass Du nix zu tun hast, oder?")); 00718 return(1); 00719 } 00720 if(!objectp(pl=present(str,environment(environment())))) 00721 return(0); 00722 if (!living(pl)) 00723 return(0); 00724 00725 ids=filter(m_indices(notizen),#'note_filter,NOTE_ACTIVE); 00726 tell_object(TI,BS("Du zeigst "+pl->Name(WEM)+" voller Stolz deinen vollen " 00727 "Merkzettel.")); 00728 tell_room(environment(environment()),BS(sprintf( 00729 "%s zeigt %s %s Merkzettel.", 00730 TI->Name(WER),pl->Name(WEM),TI->QueryPossPronoun(MALE,WEN,SINGULAR))), 00731 ({TI,pl})); 00732 switch(sizeof(ids)) { 00733 case 0..10: 00734 tell_object(pl,BS(sprintf("%s zeigt Dir voller Stolz %s Merkzettel. Du " 00735 "wirfst einen schnellen Blick darueber und zaehlst %d " 00736 "Notizen. Na, soviel ist das ja zum Glueck noch nicht.", 00737 TI->Name(WER),TI->QueryPossPronoun(MALE,WEN,SINGULAR), 00738 sizeof(ids)))); 00739 break; 00740 case 11..20: 00741 tell_object(pl,BS(sprintf("%s zeigt Dir voller Stolz %s Merkzettel. Du " 00742 "wirfst einen schnellen Blick darueber und zaehlst %d " 00743 "Notizen. Oh, das ist ja schon so einiges!", 00744 TI->Name(WER),TI->QueryPossPronoun(MALE,WEN,SINGULAR), 00745 sizeof(ids)))); 00746 break; 00747 default: 00748 tell_object(pl,BS(sprintf("%s zeigt Dir voller Stolz %s Merkzettel. Du " 00749 "wirfst einen schnellen Blick darueber und zaehlst %d " 00750 "Notizen. Puuuh. %s hat ganz schoen viel zu tun! In " 00751 "Dir regt sich leises Mitleid.", 00752 TI->Name(WER),TI->QueryPossPronoun(MALE,WEN,SINGULAR), 00753 sizeof(ids),TI->Name(WER) ))); 00754 break; 00755 } 00756 return(1); 00757 }

| int maxusedID |
Definiert in Zeile 26 der Datei merkzettel.c.
Wird benutzt von AddNotiz().
| mapping notizen |
Definiert in Zeile 24 der Datei merkzettel.c.
Wird benutzt von AddNotiz(), aelter_als(), ChangeHelper(), ChangePrio(), ChangeStatus(), ErgaenzeText(), ErsetzeText(), FinishNotiz(), getDeps(), LiesNotiz(), note_filter(), RemoveNotiz(), update_deps() und ZeigeZettel().
string owner [static] |
Definiert in Zeile 27 der Datei merkzettel.c.
| inherit std secure_thing |
Definiert in Zeile 11 der Datei merkzettel.c.
1.6.3