FUNKTION:
int GiveQuest(object pl, mixed id, mixed msg) // im Questmaster
int GiveQuest(mixed id, mixed msg) // im Spieler
DEFINIERT IN:
/secure/questmaster.c
/sys/questmaster.h
/std/player/quests.c
ARGUMENTE:
pl - Objekt des Spielers
id - Nummer (int) der Quest (optional Name (string) bei alten Quests)
msg - Ebenenmeldung.
FUNKTION:
Gibt dem Spieler eine Quest
Wenn msg 0 oder "" ist, wird eine Standard-Ebenenmeldung ausgegeben.
Wenn nichts ausgegeben werden soll, muss "__silent__" uebergeben
werden.
ACHTUNG! Der Rueckgabewert von GiveQuest() sollte _immer_ ausgewertet
und sowohl erfolgreiche als auch misslungene Questversuche geloggt
werden. Dazu gibt es ein extra Verzeichnis /log/quests/.
Das Loggen geschieht mittels log_file().
RÜCKGABEWERTE:
1 - Setzen OK
-1 - Spieler hat Quest schon
-2 - Quest nicht angemeldet
-3 - Unberechtigter Zugriff
-4 - Quest nicht aktiv
-5 - Problem mit P_QUESTS des Spielers
BEISPIELE:
1.) Es wird eine Standardmeldung erzeugt:
[Abenteuer] Shin hat gerade ein Abenteuer bestanden: Die
Speisekarte des Menschenfressers
#include <questmaster.h>
#include "../files.h"
// Im files.h sollte QUEST_ID definiert sein. Das ist eine Kennzahl,
// die beim Anmelden der Quest beim Questmaster bzw. in /room/quests
// vergeben wird.
void questvergabe(object pl)
{
// ACHTUNG! Rueckgabewert auswerten und loggen!
QM->GiveQuest(pl, QUEST_ID, 0)
}
2.) Je nachdem, ob der Spieler die Quest schon geloest hatte,
wird keine oder eine eigene Meldung ausgegeben
#include "../files.h" // fuer QUEST_ID
void questvergabe(object pl)
{
string msg;
// Die Quest wurde vom Spieler noch nicht geloest
if (!pl->QueryQuest(QUEST_ID))
msg = "Der Koenig von Nimmerland verkuendet: " +
pl->name(WER, NAME_DEF|NAME_CAP) + " hat mich geheilt!!";
// ansonsten:
else
msg = "__silent__";
// Questvergabe - ACHTUNG! Rueckgabewert auswerten und loggen!
pl->GiveQuest(QUEST_ID, msg)
}
SIEHE AUCH:
log_file(S), questmaster(s), QueryQuest(l)
|