ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
SYNOPSIS
        void say(string str)
        void say(string str, object exclude)
        void say(string str, object *excludes)

        void say(mixed *arr)
        void say(mixed *arr, object exclude)
        void say(mixed *arr, object *excludes)

DESCRIPTION
        There are two major modes of calling:

        If the first argument is a string <str>, it will be send to
        all livings in the current room        except to the initiator.

        If the first argument is an array <arr>, the lfun catch_msg()
        of all living objects except the initiator will be called.
        This array will be given as first argument to the lfun, and
        the initiating object as the second.
        CAVEAT: If the lfun catch_msg() modifies the <arr>, all subsequent
        objects will receive the modified <arr>.

        By specifying a second argument to the efun one can exclude
        more objects than just the initiator. If the second argument
        is a single object <exclude>, both the given object and the
        initiator are excluded from the call. If the second argument
        is an array <excludes>, all objects and just the objects in
        this array are excluded from the call.

        The 'initiator' is determined according to these rules:
          - if the say() is called from within a living object, this
            becomes the initiator
          - if the say() is called from within a dead object as result
            of a user action (i.e. this_player() is valid), this_player()
            becomes the initiator.
          - Else the object calling the say() becomes the initiator.

EXAMPLES
        say("Hi!\n");
        say("Hi!\n", this_player());
        Both calls are equal when called by a not living object.

        Object 1 (living):
           void catch_tell(string str) {
              write("Received: "+str+"\n");
           }
        Object 2 (not living):
           void func() {
              ...
              say("HiHo!\n");
              ...
           }

        This examples shows how say() together with catch_tell()
        works. The 2nd object must not be living so the write() will
        go to the current user.


        Object 1 (living):
           void catch_msg(mixed *arr, object who) {
              int i;
              if(!arr) return;
              for(i=0;i<sizeof(arr);i++)
                 tell_object(who, (stringp(arr[i]) ? arr[i] : "-/-")+"\n");
           }
        Object 2 (not living):
           void func() {
              ...
              say( ({ "Hello", "there!" }) );
              ...
           }

        This is a bit complex example to demonstrate how say() and
        catch_msg() works. Here we also use a non living object to
        send the message so the who in catch_msg() will be the current
        user.

SEE ALSO
        write(E), tell_object(E), tell_room(E)