| /* |
| * The new ultimate quest administration tool |
| */ |
| |
| /* AENDERUNGEN |
| * 2006-09-29 : Zook |
| * Questtool an neue Felder "Attribute" und "Klasse" |
| * angepasst. |
| * 2000-11-18 : Zook: |
| * Questtool um neues Feld "Wartender Magier" des Questmaster |
| * erweitert. |
| * 2000-11-18 : Zook: |
| * Questtool um neues Feld "Gruppeneinordnung" des Questmaster |
| * erweitert. |
| */ |
| |
| inherit "std/thing"; |
| inherit "std/more"; |
| |
| #include <defines.h> |
| #include <properties.h> |
| #include <language.h> |
| #include <wizlevels.h> |
| #include "/secure/questmaster.h" |
| |
| #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 |
| |
| #pragma strong_types |
| |
| 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 Remove_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 ); |
| |
| 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; |
| |
| void create() |
| { |
| string str; |
| |
| if(IS_BLUE(ME)) return; |
| thing::create(); |
| SetProp(P_GENDER,NEUTER); |
| owner = PL; |
| AddId("questtool"); |
| AddId("qt"); |
| SetProp(P_ARTICLE,0); |
| SetProp(P_GENDER, NEUTER); |
| str=capitalize(((str=owner->query_real_name())[<1]=='s'||str[<1]=='x'||str[<1]=='z')?str+="'":str+="s"); |
| SetProp(P_NAME, str+" QuestTool"); |
| SetProp(P_SHORT, str+" QuestTool"); |
| SetProp(P_LONG, |
| "Das QuestTool dient der Administration von Quests. (by Kirk, 10.11.94)\n" |
| +"implementierte Kommandos:\n" |
| +" AddQ : Neuen Questeintrag einfuegen\n" |
| +" RemoveQ <quest> : Questeintrag loeschen\n" |
| +" ChangeQ <quest> : Questeintrag aendern\n" |
| +" ReStoreQ : Zuletzt geloeschten oder geaenderten\n" |
| +" : Questeintrag restaurieren\n" |
| +" SetQ <spieler> <quest> : Quest als 'geloest' markieren\n" |
| +" DelQ <spieler> <quest> : Quest als 'nicht geloest' markieren\n" |
| +" QueryQ <quest> : Questeintrag anzeigen\n" |
| +" QueryK : Alle Keys und Indices anzeigen\n" |
| +" QueryAllQ : Alle Eintraege vollstaendig anzeigen\n" |
| +" ActiVateQ <quest> : Quest im Questmaster aktivieren\n" |
| +" DeactiVateQ <quest> : Quest im Questmaster deaktivieren\n\n" |
| +" fuer <quest> kann der Index verwendet werden, den QueryK liefert!\n\n" |
| +" (Alle Kommandos koennen abgekuerzt werden.)\n" |
| +" -> Beispiel: DeactiVateQ == DVQ == dvq == deactivateq\n"); |
| |
| SetProp(P_NEVERDROP, 1); |
| SetProp(P_NODROP, |
| "Mit Hilfe des QuestTools koennen Quests eingetragen, oder geloescht\n"+ |
| "werden. Du brauchst es vielleicht noch, deshalb wirfst Du es nicht weg.\n"); |
| SetProp(P_NOBUY, 1); |
| AddCmd(({ "AddQ", "addq", "AQ", "aq" }), "Add_Quest"); |
| AddCmd(({ "RemoveQ", "removeq", "RQ", "rq" }), "Remove_Quest"); |
| AddCmd(({ "ChangeQ", "changeq", "CQ", "cq" }), "Change_Quest"); |
| AddCmd(({ "ReStoreQ", "restoreq", "RSQ", "rsq" }), "Restore_Quest"); |
| AddCmd(({ "SetQ", "setq", "SQ", "sq" }), "Set_Quest"); |
| AddCmd(({ "DelQ", "delq", "DQ", "dq" }), "Del_Quest"); |
| AddCmd(({ "QueryQ", "queryq", "QQ", "qq" }), "Query_Quest"); |
| AddCmd(({ "QueryK", "queryk", "QK", "qk" }), "Query_Keys"); |
| AddCmd(({ "QueryAllQ", "queryallq", "QAQ", "qaq" }), "Query_Quests"); |
| AddCmd(({ "ActiVateQ", "activateq", "AVQ", "avq" }), "ActivateQuest"); |
| AddCmd(({ "DeactiVateQ", "deactivateq", "DVQ", "dvq" }), "DeactivateQuest"); |
| counter = QNAME; |
| savekey = ""; |
| do_change = 0; |
| num_key = ([]); |
| } |
| |
| int _query_autoloadobj() { return 1; } |
| |
| void init() |
| { |
| object tp; |
| |
| if(!(tp = PL) || tp != environment()) |
| return; |
| |
| thing::init(); |
| |
| if ( !IS_WIZARD(tp) || tp != owner ) |
| return call_out("do_remove",1); |
| } |
| |
| static void do_remove() |
| { |
| write ( ME->QueryProp(P_SHORT)+" zerfaellt zu Staub.\n"); |
| say ( ME->QueryProp(P_SHORT)+" zerfaellt in "+PL->name(WESSEN)+ |
| " unbefugten Haenden zu Staub.\n"); |
| call_out("remove",1); |
| } |
| |
| private void Load_NumKey() |
| { |
| string *keys; |
| int i; |
| |
| if ( !(keys = (string*) QM->QueryAllKeys()) ) return; |
| keys=sort_array(keys,#'>);//') |
| for ( i = 0, num_key = ([]); i < sizeof(keys); i++ ) |
| num_key += ([(i+1)+"":keys[i]]); |
| } |
| |
| int Add_Quest(string str) |
| { |
| counter = QNAME; |
| write ( "Neue Quest: (Abbruch mit '.' oder '~q')\n" ); |
| write ( "Key :\n" ); |
| input_to ( "ReadNewQuest" ); |
| return 1; |
| } |
| |
| void ReadNewQuest (string str) |
| { |
| mixed *oldquest; |
| int errstat; |
| int active; |
| |
| if ( str == "~q" || str == "." ) |
| { |
| counter = QNAME; |
| if(do_change) |
| { |
| do_change = 0; |
| changekey = ""; |
| savekey = ""; |
| savequest = ({}); |
| } |
| return; |
| } |
| |
| switch ( counter ) |
| { |
| case QNAME: |
| if((!str||!sizeof(str)) && do_change) |
| name = savekey; |
| else |
| name = str; |
| counter++; |
| write ( sprintf("Punkte (>0) [%d]:\n", |
| (do_change?(int)savequest[0]:10)) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case QP: |
| if((!str||!sizeof(str))) |
| if(do_change) |
| qp = (int) savequest[Q_QP]; |
| else |
| qp = 10; |
| else |
| sscanf ( str, "%d", qp ); |
| counter++; |
| write ( sprintf("Erfahrung (>=0) [%d]:\n", |
| (do_change?(int)savequest[1]:qp*1000))); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case XP: |
| if((!str||!sizeof(str))) |
| if(do_change) |
| xp = (int) savequest[Q_XP]; |
| else |
| xp = qp * 1000; |
| else |
| sscanf ( str, "%d", xp ); |
| counter++; |
| write ( sprintf("Filenamen file1[,file2,...]) %s:\n", |
| (do_change?"["+implode((string *)savequest[2],",")+"]": |
| "")) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case ALLOW: |
| if((!str||!sizeof(str)) && do_change) |
| allowed = (string *) savequest[Q_ALLOWED]; |
| else |
| allowed = old_explode(implode(old_explode(str,".c"),""),","); |
| counter++; |
| write ( sprintf("Info %s:\n", (do_change? |
| "["+break_string("\b\b\b\b\b\b"+(string) |
| savequest[3]+"]",78,6) |
| :"")) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case INFO: |
| if((!str||!sizeof(str)) && do_change) |
| info = (string) savequest[Q_HINT]; |
| else |
| info = str; |
| counter++; |
| write ( sprintf("Stufe (-1 <=lev<=10) (-1 ist eine Seherquest) [%d]:\n", |
| (do_change?(int)savequest[4]:0)) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case LEVEL: |
| if((!str||!sizeof(str))) |
| if(do_change) |
| level = (int) savequest[Q_DIFF]; |
| else |
| level = 0; |
| sscanf ( str, "%d", level ); |
| counter++; |
| write ( sprintf("Klasse ([012345]) [%d]:\n", |
| (do_change?(int)savequest[5]:0)) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case CLASS: |
| if((!str||!sizeof(str))) |
| if(do_change) |
| need = (int) savequest[Q_CLASS]; |
| else |
| need = 0; |
| else |
| sscanf ( str, "%d", need ); |
| counter++; |
| write ( sprintf("Attribut [01234]\n(1=fleissig,2=heroisch,3=episch,4=legendaer) %s:\n", |
| (do_change?"["+(string)savequest[9]+"]":"")) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case ATTR: |
| if ((!str||!sizeof(str))) |
| if (do_change) |
| group = (int) savequest[Q_ATTR]; |
| else |
| group = 0; |
| else |
| sscanf (str, "%d", group); |
| counter++; |
| write ( sprintf("Magier %s:\n", |
| (do_change?"["+(string)savequest[7]+"]":"")) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case WIZ: |
| if((!str||!sizeof(str)) && do_change) |
| wizard = (string) savequest[Q_WIZ]; |
| else |
| wizard = str; |
| wizard = lower_case(wizard); |
| counter++; |
| write ( sprintf("Wartender Magier %s:\n", |
| (do_change?"["+(string)savequest[8]+"]":"")) ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case SCNDWIZ: |
| if ((!str||!sizeof(str)) && do_change) |
| scndwizard = (string) savequest[Q_SCNDWIZ]; |
| else |
| scndwizard = str; |
| scndwizard = lower_case(scndwizard); |
| counter++; |
| write ( "Eintragen (j/n)?\n" ); |
| input_to ( "ReadNewQuest" ); |
| break; |
| case END: |
| counter=QNAME; |
| |
| if ( str != "j" && str != "ja" && str != "y" && str != "yes" ) |
| return; |
| |
| active = 0; |
| if ( do_change && changekey && sizeof(changekey) ) |
| { |
| oldquest = (mixed *) QM->QueryQuest ( changekey ); |
| |
| if ( !pointerp ( oldquest ) || !sizeof ( oldquest ) ) |
| { |
| write ( "Alten Eintrag nicht gefunden.\n" ); |
| return; |
| } |
| |
| errstat = (int) QM->RemoveQuest( changekey ); |
| |
| do_change = 0; |
| changekey = ""; |
| |
| switch ( errstat ) |
| { |
| case 0: write ( "Zugriff auf alten Eintrag verweigert.\n" ); return; |
| case -1: write ( "Parameterfehler beim Loeschen.\n" ); return; |
| case -2: write ( "Alten Eintrag nicht gefunden.\n" ); return; |
| default: write ( "Alter Eintrag geloescht.\n" ); |
| } |
| active = oldquest[6]; |
| savequest = oldquest; |
| savekey = changekey; |
| } |
| |
| // add new Quest deactivated by default and keep old active flag |
| // if changing an existing entry |
| errstat= (int)QM->AddQuest(name,qp,xp,allowed,info,level,need,active, |
| wizard, scndwizard, group); |
| |
| switch ( errstat ) |
| { |
| case 0: write ( "Zugriff verweigert.\n" ); break; |
| case -1: write ( "Key ungueltig oder sizeof(key) < 5.\n" ); break; |
| case -2: write ( "QP ungueltig oder < 1.\n" ); break; |
| case -3: write ( "XP ungueltig.\n" ); break; |
| case -4: write ( "Filename(n) ungueltig.\n" ); break; |
| case -5: write ( "Info ungueltig.\n" ); break; |
| case -6: write ( "Stufe ungueltig oder < 0 oder > 20.\n" ); break; |
| case -7: write ( "Aktiv-Flag < 0 oder > 1.\n" ); break; |
| case -8: write ( "Magiername ungueltig.\n" ); break; |
| case -9: write ( "Magiername des wartenden Magiers ungueltig.\n"); break; |
| case -10: write ("Falsche Gruppeneinordnung.\n"); break; |
| default: write ( "Eintrag eingefuegt.\n" ); |
| } |
| default: |
| return; |
| } |
| } |
| |
| int Remove_Quest ( string str ) |
| { |
| mixed *oldquest; |
| string newstr; |
| int errstat; |
| |
| if ( !(str=UA) ) |
| { |
| write ( "Syntax: RemoveQ <name>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newstr = num_key[str+""]) ) |
| newstr = str; |
| |
| oldquest = (mixed *) QM->QueryQuest ( newstr ); |
| |
| if ( !pointerp ( oldquest ) || !sizeof ( oldquest ) ) |
| { |
| write ( "Keine Quest dieses Namens gefunden.\n" ); |
| return 1; |
| } |
| |
| errstat = (int) QM->RemoveQuest( newstr ); |
| |
| switch ( errstat ) |
| { |
| case 0: write ( "Zugriff verweigert.\n" ); break; |
| case -1: write ( "Parameterfehler.\n" ); break; |
| case -2: write ( "Quest nicht gefunden.\n" ); break; |
| default: write ( "Quest entfernt.\n" ); |
| } |
| |
| savequest = oldquest; |
| savekey = newstr; |
| |
| return 1; |
| } |
| |
| int Change_Quest ( string str ) |
| { |
| mixed *oldquest; |
| string newstr; |
| |
| if ( !(str=UA) ) |
| { |
| write ( "Syntax: ChangeQ <quest>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newstr = num_key[str+""]) ) |
| newstr = str; |
| |
| oldquest = (mixed *) QM->QueryQuest ( newstr ); |
| |
| if ( !pointerp( oldquest ) || !sizeof ( oldquest ) ) |
| { |
| write ( "Keine Quest dieses Namens gefunden.\n" ); |
| return 1; |
| } |
| |
| do_change = 1; |
| changekey = newstr; |
| savekey = newstr; |
| savequest = oldquest; |
| |
| write ( "Aktueller Eintrag:\n"); |
| write ( "Key : "+newstr+"\n" ); |
| write ( "Punkte : "+oldquest[Q_QP]+"\n" ); |
| write ( "Erfahrung : "+oldquest[Q_XP]+"\n" ); |
| write ( "Filenamen : "+implode(oldquest[Q_ALLOWED],",")+"\n" ); |
| write ( "Info : "+oldquest[Q_HINT]+"\n" ); |
| write ( "Stufe : "+oldquest[Q_DIFF]+"\n" ); |
| write ( "Klasse : "+QCLASS_STARS(oldquest[Q_CLASS])+"\n" ); |
| write ( "Attribut : "+QATTR_STRINGS[oldquest[Q_ATTR]]+"\n" ); |
| write ( "Magier : "+capitalize(oldquest[Q_WIZ])+"\n" ); |
| write ( "Wartender Magier : "+capitalize(oldquest[Q_SCNDWIZ])+"\n" ); |
| |
| |
| write ( "\nNeue Quest: (mit '.' oder '~q' kann abgebrochen werden)\n" ); |
| write ( sprintf("Key [%s]:\n", savekey) ); |
| input_to ( "ReadNewQuest" ); |
| |
| return 1; |
| } |
| |
| int Restore_Quest ( string str ) |
| { |
| int errstat; |
| |
| if ( !savekey || !sizeof(savekey) ) |
| { |
| write ( "\nTut mir leid!\n" ); |
| write ( "Nichts zum Restaurieren gefunden ...\n" ); |
| return 1; |
| } |
| |
| errstat = |
| (int)QM->AddQuest( savekey, (int) savequest[0], (int) savequest[1], |
| (string *) savequest[2], (string) savequest[3], |
| (int) savequest[4], (int) savequest[5], |
| (string) savequest[6], (int) savequest[7], |
| (string) savequest[8] ); |
| |
| switch ( errstat ) |
| { |
| case 0: write ( "Zugriff verweigert.\n" ); break; |
| case -1: write ( "Key ungueltig oder sizeof(key) < 5.\n" ); break; |
| case -2: write ( "QP ungueltig oder < 1.\n" ); break; |
| case -3: write ( "XP ungueltig.\n" ); break; |
| case -4: write ( "Filename(n) ungueltig.\n" ); break; |
| case -5: write ( "Info ungueltig.\n" ); break; |
| case -6: write ( "Stufe ungueltig oder < 0 oder > 20.\n" ); break; |
| case -7: write ( "Aktiv-Flag < 0 oder > 1.\n" ); break; |
| case -8: write ( "Magiername ungueltig.\n" ); break; |
| case -9: write ( "Magiername ungueltig.\n"); break; |
| case -10: write ("Ungueltige Gruppennummer.\n"); break; |
| default: write ( "'"+savekey+"' restauriert.\n" ); |
| } |
| savekey = ""; |
| return 1; |
| } |
| |
| int Set_Quest ( string str ) |
| { |
| string quest, player, newquest; |
| int created; |
| object ob; |
| |
| if ( !(str=UA) || sscanf( str, "%s %s", player, quest ) != 2 ) |
| { |
| write ( "Syntax: SetQ <player> <quest>\n" ); |
| return 1; |
| } |
| |
| created=0; |
| Load_NumKey(); |
| |
| if ( !(newquest = num_key[quest+""]) ) |
| newquest = quest; |
| |
| ob=find_player(player); |
| if(!ob) |
| { |
| ob=find_netdead(player); |
| if(!ob) |
| { |
| created=1; |
| ob=__create_player_dummy(player); |
| } |
| } |
| if(!ob) |
| { |
| write("Kein solcher Spieler gefunden.\n!"); |
| return 1; |
| } |
| |
| write(ERRNO_2_STRING("GQ",(int)ob->GiveQuest(newquest,"__silent__"))+"\n"); |
| if(created) |
| { |
| ob->save_me(0); |
| if(!(ob->remove())) |
| { |
| destruct(ob); |
| } |
| } |
| return 1; |
| } |
| |
| int Del_Quest ( string str ) |
| { |
| string quest, player, newquest; |
| int created; |
| object ob; |
| |
| if ( !(str=UA) || sscanf( str, "%s %s", player, quest ) != 2 ) |
| { |
| write ( "Syntax: DelQ <player> <quest>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newquest = num_key[quest+""]) ) |
| newquest = quest; |
| |
| created=0; |
| ob=find_player(player); |
| if(!ob) |
| { |
| ob=find_netdead(player); |
| if(!ob) |
| { |
| created=1; |
| ob=__create_player_dummy(player); |
| } |
| } |
| if(!ob) |
| { |
| write("Kein solcher Spieler gefunden.\n!"); |
| return 1; |
| } |
| |
| write(ERRNO_2_STRING("DQ",(int) ob->DeleteQuest ( newquest ))+"\n"); |
| if(created) |
| { |
| ob->save_me(0); |
| if(!(ob->remove())) |
| { |
| destruct(ob); |
| } |
| } |
| return 1; |
| } |
| |
| int Query_Quest ( string str ) |
| { |
| mixed *quest; |
| string newstr; |
| int i; |
| |
| if ( !(str=UA) ) |
| { |
| write ( "Syntax: QueryQ <quest>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newstr = num_key[str+""]) ) |
| newstr = str; |
| |
| quest = (mixed *) QM->QueryQuest( newstr ); |
| |
| if ( !pointerp( quest ) || !sizeof ( quest ) ) |
| { |
| write ( "Keine Quest dieses Namens gefunden.\n" ); |
| return 1; |
| } |
| |
| write ( "Aktueller Eintrag:\n"); |
| write ( "Key : "+newstr ); |
| if(quest[Q_ACTIVE]) |
| write (" (aktiviert)\n"); |
| else |
| write (" (deaktiviert)\n"); |
| write ( "Punkte : "+quest[Q_QP]+"\n" ); |
| write ( "Erfahrung : "+quest[Q_XP]+"\n" ); |
| write ( break_string ( implode( quest[Q_ALLOWED], " " ), 65, "Filenamen : " ) ); |
| write ( break_string ( quest[Q_HINT], 65, "Info : " ) ); |
| write ( "Stufe : "+quest[Q_DIFF]+"\n" ); |
| printf("Stufe (avg) : %.2f (%d)\n", quest[Q_AVERAGE][0], |
| quest[Q_AVERAGE][1]); |
| write ( "Klasse : "+ QCLASS_STARS(quest[Q_CLASS])+"\n"); |
| write ( "Attribute : "+ QATTR_STRINGS[quest[Q_ATTR]]+"\n"); |
| write ( "Magier : "+capitalize(quest[Q_WIZ])+"\n" ); |
| write ( "Wartender Magier : "+capitalize(quest[Q_SCNDWIZ])+"\n"); |
| return 1; |
| } |
| |
| int Query_Keys ( string str ) |
| { |
| string *keys, active; |
| mixed *quest; |
| int i; |
| |
| if ( !(keys = (string *) QM->QueryAllKeys()) ) |
| return 1; |
| |
| write ( "\n" ); |
| keys=sort_array(keys,#'>);//') |
| for ( i = 0; i < sizeof(keys); i++ ) |
| { |
| quest = (mixed *) QM->QueryQuest(keys[i]); |
| if(quest[6]) |
| active="*"; |
| else |
| active=" "; |
| write(sprintf("%2d%s %-33s%s",i+1,quest[6]?"*":" ",keys[i], |
| !(i%2)?" ":"\n")); |
| } |
| if(i%2) |
| write("\n"); |
| |
| return 1; |
| } |
| |
| int Query_Quests ( string str ) |
| { |
| mixed *quest; |
| string *keys, rstr; |
| int i; |
| |
| if ( !(keys = (mixed *) QM->QueryAllKeys()) ) |
| return 1; |
| |
| keys=sort_array(keys,#'>);//') |
| for ( i = 0, rstr = ""; i < sizeof(keys); i++ ) |
| { |
| quest = (mixed *) QM->QueryQuest(keys[i]); |
| write ( "\nKey : "+keys[i] ); |
| if(quest[Q_ACTIVE]) |
| write (" (aktiviert)\n"); |
| else |
| write (" (deaktiviert)\n"); |
| write ( "Punkte : "+quest[Q_QP]+"\n" ); |
| write ( "Erfahrung : "+quest[Q_XP]+"\n" ); |
| write ( break_string ( implode( quest[Q_ALLOWED], " " ), 78, "Filenamen : " ) ); |
| write ( break_string ( quest[Q_HINT], 78, "Info : " ) ); |
| write ( "Stufe : "+quest[Q_DIFF]+"\n" ); |
| write ( "Klasse : "+ QCLASS_STARS(quest[Q_CLASS])+"\n"); |
| write ( "Attribute : "+ QATTR_STRINGS[quest[Q_ATTR]]+"\n"); |
| write ( "Magier : "+capitalize(quest[7])+"\n" ); |
| write ( "Wartender Magier : "+capitalize(quest[8])+"\n"); |
| } |
| More( rstr, 0 ); |
| return 1; |
| } |
| |
| int ActivateQuest( string str ) |
| { |
| mixed *quest; |
| string newstr; |
| int errstat; |
| |
| if ( !(str=UA) ) |
| { |
| write ( "Syntax: ActiVateQ <quest>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newstr = num_key[str+""]) ) |
| newstr = str; |
| |
| switch( QM->SetActive( newstr, 1 ) ) |
| { |
| case -3: write ( "Ungueltiger Flag.\n" ); break; |
| case -2: write ( "Quest war bereits aktiviert.\n" ); break; |
| case -1: write ( "Keine Quest dieses Namens gefunden.\n" ); break; |
| case 0: write ( "Zugriff verweigert\n" ); break; |
| case 1: write ( "Quest '"+newstr+"' aktiviert.\n" ); break; |
| default: write ( "unbekannter Fehlerstatus.\n" ); |
| } |
| return 1; |
| } |
| |
| int DeactivateQuest( string str ) |
| { |
| mixed *quest; |
| string newstr; |
| int errstat; |
| |
| if ( !(str=UA) ) |
| { |
| write ( "Syntax: DeactiVateQ <quest>\n" ); |
| return 1; |
| } |
| |
| Load_NumKey(); |
| |
| if ( !(newstr = num_key[str+""]) ) |
| newstr = str; |
| |
| switch( QM->SetActive( newstr, 0 ) ) |
| { |
| case -3: write ( "Ungueltiger Flag.\n" ); break; |
| case -2: write ( "Quest war bereits deaktiviert.\n" ); break; |
| case -1: write ( "Keine Quest dieses Namens gefunden.\n" ); break; |
| case 0: write ( "Zugriff verweigert\n" ); break; |
| case 1: write ( "Quest '"+newstr+"' deaktiviert.\n" ); break; |
| default: write ( "unbekannter Fehlerstatus.\n" ); |
| } |
| return 1; |
| } |
| |
| |