GiveQuest()

FUNKTION:
        varargs int GiveQuest(string questname, string message)

DEFINIERT IN:
        /std/player/quests.c

ARGUMENTE:
        questname
          Questname, wie er im Questmaster eingetragen wurde.
        message 
          Optionale Meldung, die auf dem Abenteuer-Kanal statt der 
          Standardmeldung gesendet wird.
          Dabei wird @@name@@ durch den Spielernamen ersetzt.

RUeCKGABEWERT:
        (Die Defines fuer den Rueckgabewert finden sich in 
         /secure/questmaster.h)
         1 : Hat geklappt                           (OK)
        -1 : Spieler hat die Quest bereits geloest  (GQ_ALREADY_SET)
        -2 : Ungueltiger Questname                  (GQ_KEY_INVALID)
        -3 : Unbefugter Zugriff                     (GQ_ILLEGAL_OBJ)
        -4 : Quest zur Zeit inaktiv                 (GQ_IS_INACTIVE)

BESCHREIBUNG:
        Mit dieser Funktion wird nach dem erfolgreichen Loesen einer 
        Quest die Quest im Spieler eingetragen. Dabei muss der Aufruf 
        in dem Objekt erfolgen, welches im Questmaster eingetragen ist.
        Zusaetzlich wird der Zeitpunkt eingetragen, an dem die Quest
        bestanden wurde.
        
        Wer sich da nicht sicher ist, kann mit dem Questtool 
        (/obj/tools/questtool) nachsehen. 

        Nachdem eine Quest als geloest markiert wurde, ist dies in einem 
        Logfile fuer die Quest im Verzeichnis /log/quest einzutragen. Dazu
        wird write_file verwendet.

BEISPIEL:

        int quest;

        quest = this_player()->GiveQuest("Zacharias Eispalast");

        if (quest == 1)
        {
          write("Du fuehlst, wie Deine Erfahrung ansteigt.\n");
          write_file("/log/quest/eispalast", 
                     dtime(time())+"   Aufgabe geloest von "
                     +this_player()->name()+"\n");
        } 
        else if (quest != -1)
          write( "Die Weltenmaschine will Dir Deine Arbeit "
                 +"nicht anerkennen.\n"
                 +"Frage einen Erzmagier um Hilfe.\n" );

SIEHE AUCH:
        /secure/questmaster.h, /obj/tools/questtool
        QueryQuest(), write_file(), ModifyQuestTime()

----------------------------------------------------------------------------
Zuletzt geaendert: Son, 27. Apr 2014, Arathorn
