Dokumentation zu: questmaster(SEC)

HR Image


KONZEPT
        Questmaster - der Herrscher ueber die Abenteuer

FILES
	/room/quests.c
	/secure/questmaster.c
	/sys/questmaster.h

BESCHREIBUNG
	Der Questmaster verwaltet alle echten Quests. Nur im Questmaster
	angemeldete Quests beeinflussen die Anzahl der Questpunkte oder
	haben Einfluss auf die Seher/Magierwerdung eines Spielers. Eine
	Quest kann in verschiedener Art und Weise angemeldet, abgemeldet,
	aktiviert und deaktiviert werden. Aus dem Questmaster koennen alle
	moeglichen Informationen ueber eine Quest ermittelt werden.

	Einflussname auf die Quests und deren Ab/Anmeldung und so weiter
	ist am bequemsten im 'Inneren des Questmasters' /room/quests.c
	moeglich.

FUNKTIONEN
	Im Folgenden werden die Funktionen des Questmasters beschrieben,
	die man von extern aus nutzen kann. Die vollen Prototypen findet man
	am Ende der Hilfe. Hier werden nur die Argumente in der Reihenfolge
	des Auftretens gelistet.

	GiveQuest() - Gibt dem Spieler eine Quest
	  pl:  Objekt des Spielers
	  id:  Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  msg: Ebenenmeldung. Wenn 0 oder "" wird Standard ausgegeben, wenn
	  nichts ausgegeben werden soll, muss "__silent__" uebergeben werden.
	  Rueckgabewerte:
 	  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

	DeleteQuest() - Nimmt dem Spieler eine Quest weg ***
	  pl: Objekt des Spielers
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
 	  1 Loeschen OK
	  -1 Spieler hatte Quest gar nicht
	  -2 Quest nicht angemeldet
	  -3 Unberechtigter Zugriff

	VoteQuest() - Die Bewertung einer Quest
	  pl:    Objekt des Spielers oder Uid (String), dann werden aber
       	  alle Stimmen des Spielers geloescht!
	  id:    Nummerische ID der Quest, dessen Wertung angegeben ist
	  votes: Array aus Integer, die (neue) Wertung ({ SUM, LVL, FUN })
       	  mit jeweils Werten zwischen 1 und 10 (inklusive)
	  Rueckgabewerte:
 	  1 OK
	  -1 fehlerhafte Zugriffsberechtigung
	  -2 Quest nicht angemeldet
	  -3 Spieler hat die Quest nicht geloest

	QueryVotes() - Fragt alle Wertungen eines Spielers ab
	  uid: Uid des Spielers
	  Rueckgabewerte:
	  Wertungs-Array ({ SUM, LVL, FUN }). Bei unbewerteten Quests sind alle
	  Werte Null.

	QueryVoter() - Wer hat die Quest schon bewertet
	  id: Nummerische ID der Quest
	  Rueckgabewerte:
	  Array aus einem Array pro bewertendem Spieler
	  ({ ({ UID-Spieler1, SUM, LVL, FUN }), ({ UID-Spieler2, ... }), ... })
	  Wenn keiner bewertet hat oder Quest nicht vorhanden wird ({})
	  geliefert

	DidQuest() - Hat der Spieler die fragliche Quest schon gemacht?
	  pl: Spielerobjekt
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  1 Ja
	  0 Nein oder Quest nicht vorhanden

	EvaluateQP() - Errechnet Anzahl der QP aus P_QUESTS
	  quests: Array der Form von P_QUESTS
	  Rueckgabewert: die Questpunkte

	NewQuestprop() - Wandelt alte P_QUESTS in neue
	  old: altes P_QUESTS
	  Rueckgabewerte:
	  Array fuer P_QUESTS mit neuen Werten. Unbekannte Quests bleiben
	  unveraendert bestehen und werden dann sicherlich einen Laufzeitfehler
	  an anderer Stelle hervorrufen (sie muessen ja eh von Hand behoben
	  werden)

	QueryReadyForWiz() - Hat der Spieler genug Quests fuer Seher/Magier
	  player: Das Spielerobjekt
	  Rueckgabewerte:
 	  1 OK
 	  0 Pflichtquest fehlt
	  -1 Questpunkte reichen nicht
	  Dieser Funktion muss ein Playerobjekt uebergeben bekommen
	  und prueft, ob der Spieler seitens der Quests bereit ist zur
	  Aufstufung zum Seher oder Magier ist. Er muss eine bestimmte
	  Prozentzahl der maximalen Questpunkte (derzeit 80% von
	  QueryMaxQP()) haben, die Pflichtquests alle geloest und von
	  den freiwilligen nur eine bestimmte Menge nicht geloest ha-
	  ben (derzeit, kann sich aendern!):
	  1. Er darf nur 2 Quests mit weniger als 35 QPs weglassen.
	  2. Er darf nur 2 Quests mit weniger als 70 QPs weglassen.
	  3. Er darf nur 1 Quest mit weniger als 100 QPs weglassen.
	  4. Er darf nur 1 Quest mit mehr als 100 QPs weglassen.
	  Falls der Spieler alle diese Voraussetzungen erfuellt, lie-
	  fert die Funktion 1, ansonsten 0.

	AddNewQuest() - Eine neue Quest anlegen
	  Die neue Quest wird mit Dummy-Infos vorbelegt
	  Liefert die ID-Nummer der neuen Quest zurueck

	ChangeQuest() - Daten einer Quest veraendern
	  id:    Nummer (int) der Quest (optional Name (string) bei alten Q.)
	  field: Index des zu aendernden Datenfelds (Defines QM_*)
	         Siehe auch weiter unten..
	  data:  Die neuen Daten
	  Rueckgabewerte:
 	  1 OK
	  -1 field ist zu gross oder klein
	  -2 Quest nicht angemeldet
	  -3 Unberechtigter Zugriff
	  -4 Typ oder Wert von data entspricht nicht Erwartung

	QueryQuest() - Questdaten abfragen
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  -1     Quest nicht angemeldet
	  Array  Eine volle Kopie der Questdaten (teuer!)
	  Bitte moeglichst eine der spezielleren folgenden Funktionen nutzen!

	QueryNumQuests() - Anzahl der Quests abfragen
	  Liefert die Anzahl der Quests zurueck, inklusive deaktierte und so
	  weiter. Man kann somit alle Abenteuer von 0 bis Anzahl-1 durchlaufen.

	QueryQP() - Abenteuerpunkte abfragen
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  -1 Quest nicht angemeldet
	  sonst die Anzahl der Punkte. Achtung: Auch bei deaktivierten Quests
	  abfragbar.

	QueryName() - Namen der Quest abfragen
	  id: Nummer (int) der Quest
	  Rueckgabewerte:
	  -1 Quest nicht angemeldet
	  sonst den Namen der Quest

	QueryLevel() - Empfohlene Stufe von loesenden Spielern
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  -1 Quest nicht angemeldet
	  sonst die Stufe

	QueryActive() - Status der Quest abfragen
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
 	  1 Quest aktiv
 	  0 Quest dekativiert
	  -1 Quest nicht angemeldet

	QueryWizard() - Autor abfragen
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  -1 Quest nicht angemeldet
	  sonst Uid des Autors (String)

	IsGuildQuest() - Gildenstatus der Quest abfragen
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
	  Array aus Gildennamen, fuer die die Quest gedacht ist
    	  0 Ist nirgendwo Gildenquest
   	  -1 Quest nicht angemeldet

	IsNeededQuest() - Ist es eine Pflichtquest?
	  id: Nummer (int) der Quest (optional Name (string) bei alten Quests)
	  Rueckgabewerte:
 	   1 Quest ist Pflichtquest
 	   0 Quest ist optional (entweder mit oder ohne Beruecksichtung
	     bei SumQP)
	  -1 Quest nicht angemeldet

	QueryMaxQP()
	  Alle QPs ohne optionale und Gildenquests

	QueryNeededQP()
	  QP fuer Seherlevel

	QueryAllQP()
	  Alle QP (pflicht + frei + optional) ohne Gildenquests

QUESTDATEN
	Folgende Daten sind fuer jede Quest vorhanden:

	QM_NAME     - Gibt den Namen der anzumeldenden Quest an. Es darf
		      bereits eine Quest dieses Namens geben, da die Quests
		      anhand ihrer nummerischen ID unterschieden werden.
	QM_QP       - Gibt die Zahl der Questpunkte an, die der Spieler fuer
		      die Loesung dieser Quest angerechnet bekommt. Muss >=0
		      sein!
	QM_XP       - Gibt die Zahl der Erfahrungspunkte an, die der Spieler
		      fuer eine Quest bekommen kann. Muss >=0 sein!
	QM_ALLOW    - Ist ein Array mit den Filenamen der Objekte, die diese
		      Quest als durch einen Spieler geloest kennzeichnen
		      duerfen. Die Endung '.c' ist wegzulassen!!! Erzmagier
		      duerfen eine Quest auch vergeben.
	QM_INFO     - Ist ein String, der einen Tip zur Loesung der Quest
		      enthaelt. Dieser String wird dem Spieler vom Scheuch
		      als Hinweis gegeben.
	QM_LEVEL    - ist ein Richtlevel zwischen 1 und MUD_MAX_LEVEL (35),
		      das als Empfehlung dient. Ein Spieler kann die Quest
		      theoretisch auch loesen, wenn er ein kleineres Level
		      hat, jedoch koennte es sein, dass die Quest dann die
		      'physischen' Moeglichkeiten seines Spielercharakters
		      dann uebersteigt.
	QM_NEED     - legt die Art der Quest fest, ob die Quest von einem
		      Spieler geloest werden muss, bevor er Seher/Magier
		      werden kann. Werte:
		      0 - Questpunkte zaehlen zu max. Questpunkte dazu.
			  Die Quest ist freiwillig (Standard).
		      1 - Questpunkte zaehlen zu max. Questpunkte dazu.
		          Die Quest ist Pflicht (unabh. der 80%).
		      2 - Questpunkte zaehlen NICHT zu max. QP
		          Die Quest ist freiwillig (optional).
	QM_ACTIVE   - Ist active==0 ist die Quest deaktiviert und kann
		      nicht geloest werden, taucht in keiner Liste auf
		      und so weiter ('virtuell geloescht').
	QM_WIZ      - Der Name (UID) des Magiers, der die Quest geschrieben
		      hat, oder zumindest dafuer verantwortlich ist.
		      Hier landen auch die Reporte, wenn nichts anderes
		      angegeben wurde.
	QM_GUILD    - Ist entweder 0 oder ein Array aus Strings mit den Na-
		      men der Gilden, fuer die die Quest eine Gildenquest
		      sein soll. Bsp: ({"Magiekundigengilde"}) Das hat keine 
		      direkten Auswirkungen. Die Quest zaehlt aber dann in
		      jedem Falle AUTOMATISCH als optionale Quest. Das
		      Array wird nur benutzt, um die Questlisten innerhalb
		      der Gilden richtig zu erstellen. Eine Gildenquest ist
		      eine Quest, die entweder nur von Mitgliedern einer be-
		      stimmten Gilde geloest werden kann, oder nur von einer
		      (oder mehreren) Gilden benoetigt wird, um eintreten zu
		      koennen, die Stufe zu erhoehen etc. pp.

SIEHE AUCH
	quests(WL), P_QUESTS, P_QP


Start » Magierhandbuch » Docu » Secure » Questmaster Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!