Dokumentation zu: say(E)

HR Image

        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)

        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
        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.

        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() {

        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

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

        write(E), tell_object(E), tell_room(E)

Die Seite ist auch in Deutsch vorhanden.

Start » Magierhandbuch » Docu » Efun » Say Letzte Generierung: 25.04.2021, 01:58
Email an:
Valid HTML 4.01!