WhiteFire's Lock Manager

Here's something to help you out with your building. I've experimented with WhiteFire's lock manager for a little while, and it works very well! (It's also a heck of a lot easier to use and more flexable than the raw @lock command.

Setup

To set yourself up with it, do the following: @action lock=me @link lock=#41107 For each exit that you want to have controlled by the lock manager, do: @lock <exit>=#50173 lock #set <exit> This will let you control the lock on each exit separately (and if you want access to a given room completely controlled, you'll have to do the same commands on each exit).

You can set up a bunch of locks to all use the same control database, but its only a little more complicated. This should make all the locks that use the same database match - a change made to any one of the locks affects all of them (I haven't done this one, but I don't see why the docs should lie:). To set it up, you do the following (the #dbnumber is the dbnumber of the exit, room, or object that's going to contain the lock database, and should be the same for all the locks that are supposed to share the same controls): @lock <exit1>=#50173 @set <exit1>=_lock_dbref:<#dbnumber> @lock <exit2>=#50173 @set <exit2>=_lock_dbref:<#dbnumber> lock #set <#dbnumber>

Using the Lock-Manager

The documentation from the program tells you how to control everything, but here's a quick-n-simple primer first: lock #public <exit> This will allow anyfurry through the lock (except if they are on the banned list, or would cause the room to be 'crowded', of course). lock #ban <exit>=NoxiousWolf This would add NoxiousWolf to the list of furries who are never allowed past the lock, even if it is set public. You can 'un-ban' someone with #!ban. lock #guest <exit>=FriendFox Would add FriendFox to the list of furries who are always allowed in. You can remove someone from the guest list with #!guest. lock #max <exit>=10 Would allow furries to pass (as long as they weren't on the banned list) until there were 10 furries in the room. Once there is a 'crowd' in the room, only the furries on the guest list are allowed in. lock #maint <exit>=SpouseCat This allows SpouseCat (once he's got the lock action linked on himself) to use the lock command to manage the lock as well, setting crowds, guests, and banning people.

Program Documentation

And finally, here's the documentation. Once you've got the action linked, you can call these up with lock #help.
Lock Manager Version 1.0.0  by WhiteFire.
------------------------------------------------------------------------
Lock Manager allows you to easly control locks using WhiteFire's general
lock program.

Syntax:
 lock [#show] [<lockname>]           Shows the status of a lock.
 lock #help [<subject>]              Gives you help on this program.
 lock #guest [<lockname>=]<players>  Add players to the guest list.
 lock #!guest [<lockname>=]<players> Remove players to the guest list.
 lock #ban [<lockname>=]<players>    Add players to the banned list.
 lock #!ban [<lockname>=]<players>   Remove players to the banned list.
 lock #maint [<lockname>=]<players>  Add players to the maintenance list.
 lock #!maint [<lockname>=]<players> Remove players to the maintenance list.
 lock #max [<lockname>=][<limit>]    Set a crowd limit for the lock.
 lock #public [<lockname>]           Set the lock to public status.
 lock #private [<lockname>]          Set the lock to private status.
 lock #set [<lockname>=]<dbref>      Set a lock alias or the default lock.

For help on setting up a lock, type:
  lock #help setup

For an index of help for the program, type:
  lock #help index

-- LOCK #HELP INDEX ----------------------------------------------------
To access one of the items listed below, type:
  lock #help <subject>

Subject         What
-----------     --------------------------------------------------
Index           This text.
Setup           Information on how to setup a lock.
Public          Information on the #public and #private commands.
Set             Information for the #set command.
Guest           About guest lists and the #guest and #!guest commands.
Banned          About the Banned list and the #ban and #!ban commands.
Maxcrowd        About the Crowd lock feature and the #max command.
Maintenance     About the maintenance features and #maint/#!maint.
Messages        Using special messages on the lock.
Credits         Credit where credit is due.

For further information contact "WhiteFire" on Tapestreis or
FurryMUCK.

-- LOCK #HELP SETUP ----------------------------------------------------
To set up a lock for use with the lock manager you do the folowing:

@lock <exit>=#<dbref of WhiteFire's lock program>
lock #set <exit>

You may alternatly, on the exit, set a property _lock_dbref:#<dbref>
Where the <dbref> is the location of the lock database. It is posible
to have more than one lock using the same database, giving a central
control over all of them.

In this case you should use the command:
lock #set #<dbref>
using the dbref of the lock database.

-- LOCK #HELP PUBLIC ---------------------------------------------------
The public/private status of a lock controls who can get through
it. If a lock is public anyone can go through if (a) they are not
on the banned list, and (b) they would not exceed the maxcrowd, if
set.

Syntax:
  lock #public [<lockname>]     This sets the lock public.
  lock #private [<lockname>]    This sets the lock private.

-- LOCK #HELP SET ------------------------------------------------------
To set up a lock for use with the lock manager you do the folowing:

@lock <exit>=#<dbref of WhiteFire's lock program>
lock #set <exit>

You may alternatly, on the exit, set a property _lock_dbref:#<dbref>
Where the <dbref> is the location of the lock database. It is posible
to have more than one lock using the same database, giving a central
control over all of them.

In this case you should use the command:
lock #set #<dbref>
using the dbref of the lock database.

-- LOCK #HELP GUEST ----------------------------------------------------
The 'guest' list is a list of people who can alwase pass through a
lock, regardless of if the lock is set up non-public, or if it
would exceed the max-crowd.

Syntax:
  lock #guest [<lockname>=]<player1> [<player2>...]     Add guest(s).
  lock #!guest [<lockname>=]<player1> [<player2>...]    Remove guest(s).

-- LOCK #HELP BANNED ---------------------------------------------------
The 'banned' list is a list of players who may never pass through a
lock, regardless of the public/private status of the lock.

Syntax:
  lock #ban [<lockname>=]<player1> [<player2>...]   Add banned player(s).
  lock #!ban [<lockname>=]<player1> [<player2>...]  Remove player(s).

-- LOCK #HELP CROWD ----------------------------------------------------
If you set a maximum 'crowd' for a room through the #max command,
the lock keeps people out of the room if the room is 'full'. The
rules for someone trying to enter a room are: (a) If they are on
the guest list, they get in. (b) if they are banned, they don't.
(c) if they would not exceed the maximum number of people in the
room, they are let through.
Note that the maximum does not count sleepers, or people on the
guest list. Also it has no effect if the lock is not public.

Syntax:
  lock #max [<lockname>=]<number>       Set the max number of people.
  lock #max [<lockname>]                Turn off the crowd lock.

-- LOCK #HELP MAINTENANCE ----------------------------------------------
 The maintenance list is a list of players that can alter the
other atribues of the lock with this program. This allows you
to have other people run the lock for you.
 This feature is not avalible on mucks where this program is not
owned by, and set, Wizard.

Syntax:
  lock #maint [<lockname>=]<player1> [<player2>...]  Add to maint list.
  lock #!maint [<lockname>=]<player1> [<player2>...] Remove from maint list.

-- LOCK #HELP MESSAGES -------------------------------------------------
  There are a number of messages that you may set on a lock on top
of the @succ/@osucc/@fail/@ofail messages. Curently these are only
setable as properties on the lock's database as properties. There
is no support in this program to set or view any of these messages.
  All such messages support pronoun substitutions, but do NOT support
programs, such as the @6800 at this time. This, and the support
through this program, is coming in future releases.
  They all come in user and room versions. ('o' messages)

The properties are:
  _banned-msg/_obanned-msg:     Message printed if player is banned.
  _max-msg/_omax-msg:           Message printed if there are too many
                                people in the destination.
  _succ-msg/_osucc-msg:         Message printed before the @succ/@osucc
                                message if successful.
  _fail-msg/_ofail-msg:         Message printed before the @fail/@ofail
                                message if the lock is not public and
                                they are not on the guest list.

-- LOCK #HELP CREDITS --------------------------------------------------
Many thanks to Foxen for inspiration through example, both from her
crowd lock program and MUFpage, the ultimate feep. Both had a lot
of influence in the creation of this program. Also I filched a few
functions from her player list program. :)
----------------------------------------------------- Feeps 4ever! -----

Have fun building!