questtool.c-Dateireferenz

#include <defines.h>
#include <properties.h>
#include <language.h>
#include <wizlevels.h>
#include "/secure/questmaster.h"
Include-Abhängigkeitsdiagramm für questtool.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define UA   this_interactive()->_unparsed_args()
#define QNAME   0
#define QP   1
#define XP   2
#define ALLOW   3
#define INFO   4
#define LEVEL   5
#define CLASS   6
#define ATTR   7
#define WIZ   8
#define SCNDWIZ   9
#define END   10

Funktionen

static private void Load_NumKey ()
int Add_Quest (string str)
void ReadNewQuest (string str)
int Remove_Quest (string str)
int Change_Quest (string str)
int Restore_Quest (string str)
int Set_Quest (string str)
int Query_Quest (string str)
int Query_Keys (string str)
int Query_Quests (string str)
int ActivateQuest (string str)
int DeactivateQuest (string str)
int GetReturn (string str)
void create ()
int _query_autoloadobj ()
void init ()
static void do_remove ()
int Del_Quest (string str)

Variablen

inherit std thing
inherit std more
string name
int qp
int xp
int level
int need
string * allowed
string info
string wizard
string scndwizard
int group
mapping num_key
object owner
int counter
mixed * savequest
string savekey
int do_change
string changekey

Makro-Dokumentation

#define ALLOW   3

Definiert in Zeile 31 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define ATTR   7

Definiert in Zeile 35 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define CLASS   6

Definiert in Zeile 34 der Datei questtool.c.

Wird benutzt von QueryObject(), ReadNewQuest() und RemoveObject().

#define END   10

Definiert in Zeile 38 der Datei questtool.c.

Wird benutzt von ReadNewQuest() und x_long().

#define INFO   4

Definiert in Zeile 32 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define LEVEL   5

Definiert in Zeile 33 der Datei questtool.c.

#define QNAME   0

Definiert in Zeile 28 der Datei questtool.c.

Wird benutzt von Add_Quest(), create() und ReadNewQuest().

#define QP   1

Definiert in Zeile 29 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define SCNDWIZ   9

Definiert in Zeile 37 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define UA   this_interactive()->_unparsed_args()

Definiert in Zeile 26 der Datei questtool.c.

#define WIZ   8

Definiert in Zeile 36 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

#define XP   2

Definiert in Zeile 30 der Datei questtool.c.

Wird benutzt von ReadNewQuest().


Dokumentation der Funktionen

int _query_autoloadobj (  ) 

Definiert in Zeile 132 der Datei questtool.c.

00132 { return 1; }

int ActivateQuest ( string  str  ) 

Definiert in Zeile 694 der Datei questtool.c.

Benutzt Load_NumKey(), num_key, QM und UA.

00695 {
00696   mixed *quest;
00697   string newstr;
00698   int errstat;
00699 
00700   if ( !(str=UA) )
00701   {
00702     write ( "Syntax: ActiVateQ <quest>\n" );
00703     return 1;
00704   }
00705 
00706   Load_NumKey();
00707 
00708   if ( !(newstr = num_key[str+""]) )
00709                 newstr = str;
00710 
00711   switch( QM->SetActive( newstr, 1 ) )
00712   {
00713     case -3: write ( "Ungueltiger Flag.\n" ); break;
00714     case -2: write ( "Quest war bereits aktiviert.\n" ); break;
00715     case -1: write ( "Keine Quest dieses Namens gefunden.\n" ); break;
00716     case  0: write ( "Zugriff verweigert\n" ); break;
00717     case  1: write ( "Quest '"+newstr+"' aktiviert.\n" ); break;
00718     default: write ( "unbekannter Fehlerstatus.\n" );
00719   }
00720   return 1;
00721 }

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

int Add_Quest ( string  str  ) 

Definiert in Zeile 166 der Datei questtool.c.

Benutzt counter, input_to() und QNAME.

00167 {
00168   counter = QNAME;
00169   write ( "Neue Quest: (Abbruch mit '.' oder '~q')\n" );
00170   write ( "Key :\n" ); 
00171   input_to ( "ReadNewQuest" );
00172   return 1;
00173 }

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

int Change_Quest ( string  str  ) 

Definiert in Zeile 414 der Datei questtool.c.

Benutzt changekey, do_change, input_to(), Load_NumKey(), num_key, Q_ALLOWED, Q_ATTR, Q_CLASS, Q_DIFF, Q_HINT, Q_QP, Q_SCNDWIZ, Q_WIZ, Q_XP, QM, savekey, savequest und UA.

00415 {
00416   mixed *oldquest;
00417   string newstr;
00418 
00419   if ( !(str=UA) )
00420   {
00421     write ( "Syntax: ChangeQ <quest>\n" );
00422     return 1;
00423   }
00424 
00425   Load_NumKey();
00426 
00427   if ( !(newstr = num_key[str+""]) )
00428     newstr = str;
00429 
00430   oldquest = (mixed *) QM->QueryQuest ( newstr );
00431 
00432   if ( !pointerp( oldquest ) || !sizeof ( oldquest ) )
00433   {
00434     write ( "Keine Quest dieses Namens gefunden.\n" );
00435     return 1;
00436   }
00437 
00438   do_change = 1;
00439   changekey = newstr;
00440   savekey = newstr;
00441   savequest = oldquest;
00442 
00443   write ( "Aktueller Eintrag:\n");
00444   write ( "Key              : "+newstr+"\n" );
00445   write ( "Punkte           : "+oldquest[Q_QP]+"\n" );
00446   write ( "Erfahrung        : "+oldquest[Q_XP]+"\n" );
00447   write ( "Filenamen        : "+implode(oldquest[Q_ALLOWED],",")+"\n" );
00448   write ( "Info             : "+oldquest[Q_HINT]+"\n" );
00449   write ( "Stufe            : "+oldquest[Q_DIFF]+"\n" );
00450   write ( "Klasse           : "+QCLASS_STARS(oldquest[Q_CLASS])+"\n" );
00451   write ( "Attribut         : "+QATTR_STRINGS[oldquest[Q_ATTR]]+"\n" );
00452   write ( "Magier           : "+capitalize(oldquest[Q_WIZ])+"\n" );
00453   write ( "Wartender Magier : "+capitalize(oldquest[Q_SCNDWIZ])+"\n" );
00454 
00455 
00456   write ( "\nNeue Quest:     (mit '.' oder '~q' kann abgebrochen werden)\n" );
00457   write ( sprintf("Key [%s]:\n", savekey) );
00458   input_to ( "ReadNewQuest" );
00459 
00460   return 1;
00461 }

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

void create (  ) 

Definiert in Zeile 76 der Datei questtool.c.

Benutzt AddCmd(), AddId(), counter, create(), do_change, IS_BLUE, ME, NEUTER, num_key, owner, P_ARTICLE, P_GENDER, P_LONG, P_NAME, P_NEVERDROP, P_NOBUY, P_NODROP, P_SHORT, PL, QNAME, savekey und SetProp().

00077 {
00078   string str;
00079 
00080   if(IS_BLUE(ME)) return;
00081   thing::create();
00082   SetProp(P_GENDER,NEUTER);
00083   owner = PL;
00084   AddId("questtool");
00085   AddId("qt");
00086   SetProp(P_ARTICLE,0);
00087   SetProp(P_GENDER, NEUTER);
00088   str=capitalize(((str=owner->query_real_name())[<1]=='s'||str[<1]=='x'||str[<1]=='z')?str+="'":str+="s");
00089   SetProp(P_NAME, str+" QuestTool");
00090   SetProp(P_SHORT, str+" QuestTool");
00091   SetProp(P_LONG,
00092    "Das QuestTool dient der Administration von Quests. (by Kirk, 10.11.94)\n"
00093   +"implementierte Kommandos:\n"
00094   +"  AddQ                                          : Neuen Questeintrag einfuegen\n"
00095   +"  RemoveQ     <quest>           : Questeintrag loeschen\n"
00096   +"  ChangeQ     <quest>           : Questeintrag aendern\n"
00097   +"  ReStoreQ                                      : Zuletzt geloeschten oder geaenderten\n"
00098   +"                                                                : Questeintrag restaurieren\n"
00099   +"  SetQ        <spieler> <quest> : Quest als 'geloest' markieren\n"
00100   +"  DelQ        <spieler> <quest> : Quest als 'nicht geloest' markieren\n"
00101   +"  QueryQ      <quest>           : Questeintrag anzeigen\n"
00102   +"  QueryK                                        : Alle Keys und Indices anzeigen\n"
00103   +"  QueryAllQ                                     : Alle Eintraege vollstaendig anzeigen\n"
00104   +"  ActiVateQ   <quest>           : Quest im Questmaster aktivieren\n"
00105   +"  DeactiVateQ <quest>           : Quest im Questmaster deaktivieren\n\n"
00106   +"  fuer <quest> kann der Index verwendet werden, den QueryK liefert!\n\n"
00107   +"  (Alle Kommandos koennen abgekuerzt werden.)\n"
00108                 +"   -> Beispiel: DeactiVateQ == DVQ == dvq == deactivateq\n");
00109 
00110   SetProp(P_NEVERDROP, 1);
00111   SetProp(P_NODROP, 
00112   "Mit Hilfe des QuestTools koennen Quests eingetragen, oder geloescht\n"+
00113   "werden. Du brauchst es vielleicht noch, deshalb wirfst Du es nicht weg.\n");
00114   SetProp(P_NOBUY, 1);
00115   AddCmd(({ "AddQ", "addq", "AQ", "aq" }),                         "Add_Quest");
00116   AddCmd(({ "RemoveQ", "removeq", "RQ", "rq" }),                   "Remove_Quest");
00117   AddCmd(({ "ChangeQ", "changeq", "CQ", "cq" }),                   "Change_Quest");
00118   AddCmd(({ "ReStoreQ", "restoreq", "RSQ", "rsq" }),               "Restore_Quest");
00119   AddCmd(({ "SetQ", "setq", "SQ", "sq" }),                         "Set_Quest");
00120   AddCmd(({ "DelQ", "delq", "DQ", "dq" }),                         "Del_Quest");
00121   AddCmd(({ "QueryQ", "queryq", "QQ", "qq" }),                     "Query_Quest");
00122   AddCmd(({ "QueryK", "queryk", "QK", "qk" }),                     "Query_Keys");
00123   AddCmd(({ "QueryAllQ", "queryallq", "QAQ", "qaq" }),             "Query_Quests");
00124   AddCmd(({ "ActiVateQ", "activateq", "AVQ", "avq" }),             "ActivateQuest");
00125   AddCmd(({ "DeactiVateQ", "deactivateq", "DVQ", "dvq" }), "DeactivateQuest");
00126   counter = QNAME;
00127   savekey = "";
00128   do_change = 0;
00129   num_key = ([]);
00130 }

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

int DeactivateQuest ( string  str  ) 

Definiert in Zeile 723 der Datei questtool.c.

Benutzt Load_NumKey(), num_key, QM und UA.

00724 {
00725   mixed *quest;
00726   string newstr;
00727   int errstat;
00728 
00729   if ( !(str=UA) )
00730   {
00731     write ( "Syntax: DeactiVateQ <quest>\n" );
00732     return 1;
00733   }
00734 
00735   Load_NumKey();
00736 
00737   if ( !(newstr = num_key[str+""]) )
00738                 newstr = str;
00739 
00740   switch( QM->SetActive( newstr, 0 ) )
00741   {
00742     case -3: write ( "Ungueltiger Flag.\n" ); break;
00743     case -2: write ( "Quest war bereits deaktiviert.\n" ); break;
00744     case -1: write ( "Keine Quest dieses Namens gefunden.\n" ); break;
00745     case  0: write ( "Zugriff verweigert\n" ); break;
00746     case  1: write ( "Quest '"+newstr+"' deaktiviert.\n" ); break;
00747     default: write ( "unbekannter Fehlerstatus.\n" );
00748   }
00749   return 1;
00750 }

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

int Del_Quest ( string  str  ) 

Definiert in Zeile 546 der Datei questtool.c.

Benutzt __create_player_dummy(), destruct(), find_netdead(), find_player(), Load_NumKey(), num_key, ob(), player und UA.

00547 {
00548   string quest, player, newquest;
00549   int created;
00550   object ob;
00551 
00552   if ( !(str=UA) || sscanf( str, "%s %s", player, quest ) != 2 )
00553   {
00554     write ( "Syntax: DelQ <player> <quest>\n" );
00555     return 1;
00556   }
00557 
00558   Load_NumKey();
00559 
00560   if ( !(newquest = num_key[quest+""]) )
00561     newquest = quest;
00562 
00563   created=0;
00564   ob=find_player(player);
00565   if(!ob)
00566   {
00567     ob=find_netdead(player);
00568     if(!ob)
00569     {
00570       created=1;
00571       ob=__create_player_dummy(player);
00572     }
00573   }
00574   if(!ob)
00575   {
00576     write("Kein solcher Spieler gefunden.\n!");
00577     return 1;
00578   }
00579   
00580   write(ERRNO_2_STRING("DQ",(int) ob->DeleteQuest ( newquest ))+"\n");
00581   if(created)
00582   {
00583     ob->save_me(0);
00584     if(!(ob->remove()))
00585     {
00586                 destruct(ob);
00587     }
00588   }
00589   return 1;
00590 }

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

static void do_remove (  )  [static]

Definiert in Zeile 147 der Datei questtool.c.

Benutzt call_out(), ME, P_SHORT, PL und WESSEN.

00148 {
00149   write ( ME->QueryProp(P_SHORT)+" zerfaellt zu Staub.\n");
00150   say ( ME->QueryProp(P_SHORT)+" zerfaellt in "+PL->name(WESSEN)+
00151        " unbefugten Haenden zu Staub.\n");
00152   call_out("remove",1);
00153 }

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

int GetReturn ( string  str  ) 
void init (  ) 

Definiert in Zeile 134 der Datei questtool.c.

Benutzt call_out(), init(), IS_WIZARD, owner und PL.

00135 {
00136   object tp;
00137 
00138   if(!(tp = PL) || tp != environment())
00139     return;
00140 
00141   thing::init();
00142 
00143   if ( !IS_WIZARD(tp) || tp != owner )
00144     return call_out("do_remove",1);
00145 }

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

static private void Load_NumKey (  )  [static]

Definiert in Zeile 155 der Datei questtool.c.

Benutzt i, keys, num_key und QM.

Wird benutzt von ActivateQuest(), Change_Quest(), DeactivateQuest(), Del_Quest(), Query_Quest(), Remove_Quest() und Set_Quest().

00156 {
00157   string *keys;
00158   int i;
00159 
00160   if ( !(keys = (string*) QM->QueryAllKeys()) ) return;
00161   keys=sort_array(keys,#'>);//')
00162   for ( i = 0, num_key = ([]); i < sizeof(keys); i++ )
00163     num_key += ([(i+1)+"":keys[i]]);
00164 }

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

int Query_Keys ( string  str  ) 

Definiert in Zeile 635 der Datei questtool.c.

Benutzt active, i, keys und QM.

00636 {
00637   string *keys, active;
00638   mixed *quest;
00639   int i;
00640 
00641   if ( !(keys = (string *) QM->QueryAllKeys()) )
00642     return 1;
00643 
00644   write ( "\n" );
00645   keys=sort_array(keys,#'>);//')
00646   for ( i = 0; i < sizeof(keys); i++ )
00647   {
00648     quest = (mixed *) QM->QueryQuest(keys[i]);
00649     if(quest[6])
00650       active="*";
00651     else
00652       active=" ";
00653     write(sprintf("%2d%s %-33s%s",i+1,quest[6]?"*":" ",keys[i],
00654                                       !(i%2)?" ":"\n"));
00655   }
00656   if(i%2)
00657     write("\n");
00658 
00659   return 1;
00660 }

int Query_Quest ( string  str  ) 

Definiert in Zeile 592 der Datei questtool.c.

Benutzt break_string(), i, Load_NumKey(), num_key, Q_ACTIVE, Q_ALLOWED, Q_ATTR, Q_CLASS, Q_DIFF, Q_HINT, Q_QP, Q_XP, QM und UA.

00593 {
00594   mixed *quest;
00595   string newstr;
00596   int i;
00597 
00598   if ( !(str=UA) )
00599   {
00600     write ( "Syntax: QueryQ <quest>\n" );
00601     return 1;
00602   }
00603 
00604   Load_NumKey();
00605 
00606   if ( !(newstr = num_key[str+""]) )
00607                 newstr = str;
00608 
00609   quest = (mixed *) QM->QueryQuest( newstr );
00610 
00611   if ( !pointerp( quest ) || !sizeof ( quest ) )
00612   {
00613     write ( "Keine Quest dieses Namens gefunden.\n" );
00614     return 1;
00615   }
00616 
00617   write ( "Aktueller Eintrag:\n");
00618   write ( "Key              : "+newstr );
00619   if(quest[Q_ACTIVE])
00620     write (" (aktiviert)\n");
00621   else
00622     write (" (deaktiviert)\n");
00623   write ( "Punkte           : "+quest[Q_QP]+"\n" );
00624   write ( "Erfahrung        : "+quest[Q_XP]+"\n" );
00625   write ( break_string ( implode( quest[Q_ALLOWED], " " ), 78, "Filenamen        : " ) );
00626   write ( break_string ( quest[Q_HINT], 78, "Info                                : " ) );
00627   write ( "Stufe            : "+quest[Q_DIFF]+"\n" );
00628   write ( "Klasse           : "+ QCLASS_STARS(quest[Q_CLASS])+"\n");
00629   write ( "Attribute        : "+ QATTR_STRINGS[quest[Q_ATTR]]+"\n");
00630   write ( "Magier           : "+capitalize(quest[7])+"\n" );
00631   write ( "Wartender Magier : "+capitalize(quest[8])+"\n");
00632   return 1;
00633 }

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

int Query_Quests ( string  str  ) 

Definiert in Zeile 662 der Datei questtool.c.

Benutzt break_string(), i, keys, More(), Q_ACTIVE, Q_ALLOWED, Q_ATTR, Q_CLASS, Q_DIFF, Q_HINT, Q_QP, Q_XP und QM.

00663 {
00664   mixed *quest;
00665   string *keys, rstr;
00666   int i;
00667 
00668   if ( !(keys = (mixed *) QM->QueryAllKeys()) )
00669     return 1;
00670 
00671   keys=sort_array(keys,#'>);//')
00672   for ( i = 0, rstr = ""; i < sizeof(keys); i++ )
00673   {
00674     quest = (mixed *) QM->QueryQuest(keys[i]);
00675       write ( "\nKey              : "+keys[i] );
00676   if(quest[Q_ACTIVE])
00677     write (" (aktiviert)\n");
00678   else
00679     write (" (deaktiviert)\n");
00680   write ( "Punkte           : "+quest[Q_QP]+"\n" );
00681   write ( "Erfahrung        : "+quest[Q_XP]+"\n" );
00682   write ( break_string ( implode( quest[Q_ALLOWED], " " ), 78, "Filenamen        : " ) );
00683   write ( break_string ( quest[Q_HINT], 78, "Info                                : " ) );
00684   write ( "Stufe            : "+quest[Q_DIFF]+"\n" );
00685   write ( "Klasse           : "+ QCLASS_STARS(quest[Q_CLASS])+"\n");
00686   write ( "Attribute        : "+ QATTR_STRINGS[quest[Q_ATTR]]+"\n");
00687   write ( "Magier           : "+capitalize(quest[7])+"\n" );
00688   write ( "Wartender Magier : "+capitalize(quest[8])+"\n");
00689   }
00690   More( rstr, 0 );
00691   return 1;
00692 }

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

void ReadNewQuest ( string  str  ) 

Definiert in Zeile 175 der Datei questtool.c.

Benutzt active, ALLOW, allowed, ATTR, break_string(), changekey, CLASS, counter, do_change, END, group, info, INFO, input_to(), level, LEVEL, name, need, old_explode(), Q_ALLOWED, Q_ATTR, Q_CLASS, Q_DIFF, Q_HINT, Q_QP, Q_SCNDWIZ, Q_WIZ, Q_XP, QM, QNAME, qp, QP, savekey, savequest, SCNDWIZ, scndwizard, WIZ, wizard, xp und XP.

00176 {
00177   mixed *oldquest;
00178   int errstat;
00179   int active;
00180 
00181   if ( str == "~q" || str == "." )
00182   {
00183     counter = QNAME;
00184     if(do_change)
00185     {
00186       do_change = 0;
00187       changekey = "";
00188       savekey = "";
00189       savequest = ({});
00190     }
00191     return;
00192   }
00193 
00194   switch ( counter )
00195   {
00196     case QNAME:
00197       if((!str||!strlen(str)) && do_change)
00198                 name = savekey;
00199       else
00200                 name = str;
00201       counter++;
00202       write ( sprintf("Punkte (>0) [%d]:\n",
00203                                       (do_change?(int)savequest[0]:10)) ); 
00204       input_to ( "ReadNewQuest" );
00205       break;
00206     case QP:
00207       if((!str||!strlen(str)))
00208                 if(do_change)
00209                   qp = (int) savequest[Q_QP];
00210                 else
00211                   qp = 10;
00212       else
00213                 sscanf ( str, "%d", qp );
00214       counter++;
00215       write ( sprintf("Erfahrung (>=0) [%d]:\n",
00216                                       (do_change?(int)savequest[1]:qp*1000)));
00217       input_to ( "ReadNewQuest" );
00218       break;
00219     case XP: 
00220       if((!str||!strlen(str)))
00221                 if(do_change)
00222                   xp = (int) savequest[Q_XP];
00223                 else
00224                   xp = qp * 1000;
00225       else
00226                 sscanf ( str, "%d", xp );
00227       counter++;
00228       write ( sprintf("Filenamen file1[,file2,...]) %s:\n",
00229                                       (do_change?"["+implode((string *)savequest[2],",")+"]":
00230                                        "")) );
00231       input_to ( "ReadNewQuest" );
00232       break;
00233     case ALLOW:
00234       if((!str||!strlen(str)) && do_change)
00235                 allowed = (string *) savequest[Q_ALLOWED];
00236       else
00237                 allowed = old_explode(implode(old_explode(str,".c"),""),",");
00238       counter++;
00239       write ( sprintf("Info %s:\n", (do_change?
00240                                                                      "["+break_string("\b\b\b\b\b\b"+(string)
00241                                                                                                       savequest[3]+"]",78,6)
00242                                                                      :"")) ); 
00243       input_to ( "ReadNewQuest" );
00244       break;
00245     case INFO:
00246       if((!str||!strlen(str)) && do_change)
00247                 info = (string) savequest[Q_HINT];
00248       else
00249                 info = str;
00250       counter++;
00251       write ( sprintf("Stufe (-1 <=lev<=10) (-1 ist eine Seherquest) [%d]:\n",
00252                                       (do_change?(int)savequest[4]:0)) );
00253       input_to ( "ReadNewQuest" );
00254       break;
00255     case LEVEL:
00256       if((!str||!strlen(str)))
00257                 if(do_change)
00258                   level = (int) savequest[Q_DIFF];
00259                 else
00260                   level = 0;
00261                 sscanf ( str, "%d", level );
00262       counter++;
00263       write ( sprintf("Klasse ([012345]) [%d]:\n",
00264                                       (do_change?(int)savequest[5]:0)) ); 
00265       input_to ( "ReadNewQuest" );
00266       break;
00267     case CLASS:
00268       if((!str||!strlen(str)))
00269                 if(do_change)
00270                   need = (int) savequest[Q_CLASS];
00271                 else
00272                   need = 0;
00273       else
00274                 sscanf ( str, "%d", need );
00275       counter++;
00276       write ( sprintf("Attribut [01234]\n(1=fleissig,2=heroisch,3=episch,4=legendaer) %s:\n",
00277                                       (do_change?"["+(string)savequest[9]+"]":"")) );
00278       input_to ( "ReadNewQuest" );
00279       break;
00280     case ATTR:
00281       if ((!str||!strlen(str)))
00282                 if (do_change)
00283                   group = (int) savequest[Q_ATTR];
00284                 else
00285                   group = 0;
00286       else
00287                 sscanf (str, "%d", group);
00288       counter++;
00289       write ( sprintf("Magier %s:\n",
00290                                       (do_change?"["+(string)savequest[7]+"]":"")) );
00291       input_to ( "ReadNewQuest" );
00292     break;      
00293     case WIZ:
00294       if((!str||!strlen(str)) && do_change)
00295                 wizard = (string) savequest[Q_WIZ];
00296       else
00297                 wizard = str;
00298       wizard = lower_case(wizard);
00299       counter++;
00300       write ( sprintf("Wartender Magier %s:\n",
00301                                       (do_change?"["+(string)savequest[8]+"]":"")) );
00302       input_to ( "ReadNewQuest" );
00303       break;
00304     case SCNDWIZ:
00305       if ((!str||!strlen(str)) && do_change)
00306                 scndwizard = (string) savequest[Q_SCNDWIZ];
00307       else
00308                 scndwizard = str;
00309       scndwizard = lower_case(scndwizard);
00310       counter++;
00311       write ( "Eintragen (j/n)?\n" );
00312       input_to ( "ReadNewQuest" );
00313       break;
00314     case END:
00315       counter=QNAME;
00316 
00317       if ( str != "j" && str != "ja" && str != "y" && str != "yes" )
00318                 return;
00319 
00320       active = 0;
00321       if ( do_change && changekey && strlen(changekey) )
00322       {
00323                 oldquest = (mixed *) QM->QueryQuest ( changekey );
00324 
00325                 if ( !pointerp ( oldquest ) || !sizeof ( oldquest ) )
00326                 {
00327                   write ( "Alten Eintrag nicht gefunden.\n" );
00328                   return;
00329                 }
00330 
00331                 errstat = (int) QM->RemoveQuest( changekey );
00332 
00333                 do_change = 0;
00334                 changekey = "";
00335 
00336                 switch ( errstat )
00337                 {
00338                   case          0: write ( "Zugriff auf alten Eintrag verweigert.\n" ); return;
00339                   case -1: write ( "Parameterfehler beim Loeschen.\n" ); return;
00340                   case -2: write ( "Alten Eintrag nicht gefunden.\n" ); return;
00341                   default: write ( "Alter Eintrag geloescht.\n" );
00342                 }
00343                 active = oldquest[6];
00344                 savequest = oldquest;
00345                 savekey   = changekey;
00346       }
00347 
00348       // add new Quest deactivated by default and keep old active flag
00349       // if changing an existing entry
00350       errstat= (int)QM->AddQuest(name,qp,xp,allowed,info,level,need,active,
00351                                                                  wizard, scndwizard, group);
00352 
00353       switch ( errstat )
00354       {
00355                 case  0: write ( "Zugriff verweigert.\n" ); break;
00356                 case -1: write ( "Key ungueltig oder strlen(key) < 5.\n" ); break;
00357                 case -2: write ( "QP ungueltig oder < 1.\n" ); break;
00358                 case -3: write ( "XP ungueltig.\n" ); break;
00359                 case -4: write ( "Filename(n) ungueltig.\n" ); break;
00360                 case -5: write ( "Info ungueltig.\n" ); break;
00361                 case -6: write ( "Stufe ungueltig oder < 0 oder > 20.\n" ); break;
00362                 case -7: write ( "Aktiv-Flag < 0 oder > 1.\n" ); break;
00363                 case -8: write ( "Magiername ungueltig.\n" ); break;
00364                 case -9: write ( "Magiername des wartenden Magiers ungueltig.\n"); break;
00365                 case -10: write ("Falsche Gruppeneinordnung.\n"); break;
00366                 default: write ( "Eintrag eingefuegt.\n" );
00367       }
00368     default:
00369       return;
00370   }
00371 }

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

int Remove_Quest ( string  str  ) 

Definiert in Zeile 373 der Datei questtool.c.

Benutzt Load_NumKey(), num_key, QM, savekey, savequest und UA.

00374 {
00375   mixed *oldquest;
00376   string newstr;
00377   int errstat;
00378 
00379   if ( !(str=UA) )
00380   {
00381     write ( "Syntax: RemoveQ <name>\n" );
00382     return 1;
00383   }
00384 
00385   Load_NumKey();
00386 
00387   if ( !(newstr = num_key[str+""]) )
00388     newstr = str;
00389 
00390   oldquest = (mixed *) QM->QueryQuest ( newstr );
00391 
00392   if ( !pointerp ( oldquest ) || !sizeof ( oldquest ) )
00393   {
00394     write ( "Keine Quest dieses Namens gefunden.\n" );
00395     return 1;
00396   }
00397 
00398   errstat = (int) QM->RemoveQuest( newstr );
00399 
00400   switch ( errstat )
00401   {
00402     case  0: write ( "Zugriff verweigert.\n" ); break;
00403     case -1: write ( "Parameterfehler.\n" ); break;
00404     case -2: write ( "Quest nicht gefunden.\n" ); break;
00405     default: write ( "Quest entfernt.\n" );
00406   }
00407 
00408   savequest = oldquest;
00409   savekey   = newstr;
00410 
00411   return 1;
00412 }

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

int Restore_Quest ( string  str  ) 

Definiert in Zeile 463 der Datei questtool.c.

Benutzt QM, savekey und savequest.

00464 {
00465   int errstat;
00466 
00467   if ( !savekey || !strlen(savekey) )
00468   {
00469     write ( "\nTut mir leid!\n" );
00470     write ( "Nichts zum Restaurieren gefunden ...\n" );
00471     return 1;
00472   }
00473 
00474   errstat = 
00475                 (int)QM->AddQuest( savekey, (int) savequest[0], (int) savequest[1],
00476                                                   (string *) savequest[2], (string) savequest[3],
00477                                                   (int) savequest[4], (int) savequest[5],
00478                                                   (string) savequest[6], (int) savequest[7],
00479                                                   (string) savequest[8] );
00480 
00481   switch ( errstat )
00482   {
00483     case  0: write ( "Zugriff verweigert.\n" ); break;
00484     case -1: write ( "Key ungueltig oder strlen(key) < 5.\n" ); break;
00485     case -2: write ( "QP ungueltig oder < 1.\n" ); break;
00486     case -3: write ( "XP ungueltig.\n" ); break;
00487     case -4: write ( "Filename(n) ungueltig.\n" ); break;
00488     case -5: write ( "Info ungueltig.\n" ); break;
00489     case -6: write ( "Stufe ungueltig oder < 0 oder > 20.\n" ); break;
00490     case -7: write ( "Aktiv-Flag < 0 oder > 1.\n" ); break;
00491     case -8: write ( "Magiername ungueltig.\n" ); break;
00492     case -9: write ( "Magiername ungueltig.\n"); break;
00493     case -10: write ("Ungueltige Gruppennummer.\n"); break;
00494     default: write ( "'"+savekey+"' restauriert.\n" );
00495   }
00496   savekey = "";
00497   return 1;
00498 }

int Set_Quest ( string  str  ) 

Definiert in Zeile 500 der Datei questtool.c.

Benutzt __create_player_dummy(), destruct(), find_netdead(), find_player(), Load_NumKey(), num_key, ob(), player und UA.

00501 {
00502   string quest, player, newquest;
00503   int created;
00504   object ob;
00505 
00506   if ( !(str=UA) || sscanf( str, "%s %s", player, quest ) != 2 )
00507   {
00508     write ( "Syntax: SetQ <player> <quest>\n" );
00509     return 1;
00510   }
00511 
00512   created=0;
00513   Load_NumKey();
00514 
00515   if ( !(newquest = num_key[quest+""]) )
00516     newquest = quest;
00517 
00518   ob=find_player(player);
00519   if(!ob)
00520   {
00521     ob=find_netdead(player);
00522     if(!ob)
00523     {
00524       created=1;
00525       ob=__create_player_dummy(player);
00526     }
00527   }
00528   if(!ob)
00529   {
00530     write("Kein solcher Spieler gefunden.\n!");
00531     return 1;
00532   }
00533   
00534   write(ERRNO_2_STRING("GQ",(int)ob->GiveQuest(newquest,"__silent__"))+"\n");
00535   if(created)
00536   {
00537     ob->save_me(0);
00538     if(!(ob->remove()))
00539     {
00540                 destruct(ob);
00541     }
00542   }
00543   return 1;
00544 }

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


Variablen-Dokumentation

string* allowed

Definiert in Zeile 62 der Datei questtool.c.

string changekey

Definiert in Zeile 74 der Datei questtool.c.

Wird benutzt von Change_Quest() und ReadNewQuest().

int counter

Definiert in Zeile 70 der Datei questtool.c.

int do_change

Definiert in Zeile 73 der Datei questtool.c.

Wird benutzt von Change_Quest(), create() und ReadNewQuest().

int group
string info
int level
inherit std more

Definiert in Zeile 18 der Datei questtool.c.

string name

Definiert in Zeile 57 der Datei questtool.c.

int need

Definiert in Zeile 61 der Datei questtool.c.

Wird benutzt von next_ap() und ReadNewQuest().

mapping num_key
object owner

Definiert in Zeile 69 der Datei questtool.c.

int qp
string savekey

Definiert in Zeile 72 der Datei questtool.c.

Wird benutzt von Change_Quest(), create(), ReadNewQuest(), Remove_Quest() und Restore_Quest().

mixed* savequest

Definiert in Zeile 71 der Datei questtool.c.

Wird benutzt von Change_Quest(), ReadNewQuest(), Remove_Quest() und Restore_Quest().

string scndwizard

Definiert in Zeile 65 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

inherit std thing

Definiert in Zeile 17 der Datei questtool.c.

string wizard

Definiert in Zeile 64 der Datei questtool.c.

Wird benutzt von create_home() und ReadNewQuest().

int xp

Definiert in Zeile 59 der Datei questtool.c.

Wird benutzt von ReadNewQuest().

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