MUX for MUCKers

From TinyMUX
Jump to: navigation, search

Welcome, MUCKer, to the world of MUSH and MUX! While there are strong thematic similarities between games running on MUCK and MUX code-bases, there are also many minor but significant differences that can trip a newcomer up. Think of it as visiting a different country: The language may be close enough for you to get by, except for some words that have embarrassingly different meanings, and the people drive on the wrong side of the road. This document is intended to help you understand the local customs, as it were.

Basic communication

MUX uses SAY and POSE commands, like MUCK does, with the same single-character shortcuts. The main difference here is that MUX will always insert a space between a name and the rest of the pose, even if the pose begins with a comma or other punctuation.
To pose without a space between the name and the pose, use the SEMIPOSE command, usually abbreviated as a semicolon.
‘Spoofing’ is accomplished using the @EMIT command. Similarly, the term ‘to spoof’ is often replaced with ‘to emit’, as in ‘I emitted a scene the other night.’

Paging, Mail, Privacy and Flags

The MUX ‘page’ command is often a source of confusion for MUCKers. A very brief run down of MUX page functions is:
p[age] <player>= <message> -- Sends the message to the targeted player. More than one player can be paged, by adding the others’ names before the equals sign.
A player with a multi-word name can be paged by putting their name in double quotes: page “John Doe”=Hi. They can be added to a multipage the same way.
Page =<message> will page the last group of players that you paged. It is not a ‘reply’ function, and mistaking it for one is a leading cause of mispages among new MUXers.
Note: there is NO EQUIVALENT to MUCK’s ‘#r’ or ‘#R’ command!
Similarly, there is no direct analogue to the #ignore or #mail options. MUX incorporates page and @mail permissions into a system of @locks, which operate under identical logic to MUCK locks. Some MUXes incorporate a +ignore command, but this is by no means standard to all MUXes.

MUX mailing hardcode is powerful and versatile, but its array of help files alone can be daunting to a new user. Fortunately, there is an easy, MUCK-similar quick-mail command:

@mail/quick <recipient list>/<Topic>=<Message> functions very similarly to page #mail.

Similarly:
@mail without an argument will give a list of messages waiting for you.
@mail <message number> will display the contents of the selected mail message.
@mail/clear <message number> will mark a message for deletion when you log off. @mail/purge deletes all /cleared messages, without having to log out.

MUX uses a variety of flags, both for characters and other objects. Some, like Haven or Jump_OK, will be immediately familiar. Others are for staff use, or fulfill esoteric purposes. Two are of particular note to new players: Unfindable and Nospoof.
UNFINDABLE works as one might expect it to. Any program (save one that runs with staff-level privileges) that queries an unfindable player’s location, or anyone within a location flagged unfindable, will return an error message.
NOSPOOF is similarly self-explanatory. It is the only way for a player to see the source of an @emitted message, but only affects messages sent after the flag has been set. It also produces a lot of extraneous information.

Hardcode and Softcode

Normally in MUX, any command that begins with an ‘@’, or is listed under the ‘help’ command, is hardcoded-- built into the server software itself. Many MUXes supplement those basic commands with softcoded global commands, similar to the globals that many MUCKs use.
Documentation for hardcoded commands is usually accessed with ‘help <command name>’. A list of hardcoded commands, flags, and other useful information is typically listed under ‘help’ with no argument.
MUX softcode commands are often prefixed with a ‘+’; this is something that the community has settled on at large, much like MUCK globals’ #options. On a typical MUX, you can find a list of these commands by typing ‘+help’ and view the documentation by typing ‘+help <command name>’. Softcoded commands are written in a scripting language that is similar in style and function to MPI. There is no direct equivalent to MUF, and MUF programs will not compile on MUX.

Properties and property manipulation

Properties (or ‘props’) in MUCK are analogous to MUX attributes. They function similarly, but their structure and related commands are quite different.
First of all, MUX attributes are not hierarchical; there is no equivalent to a MUCK propdirectory.
Yes, this means that there is no equivalent to a list-editor like ‘lsedit’.
Second, user-defined attributes are created and set using ‘&’, not ‘@set’. The equivalent of a MUCK ‘@set <object> = <property>:<string>’ command is ‘&<attribute> <target> = <string>’. For example:

MUCK: @set me=test:This string is a test.
MUX: &test me=This string is a test.

Substitutions, formatting, and output

MUX uses pronoun substitutions with ‘%’ like MUCK does, but also incorporates formatting and other substitutions. For the beginning user, formatting substitutions are highly important: MUX reads strings much in the same way that a web browser reads HTML; MUX ignores extraneous spaces and line breaks, and normally executes any code found in the string, whereas MUCK will return the contents of the string as plain text.
For example, using a ‘say’ command with MPI and equivalent MUSHcode ‘time’ commands:

MUCK: SAY {time:}
MUCK: Foozle says, “{time:}”
MUX: SAY time()
MUX: Foozle says “Fri Aug 24 13:50:40 2007”

To format descriptions into paragraphs or tables, the %b, %r and %t substitutions are used. ‘%b’ is a hard space that the command parser will not ignore. %r is a hard carriage return. %t inserts a tab. Substitutions are processed in order, and they can make it difficult for someone to read an un-parsed description or attribute. On the other hand, -not- using them can make it excruciatingly difficult to read descriptions or mailed messages.
For example:

@desc me=%tThis is the first paragraph of an example description.%r%tThis is the second paragraph.”

Will return the following when someone looks at you:

This is the first paragraph of an example description.
This is the second paragraph.

Many players use %r and %t to format their poses and emits, as well as their descriptions. Just as many do not. Some consider the use of inline code in poses to be poor form, so it’s advisable to consult your fellow players regarding formatting etiquette.

Escaping code

Having a command parser that reads and executes code can be a problem, especially when you’re trying to tell someone about some code, rather than showing it to them. Typically, entering an escape character twice will force it to be displayed. Eg: Typing ‘%%t’ will produce ‘%t’ instead of a tab character.
For softcode, the easiest method is to frame the code with square brackets, and precede it with a backslash. Eg: \[time()] will display as [time()]. Square brackets are an integral part of softcode, but their function is outside the scope of this document.

A note on etiquette

Being confronted by a new codebase can be daunting and frustrating, and few people like to be made to feel like rank newbies all over again. With that said, please try to avoid complaining about differences between MUX and MUCK. Your staff and fellow players will be happy to help you adjust, if you are willing to, and have probably heard it all before if you’re not.
MUX is constantly under development, but your administrator may not have the skill or the inclination to dig into the hardcode and make major changes at the behest of a new arrival. The developers welcome suggestions, but won’t act on all that they receive.