Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//wiz/scoremasterDer Scoremaster
===============
BESCHREIBUNG
Funktion: Verwaltung der Erstkill-Stufenpunkte, die fuer das Toeten von
NPCs vergeben werden. Fuer alle NPCs, die mehr als 200000 XP
(SCORE_LOW_MARK) geben, wird ein Stufenpunkt vergeben. Ab 600000 XP
(SCORE_HIGH_MARK) sind es 2 Stufenpunkte. Ueber diese Werte hinausgehende
Punkte muessen beantragt und manuell ueber den Scoremaster eingetragen
werden.
Jeder NPC, der mindestens einen Stufenpunkt gibt, wird automatisch in
eine Liste temporaerer EKs eingetragen, die vom EK-Maintainer einzeln
bestaetigt werden muessen. Dieses Verfahren ist erforderlich, weil der
bis vor einiger Zeit eingesetzte Mechanismus, EKs automatisch einzutragen,
dazu gefuehrt hat, dass eigentlich nicht als EK vorgesehene oder erlaubte,
aber auch laengst wieder abgehaengte oder gar nie angeschlossene NPCs
eingetragen waren. Da aus dem Scoremaster auch die von Brumni in der
Fraternitas ausgegebenen EK-Tips abgefragt werden, ist das natuerlich fatal
fuer Spieler, wenn sie Tips bekommen, die sie nicht erreichen koennen.
Die Liste der Erstkills ist ein Mapping, das als Keys eine fortlaufende
Nummer enthaelt, zu der jeweils die Daten des NPCs zugeordnet sind. Diese
Nummer dient vor allem auch zur Indizierung des Bitstrings im Spieler,
in dem die Erstkills gespeichert werden.
Diese Datei dokumentiert die Funktionalitaet des Scoremasters fuer die
Benutzung durch EM und EK-Maintainer, jedoch nicht die vollstaendige
interne Arbeitsweise und Verwaltung der Daten.
Inhaltsverzeichnis dieser Dokumentation
1) Neueintragung von EKs
2) Verwaltung der unbestaetigten EKs
3) Aenderungen an bestehenden EKs
4) Spielerbezogene Daten verwalten
5) Daten von NPCs abfragen
6) Permanentes Loeschen von EKs
7) Verwaltung der EK-Tips von Brumni
8) Sonstige Funktionen (nur von NPCs gerufen)
RUECKGABEWERTE:
SCORE_INVALID_ARG -1
SCORE_NO_PERMISSION -2
FUNKTIONEN
1) Neueintragung von EKs
NewNPC(string key, int score)
AddNPC(string key, int score) [veraltet, leitet an NewNPC weiter]
Neuen NPC eintragen, key ist hierbei der Pfad, score die Punktzahl
Die ID des EKs wird automatisch ausgewaehlt, indem der naechste
freie Platz im Mapping belegt wird.
2) Verwaltung der unbestaetigten EKs
ConfirmScore(mixed key)
unbestaetigten EK mit der Nummer oder dem Pfad "key" genehmigen
=> EK in den Spielern setzen und Statistik hochzaehlen,
=> EK aus der Liste der unbestaetigten EKs in die Liste der aktiven
uebertragen,
RejectScore(mixed key)
unbestaetigten EK mit der Nummer oder dem Pfad "key" ablehnen
=> Eintrag aus der Liste der unbestaetigten EKs loeschen
=> Bit-Nr. in die Liste der freien Nummern eintragen
DumpUnconfirmedScores()
unbestaetigte NPCs an den abfragenden Magier ausgeben
3) Aenderungen an bestehenden EKs
SetScore(mixed key, int score)
Punktzahl fuer bereits eingetragenen NPC aendern, key ist der Pfad
oder die NPC-Nummer, score die neue Punktzahl
RemoveScore(mixed key)
Setzt die Punktzahl auf 0. Solche EKs koennen spaeter durch Angabe
einer neuen Punktzahl reaktiviert werden.
Alternativ kann fuer diese Funktion auch SetScore(mixed key, 0)
verwendet werden.
key kann hierbei der Pfad oder die NPC-Nummer sein
MoveScore(mixed oldkey, string newpath)
Verlegt einen EK
oldkey ist der aktuelle Pfad oder die Nummer
newpath ist der neue Pfad
4) Spielerbezogene Daten verwalten
HasKill(mixed pl, mixed npc)
fragt ab, ob der Spieler "pl" den Kill "npc" hat
pl kann hierbei der Spielername oder das Spielerobjekt sein,
npc der Pfad oder dessen Nummer
SetScoreBit(string pl, int bit)
Mit dieser Funktion wird dem Spieler "pl" der EK mit der Nummer
"bit" gutgeschrieben.
ClearScoreBit(string pl, int bit)
Mit dieser Funktion wird dem Spieler "pl" der EK mit der Nummer
"bit" permanent ausgetragen.
QueryKillPoints(mixed pl)
liefert die Anzahl der Stufenpunkte zurueck, die dem Spieler pl
durch die aktiven EKs gutgeschrieben wurden
getFreeEKsForPlayer(object player)
liefert alle EKs, die aktiv sind, und die der Spieler noch nicht
hat, in einem Mapping entsprechend der Liste "npcs" zurueck.
QueryAllKills(string pl)
liefert alle Kills des Spielers als Bitstring zurueck, auch solche,
die momentan ausgetragen/deaktiviert sind
pl ist hierbei der Spielername als String
QueryKills(string pl)
liefert die aktiven Kills des Spielers als Bitstring zurueck
pl ist hierbei der Spielername als String
5) Daten von NPCs abfragen
QueryNPCbyNumber(int num)
liefert die Daten des NPCs mit der Nummer "num" als Array zurueck
QueryNPCbyObject(object o)
liefert die Daten des NPCs mit dem Objekt "o" als Array zurueck
6) Permanentes Loeschen von EKs
MarkEKForLiquidation(mixed key)
entfernt einen EK endgueltig und unwiderruflich und gibt die Nr.
wieder frei.
Technisch wird der EK erstmal in eine Liste eingetragen. Im Reset
iteriert der Master ueber alle Spieler-Savefiles und loescht den EK
aus allen Spielern. Nach Abschluss wird der Eintrag in "npcs"
geloescht und seine Nr. in die Liste freier Nummern eingetragen.
UnmarkEKForLiquidation(mixed key)
Entfernt die Loeschmarkierung von einem EK
=> Dies geht nur, solange nach einem MarkEKForLiquidation() noch kein
reset() gelaufen ist!
QueryLiquidationMarks()
Fragt die fuer Loeschung vorgesehenen EKs ab.
RestoreEK(string key, int bit, int score)
restauriert die Daten eines frueher geloeschten, in den Spielern noch
enthaltenen EKs. Moeglich nur dann, wenn der EK frueher mal geloescht
wurde, aber in den Bitstrings in den Spielern noch eingetragen ist.
Es werden Pfad, Nr. und Punkte benoetigt.
Fuer nach dem Umbau des Scoremasters geloeschte EKs nicht mehr
moeglich, weil diese permanent aus den Bitstrings ausgetragen wird.
7) Verwaltung der EK-Tips von Brumni
addTip(mixed key,string tip)
Traegt fuer den NPC mit der Nummer oder dem Pfad "key" einen EK-Tip-
Text fuer Brumni ein.
changeTip(mixed key,string tip)
Aendert den durch Brumni auszugebenden EK-Tip fuer den NPC mit der
Nummer oder dem Pfad "key". Der neue Tip wird dabei als 2. Parameter
"tip" uebergeben.
removeTip(mixed key)
Loescht den durch Brumni auszugebenden EK-Tip-Spruch. Der Tip als
solcher bleibt bestehen - anschliessend wird wieder der Standard-
Spruch ausgegeben.
getTip(mixed key)
Gibt den Tip-Spruch fuer den NPC mit der Nummer oder dem Pfad
"key" zurueck, oder den Standard-Spruch. Liefert fuer nicht
eingetragenen "key" den Leerstring zurueck.
QueryTipObjects(mixed player)
Gibt die Objektnamen der EK-Tips des jeweiligen Spielers zurueck.
allTipsForPlayer(object player)
Gibt den Gesamtstring aller Tips des Spielers "player" zurueck.
playerMayGetTip(object player)
Fragt ab, ob der Spieler "player" einen Tip bekommen kann.
giveTipForPlayer(object player)
Waehlt einen zufaelligen EK aus, den der Spieler noch nicht hat, und
traegt diesen im Master in die Liste ein, die mit allTipsForPlayer()
abgefragt werden kann.
8) Sonstige Funktionen (nur von NPCs gerufen)
GiveKill(object pl, int bit)
schreibt dem Spieler "pl" den EK mit der Nummer "bit" gut.
Diese Funktion wird ausschliesslich aus NPCs heraus gerufen.
QueryNPC(int score)
Wird vom getoeteten NPC gerufen, um zu ermitteln, ob dieser einen
Erstkill gibt. Wenn der EK noch nicht existiert, wird dieser im
Master zunaechst in der Liste der unbestaetigten EKs eingetragen
Direkte Abfrage dieser Funktion von aussen z.B. durch Magier nicht
moeglich, weil nicht sinnvoll.
zurück zur Übersicht