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)