blob: 3e664c0201ffb6f28b24bda4b5c87e0278bf17a3 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001TestIgnore()
2
3FUNKTION:
4 public int TestIgnore(string|string* arg)
5
6DEFINIERT IN:
7 /std/player/comm.c
8
9ARGUMENTE:
10 arg
11 String oder Array von Strings, die getestet werden sollen,
12 Format jeweils: [spieler].aktion[.qualifizierer]
13
14RUeCKGABEWERT:
15 0, wenn arg nicht ignoriert wird
16 MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird
17
18BESCHREIBUNG:
19 Es wird geprueft, ob der Spieler irgendeinen Eintrag auf seiner Liste
20 hat, der dazu fuehrt, dass <arg> ignoriert wird. Hierbei kommen je nach
21 den Angaben in <arg> folgende Regeln zum Tragen:
22 1) spieler
23 Wird der Spieler ignoriert?
24 2) .aktion
25 Ignoriert der Spieler .aktion, d.h. die Aktion komplett (OHNE
26 Qualifizierer)?
27 3) spieler.aktion
28 Ignoriert der Spieler spieler, .aktion oder spieler.aktion?
29 4) spieler.aktion.qualifizierer
30 Ignoriert der Spieler spieler, .aktion, spieler.aktion oder
31 spieler.aktion.qualifizierer?
32 5) .aktion.qualifizierer
33 Ignoriert der Spieler .aktion oder .aktion.qualifizierer?
34
35 Da TestIgnore() damit durchaus etwas aufwendiger sein kann, sollte
36 man dies nicht unnoetig oft aufrufen. (Braucht man das Ergebnis z.B.
37 kurz spaeter nochmal, koennte man das Ergebnis speichern.) Wird der
38 Qualifizierer nicht gebraucht, sollte man ihn weglassen.
39
40BEISPIEL:
41 if (!this_player()->TestIgnore("andy"))
42 tell_object(this_player(), "Andy teilt Dir mit: Hallo!\n");
43
44 // Beispiel fuer eine Ignore-Check fuer Aktion (kratzen) fuer einen
45 // Spieler (this_player()) an einem anderen Spieler (target)
46 if (!target->TestIgnore( ({getuid(this_player()) + ".kratze",
47 getuid(this_player()) + ".kratz"}) ))
48 {
49 tell_object(target, this_player()->Name()+" kratzt dich.\n");
50 tell_object(this_player(), "Du kratzt "+target->Name()+".\n");
51 }
52 else
53 tell_object(this_player(), target->Name()+" ignoriert dich.\n");
54
55 // allumfassender Ignorier-Check in einer Gilde (Klerus) auf
56 // eine Aktion (kurieren) fuer einen bestimmten Spieler (den caster)
57 // an einem zu kurierenden Spieler (target)
58 if (target->TestIgnore(getuid(caster)+".kuriere.klerus"))
59 tell_object(caster, break_string(
60 target->Name()+" ignoriert deinen Versuch.", 78));
61
62SIEHE AUCH:
63 P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c
64
6526.04.2014 Zesstra
66