Manpages aus Driver aktualisiert.
Hierbei handelt es sich um Manpages, welche vom MG
modifiziert wurden.
Die Bemerkungen und Beispiele wurden ausgelagert in
separate Manpages, um zukuenftige Aktualisierungen
aus dem Driver zu erleichtern.
Change-Id: I5a6248cd65a8cd841831617a92aa1ee191dbf661
diff --git a/doc/efun/say b/doc/efun/say
index 6f0958f..61dc373 100644
--- a/doc/efun/say
+++ b/doc/efun/say
@@ -1,11 +1,11 @@
SYNOPSIS
- void say(string str);
- void say(string str, object exclude);
- void say(string str, object *excludes);
+ void say(string str)
+ void say(string str, object exclude)
+ void say(string str, object *excludes)
- void say(mixed *|mapping|struct|object msg);
- void say(mixed *|mapping|struct|object msg, object exclude);
- void say(mixed *|mapping|struct|object msg, object *excludes);
+ void say(mixed *|mapping|struct|object msg)
+ void say(mixed *|mapping|struct|object msg, object exclude)
+ void say(mixed *|mapping|struct|object msg, object *excludes)
BESCHREIBUNG
Es bestehen zwei Hauptanwendungen fuer say():
@@ -14,21 +14,22 @@
lebendigen Objekte im aktuellen Raum gesendet, ausser zum Objekt,
das die Funktion aufgerufen hat.
- Ist die Nachricht ein String, wird der Text an interaktive Objekte
- direkt ausgegeben, fuer andere Objekte wird die lfun catch_tell()
- in diesen aufgerufen.
- Falls ein Lewebesen die Funktion catch_tell() definiert (-> shadow),
- so wird der Text hier ausgewertet und nicht an den User ausgegeben.
+ Wenn das erste Argument ein nicht-String <msg> ist, wird die Lfun
+ catch_msg() in allen lebendigen Objekt im Raum aufgerufen, ausser im
+ Objekt, das say() aufgerufen hat. Der Wert <msg> wird als erstes
+ Argument an catch_msg() uebergeben, das aufrufende Objekt als zweites
+ Argument.
- Wenn das zweite Argument, die Nachricht, kein String ist, wird in
- allen Lebewesen, die den Text erhalten, catch_msg() anstatt
- catch_tell() aufgerufen.
+ MERKE: Wenn die Lfun catch_msg() den Wert <msg> veraendert, erhalten
+ alle nachfolgenden Objekte das veraenderte <msg>.
- Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
- die darin enthaltenen Objekte gesendet wird. Der Sender muss nicht
- noch einmal aufgefuehrt werden.
- Das ist sinnvoll, wenn zB eine Spielergruppe Ausloeser einer Meldung
- ist und diese selbst nicht erhalten soll.
+ Wird der Efun say() ein zweites Argument angegeben, kann man andere
+ Objekte als nur das aufrufende Objekt ausschliessen. Wenn das zweite
+ Argument ein einzelnes Objekt <exclude> ist, werden das aufrufende
+ Objekt und <exclude> von der Meldung ausgeschlossen. Wenn das zweite
+ Argument ein Array <excludes> ist, werden alle Objekte aus dieser
+ Liste zusaetzlich zum aufrufenden Objekt als Empfaenger von say()
+ ausgeschlossen.
Das aufrufende Objekt wird nach folgenden Regeln bestimmt:
- Wenn say() aus einem lebendigen Objekt aufgerufen wird, gilt
@@ -37,62 +38,61 @@
Handlung eines Benutzers aufgerufen wird (das heisst,
this_player() ist gueltig), gilt this_player() als aufrufendes
Objekt.
- - In allen anderen Faellen (Aufruf aus reset zB) gilt das Objekt,
- das say() aufgerufen hat, als aufrufendes Objekt.
-
-BEMERKUNGEN
- - fuer laengere Meldungen sollte break_string() verwendet werden
- - wird in einem catch_msg() der Wert von <msg> veraendert, erhalten
- alle nachfolgenden Objekte das veraenderte <msg> (Referenz!)
-
- - say(<str>) ist verhaltensgleich zu
- tell_room(environment(), <str>, ({this_player()||this_object()}))
+ - In allen anderen Faellen gilt das Objekt, das say() aufgerufen
+ hat, als aufrufendes Objekt.
BEISPIELE
- // Folgende Aufrufe sind gleich, wenn sie durch ein Spielerkommando
- // in einem nicht lebendigen Objekt aufgeloest werden:
+ Folgende Aufrufe sind gleich, wenn sie aus einem nicht lebendigen
+ Objekt aufgerufen werden:
say("Hi!\n");
say("Hi!\n", this_player());
- // Das folgende Beispiel zeigt, wie say() zusammen mit catch_tell()
- // funktioniert. Das zweite Objekt darf nicht lebendig sein, damit
- // write() an den aktuellen Benutzer geht.
+ Das folgende Beispiel zeigt, wie say() zusammen mit catch_tell()
+ funktioniert. Das zweite Objekt darf nicht lebendig sein, sodass
+ write() an den aktuellen Benutzer geht.
Objekt 1 (living):
- void catch_tell(string str) {
+ void catch_tell(string str)
+ {
write("Empfangen: "+str+"\n");
}
Objekt 2 (nicht living):
- void func() {
+ void func()
+ {
...
say("HiHo!\n");
...
}
- // Ein etwas komplexeres Beispiel zeigt das Zusammenspiel von say()
- // und catch_msg(). Auch hier wird ein nicht-lebendiges Objekt
- // verwendet, das die Nachricht ausgibt, sodass das 'wer' in
- // catch_msg() auf den aktuellen Benutzer zeigt.
+ Ein etwas komplexeres Beispiel zeigt das Zusammenspiel von say()
+ und catch_msg(). Auch hier wird ein nicht-lebendiges Objekt
+ verwendet, das die Nachricht ausgibt, sodass das 'wer' in
+ catch_msg() auf den aktuellen Benutzer zeigt.
Object 1 (living):
void catch_msg(mixed *arr, object who) {
- foreach(mixed element: arr)
- tell_object(who, sprintf("%O\n", element));
+ int i;
+ if (!arr) return;
+ for (i=0;i<sizeof(arr);i++)
+ tell_object(who, (stringp(arr[i]) ? arr[i] : "-/-")+"\n");
}
Object 2 (nicht living):
void func() {
...
- say( ({ "Hello", "there!" }) );
+ say(({ "Hello", "there!" }));
...
}
-SIEHE AUCH
- Aehnlich: tell_room(E), write(E), shout(E), tell_object(E),
- printf(E)
- Verwandt: catch_tell(E), catch_msg(A)
- Sonstiges: object_name(E)
+ANMERKUNGEN
+ Wenn die Lfun catch_msg() den Wert <msg> veraendert, erhalten alle
+ nachfolgenden Objekte das veraenderte <msg>.
-7.Aug 2007 Gloinson
\ No newline at end of file
+GESCHICHTE
+ LDMud 3.3.686 erlaubt die Verwendung eines mapping/struct/object als
+ zweites Argument.
+
+SIEHE AUCH
+ write(E), tell_object(E), tell_room(E)