blob: 61dc3733dc193e97c6d3bc64a8617971dd4d87b9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
Zesstrab6ac9f62020-01-21 11:11:16 +01002 void say(string str)
3 void say(string str, object exclude)
4 void say(string str, object *excludes)
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstrab6ac9f62020-01-21 11:11:16 +01006 void say(mixed *|mapping|struct|object msg)
7 void say(mixed *|mapping|struct|object msg, object exclude)
8 void say(mixed *|mapping|struct|object msg, object *excludes)
MG Mud User88f12472016-06-24 23:31:02 +02009
10BESCHREIBUNG
11 Es bestehen zwei Hauptanwendungen fuer say():
12
13 Wenn das erste Argument ein String <str> ist, wird er an alle
14 lebendigen Objekte im aktuellen Raum gesendet, ausser zum Objekt,
15 das die Funktion aufgerufen hat.
16
Zesstrab6ac9f62020-01-21 11:11:16 +010017 Wenn das erste Argument ein nicht-String <msg> ist, wird die Lfun
18 catch_msg() in allen lebendigen Objekt im Raum aufgerufen, ausser im
19 Objekt, das say() aufgerufen hat. Der Wert <msg> wird als erstes
20 Argument an catch_msg() uebergeben, das aufrufende Objekt als zweites
21 Argument.
MG Mud User88f12472016-06-24 23:31:02 +020022
Zesstrab6ac9f62020-01-21 11:11:16 +010023 MERKE: Wenn die Lfun catch_msg() den Wert <msg> veraendert, erhalten
24 alle nachfolgenden Objekte das veraenderte <msg>.
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstrab6ac9f62020-01-21 11:11:16 +010026 Wird der Efun say() ein zweites Argument angegeben, kann man andere
27 Objekte als nur das aufrufende Objekt ausschliessen. Wenn das zweite
28 Argument ein einzelnes Objekt <exclude> ist, werden das aufrufende
29 Objekt und <exclude> von der Meldung ausgeschlossen. Wenn das zweite
30 Argument ein Array <excludes> ist, werden alle Objekte aus dieser
31 Liste zusaetzlich zum aufrufenden Objekt als Empfaenger von say()
32 ausgeschlossen.
MG Mud User88f12472016-06-24 23:31:02 +020033
34 Das aufrufende Objekt wird nach folgenden Regeln bestimmt:
35 - Wenn say() aus einem lebendigen Objekt aufgerufen wird, gilt
36 dieses als das aufrufende Objekt.
37 - Wenn say() aus einem nicht-lebendigen Objekt als Resultat einer
38 Handlung eines Benutzers aufgerufen wird (das heisst,
39 this_player() ist gueltig), gilt this_player() als aufrufendes
40 Objekt.
Zesstrab6ac9f62020-01-21 11:11:16 +010041 - In allen anderen Faellen gilt das Objekt, das say() aufgerufen
42 hat, als aufrufendes Objekt.
MG Mud User88f12472016-06-24 23:31:02 +020043
44BEISPIELE
Zesstrab6ac9f62020-01-21 11:11:16 +010045 Folgende Aufrufe sind gleich, wenn sie aus einem nicht lebendigen
46 Objekt aufgerufen werden:
MG Mud User88f12472016-06-24 23:31:02 +020047
48 say("Hi!\n");
49 say("Hi!\n", this_player());
50
Zesstrab6ac9f62020-01-21 11:11:16 +010051 Das folgende Beispiel zeigt, wie say() zusammen mit catch_tell()
52 funktioniert. Das zweite Objekt darf nicht lebendig sein, sodass
53 write() an den aktuellen Benutzer geht.
MG Mud User88f12472016-06-24 23:31:02 +020054
55 Objekt 1 (living):
Zesstrab6ac9f62020-01-21 11:11:16 +010056 void catch_tell(string str)
57 {
MG Mud User88f12472016-06-24 23:31:02 +020058 write("Empfangen: "+str+"\n");
59 }
60
61 Objekt 2 (nicht living):
Zesstrab6ac9f62020-01-21 11:11:16 +010062 void func()
63 {
MG Mud User88f12472016-06-24 23:31:02 +020064 ...
65 say("HiHo!\n");
66 ...
67 }
68
Zesstrab6ac9f62020-01-21 11:11:16 +010069 Ein etwas komplexeres Beispiel zeigt das Zusammenspiel von say()
70 und catch_msg(). Auch hier wird ein nicht-lebendiges Objekt
71 verwendet, das die Nachricht ausgibt, sodass das 'wer' in
72 catch_msg() auf den aktuellen Benutzer zeigt.
MG Mud User88f12472016-06-24 23:31:02 +020073
74 Object 1 (living):
75 void catch_msg(mixed *arr, object who) {
Zesstrab6ac9f62020-01-21 11:11:16 +010076 int i;
77 if (!arr) return;
78 for (i=0;i<sizeof(arr);i++)
79 tell_object(who, (stringp(arr[i]) ? arr[i] : "-/-")+"\n");
MG Mud User88f12472016-06-24 23:31:02 +020080 }
81
82 Object 2 (nicht living):
83 void func() {
84 ...
Zesstrab6ac9f62020-01-21 11:11:16 +010085 say(({ "Hello", "there!" }));
MG Mud User88f12472016-06-24 23:31:02 +020086 ...
87 }
88
Zesstrab6ac9f62020-01-21 11:11:16 +010089ANMERKUNGEN
90 Wenn die Lfun catch_msg() den Wert <msg> veraendert, erhalten alle
91 nachfolgenden Objekte das veraenderte <msg>.
MG Mud User88f12472016-06-24 23:31:02 +020092
Zesstrab6ac9f62020-01-21 11:11:16 +010093GESCHICHTE
94 LDMud 3.3.686 erlaubt die Verwendung eines mapping/struct/object als
95 zweites Argument.
96
97SIEHE AUCH
98 write(E), tell_object(E), tell_room(E)