MongooseA text-based world full of questionable inventions.

All help topics · Link to this topic

Showing help on '$login'

$login


This object manages command parsing for unconnected players and governs the initiation of an actual connection. There are verbs pertaining to registration, controlling player creation, and doing site-locks (see "help blacklist" on $wiz_help).

COMMANDS FOR UNCONNECTED PLAYERS

Recall that for each line that an unconnected player types, the server parses that line into words (the same way normal commands are parsed into a list of words that is then assigned to `args') and then #0:do_login_command is called.

:parse_command (@args) => {verb, @args}
given the sequence of arguments that were fed to #0:do_login_command
this returns the name of a verb on $login to be called together with a
list of arguments to be passed to it.

By default this just returns args iff args[1] names an actual verb on $login that is +x and has args {"any","none","any"}. Otherwise, it returns one of

.blank_command -- verb to call if command line is empty
.bogus_command -- verb to call if command line otherwise unintelligible

In both cases :parse_command returns a verbname followed by the entire args list passed to it (including the would-be verb at the beginning if any).

Currently the following verbs are available to non-connected players

h*elp @h*elp -- print .welcome_message
? -- print a short list of available commands
w*ho @w*ho -- print a list of logged in players (excluding wizards)
co*nnect @co*nnect -- connect to an existing player
cr*eate @cr*eate -- create a new player
up*time @up*time -- tell how long the server has been running
version @version -- tell which version of the server is running
q*uit @q*uit -- logoff

Adding a new command is fairly straightforward; just create a verb on $login, making sure a previous verb doesn't already match the name you want to give it. Then give it args of "any" "none "any" and make sure it is +x. Such a verb should begin with `if (caller != #0) return E_PERM; ...' so as to prevent anyone other from a not-logged-in player from making use of it.

CUSTOMIZATIONS

.welcome_message
/help/ -- the message for "help" to print.
.create_enabled
== 0 => @create prints .registration_string if one tries to use it
== 1 => anyone from a non-blacklisted site (see "help blacklist")
may use @create to make a new player

.registration_address
/help/ -- an email address for character creation requests
.registration_string
/help/ -- string to print to players to give them information about how to get
a character created for them, .registration_address is substituted
for %e, % for %%
.newt_registration_string
/help/ -- string to print to @newted players (see "help @newt").
same substitutions as for .registration_string.

.max_connections
/help/ -- integer representing the maximum connected players permitted on this moo.
.connection_limit_msg
/help/ -- string printed out when this is reached.
.lag_exemptions
/help/ -- list of non-wizard players who may login anyway.

Other verbs
:registration_string() => .registration_string with substitutions
:newt_registration_string() => .newt_registration_string with substitutions
:player_creation_enabled(connection)
decides whether someone on connection should be allowed to create
a player. If you decide this shouldn't depend strictly on the blacklist
and on the value of .create_enabled, here's where the extra code can go.
:check_for_shutdown()
prints a warning message to append to the login banner in the event
that the server will be going down soon.
:check_player_db()
prints a warning message to append to the login banner in the event
that $player_db is being reloaded to warn players that their character
names might not be recognized.

SITE LOCKS
see "help blacklist"