TestIgnore()

FUNKTION

public int TestIgnore(string|string* arg)

DEFINIERT IN

/std/player/comm.c

ARGUMENTE

arg
    String oder Array von Strings, die getestet werden sollen,
    Format jeweils: [spieler].aktion[.qualifizierer]

RUeCKGABEWERT

0, wenn arg nicht ignoriert wird
MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird

BESCHREIBUNG

Es wird geprueft, ob der Spieler irgendeinen Eintrag auf seiner Liste
hat, der dazu fuehrt, dass <arg> ignoriert wird. Hierbei kommen je nach
den Angaben in <arg> folgende Regeln zum Tragen:
1) spieler
   Wird der Spieler ignoriert?
2) .aktion
   Ignoriert der Spieler .aktion, d.h. die Aktion komplett (OHNE
   Qualifizierer)?
3) spieler.aktion
   Ignoriert der Spieler spieler, .aktion oder spieler.aktion?
4) spieler.aktion.qualifizierer
   Ignoriert der Spieler spieler, .aktion, spieler.aktion oder
   spieler.aktion.qualifizierer?
5) .aktion.qualifizierer
   Ignoriert der Spieler .aktion oder .aktion.qualifizierer?

Da TestIgnore() damit durchaus etwas aufwendiger sein kann, sollte
man dies nicht unnoetig oft aufrufen. (Braucht man das Ergebnis z.B.
kurz spaeter nochmal, koennte man das Ergebnis speichern.) Wird der
Qualifizierer nicht gebraucht, sollte man ihn weglassen.

BEISPIEL

if (!this_player()->TestIgnore("andy"))
  tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");

// Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
// Spieler (this_player()) an einem anderen Spieler (target)
if (!target->TestIgnore( ({getuid(this_player()) + ".kratze",
                              getuid(this_player()) + ".kratz"}) ))
{
  tell_object(target, this_player()->Name()+" kratzt dich.\n");
  tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
}
else
  tell_object(this_player(), target->Name()+" ignoriert dich.\n");

// allumfassender Ignorier-Check in einer Gilde (Klerus) auf
// eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
// an einem zu kurierenden Spieler (target)
if (target->TestIgnore(getuid(caster)+".kuriere.klerus"))
  tell_object(caster, break_string(
    target->Name()+" ignoriert deinen Versuch.", 78));

SIEHE AUCH

P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c

26.04.2014 Zesstra