Refer to Ginger's Book Of Idiosyncrasies for help on exactly how to interpret my examples.
Everything you see on a MUCK is called an object. The players you talk to, the rooms you stand in, the chili dog you pick up off the floor--these are all objects. Different kinds of objects have different properties: obviously you can't stand inside a chili dog, and, no matter how much you ask, the person you're talking to isn't going to let you cover them with ketchup. Objects with different properties have different names. (Type 'help types' to see them all.) The type of object called an exit will let you:
Exits cost 1 penny to open and one penny to link. Type 'help costs' for more.
Before you can do anything with an exit, you must
actually make one. This is done via the @open
command ('help @open'). When you @open an exit, you create a doorway
into nowhere--like a door that opens onto a brick wall. You can then
make the exit do whatever you like. To @open an exit, you type:
@open [name of exit]
where [name of exit] can be anything: 'west', 'south', 'north', 'my bedroom', 'sit', 'dance floor', or even 'garbanzo bean', if you feel like it. For example, if you type:
in your bedroom, you open a door in your bedroom that answers to ANY of the following names: 'east', 'e', 'bathroom', 'b', or 'bath'. To use the exit, you would type any of those names. See the Naming of Exits for more.
Of course, @open just creates your exit leading into a brick wall. You'll need to @link it somewhere before people can go through it!
With the @open command ('help @open'), you create a door leading
to nowhere. With the @link command ('help @link'), you knock down the
brick wall, and make the exit go somewhere. Here's how!
Let's pretend you have two rooms ('help types'), and want to make an exit between them. One is your bedroom, with a database number of #1234, and the other is your bathroom, with a database number of #2345. (If you don't know what the numbers mean, type 'help number'.) You can only connect rooms that you own with exits. (Type 'help control'.)
You start by standing in your bedroom. You need to make a door out of it:
@open east;e;bathroom;bath;b (see 'help @open')
Now you have the door. To knock down that brick wall, and connect
it to your bathroom (so you can get in!) you type:
@link east=#2345 (see 'help @link')
The #2345 is the number ('help number') of your bathroom, and @link links the exit to it.
Now your exit's complete! To go through it, into the bathroom, you can type any one of its names: 'east', 'e', 'bathroom', 'bath', or 'b'!
To make an exit from the bathroom into the bedroom, stand in the bathroom, and type the following two lines, reversing the process:
1. @open west;w;bedroom;b;bed (makes that door going back!) 2. @link west=#1234 (links the door to your bedroom!)
The @open and @link commands can be combined, as well, into one
command. This makes life a little easier on the builder. :) It's done
by adding an = sign onto the end of the @open command and telling the
door where to go, by giving it a database ref ('help number') to go
to. Let's look at our bedroom and bathroom again, and connect
Standing in the bedroom, you type:
@open east;e;bathroom;b;bath=#2345 (opens the door *and* links it!)
Now your exit is created and linked, and you can walk through it into the bathroom and type:
@open west;w;bedroom;bed;b=#1234 (an exit back to the bedroom!)
Now you have a door that works both ways, and you can get from your bedroom into your bathroom, and vice versa!
Well, @open and @link are all very well, but it's a lot of work walking back and forth between two rooms to open exits, and that's why we created a command called @backlink, to make things easier. @backlink creates two exits between rooms, one 'into' the room you're 'aiming' at, and one 'out' of that room 'into' the one you're standing in. Taking our bedroom/bathroom example again, we can type just one command to make our two exits: [Standing in your bedroom, you type this line:]
@backlink east;e;bathroom;b;bath=#2345,west;w;bedroom;bed;b (@backlink [ 'in' exit ] =[ db# ] , [ 'out' exit ] )
Voila'! You've now opened two exits, and you can get back and forth between your bedroom and bathroom without problems. Handy, isn't it?
Every object on a MUCK has a name. Players have names like 'Guest1' and 'Bob'. Things have names like 'Chili Dog' and 'Tree'. Exits have names like 'east' and 'west'. But there are special problems with exit names. To get from your bedroom to your bathroom, for instance, you might want players to be able to type either 'east', or 'e', or 'bathroom', or 'bath', or 'b'. Well, instead of making five different exits, each with a different name, you can make ONE exit, called 'east;e;bathroom;bath;b', separating each new exit name with a semicolon (;). Users can type any of those names to get through the exit. [NOTE: this kind of name only makes sense with exits.]
These names are NOT case-sensitive. That is, for the 'east;e;bathroom' exit described above, players can also type 'E', 'EAST', 'BATHroom', or 'B' to go through the exit. Whether the name is typed in capitals or not doesn't matter.
If you use Obvious Exits ('@succ here=@1393') to show all the exits in a room in its description, only the FIRST name of the exit will show up. If you're using Obvious Exits in your bedroom, for instance, your 'east;e;bathroom' exit will only show in the description as 'east'. If you wanted to fancy up the name (since Obvious Exits only shows the first name of an exit (the stuff before the first semicolon), you can make the first name very fancy to make your room description look different), you could name it '(E)ast;e;east;bathroom;bath;b' or anything else. People could still type just 'e' to get through, but the name "looks better".
You can make exits do tricks, too. If you want to make an object
you can give to someone else, so that they can always type 'gaze' and
be transported to you, you can do this (see 'help @create'):
[If your object is named Transporter Ring, and you want people to type 'gaze':]
@act gaze=Transporter Ring (this opens an exit *attached* to the ring ('help @action').) @link gaze=me (connects the opened exit to *you*)
Now, anyone holding the ring can type 'gaze', and they will be transported directly to your location (the room you're in). They won't appear inside you, or in your inventory. You could also @link 'gaze' to your bedroom, and they would appear there.
You can also make "fake actions" in your rooms so that people can 'sit' on things, or 'climb' into your bed, even if you don't have a bed object that's actually sitting somewhere in the room.
If you'd like to have people be able to sit down in your room, even if there isn't an object called 'chair' there, stand in your room and type:
@open sit=here (this opens an exit called 'sit' and links it to the room you're in, so you don't go anywhere when you use the exit) @lock sit=me&!me (allows the @fail message to be seen) @fail sit=[a message, like "You sit down on the chair."] @ofail sit=[another message, like "sits down on the chair."]
The @fail and @ofail commands govern the messages people see when they try to 'sit' down. The @ofail is prepended with the sitter's name; if Bob typed 'sit' in the room with the action, he would see 'You sit down on the chair.', and everyone else in the room would see 'Bob sits down on the chair.' For more help on this, type 'help bogus'.
You can also make exits retrieve items for you. Let's look at the Transporter Ring from the First Page of "Special Tricks": if you'd given that to Ralph, and wanted it back, you couldn't get it out of his inventory without some fiddling. However, you can @link an exit to the ring, and, whenever you typed the name of the exit, the ring would jump into your inventory, no matter where it had been before. To make an exit called 'getring' that would always call your Transporter Ring into your inventory, you would type:
@act getring=me (creates an exit called 'getring', attached to you) @link getring=Transporter Ring (links 'getring' to the Transporter)
Now, whenever you type 'getring', your ring will appear in your possession, as if by magic. To see your inventory, type 'i'.