merkzettel.c-Dateireferenz

#include <properties.h>
#include <language.h>
#include <wizlevels.h>
#include <moving.h>
#include <defines.h>
#include "merkzettel.h"
Include-Abhängigkeitsdiagramm für merkzettel.c:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

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

Makro-Dokumentation

#define NEED_PROTOTYPES

Definiert in Zeile 19 der Datei merkzettel.c.


Dokumentation der Funktionen

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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 }

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

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

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 }

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

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.

01080 {return(1);}

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 }

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

static int restore_me (  )  [static]

Definiert in Zeile 1029 der Datei merkzettel.c.

01029                         {
01030   //laedt Savefile im Home vom Magier
01031   if(!stringp(owner)) return(0);
01032   if(!restore_object(SAVEFILE(owner))) {
01033     maxusedID=1;
01034     notizen=0;
01035     //cache=({});
01036     return(0);
01037   }
01038   return(1);
01039 }

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 }

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

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 }

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

static status sort_prio ( int  key1,
int  key2 
) [static]

Definiert in Zeile 1106 der Datei merkzettel.c.

01106                                             {
01107   // 1, falls falsche Reihenfolge,
01108   // 0, wenn richtige
01109   // und zwar _absteigend_, also hoechste Prio in liste[0] !
01110   return(notizen[key1,NOTE_PRIO]<=notizen[key2,NOTE_PRIO]);
01111 }

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  }

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


Variablen-Dokumentation

int maxusedID

Definiert in Zeile 26 der Datei merkzettel.c.

Wird benutzt von AddNotiz().

mapping notizen
string owner [static]

Definiert in Zeile 27 der Datei merkzettel.c.

inherit std secure_thing

Definiert in Zeile 11 der Datei merkzettel.c.

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