blob: 77f302ccf3414b0cb94fe037a09feec8a3de21ed [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001FUNKTION:
2 void tell_room(string|object obj, string str);
3 void tell_room(string|object obj, string str, object *exclude);
4
5 void tell_room(string|object obj, mixed *|mapping|struct|object msg)
6 void tell_room(string|object obj, mixed *|mapping|struct|object msg
7 , object *exclude);
8
9BESCHREIBUNG:
10 Gibt einen Text <str> an den Raum <obj> aus. <obj> kann auch der
11 Objektname des Raumes als String sein.
12 Wenn das Raumobjekt mit seinem Namen angegeben ist, sucht der Driver
13 das Objekt unter diesem Namen und laedt es, falls notwendig.
14
15 Ist die Nachricht ein String, wird der Text an interaktive Objekte
16 direkt ausgegeben, fuer andere Objekte wird die lfun catch_tell()
17 in diesen aufgerufen.
18 Falls ein Lewebesen die Funktion catch_tell() definiert (-> shadow),
19 so wird der Text hier ausgewertet und nicht an den User ausgegeben.
20
21 Wenn das zweite Argument, die Nachricht, kein String ist, wird in
22 allen Lebewesen, die den Text erhalten, catch_msg() anstatt
23 catch_tell() aufgerufen.
24
25 Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
26 die darin enthaltenen Objekte gesendet wird.
27 Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
28 und diese selbst nicht erhalten soll.
29
30BEMERKUNGEN:
31 - der Eintrag von mehreren Anwesenden in *exclude ist moeglich
32 - wird in einem catch_msg() der Wert von <msg> veraendert, erhalten
33 alle nachfolgenden Objekte das veraenderte <msg> (Referenz!)
34
35 - say("str") ist verhaltensgleich zu
36 tell_room(environment(), "str", ({this_player()||this_object()}))
37
38BEISPIELE:
39 // Dies ist ein einfaches Beispiel fuer eine Meldung an alle An-
40 // wesenden im Raum.
41
42 tell_room(this_object(),"Ein leichter Wind kommt auf.\n");
43
44 // Diese Meldung wird im Raum /d/ebene/ark/raum.c ausgegeben, dieser
45 // Raum muss nicht derjenige sein, in dem das tell_room() ausgefuehrt
46 // wird.
47
48 tell_room("/d/ebene/ark/raum","Ein leichter Wind kommt auf.\n");
49
50
51 // Diese Meldung wird an alle Anwesenden im Raum AUSSER this_player()
52 // (der diese Meldung ausgeloest hat) ausgegeben. Der muss eine ge-
53 // sonderte Meldung ueber sein Stolpern per write() oder
54 // tell_object() bekommen.
55 tell_room(this_object(),
56 break_string(this_player()->Name()+" stolpert.", 78),
57 ({ this_player() }));
58 tell_object(this_player(), "Du stolperst.\n");
59
60 // Ein Beispiel mit zwei Objekten, das zeigt, wie das Zusammenspiel
61 // von catch_tell() und tell_room() ablaueft. Objekt1 ist ein
62 // Lebewesen mit Namen "Dummymonster", Objekt2 verteilt die Meldung:
63
64 Objekt1 (ein Lebewesen, steht im Env von this_player()):
65 void catch_tell(string str) {
66 write("Empfangen: "+str+"\n");
67 }
68
69 Objekt2:
70 void fun() {
71 tell_room(environment(this_player()), "Hallo Welt!\n");
72 }
73
74SIEHE AUCH
75 Aehnlich: tell_object(E), write(E), shout(E), say(E), printf(E)
76 Verwandt: catch_tell(E), catch_msg(A)
77 Sonstiges: object_name(E)
78
797.Aug 2007 Gloinson