SYNOPSIS
        void tell_room(string|object obj, string str)
        void tell_room(string|object obj, string str, object *exclude)

        void tell_room(string|object obj, mixed *|mapping|struct|object msg)
        void tell_room(string|object obj, mixed *|mapping|struct|object msg,
                                                     object *exclude)

BESCHREIBUNG
        Gibt einen Text <str> an den Raum <obj> aus. <obj> kann auch der
        Name des Raumes als String sein. Wenn das Objekt, das die Meldung
        erhaelt, nicht ein interaktives Objekt (also kein User) ist, wird
        im Empfaenger die Funktion catch_tell() mit dem Text als Argument
        aufgerufen. Falls ein Lebewesen die Funktion catch_tell() definiert,
        wird der Text hier ausgewertet und nicht an den User ausgegeben.
        Wenn das Empfaengerobjekt mit seinem Namen angegeben ist, sucht der
        Driver das Objekt unter diesem Namen und laedt es, falls notwendig.
        Wenn das Array <*exclude> angegeben ist, wird der Text an die
        Objekte in <*exclude> nicht ausgegeben.

        Wenn das zweite Argument ein nicht-String ist, wird in allen
        Lebewesen, die den Text erhalten, catch_msg() aufgerufen (statt
        catch_tell()).

BEISPIELE
        An alle Lebewesen im Raum soll ein simples "Hi!" gesendet werden:

            tell_object(environment(this_player()), "Hi!\n");

        Folgendes Beispiel zeigt, wie tell_room() zusammen mit catch_tell()
        funktioniert.

        Objekt1 (ein Lebewesen):
            void catch_tell(string str) {
                write("Empfangen: "+str+"\n");
            }

        Objekt2:
            void fun() {
                tell_room(environment(this_player()), "Hallo Welt!\n");
            }

GESCHICHTE
        LDMud 3.3.686 erlaubt die Verwendung eines mapping/struct/object als
        zweites Argument.

SIEHE AUCH
        write(E), say(E), tell_object(E), catch_tell(A), catch_msg(A)
