ifMUD Advanced User's FAQ

ifMUD has a lot of features and options and so on that have accrued over the years. If you've been a diligent reader of the #mud-updates bb from the beginning you probably know most of them, but if you're the average person I expect there are features out there that would make your life better in some tiny way if you just knew about them. Hence this FAQ. (If 'ifMUD', '#mud-updates', 'bb' and so on are not familiar concepts to you, you probably want the main FAQ instead. Or a puppy. Everyone wants a puppy.)


Table of Contents


The Basics

What's a flag and how do I set one?

Flags are the thing you see in the first line when examining something:

inky #103P Owner: inky Home: #467 wizard spy male expert builder
You set flags with @set me = male and clear them with @set me = !male. Very little configuration these days is done with flags. The main place you're likely to use them is in building/JotaCode-related activities (once you've set up your character originally and set your gender and so on, anyway).

Note that occasionally this document will refer to "the -on flag to @statchannel" -- that's not this kind of flag, it just means you'd type @statc -on.

What's a field and how do I set one?

Fields are the main thing you see when examining something:

address: dbs@cs.wisc.edu [this is a permanent forwarder]
atelin: You transport yourself elsewhere with a wave of the wand.
autocmd: who | @newchannels
away: most likely eating lunch, or cookies. or both.
You set a field with @field me = away : gone with the wind and clear it with @field me = away or @field me = away :. Fields can hold any string, so they often get used when you need to specify something that's not just an on/off switch (say, a number).

What's an option and how do I set one?

Options are the main configuration method on the mud these days. You can see a list of available options by typing @options; this also shows you which ones you have set (they're marked with a * next to them). You can set an option with @oset optionname (you can abbreviate the name as long as it's unambiguous with other option names), and clear it with @oclear optionname. @options gives a short blurb about each option; in addition, you can do help optionname to see more (help topics can, incidentally, also be abbreviated).


Exchanging Personal Information

How do I check people's birthdays or add myself to the birthday banner?

The Birthday Calendar and banner in the lounge were recently unified data-wise, so adding yourself to the banner will make you show up in both places. You can read a month of the calendar with read june, and can use the banner with write 1975-01-25 on banner and find birthday of inky. The calendar also contains a few events and non-players; to add/modify those, talk to a wizard.

How do I check people's locations/time zones, or add myself to the map?

The Even Newer World Map in the lounge holds people's locations and time zones. You can examine it to get a list of everyone, sorted by timezone, and in addition can do findloc inky, searchloc seattle, setloc seattle, wa = pst, delloc, and list timezones.

How do I see who's met who, or record having met someone?

The Automeeter in the lounge tracks who's met who. You can use it with ivemet inky, notmet inky, whomet inky, and nummet inky.

Where can I find old books/lists like people's AIM accounts, PGP key fingerprints, or favorite colors?

The library (type library) holds a bunch of these items. Check out the shelves! DavidW maintains the library, so talk to him about issues or reshelving.


The Channel System

How do I set up a personal alias for referring to a channel?

With channel aliases (help channel-aliases). When you do @addalias foo = testing, you can henceforth use 'foo' in any place you previously used 'testing' (in talking, @statc, etc).

How do I set up a global synonym for anyone to refer to a channel?

With channel synonyms (help @synonymchannel). When you do @synonymchannel foo = testing, anyone can henceforth use 'foo' in any place they could use 'testing' (in talking, @statc, etc). You must be a pope on the channel to use this feature (and please use it in moderation, since the more channel names, the more ambiguous channel names become).

How do I try to reduce channel-name ambiguity?

One way is to give the category ("if/comps/comp02/te") or a category fragment ("comp02/te"); another is to use smartresolve. By setting the smartresolve option, the mud will interpret abbreviated names you type in the context of channels you've recently used yourself or seen traffic on. In some cases, having smartresolve set will lead to more ambiguity than normal -- for instances, if you've been talking on #cookies and suddenly want to start talking on #C. In this case, you can do #"C to disable smartresolve for that one reference. After doing that once, #C will then be in your recent-use list, and smartresolve will correctly prefer it over #cookies. This only occurs because #C is an exact match for what you typed -- if you instead wanted to switch to #corn and typed #cor, this would be an unambiguous reference, so the quotation mark would not be needed.

What do I do if I can't remember if it's #movie or #movies, #crafter or #crafters?

The unpluralize option will automatically strip an s from the end of the thing you typed and try it again, if the version you typed didn't resolve to a channel.

How do I control the setting of the last-used channel?

As most people probably know, the ; command will talk on the last channel you talked on. This is convenient if the name is long, or ambiguous, or you're lazy. Typing ; by itself will display its current setting. In addition to talking, certain other channel commands will set lastchannel. You can control their behavior with the joinnolast, postsetlast, and recapsetlast options (each of which have help topics, although their names are fairly obvious). You can talk on a channel without switching the value of lastchannel by doing %foo I'm talking on foo without changing lastchannel! This is useful for making a side-comment on another channel without interrupting your main conversation. Finally, the chanchange option will turn on notification of lastchannel changes. This is primarily useful if you then set up a trigger in your mud client to do something with the information.

How do I do that . o O ( ) thing? How do I emit on-channel?

The . o O ( ) command is @think (on-channel only -- off-channel it's think). To emit on-channel, use @emit, which also works off-channel (spoof only works off-channel).

Why do my on-channel smileys come out as "inky )"?

Because : is the emote command. To get a proper smiley, you need to use the backslash syntax: :\:).

How do I leave a channel without it printing a message?

There are two ways. The easiest is @leavec #channel = quiet. Alternately, use @tempch.

How do I temporarily join a channel?

The @tempchannel command will join a channel temporarily -- when you log off the mud, it'll automatically (and quietly) leave any channel you used @tempchannel to join. You can also use this to toggle the temporary-join status of a channel you're on -- if you use it a second time on a channel you joined temporarily, you'll then not leave when you log out, and if you use it on a channel you'd joined with @joinchannel, you will leave it when you log out.

How do I set up a temporary channel?

The adhoc flag (see help channel-flags) will mark a channel as temporary: after it hasn't been used for a day, it'll be auto-deleted. The @adhocchannel command is a convenient shortcut for making a temporary channel: @adhoc foo = inky Jota will create a temporary channel, flag it as private and adhoc, and add inky and Jota to it.

What are all the crazy @listchannels arguments?

There are a couple kinds of arguments for @listchannels. There are arguments saying what you want to list, arguments saying the order you want to list them in, and arguments saying the format you want for the listings. To specify what to list, you can provide a category (which lists things in that category), a channel name prefix (which lists all channels with that prefix), -like text (which lists all channels which contain that text), -all (which lists all channels), and -member/-nomember/-flag [!]channel flag (which lists channels with the given flag [un]settings). To specify order, you can use -byname, -bycreated and -bylast -- if you use a + instead of the - it reverses the sort order. Finally, to specify format you can use -tail amount, or 10 (which limits to the last amount results), -count (which just shows the number of channels that would have been listed), and -name/-topic/-created/-last (which set what information is displayed about the channel -- -name gives a non-truncated form of the name). The -recent option is a shortcut for -all +bylast -tail; like -tail, it can take a numeric argument to specify how many to display.

If you set the listflag field on yourself to something, that'll be used as the default arguments to @listc -- for instance, @field me = listflag : -recent 15.

How do I limit what information comes back from @statchannels?

The -on flag to @statc will make the command not show not-logged-in users. The -member/-cardinal/-pope flag will make it only display members of at least that level. These flags can be used together.

How do I customize @recapchannel's behavior?

@recapchannel is a fairly complicated command with a lot of tweakable behavior. The basics let it take the arguments -user player to return lines from that player, or -match text to return lines with that text (if Alex isn't on a channel, try @recap #channel -match http to find urls). The recaptime option will turn on timestamps for recap, and the recapconv option will make recaps go back to "the start of the conversation", defined as a time-gap between people speaking. The gagrecap option will turn on using your gags on channel recap.

If you're a pope, you can clear recap on a channel with @recap #channel = clear, and control recapability with the norecap, memberrecap, and joinrecap flags (see help channel-flags).

How do I temporarily mute a channel/mute all channels?

The @mutechannels command (and its alias @unmutechannels) control this. @mutech on its own lists what you have muted, and @mutech #channel toggles its mute status (if you'd like @mutech to never unmute, use the explicitmute option). By default, if you mute a channel, then nobody talks on it for a while, then somebody talks on it, it'll automatically unmute. You can set the nomutetimeout option to make it never unmute automatically, or explicitly say @mutech #channel = fixed (if you've set the option, you can explicitly say @mutech #channel = unfixed to get the automatic behavior). The default value of "for a while" to timeout is 15 minutes; you can set the mutetime field to something else to give a different value (in minutes). The gagautomute option will automatically mute a channel if someone you have gagged starts a conversation on it ("starts a conversation", again, is defined as talking after no one's talked for a while).

If you do @mutech *, it mutes all channels. You can then do @mutech #channel and it'll unmute only that channel. Doing @mutech * (or @unmutech *) again will clear the mute list and go back to normal channel status.


The Mail and BB System

Is it true that the bb and mail systems are mostly the same code?

Yep. While this doesn't have a lot of effect for the average user, it does mean that they generally support all the same commands (search, delete, unread, etc -- there's no equivalent of bb modify for mail, though), and ranges are valid for both.

How do I modify a message I just posted?

bb modify #channel = 32 : new body (see help bb_modify for more).

How do I re-mark a message as new?

mail unread (or bb unread #channel) will unread the last message; mail unread = 17 or mail unread = last 5 will unread a range. Note that there's only one unread flag per group, so unreading a message will also unread all messagers newer than it.

What sorts of ranges can I use with bb/mail commands?

All sorts! Although they're generally only useful with bb list, note that you can use these ranges with read, delete, and so on as well. Interesting ranges are 3 (message number 3), 3-5 (messages 3-5), first 3/last 3 (the first or last 3 messages), new (unread messages), all (every message), match foo (messages matching the text foo), days 3/hours 3 (messages posted in the last 3 days/hours), from inky (messages posted by inky). See help bb_range for more.

How do I stay on a channel but not have to read its bb with bb *?

bb ignore #channel (see help bb_ignore).

How do I search bbs for some text?

bb search #channel = text or bb search = text to search all channels (please don't abuse this feature -- it can be slow for the whole mud). See help bb_search for more.

How does bb message deletion work?

When you delete a message on a bb, it's flagged as deleted, but doesn't actually go away for good. You can list deleted messages on a channel with bb undel #channel, and undelete a specific one with bb undel #channel = 3. You can only undelete messages you can delete -- your own, or any if you're channel pope. Each bb has a queue of deleted messages which is limited to some number (currently 5); when more messages are deleted than that, the oldest message is permanently purged. See help bb_delete and help bb_undelete for more.

How does mail deletion work?

Unlike the bb setup, when you delete a mail message, it's left in the normal list but marked as deleted. When you log out or run mail purge, delete-flagged messages are really deleted. The noautopurge option will disable automatic purging on logout.

Can I make my mail be auto-checked and -read at the same time as my bb messages?

Yep, use the checkmail option.

How can I control when I'm notified of new bb messages?

Set a value for the bbnotify field (see help bbnotify).


Gags, ignores, and hiding text

How can I temporarily gag someone?

The @ignore command works just like @gag, but goes away when you log out (or until you do @unignore person). Note that @ignore can be used in place of @gag in all uses in this section, including gagging people on specific channels. Also note the interaction of @ignore and @gag.

How can I temporarily un-gag someone?

If you have someone both gagged and ignored, they're effectively ungagged (but since the ignore goes away when you log out, they go back to being gagged then).

How can I ignore my gags for a channel?

Use @gag #channel to disable gags on #channel.

How can I gag someone on a specific channel?

Use @gag person = #channel to gag person only on #channel.

How can I gag a mud object, like that stupid pullcord?

Use @objgag object.

Why can someone I have gagged still whisper to/page me?

Because you don't have the gagprivate option set. Note that if you do have it set, people attempting to whisper to/page you will get a message that you have them gagged.

How can I mute a channel if someone I have gagged starts a conversation?

Look at the gagautomute option.

Why do people I have gagged show up in channel recap?

Because you don't have the gagrecap option set.

What other mud text can I hide?

Quite a bit: see the muteconn, mutedisc, muteunzone, mutezone, nohomemsg, and nosignmsg options. If you want something more, you might want to look into doing it in your mud client.

How can I gag a channel?

Use the @mutechannel command.


Doing things automatically

How do I run a command automatically when I log in or unidle?

Use the autocmd and unidlecmd fields, which contain a pipe-separated list of mud commands to run. I, for instance, did @field me = autocmd : who | @newchannels.

How do I control when I check the bb and mail for new messages?

The nodeidlecheck option disables the automatic check for new bb and mail messages. The checkmail option, if set, causes you to check for/read mail whenever you check for/read bb messages.

How do I automatically see the poll when it's changed?

Set the autopoll option.

How do I automatically see the text when a person signs a book?

Set the fullsignmsg option.

How do I control whether I automatically zone after being idle for a while, or unzone after acting?

Use the nozone and nounzone options.


JotaCode and mud programming

How do I learn JotaCode?

There are plenty of help topics -- help tutorial, help t-programs, and help functions are good places to start.

Are there any built-in verbs that it is easy to provide responses for?

Absolutely! Look at help verbs and help verblist, then do something like @field sandwich = eat : Numf scrumpf.

Is there a cool events system that powers things like the birthday banner?

Certainly! Look at help events.

Did Jaybird code a fancy containers system which is used in places like the library?

Indeed! Look at help containers, but the basics are put object = container and takefrom object = container.


Miscellaneous

Is there a way to see what IP address someone has connected from?

Yes, do @from person, or @from 127.0.0.1 to see anyone connected from that address.

Is there a way to set my character set, so I don't see all those funny characters?

It doesn't work perfectly, but try @field me = charset : iso-8859-1 (or whatever character set is appropriate -- help charset) has a list. Zarf created a charset sampler object in the lounge which you can examine to see how well it's working.

Is there a way I can have spaces automatically put around urls people mention, for easier cutting-and-pasting?

Set the urlfix option. This will also add "http://" before urls that just begin with "www.".

Is there a way I can prevent new characters from being created with my name?

The reserved names command lists currently-reserved names, and wizards can do add reserved name Bob to add a name to the reserved list. Names on this list can't be used by new players or the @name command. If you'd like a name added to the list, ask a wizard.

Why do emotes behave weird when the first character is punctuation?

They don't behave weird, they behave intelligently. Mostly. There's a list of punctuation characters (', :, etc) which are normally printed with no space before them when emoting, so that you can do :'s feet are webbed and have it look correct. If you don't want this behavior, put a backslash before the punctuation -- :\'s feet are webbed will be displayed as "inky 's feet are webbed" with the extra space. As a bonus answer, the way to do a smiley on-channel is therefore :\:).

Is there a cool system for reading and saving funny quotations by mudders?

See help quote. In particular, note quote inky = funny quote by inky, quote list, quote inky, and quote new. The last-mentioned command will show a chunk of new quotes, and you can type it again to see more; to disable this behavior see the quoteunpaged option.

Is there a way to paste a chunk of text onto a channel or with a prefix?

Yes, @paste. To paste to a channel, type @paste #channel :| (or, as a shortcut for that, #channel @paste), hit return, then paste the text into your mud window, and each line will be sent with the prefix "#channel :|" before it. Initial whitespace will be trimmed from the lines you paste, unless you have the pastenotrim option set. In addition, for your pasting pleasure, "|" at the start of a line is short for ":|".

Is there a command I can send to the mud to check my idle time without disturbing it?

Yes, idle.

Is there a command I can send to the mud that produces no output?

Yes, qidle.

Did markm write a snazzy AJAX version of the web client?

Yes! It's linked right here (or follow the web client link from the main page).

If I want to get my own copy of the mud running or view the source, what do I do?

There are two parts to the mud distribution; the source code and the distribution data files. If you want to actually get the mud running, get the second one and look at the included README. If you have any issues getting either to work, talk to inky.