# MOO Gate System (was Re: Database Editors)

Kipp the Kidd (mcmudge@mailbox.syr.edu)
Thu, 14 Sep 1995 08:49:36 PDT

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    On Wed, 13 Sep 1995, Nate Massey wrote:

    > $gate:send("MOOname", "remote_page","Enigma", "Hi there!");
    >
    > or something like that, and it would send a message through other MOOs
    > eventually to "MOOname", and there would call (if it existed)
    > $gate:gv_remote_page (gv = gate verb) with whatever arguments that were
    > passed through the send (doing an 'un-literal()'... actually, I just
    > $no_one:eval()d it).  On the original side, it would suspend and wait
    > for a return code from the remote side, and then would $gate:send
    > would return it.
    > I was also going to do security so that a person could do porting, etc,
    > however, since it goes through multiple MOOs, it would be difficult to
    > ensure that somewiz somewhere along the line didn't steal passwords,
    > etc.
    >
    > I abandoned the project since school started (actually, I've abandoned
    > several projects since school starts).
    >
    > Does anyone know if something like this has been done?  If not, would
    > people be interested in it?

    I've got a room like this running on MOO2000.  All possible verb calls are
    permed to $no_one, so there are no security problems, een if a remote wiz
    wants to mess with another MOO.  It does not port code, but instead uses a
    puppet-like interface with the other MOO(s) when a player types something.
    When the room first connects to another MOO, it sends the info about every
    object that is in the room; name, aliases, description.  The recieving
    room then creates $listener objects (and puts them in the room) ... they
    have the .name .aliases and .description set appropraitely.  A property on
    the $listener keeps track of {the other MOO's name, the object number of
    the object the $listener is linked to at the other MOO}.  When theese
    things are :notify'd of stuff, the $listener sends to all the connected
    MOO/MUDs: {moo-to-send-the-message-to,obj-number-at-dest-moo,the msg}...
    when the receiving moo gets it, it just :tells args[2] the message.
    In the room, there is a :here_huh verb, that sends the {verb,argstr}
    to the other MOOs.  They then make the $listener 'type' that command...
    the same way puppets do.  If the command fails, it sends 'I don't
    understand that (network.moo_name)' If you're connected to 1 moo, it
    works great, but when on 2 or more, one moo will execute the command, and
    the others will reply with a 'I don't understand that (Mooname)' ...

    If you don't really give a shit about how it works, here's what works:
    to <player> <message>    (* if your 'to' command allows you to
                                say things to objects)
    hug/kiss/lick/punch/kick/etc <player>  (* if you have the FO)
    pet the cat that is on another MOO.
    share drinks with a friend, who is on another MOO.
    give notes to people on another MOO. Yes, $notes.
    People can even put stuff in containers at MOOA and person at MOOB can
    take them out and mess with them.  The objects are not ported, so things
    in MOOA cannot leave the 'connected room' at MOOB.
    Ok, enough bragging....

    - Kipp