shout()
=======

FUNKTION
--------
::

     varargs void shout( string text, mixed where )

DEFINIERT IN
------------
::

     /secure/simul_efun.c

ARGUMENTE
---------
::

     text
          Der Text, der ausgegeben werden soll

     where [optional]
          Wo soll man den Text ueberall hoeren koennen?

BESCHREIBUNG
------------
::

     Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
     Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
     Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
     ausgeloest.

     Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
     die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
     Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
     der Raeume festgemacht. Befindet sich this_player() z.B. in
     "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
     orte in "/d/ebene/*" liegen.

     Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
     'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
     (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.

     Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
     von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
     interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
     sehr genau einzuschraenken.

     HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
     ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
     sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
     sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
     zahlreiche shouts belaestigt werden.

RUeCKGABEWERT
-------------
::

     keiner

BEISPIELE
---------
::

     shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
        Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.

     shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
        Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
        aber nicht am anderen Ende des Muds.

     shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
        ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
        trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)

     shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
        Mit Hilfe von regular expressions kann man recht einfach z.B. alle
        Workrooms auf einmal adressieren.

     shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
        Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
        ihn auch noch weit in der Ebene.

SIEHE AUCH
----------
::

     write(), say(), tell_object(), tell_room(), regexp()


Last modified: Sun Nov 28 03:00:00 1999 by Tiamak

