MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | TestIgnore() |
| 2 | |
| 3 | FUNKTION: |
| 4 | public int TestIgnore(string|string* arg) |
| 5 | |
| 6 | DEFINIERT IN: |
| 7 | /std/player/comm.c |
| 8 | |
| 9 | ARGUMENTE: |
| 10 | arg |
| 11 | String oder Array von Strings, die getestet werden sollen, |
| 12 | Format jeweils: [spieler].aktion[.qualifizierer] |
| 13 | |
| 14 | RUeCKGABEWERT: |
| 15 | 0, wenn arg nicht ignoriert wird |
| 16 | MSG_IGNORED, wenn (min. ein Element von) arg ignoriert wird |
| 17 | |
| 18 | BESCHREIBUNG: |
| 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 | |
| 40 | BEISPIEL: |
| 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 | |
| 62 | SIEHE AUCH: |
| 63 | P_IGNORE, AddIgnore, RemoveIgnore, TestIgnoreSimple, /std/player/comm.c |
| 64 | |
| 65 | 26.04.2014 Zesstra |
| 66 | |