ldmud-3.3.719/
ldmud-3.3.719/doc/
ldmud-3.3.719/doc/efun.de/
ldmud-3.3.719/doc/efun/
ldmud-3.3.719/doc/man/
ldmud-3.3.719/doc/other/
ldmud-3.3.719/mud/
ldmud-3.3.719/mud/heaven7/
ldmud-3.3.719/mud/lp-245/
ldmud-3.3.719/mud/lp-245/banish/
ldmud-3.3.719/mud/lp-245/doc/
ldmud-3.3.719/mud/lp-245/doc/examples/
ldmud-3.3.719/mud/lp-245/doc/sefun/
ldmud-3.3.719/mud/lp-245/log/
ldmud-3.3.719/mud/lp-245/obj/Go/
ldmud-3.3.719/mud/lp-245/players/lars/
ldmud-3.3.719/mud/lp-245/room/death/
ldmud-3.3.719/mud/lp-245/room/maze1/
ldmud-3.3.719/mud/lp-245/room/sub/
ldmud-3.3.719/mud/lp-245/secure/
ldmud-3.3.719/mud/sticklib/
ldmud-3.3.719/mud/sticklib/src/
ldmud-3.3.719/mudlib/deprecated/
ldmud-3.3.719/mudlib/uni-crasher/
ldmud-3.3.719/pkg/
ldmud-3.3.719/pkg/debugger/
ldmud-3.3.719/pkg/diff/
ldmud-3.3.719/pkg/misc/
ldmud-3.3.719/src/
ldmud-3.3.719/src/autoconf/
ldmud-3.3.719/src/ptmalloc/
ldmud-3.3.719/src/util/
ldmud-3.3.719/src/util/erq/
ldmud-3.3.719/src/util/indent/hosts/next/
ldmud-3.3.719/src/util/xerq/
ldmud-3.3.719/src/util/xerq/lpc/
ldmud-3.3.719/src/util/xerq/lpc/www/
ldmud-3.3.719/test/generic/
ldmud-3.3.719/test/inc/
ldmud-3.3.719/test/t-0000398/
ldmud-3.3.719/test/t-0000548/
ldmud-3.3.719/test/t-030925/
ldmud-3.3.719/test/t-040413/
ldmud-3.3.719/test/t-041124/
ldmud-3.3.719/test/t-language/
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)

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/mapping/struct/object <msg>, the
        lfun catch_msg() of all living objects except the initiator will be
        called.
        This <msg> will be given as first argument to the lfun, and
        the initiating object as the second.
        CAVEAT: If the lfun catch_msg() modifies the content of <msg>, all
        subsequent objects will receive the modified <msg>.

        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.

HISTORY
        LDMud 3.3.686 added the use of a mapping/struct/object as second
        argument.

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