#include <defines.h>#include <properties.h>#include <language.h>#include <wizlevels.h>#include "/secure/questmaster.h"
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 |
| #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().
| int _query_autoloadobj | ( | ) |
Definiert in Zeile 132 der Datei questtool.c.
| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 |
Definiert in Zeile 66 der Datei questtool.c.
Wird benutzt von AddAllowed(), AddGroup(), AskAllowedWrite(), dump_group(), expire(), GetNotes(), MailMessage(), ReadNewQuest(), ReadNextUnread(), RemoveAllowed(), RemoveNote(), SetGroup() und WriteNote().
| string info |
Definiert in Zeile 63 der Datei questtool.c.
Wird benutzt von _query_info(), AddScore(), create(), do_frage(), door_message_other(), expired(), get_memory_pointer(), go_door(), HUnregisterFromHook(), identifiziere(), Identify(), info(), init(), init_doors(), look_doors(), Message(), new(), NewDoor(), oeffnen(), QueryHealInfo(), ReadNewQuest(), reset_doors(), schliessen(), SkillListe(), special_detail_doors(), start_simul_efun(), thread() und tinfo().
| int level |
Definiert in Zeile 60 der Datei questtool.c.
Wird benutzt von _oropax(), AddSpell(), advance(), check(), check_password(), create_wizard(), find_userinfo(), logon2(), ReadNewQuest(), scan_obj(), SiteBanish() und stat().
| 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 |
Definiert in Zeile 67 der Datei questtool.c.
Wird benutzt von ActivateQuest(), Change_Quest(), create(), DeactivateQuest(), Del_Quest(), Load_NumKey(), Query_Quest(), Remove_Quest() und Set_Quest().
| object owner |
Definiert in Zeile 69 der Datei questtool.c.
| int qp |
Definiert in Zeile 58 der Datei questtool.c.
Wird benutzt von _check_questpoints(), _query_questpoints(), calculate_valid_modifiers(), FindBestArmoursT(), FindBestWeapon(), FindDistantGroups(), FindGroup(), ReadNewQuest(), ShowTeamHP() und sun_in_room().
| 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().
1.6.3