SYNOPSIS 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); BESCHREIBUNG Es bestehen zwei Hauptanwendungen fuer say(): Wenn das erste Argument ein String ist, wird er an alle lebendigen Objekte im aktuellen Raum gesendet, ausser zum Objekt, das die Funktion aufgerufen hat. Wenn das erste Argument ein nicht-String ist, wird die Lfun catch_msg() in allen lebendigen Objekt im Raum aufgerufen, ausser im Objekt, das say() aufgerufen hat. Der Wert wird als erstes Argument an catch_msg() uebergeben, das aufrufende Objekt als zweites Argument. MERKE: Wenn die Lfun catch_msg() den Wert veraendert, erhalten alle nachfolgenden Objekte das veraenderte . 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 ist, werden das aufrufende Objekt und von der Meldung ausgeschlossen. Wenn das zweite Argument ein Array 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 dieses als das aufrufende Objekt. - Wenn say() aus einem nicht-lebendigen Objekt als Resultat einer Handlung eines Benutzers aufgerufen wird (das heisst, this_player() ist gueltig), gilt this_player() als aufrufendes Objekt. - In allen anderen Faellen gilt das Objekt, das say() aufgerufen hat, als aufrufendes Objekt. BEISPIELE 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, sodass write() an den aktuellen Benutzer geht. Objekt 1 (living): void catch_tell(string str) { write("Empfangen: "+str+"\n"); } Objekt 2 (nicht living): 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. Object 1 (living): void catch_msg(mixed *arr, object who) { int i; if(!arr) return; for(i=0;i veraendert, erhalten alle nachfolgenden Objekte das veraenderte . 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)