Dokumentation zu: strafe(WL)

HR Image


Zum durchsetzen der vielleicht bald gueltigen neuen Spielregeln fehlt bis
jetzt ein mehr oder weniger automatisiertes Strafkonzept. Ich habe deshalb
mal einen Penalty-Demon gebastelt, der eigentlich nur eine Datenbank ist:

/secure/penaltyd.c
/secure/penalty.h
 
Das Teil besteht im Moment im Grunde nur aus 3 public methoden:

int AddPenalty(mixed player,int type,int duration,string reason,int flags);

Hiermit kann man eine Strafe hinzufuegen (vergeben). Geht nur fuer Erzmagier
und wird vollstaendig gelogt. Die Strafen summieren sich, also neue Strafen
werden auf die alten aufaddiert, wenn sie noch nicht abgelaufen waren.

Argumente:

player   - Spielerobjekt oder Spieler-UID
type     - eine integer id aus penalty.h die den Straftyp qualifiziert
duration - die Zeitdauer, die die Strafe (ab sofort) gelten soll in Sekunden
           wenn hier -1 angegeben wird, zaehlt die Strafe unbegrenzt lang
reason   - der Grund fuer die Strafe, das dient nur der Nachvollziehbarkeit
flags    - momentan unnuetz (0), aber hier kann man spaeter auch Strafen
           fuer eine ganze Zweitiefamilie verhaengen oder so

Rueckgabewerte:
<-1        - Argumentfehler
0          - fehlende Berechtigung
-1 oder >0 - Strafdauer


int QueryPenalty(mixed player, int type);

Damit kann man die Strafe abfragen. Gibt kein Mindestlevel dafuer.

Argumente:

player   - Spielerobjekt oder Spieler-UID
type     - eine integer id aus penalty.h die den Straftyp qualifiziert

Rueckgabewerte:
0          - fehlende Berechtigung
-1 oder >0 - Strafdauer


string QueryPenaltyName(int type);

Damit kann man sich den Straftyp quasi im Klartext geben lassen. Fuers
log oder diverse Ausgaben etc. Dabei wird nicht die Strafe zurueckgegeben,
sondern die Aktion, die dann nicht mehr moeglich ist, etwa:
- "Forschungspunkte finden"
- "Zaubertraenke finden"
- "Kerben erhalten"
- "Schankhaeuser betreten"

Argumente:

type     - eine integer id aus penalty.h die den Straftyp qualifiziert

Rueckgabewerte:
String   - wie gesagt, die mit Strafe belegte Aktion

Was nun noch fehlt, ist ne Amnestie-Funktion UND natuerlich muss das in all
die Stellen der Lib eingebaut werden, wo die Aktion stattfindet.


public varargs int QueryAllPenalties(mixed player)
 
Gibt alle Strafen eines Spielers 'player' oder alle Strafen aller Spieler
(wenn players==0) als Kopie des internen Mappings zurueck.
 
Argumente:

player   - Spielerobjekt oder Spieler-UID oder 0

Rueckgabewerte:
mapping    - Kopie des internen Mappings fuer diesen oder alle Spieler
0          - keine Strafe fuer diesen Spieler angemeldet


public int RemovePenalty(mixed player, int type)
 
Entfernet eine einzelne Strafe von einem Spieler, analog AddPenalty.
 
Argumente:

player   - Spielerobjekt oder Spieler-UID
type     - eine integer id aus penalty.h die den Straftyp qualifiziert

Rueckgabewerte:
1        - Erfolg
0        - keine Berechtigung oder keine Strafe fuer diesen Spieler bekannt


public varargs int RemoveAllPenalties(mixed player)
 
Entfernt alle Strafen eines Spielers oder alle Strafen aller Spieler
(Amnestie). Beiden Varianten rufen rekursiv RemovePenalty() auf.

Argumente:

player   - Spielerobjekt oder Spieler-UID oder 0

Rueckgabewerte:
1        - Erfolg
0        - keine Berechtigung oder keine Strafe fuer diesen Spieler bekannt


Start » Magierhandbuch » Docu » Konzepte » Strafe Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!