The FurryMUCK Public Library
I'm still in the process of hypertexting this document. Until I'm done,
here's the flat ASCII version. -- Telzey
LIBRARY CATALOG
1) Greywolf 122 weeks ago -- Notice to Library Patrons
2) Greywolf 162 weeks ago -- #8004 Cmd-Say-Filter Program
3) Greywolf 162 weeks ago -- #14122 Throw Program (type THROW #HELP for info)
4) Greywolf 153 weeks ago -- #8274 Karrejanshi's Descer
5) Neikrad 149 weeks ago -- propcp and propmv -- 2 new globals
6) Daniel 149 weeks ago -- Go into business for yourself!
7) Jenora 144 weeks ago -- #29549 Look-trap program for detailed building
8) Neikrad 142 weeks ago -- #9615 timelock.muf
9) Neikrad 141 weeks ago -- #13624 led2.muf -- Create a clock with BIG LEDs
10) Japhix 134 weeks ago -- #37136 -- Room Locks
11) Greywolf 121 weeks ago -- @View Command!
12) Neikrad 120 weeks ago -- #49446 mark-scent.muf (kinda gross concept)
13) Neikrad 118 weeks ago -- #47722 proplist-util.muf
14) Neikrad 117 weeks ago -- #24709 record.muf (updated)
15) Neikrad 105 weeks ago -- #49446 Mark-Scent.MUF (Grossness upgrade)
16) Foxx_Fox 95 weeks ago -- #46186 Extract-Item2.muf
17) Greywolf 88 weeks ago -- _nospam and _wolfaction?:no
18) N'kth 87 weeks ago -- Propset program - update
19) Greywolf 85 weeks ago -- How to Make Personal Links with Option.muf
20) Greywolf 78 weeks ago -- #66291 Exit-Alarm.muf
21) Warwick 74 weeks ago -- Lock-Call.MUF
22) Vadanthas 65 weeks ago -- Autolock.m
23) N'kth 49 weeks ago -- #22918 - This is obsolete
24) Triggur 47 weeks ago -- #7807 -- Pet/slave auction programs
Use 'read <mesgnum>'to list a message. Use 'read <keyword>' to list
messages with a keyword. (ie. art, building, personal, recent, new, etc)
Done.
1) Greywolf 122 weeks ago -- Notice to Library Patrons
This shelf is meant to house "books" detailing the use of various programs
available on the FurryMUCK, as a supplement to the "programs" global (either
to provide more detailed information or to provide information until the
program can be entered into the "programs" global). To see more programs,
type "programs". If you have a program that has not been detailed here or on
the "programs" global, please feel free to write up an entry about it. The
standard format for the header is: {program db#} {programmer's name} {program
name}. Information should include a (brief?) summary of the program's
purpose, and how to gain information on how to use it (such as lines to list
in the program). Your submissions and suggestions are *most* welcome. If you
would like to see your program detailed in the "programs" global, please send
the pertinent info to Greywolf. (email is most convenient for me -- send
email to peacock5293@iscsvax.uni.edu).
-Jordan
Done.
2) Greywolf 162 weeks ago -- #8004 Cmd-Say-Filter Program
Here are some steps to follow to use this program:
@action say = me
@link say = #8004
@set say=_say:{message displayed when you speak}
@set say=_osay:{message displayed to others when you speak}
@set say = filter#:{string}
@set say = subst#: {string}
Done.
3) Greywolf 162 weeks ago -- #14122 Throw Program (type THROW #HELP for info)
Steps given to me (As usual, I'll post an update if I manage to
figure out what this is supposed to do.):
@set me=jump_ok
@set me=_receive_ok?:yes
@set {object}=jump_ok
{As I understand it, setting these flags allows objects to be
transported from one player to another who may not necessarilt
be in the same room. The object's flag must be set, as well
as that of the sender and receiver.}
Done.
4) Greywolf 153 weeks ago -- #8274 Karrejanshi's Descer
This program allows you to quickly change properties, saving you some typing.
Karrejanshi explains: param1: the property to change. param2: what to %sub.
So this command is equivalent to @set me=param1:%sub[param2]. It beats typing
it out. [my own explanation:] To use this, create an action (let's say
"dress"), like so: @action dress=me. Then, @link change=#8274. Once that is
done, if you simply type DRESS ATTIRE FATIGUES, it would be as if you had
type: @set me=attire:%sub[fatigues].
Done.
5) Neikrad 149 weeks ago -- propcp and propmv -- 2 new globals
Also in response to Jethric's request for a prop moving program, this one
was designed with many additional features than requested. It not only
moves properties but moves '@name, @desc, @succ, ..' and can move an entire
list of properties of the form list<n> where <n> on the properties are
integers starting at 1.
Help for propmv (also called propmove and pmove) and propcp (also called
propcopy and pcopy) is available by typing>
propmv #help or propcp #help (for quick format help)
@list #27000=1-50 (for more detailed info)
Done.
6) Daniel 149 weeks ago -- Go into business for yourself!
#30035 is the main module of a shopkeeper package. It is an extended
version of the one found in the FLD gift shop. If you decide to set up
shop, you'll probably want the full help file. Send me page mail, with
a valid email address, and I'll drop you a copy. (Of course, if you can
puzzle it out yourself, be my guest!)
Done.
7) Jenora 144 weeks ago -- #29549 Look-trap program for detailed building
This program is designed to make life easier for the detailed builder,
and to make such building less database intensive. It replaces the standard
'look' command with an action. If you look at something which doesn't exist
(or which has a property on it so this program won't look at it), then the
program will search for a property on the room that the player is in, and
up through the environment. This allows builders to eliminate false exits
and dark objects used for 'scenery'. Programs such as @6800 are supported.
To use this program, simply create an action called 'look' in the room
or environment in which you wish to use it. @link the action to program
#29549, and then do 'look #help' to see the help built into the command.
Please only use the commands to update the set of fake items in the room;
These make sure that the index is updated as well.
A few caveats about this program:
One: it always puts its properties in the present room. If you want an
item that can be seen from anywhere in an area, you either have to set
it on each room individually, or enter the environment and set it there.
Two: Do not put semicolons in the names of the items you create. They
are used as separators in the index, and will cause false results.
You shouldn't need them anyway, since it matches the start of any word.
Three: This program cannot run locks on rooms. As a result, at the
moment, it simply always prints the @succ of the room if you look at it.
Done.
8) Neikrad 142 weeks ago -- #9615 timelock.muf
This program, when put in an object's or action's @lock allows it to be
locked/unlocked at preset times (e.g. a store open from 9am to 5pm).
e.g.: @lock store=#9615|me|*Bubba|store_keys:yes
This lock would only allow you, a guy named Bubba, and anyone who set
themselves '@set me=store_keys:yes' entry at all times, while anyone
can only enter when the timelock's open condition is met.
The lock is closed by default.
Multiple 'open' ranges can be set (7am-11am and 12pm-5pm for example).
Upon fail conditions, the program can display when the next time the lock
will be open.
@list #9615=1-48 for full documentation
page #mail Neikrad if you find a program bug or need more help setting it up.
Done.
9) Neikrad 141 weeks ago -- #13624 led2.muf -- Create a clock with BIG LEDs
LED2.MUF (program #13624) is a program to allow you to create a clock with
a big 5-line led display which looks like this...
-- -- --
| | o | | Central
-- -- --
| o | | |
-- -- -- AM
The clock can be adjusted to suit your time zone (Atlantic->Pacific)
You can also: turn seconds on and off, choose from 24hr and am/pm modes.
There are 2 basic ways of setting up such a clock.
1) Put the program on the @description of the object.
@desc clock=@13624 A clock on the wall. The time is ...
NOTE: THe time will appear AFTER the text put after the program number.
2) Link an action to the program (such as 'time') and link it to the program
@link time=#13624
Adjustments to the clock can be made by setting the clock object (of if you're
using an action, set it on the action) with the property called 'led_defaults'
@set clock=led_defaults:-a -z Central
This particular command sets the clock to am/pm mode and sets the time zone
to Central time. Full documentation can be found using the -h option.
Options can also be set on a player in case they wish to observe a particular
format. If the clock program is set up on an action.. putting the options
after the action will set the clock for those options despite the clocks,
or your personally set 'led_defaults' options.
e.g. time -s -z Pacific (assuming 'time' is linked to led2.muf)
Full help can be obtained by setting the option -h for help.
The help file describes all the options.
Done.
10) Japhix 134 weeks ago -- #37136 -- Room Locks
Ok. The program will lock rooms in the same way that you can lock exits.
Here is how it works: First, lock the room in the same way you lock an exit.
Then you have to set the fail of the room to @37136. If you want to give a
message, then set the fail of the room to @37136 <Message>.
Second: Set a property called '_FailRoom' on the room that you are locking to
be the room that the person is send to if they fail the lock.
Format: _FailRoom: Dbref Example: _FailRoom: 367 (Note the lack of a #)
You must own the _FailRoom or be wizard to have someone teleported there.
Also. The _FailRoom and the room that is locked must both be set Jump_ok.
One final note. If you don't set a _FailRoom, the person is sent through the
exit in the room named 'out'. If no such exit exists, the person is sent home.
Done.
11) Greywolf 121 weeks ago -- @View Command!
In case you're not already familiar with it, the @view command can be a
convenient way to call up help on programs if you know the program #. For a
program that is set up properly, type @view {prog#} to see the appropriate
help. To set up a program's "documents", @set {program}=_docs:@list
#{prog#}={lines}. As you may guess, whatever is on this line is activated via
a @force. Hence, whenever you use the @view command, the contents of the line
are displayed first, and you are asked whether to activate them or not (to
prevent unpleasant surprises).
Done.
12) Neikrad 120 weeks ago -- #49446 mark-scent.muf (kinda gross concept)
Well.. Put simply, mark-scent.muf allows one to set up a room so that others
can 'scent mark' it (for territorial species.. or those who just like leaving
their smell all over the place).
When you 'smell here' on the room in question, you get to 'smell' everyone's
scent markings. Each marked scent 'disappears' after 8 days.
Type @view #49446 for more info
Done.
13) Neikrad 118 weeks ago -- #47722 proplist-util.muf
Proplist-util.muf is a utility program which contains various public
routines useful for the manipulation of lists of properties. To call any
of these routines, one need to use:
> #47722 "RoutineName" call
Where "RoutineName" is one of the routine names listed below (yes, it is
put in quotes in the MUF program). This program is not designed to be
called directly.
The following routines are available:
GetListItem ( Gets an item from a list )
PutListItem ( Puts an item on a list )
GetListCount ( Fetches the list size string <item#: 3 for examp> )
PutListCount ( Sets the list size string )
CountList ( Counts number of items in a list manually )
EraseList * ( Erases all items in a list )
GetListRand * ( Gets a random item from a list )
DelListItem * ( Deletes an item from a list <others shuffle down> )
AppListItem * ( Appends an item to the end of a list )
InsListItem * ( Inserts an item in a list <others shuffle up> )
UpdateListCount ( performs 'CountList' then 'PutListCount' )
The routines with a * by them have a variant which utilize and updates the
list size string (thus keeping the list compatible with lsedit). They also
tend to be faster but they require the list size string to be accurate.
The names of the variant all end in '-u' (e.g. Eraselist-u)
@view #47722 for stack usage and documentation.
If you have question about these routines, or can think of additional
proplist routines you think should be added, feel free to page #mail me.
Neikrad
Done.
14) Neikrad 117 weeks ago -- #24709 record.muf (updated)
Record.muf was designed for those instances where a full bulletin board is
just too much. For instance, a 'suggestion box', a 'things-to get done' list,
an 'answering machine'. The general usage is simply the action name followed
by the message text. For example, if the action is called 'enter':
> enter You have a spelling mistake in @odrop leading into the cabin.
You can set up record.muf to automatically append the name of the user and
the time to the beginning of the message for a result like this:
> TommyTomato - Sat Sep 26, 1992 17:14:23 - You have a spelling mistake
> in the @odrop leading into the cabin.
NOTE to previous users of record.muf
Major changes include:
1) The list you record on need not be called 'record'. The default name can
be changed by setting 'r_listname:<text>' to a listname.
2) Erase works different in this version. A separate action set '_r_erase:yes'
should be added to the recording device. <action> #erase <n> no longer
works (erase is no longer limited to the owner of the device either..
a separate 'erase' action should be @locked to prevent 'unauthorized' use.
3) Download feature: Places you into a highly simplified bulletin board-like
editor where all typing is recorded until terminated with '.end' or '.' .
Useful for those with a 'download' feature in their client program.
4) Silent mode: Make the program run without prompting the user.
For documentaion on how this works, @view #24709 for more info
Neikrad
Done.
15) Neikrad 105 weeks ago -- #49446 Mark-Scent.MUF (Grossness upgrade)
Well.. Put simply, mark-scent.muf allows one to set up a room so that others
can 'scent mark' it (for territorial species.. or those who just like leaving
their smell all over the place).
When you 'smell here' on a room, you get to smell everyone's scent markings
they left in the room. The scent fades after a while.
UPGRADES:
1) Once the actions are in place, Mark-Scent.MUF automatically sets up
the room the first time anyone uses 'smell' in the room.
2) _mark_duration has finally been implemented.. You can set you and the
room with a _mark_duration value of 1 to 8 (default 3) the duration
values are both read and multiplied together to determine the total
time a scent mark will last (default 9 days).
1 - 3 for lightly scented 'users' or rooms which are out in the open.
6 - 8 for stinkier 'users' and rooms which get less fresh air (eg caves)
Done.
16) Foxx_Fox 95 weeks ago -- #46186 Extract-Item2.muf
This is an updated version of Neikrad's program #6032 Extract-Item.muf.
Extract-Item is an interesting program because its not quite a container
program and not quite a vendor program.. but something inbetween.
It is based on Lynx's 'truffle' program and White Unicorn's 'pick apple'
program but is more generalized.
Extract-Item2.muf requires a store room which contains 'reshapeable' objects.
When one uses the program, one of the objects in the store room is chosen,
renamed, and all approprieate properties are placed on it (the name and props
on the object are set up ahead of time). In effect, its as if you have a
pliable object 'extruded' into a proper shape and delivered to the user.
The objects are ment to be temporary and should be returned back to the
store room when used (a popular use for this program is to dispense edible
food and drink objects).
For people who already know about extract-item.muf and are using it.. whats
so differnt about extract-item2.muf?
-- Functionally, both programs are identical. Extract-item2.muf offers no
new features for ordinary users. However, the new version solves some of the
major problems when it comes to setup that the old program had..
1) Properties use a 'propdirectory' style format thus making 'examine's much
more tolerable.
2) The objects in the store room no longer need to have any of the
_allow_setname, _allow_setdesc, _allow_set<blahblah> properties
(a MAJOR annoyance to the old version)
3) The properties are placed on the 'action' (trigger) rather than the
source of the action (location of trigger).. This allows a single object
to have 2 or more different actions calling the program and using 2
different storerooms.
4) You may set an action's _proploc property to an existing set-up in order
to utilize someone else's property set up.
5) a simple editor has been written and installed so that setting up and
editing item definitions is alot easier (it keeps track of the item/ref#
and item/<n>/< properties.. 2 properties which are VERY important, yet
very easy to screw up.
6) The old program #6032 has been replaced by an 'autoconverter' program which
automatically switches someone's current setup to the new setup when run
by the action's owner. This program will be deleted when I discover that
all of the actions linked to #6032 have been relinked to the new program.
Well.. aside from that and a couple other minor techical notes.. that's about
it. I might use things I learned from writing this program in the new version
of 'temporary-random-morph' (by far, my most difficult program to set up).
Good luck and enjoy the program . Foxx_Fox
Done.
17) Greywolf 88 weeks ago -- _nospam and _wolfaction?:no
Two new features I've added to some of my programs:
* _wolfaction?:no -- If you set this prop on yourself, you cannot be used as a valid "target" for applications of wolfaction.muf that require a match on an object/player in the room. This is designed to make it a little harder to be subject to various "t
oon weapons", but they can *always* just pose it, of course.
* _nospam?:yes -- If you have this prop set, you will not receive omsgs from wolfaction.muf or event.muf at this writing (4/22/93). I will probably add this feature to other "environment" programs of mine, and it's my hope that other globals might utiliz
e this as well. (The macro "notify_nospam" is used for this.) In particular, "hug", "spoof", "throw" and "hand". =) Plus "greet".
Done.
18) N'kth 87 weeks ago -- Propset program - update
The propset program has been updated to answer all the bug reports
and feature requests I got. The new program uses a different syntax
(slightly) and is not compatible with the old one. Thus, for a while,
both programs will remain available.
For those unfamilar with propset, it is:
A program used to allow an action to set, or remove properties
on an object, usually the one its attached to. Since its not SETUID or
WIZZED, it can only set non-protected properties, that is ones that
dont start with '_' or '.', unless run by the objects owner or a
wizard. In this case, make sure you lock the action properly to prevent
a user seeing program errors.
It can also change the attributes of an object, i.e. the objects @name
@desc, @succ, @fail, @drop, @osucc, @ofail and @odrop. In all cases,
the command syntax used is almost identical to the MUCK commands.
Its main use is to manipulate properties to change descs set up with
#6800 [see that program for details] but it also has an almost endless
list of uses, limited only by your imagination.. Its a basic building
tool.
The new propset is #9619, the old one is still #22918
Done.
19) Greywolf 85 weeks ago -- How to Make Personal Links with Option.muf
Several builders use a ton of personal actions on themselves in order to jump
around various areas, especially when building. With option.muf, you can make
several such "links" without creating special exits -- You need only ONE
linked to option.muf
First, make an action such as: "@action jump=me". Then, @link the action to
option.muf (type "programs option" for further info on Option.muf). For each
"link" you want, think of a one-word "name" you want for this "link" and set
the following:
@set {action}=optm{name}:{message when you move to this location}
@set {action}=optom{name}:{message displayed to others where you leave}
@set {action}=opt/moveto/{name}:{db# of target room. DON'T put a # in front.
Example: "opt/moveto/foobar:12345" NOT "opt/moveto/foobar:#12345".}
Now, you just type "jump {exit}" to jump to that location. This will
generally only work for rooms you own or which are set "L". There are special
props you can set so that you cna have permission to jump to a room somebody
else owns, but check the option.muf listing for further information on this.
Done.
20) Greywolf 78 weeks ago -- #66291 Exit-Alarm.muf
@view #66291 for documentation.
This program is meant to serve as an exit-notify program that is NOT triggered
by Nav.muf or other locks-testing programs. Furthermore, it has a few
features, such as allowing you to customize the messages, send messages to
rooms and/or players, and override the defaults in particular rooms.
Done.
21) Warwick 74 weeks ago -- Lock-Call.MUF
I finally write something not connected with say!!! (Yaaay!)
lock-call allows you to lock an ordinary exit, either to a room,
or a 'goes nowhere' exit, or a program exit, in such a way that
when triggered, the exit will reset properties, call programs
and print a message as a result of just testing the lock.
I had envisioned its use as something like locking a personal
exit like _connect to morph a player into a publically acceptable
state, possibly as a morph-on-character-name thing too.
Anyway, to get at the help info, @list #77196=1-23.
To use, just @lock an action to it and set properties on the exit.
(as detailed in 1-23)
- Warwick.
Done.
22) Vadanthas 65 weeks ago -- Autolock.m
At a request to Ch'May, the little darling whipped this program out for me to
fill a gap I found in the way exit locks work.
It's really very simple: when you want to unlock an exit to allow someone to
enter, you just use an action and the door is unlocked for a set period of
time.
An example of how this can be used is as follows: the door into my home, a tall
tower in the Dyson sphere, is locked to everyone but me, but when I have
guests, I can unlock the door for 15 seconds, so that they may enter.
This works really well in conjunction with the Knock.muf.
For info on setup, type @view #976
Done.
23) N'kth 49 weeks ago -- #22918 - This is obsolete
The program #22918 is obsolete, please use #9619 instead. I will not support
or answer any more bug reports on the old code.
Done.
24) Triggur 47 weeks ago -- #7807 -- Pet/slave auction programs
I've written a set of programs (9 I think) for making pet/slave auctions
work in a fairly structured way. Instead of pennies, it uses an internal
money unit, since pennies arent distributed very evenly around here. The
programs let you set up one player as the auctioneer and credit bidders
accounts. Bidders then bid on the current pet/slave and the auctioneer
closes bidding. We tried a test run and it was LOTS of fun.
For information on using the programs type @VIEW #7807
Please send bug reports, comments and suggestions to Triggur.
Done.
LIBRARY ANNEX CATALOG
1) Greywolf 140 weeks ago -- Notice to Library Patrons
2) Greywolf 140 weeks ago -- #6435 Revar's Gen-Msgboard
3) Greywolf 140 weeks ago -- #25902 #25903 WhiteUnicorn's Apple Tree
4) Greywolf 140 weeks ago -- #21012 Neikrad's morphprops.muf
5) Greywolf 140 weeks ago -- #4708 WhiteFire's list editor
6) Greywolf 140 weeks ago -- #7871 Lunatic's Peek-Here
7) Greywolf 140 weeks ago -- #27588 Jeremy's Tightfit
8) Greywolf 140 weeks ago -- #13747 darkfox's Genlock
9) Greywolf 140 weeks ago -- #8617 Jeremy's GenAction
10) Greywolf 140 weeks ago -- #30269 Jeremy's "jethric's-program"
11) Greywolf 132 weeks ago -- #17691 Neikrad's TransAction.muf -- revised
12) Neikrad 132 weeks ago -- List of Neikrad's public programs
13) Greywolf 131 weeks ago -- #41038 Neikrad's Quicktime.muf
14) Neikrad 118 weeks ago -- #41038 Quicktime.muf (improved)
15) Vision 113 weeks ago -- #56692 gen_splat.muf Generic "Splat" program
16) Vision 101 weeks ago -- #33229 Vision's BoyGirAction.muf
17) Vision 98 weeks ago -- #60782 Vision's NARC.muf
18) Slate 97 weeks ago -- #8813 -- Not *another* morphing program??
19) Slate 90 weeks ago -- #60904 pdc-time.muf -- a clock with time zones
20) Greywolf 76 weeks ago -- #28616 Vehicle Environment Room
21) Rocket_Raccoon 38 weeks ago -- #7902 OnTaur -- for use with the RIDE program
22) Mystique 30 weeks ago -- Auto-Riders (Beat you Riss.) :}
23) Rocket_Raccoon 24 weeks ago -- #95718 remote-propset.muf -- setting properties on others
Use 'read <mesgnum>'to list a message. Use 'read <keyword>' to list
messages with a keyword. (ie. art, building, personal, recent, new, etc)
Done.
1) Greywolf 140 weeks ago -- Notice to Library Patrons
In the interest of reducing spamming of library patrons by lengthy lists of
programs, I have moved some of the program entries down to this section, in
order to leave those that I believe would be of more general interest to
builders upstairs (sort of the "cream of the crop") and setting up this area
as more of a supplement.
This, of course, does not mean that any programmers who see their programs
here are considered less valuable than those upstairs. I just tried to find
some (arbitrary) means of dividing up the library entries to avoid
overwhelming readers. For more notes, be sure to check the entries upstairs.
Done.
2) Greywolf 140 weeks ago -- #6435 Revar's Gen-Msgboard
To create a "billboard", simply create an object to serve as the
billboard, then attach three actions to it, like so:
@action read={object}
@action write={object}
@action erase={object}
.then, relink all of them to the billboard program, and the
object will function as such. Simply type READ to list all the entries,
or WRITE {topic} to enter one. Only the poster, the owner of the billboard
or the owner of the program can erase a posting.
Done.
3) Greywolf 140 weeks ago -- #25902 #25903 WhiteUnicorn's Apple Tree
WhiteUnicorn has created an interesting program similar to Lynx's
truffle program (contact either person for more information),
which can be found at Unicorn Point (far north from the park, past the
north end of Sable Street). To try the program at Unicorn Point, simply
type PICK APPLE, then EAT APPLE (several times, until you finish the apple!)
The tree is operated with the programs PICK-APPLE.MUF (#25903) and
EAT-APPLE.MUF (#25902). For more information of possible applications, contact
WhiteUnicorn.
Done.
4) Greywolf 140 weeks ago -- #21012 Neikrad's morphprops.muf
@list #21012=1-37 lists the instructions.
Link an action to morphprops.muf and you can change a group of properties
on yourself in one step (hug, ohug, _opage,...). It can even run some
common morph programs for you.
( Major Limitation: Doesn't do _proplocs... yet )
*** BUG in the 'erase a property' option FIXED ***
Done.
5) Greywolf 140 weeks ago -- #4708 WhiteFire's list editor
This program allows you to edits lists, it takes the same commands as
the program editor, ans thus is useful to those that are used to it.
To use:
@action ed=me
@link ed=#4708
ed <object>=<listname>
See the program editor for a list of commands..
Done.
6) Greywolf 140 weeks ago -- #7871 Lunatic's Peek-Here
Allows creation of an action that permits "peeking" into a room to see what
players are in it. For more information, type:
@list #7871=1-21
Done.
7) Greywolf 140 weeks ago -- #27588 Jeremy's Tightfit
This program allows an exit to be locked such that no one may pass through it
while carrying any objects. To use this, simply type:
@lock {exit}=#27588
Done.
8) Greywolf 140 weeks ago -- #13747 darkfox's Genlock
@list #13747=1-100
This program allows you to easily set locks or remove locks from doors, and
set up actions to "open" or "close" doors. It also has provisions for a
"banned" or "guest" list to easily update.
For an example, the parent rooms of #20846 and #7720 have the actions "open"
and "close" set up in them, which can be used in the format "open {exit}" or
"close {exit}". I have set up some of the "doors" in my areas to work with
these actions, and it is a simple matter to create your own doors to work with
them.
To make a doorway that will work with the open/close actions I have set up,
we'll assume that you have two rooms, #1 and #2, and two exits (#3, from room
#1 to room #2, and exit #4, going from room #2 to room #1).
In rooms #1 and #2, do: @tel here=#20846
in room #1, do:
@lock {exit}=#13747
@set {exit}=genlock/valid:yes
@set {exit}=genlock/ref:4
---- Then, do the same for exit #4 in the other room, but leave out the
"genlock/ref" property...
What the genlock/ref property does is to "bind" the two exits together, so
that if one is opened, the other will follow suit. Only one exit needs the
genlock/ref property set, and it indicates the number (in this case, 4) of the
other exit it is bound to.
Done.
9) Greywolf 140 weeks ago -- #8617 Jeremy's GenAction
Jeremy's action program allows you to set up an action that will substitute
the "object" of the command phrase into a resulting message. To use it, set
up an action and link it to the program (@link {action}=#8617). Then, set the
_msg and _omsg properties on the action.
The _msg property determines what message the user will get, and the _omsg
property determines what others in the room will see. The user's name is
*not* appended to the front, so inserting a %n (or %p, %o, %s, etc.) will be
necessary in the appropriate places.
Also, %text in the message will substitute the "object" of the action. For
example, the squirtgun at the playground has an action, "squirt". The _msg on
the squirt action is "You squirt water at %text!", and the _omsg is "%n
squirts a stream of water from %p flourescent hot pink squirtgun at %text!"
If Joe types "squirt Moe", he will see "You squirt water at Moe!", and
everyone else will see "Joe squirts a stream of water from his flourescent hot
pink squirtgun at Moe!" This can be altered of course for various
applications, including something roughly similar to the "buffet line" at Fur
Le Dance (but without the charge for the food!)
{Note: Due to problems with this program being used as a spoofer, the program
has been altered so that the action calling it can only be attached to a room.
However, Wolfaction.muf (c.f.) is essentially the same program, except that I
rewrote it with a different "safety feature" to satisfy the MUCKER policy
requirements. Many thanks to Jeremy for helping me out with this one.}
Done.
10) Greywolf 140 weeks ago -- #30269 Jeremy's "jethric's-program"
This program was created to allow two properties to be switched on two
different items via an action. To use, simply create an @action and link it
to #30269, then type the action-name for some more information on usage.
Done.
11) Greywolf 132 weeks ago -- #17691 Neikrad's TransAction.muf -- revised
@list #17691=2-66 for more information.
A call to this program in the @succ/@drop/etc. of an item can send messages to
other rooms (and/or players), so a "doorbell", an "alarm" and other special
"triggered events" can be set up.
Done.
12) Neikrad 132 weeks ago -- List of Neikrad's public programs
I've made a number of publicly available programs here (one of which, is a
global). I've listed most of them below along with a quick description of
what they do along with an example of what you could do with it. (all of my
programs have documentation.. some docs are better than others)
Building Stuff:
transaction.muf (#17691) ; Allows actions to be 'heard' in other rooms.
( e.g. doorbell action which 'rings' in all the rooms of a house )
timelock.muf ( #9615) ; Use to lock an exit for a specified time range.
( e.g. a store which is only open from 9am-5pm could use this )
scrawl.muf (#23488) ; Let anyone add graffiti to the @desc of a room
( e.g. used in the sewers where graffiti is common )
( NOTE: For a more general version of this see record.muf, #24709. )
Fun Item Stuff:
led2.muf (#13624) ; Displays the time using LED style segments.
( e.g. a wall clock or a watch )
record.muf (#24709) ; A simple 'low budget' bulletin board-like program.
( e.g. a simple note pad or an answering machine. )
extract-item.muf( #6032) ; A 'kind of' container which generates objects as
needed ( e.g. vending machine with edible objects )
( NOTE: I have an example file demonstrating how to set this up )
propswap.muf (#26045) ; Allows anyone to change an object's _proploc.
( e.g. a TV with VCR.. Video cassettes can be _proplocs to change the
TV's @desc ) **This program is set WIZARD and is owned by Lynx**
( NOTE: for more info on _proplocs.. read #6800's documentation )
--Temporary random morph programs.. see note at end--
Utility Programs:
exitcount.muf ( #3430) ; Use to set up a 'usage counter' on an exit.
countscan.muf (#13712) ; Use with #3430... This reads the counter and
can easily reset it too.
morphprops.muf (#21012) ; For morphers. Lets you change some properties
(like hug; ohug; _scent) as you change form. Can automatically 'run'
some morph programs so you might not need to make a new action for it.
findit2.muf (#15722) ; Set it to find a list of items you own.
(e.g. Good if you have an object which is thrown around a lot )
(NOTE: Those who have the "Intro to MUF" guide should realize this is
basically a 'generalized' version of an example program given )
GLOBAL ACTIONS : PROPCP and PROPMV
Allows one to copy/rename/move a property, or a list of properties
from one object to another.
( NOTE: Both actions use program #27000 if you wish to look at it. )
Final note: --Temporary random morph programs--
There are 7 programs involved here. With these programs you can set up
an object which can 'morph' you (or anyone.. if they use it) into one
of any preprogrammed selection of forms. I have a pair of pills which
can change the 'swallower' into one of 18 mustelids (weasel family; for
you non zoologists). The selection is always random.
The thing which makes it all so complicated is that you are eventually
supposed to be changed back to your normal form. I've actually managed to
work out most of the bugs in this one. They're difficult to set up and
require 2 objects and about 6 actions each so I don't want to encourage
everyone to go out and make these things. If you REALLY want to, or if
you just want to see the code for it, just ask me.
Done.
13) Greywolf 131 weeks ago -- #41038 Neikrad's Quicktime.muf
@list #41038=1-4. Prints time in hh:mm:ss. No features ... yet.
Done.
14) Neikrad 118 weeks ago -- #41038 Quicktime.muf (improved)
Quicktime.muf has been improved.
By setting the property "quicktimefmt" on the 'trigger' calling the program
you can adjust the time format. @view #41038 for details.
Useful for making things like clocks/watches/calendars which tell the time.
For example...
@desc wristwatch=@6800 One of those neat digital watches. Its display reads
%call[41038,]
( yes.. you need the ',' after 40138 )
Looking at the watch will then show:
One of those neat digital watches. Its display reads
1:03:23 pm
( yes.. the time is always on a separate line..)
Done.
15) Vision 113 weeks ago -- #56692 gen_splat.muf Generic "Splat" program
This is useful for when you want to create an object that changes when it is
dropped or picked up in a certain way, like an Egg that turns into a mess
when you 'throw' it to the ground.
Simply set the object JUMP_OK, create an @action on the object, link that
action to #56692, and set these properties on that action:
splat_name: string to change the object's @name to.
splat_desc: string to change the object's @desc to.
splat_msg : message displayed to user of action.
splat_omsg: message displayed to everyone else.
splat_func: @set to 'get' for the action to work like the 'get' command
@set to 'drop' for it to work like the 'drop' command.
Omitting this property will simply cause the program to do
neither, making it function like a simple morph command.
Omit splat_name or _desc, and the program simply will not change the
@name/@desc of the object. Omit splat_msg or splat_omsg, and the program
wont display that message.
Please page #mail any bug reports to Vision. Have Fun!
Done.
16) Vision 101 weeks ago -- #33229 Vision's BoyGirAction.muf
This is a specialized action program designed to pose based upon
the target's gender. It is useful for Boy/Girl guns, kissing machines,
or any other twisted use you might imagine.. *grin!*
NOTE: It does NOT change the sex prop of the target, it just looks at
it. If they want to be affected as such by your device, they can
change it themselves. :>
These are props to be set on the action:
target_user? : Determines the target of the action. If set to
"yes", the user of the action will be the target.
Otherwise, the action will take an argument and check
to see if the target is present, and if it is
a player.
mact : Displayed to you when target is male.
omact : Displayed to everyone else when target is male.
fact : Displayed to you when target is female.
ofact : Displayed to everyone else when target is female.
nact : Displayed to you when the target is neither <neuter, etc.>.
onact : Displayed to everyone else etc. etc. :>
These props use the pronoun substitutions <%n, %o, etc.>
They also use %text to sub the target's name.
Have fun!
Done.
17) Vision 98 weeks ago -- #60782 Vision's NARC.muf
People stealing things from your room, and you just can't take it anymore?
Then try 'narc.muf'!!! It'll catch those shoplifters red-handed!
type '@view #60782' for info on this state-of-the-art security program!
Have fun!
?<---( Vis! )--->?
Done.
18) Slate 97 weeks ago -- #8813 -- Not *another* morphing program??
What, another metamorphosis program? Yes, I'm afraid so.
morph #help features gives:
---Damian's Morphing Program 1.2-----FEATURES---------------------------
*
* -- Can set several properties with a single command.
*
* -- The messages produced can depend on the state you are changing from
* as well as the new state.
*
* -- Add new morphs with the #define option. It's easy and fun.
*
* -- Accepts abbreviations of state names and options (so "morph #v gry"
* --> "morph #verbose gryphon") and even #help topics.
*
* -- Property names are all prefixed with the command name, so it can be
* used to implement several different-named morphing commands using
* just one action (saving DB).
*
* -- Props that refer to objects can use a dbref, #<dbref>, $<name> or
* even an object name! Accept no substitutes!
*
* -- More help topics than you could possibly want.
*
------------------------------------------------------------------------
For more information, try:
@view #8813
Enjoy!
Slate (pp Damian)
Done.
19) Slate 90 weeks ago -- #60904 pdc-time.muf -- a clock with time zones
pdc-time.muf tells the time. An action TIME linked to this program
provides a command with syntax
time [ <options> ] [ <zone> ] [ = <format> ]
where <zone> is either a zone abbrev which I have put in the database
pdc-time uses, or a file-character string like +1000 or -0500. With no
<zone> just Furry local time is printed. With a time zone supplied, both
furry time and the requiested time zone are printed. Format is as in
"timefmt" (q.v.).
You can set defaults with props called _time/zone and _time/format.
These are searched for in the environemtn of the user -- so you can set the
zone of an area to give the effect of being in a different area. (Furry time
is always printed as well so there should be no confusion.)
And of course this program can be used in a description:
@desc watch = @60904 BST=%R %Z.
@view #60904 for the documentation, such as it is.
++ Slate
Done.
20) Greywolf 76 weeks ago -- #28616 Vehicle Environment Room
The Vehicle Environment Room can be used as a "parent" for the interior of a
car meant for use with Driveto.muf and Objexit.muf. It already has a "drive"
and "out" action installed, with default messages that you can override by
making prop settings on the room.
For more information on the vehicle programs, type "programs vehicle". Since
this is a rather old and overly-feeped program, I must emphasize that
driveto.muf has "no warranty expressed nor implied". I can't be expected to
explain what the hefty instructions fail to communicate. If you want a car,
I've done my best to provide the tools: From there, you're on your own. Good
luck!
Done.
21) Rocket_Raccoon 38 weeks ago -- #7902 OnTaur -- for use with the RIDE program
(On behalf of Mystique...)
I got to trying _LSTATTAUR and I hated it. :/ It just didn't look good.
Anyhow, I decided to write something that was much more flexible, that could
change with the amount of riders you had.
Well, if anyone wants to use it, @view #7902 for docs and %call[#7902] in
a @6800 desc and if I'm not mistaken, using the MPI muf should also work.
Mystique. (If something doesn't work, do tell me.)
Done.
22) Mystique 30 weeks ago -- Auto-Riders (Beat you Riss.) :}
At some point, Riss says he's going to add auto-rider lists. :} Well, if he
wants to he can snag my routines. (He should let me know first.) And he may
also snag OnTaur too, or leave that separate.
Anyhow, @action riders=me, then @link riders=#52733 and FINALLY type:
riders #help
Now you can set `constant' riders lists for your RIDE/_MODE's. :}
Have fun you equine types. :}
Mystique.
Done.
23) Rocket_Raccoon 24 weeks ago -- #95718 remote-propset.muf -- setting properties on others
Nothing miraculous, this program simply lets you set properties on things
you don't own, even other players. It won't let you set protected properties,
and it sure as heck won't let you set properties on things or people without
their consent. '@view #95718' for details.
??) Triggur 3 weeks ago -- ARTIFICIALLY INTELLIGENT OBJECTS
The following is provided on the basis that it is not abused or
causes more server Lag. Should either occure, the AI program
will be disabled. -The Wizzes
How to use the automated response system with your zombie
---------------------------------------------------------
Software written and (C) by Triggur of FurryMUCK
Software version 1.0, Doc version 1.03
I. WHAT DOES IT DO?
With run-actor.muf, your objects gain the ability to 'intelligently'
respond to things said and posed around them. Do NOT abuse this
priviledge, and do not create responses that annoy people. Use of
this program can be taken away on an individual basis.
II. REQUIREMENTS & CONDITIONS
The object needs to have a name that does NOT start with the name
of a player in the current room, or it will not run (a security measure).
Be careful with names beginning with 'The', etc. If you do an EX
command, where is the first word of your object's name and it
says that it's ambiguous, this will not work.
The object will NOT respond to itself or any other object, or for
that matter to any line which does NOT begin with the name of a player
that is currently in the room.
As a rule, do NOT make the object respond to everything (or even
_many_ things) said... this gets _highly_ annoying and will have people
(myself included, if people complain) asking you to shut the AI off!
In fact, unless it is a static object that always stays in your own
rooms(s), make it respond only when spoken to.
III. SETUP
Type:
@set =_listen:$ai
This sets your object up so that it can listen to things.
You now need to make a prioritized list of things that the object
will respond to. Case is ignored, and MOST punctuation is removed. To
create this list,
lsedit =match
This will enter the editor and let you edit the response 'match' list.
Note that you will probably need to do this a lot, so if you use TinyFugue
or somesuch, make a file locally that you can simply upload.
Each line of this propdir contains one 'match rule' a colon, and then
the text that is to follow the object's name as a response. An example:
*hello*:waves hello!
NEVER try to match against anything other than letters and numbers,
since, as noted above, punctuation is removed (S'A'Alis becomes SAAlis).
Any rule with punctuation in it will never generate a match.
Note the *'s: sentences can be matched with the same wildcard expressions
used by the MUCK software (type MAN SMATCH for details on what is and is not
acceptable). With this example rule, every time the object sees a line of
text with the word 'hello' in it, it poses back, assuming its name is Foobar,
"Foobar waves hello!". You might also use:
*{hello|hi}*foobar*:waves hello!
...which would respond with a wave to anyone that said the word 'hello'
(OR the word 'hi'!) and then the word foobar. This is actually a better
response, since it is more specific and will spam people less often.
The order of the lines in the list matters, too. The rules close to
the top of the file have the lowest precedence, and the rule at the bottom
of the list has the highest precendence (meaning that if there is more than
one possible match for a line that it hears, it will use the one fartest
down the list; it scans upward). As soon as a match is found, the search
stops and it attempts to print the response. Example:
*hello*:waves half-heartedly.
Triggur*hello*:waves excitedly to the inventor of its brain!
In normal conversation:
Centaur says, "Hello!"
Foobar waves half-heartedly.
Triggur trots up and nickers Hello.
Foobar waves excitedly to the the inventor of its brain!
Riss says hello to everyone.
Foobar waves half-heartedly.
You'll note that the _specific_ case(s) need to be lower in the list,
and the more general responses need to be higher. If those two rules had
been reversed, Foobar would always wave half-heartedly, no matter what.
IV. RANDOMIZING RESPONSES
It is possible to get your object to respond 'randomly' to a match.
To do this, instead of...
*hello*:waves hello!
...you might instead have...
*hello*:hello-list
...assuming that 'hello-list' is the name of a propdir on the object
that contains, one per line, a list of possible responses
(lsedit =hello-list). If the program finds a propdir named the
same as the response in the match rule above, it will randomly select one
of the lines and use it as a response.
To further vary the response, you may use the word NONE on a line
by itself in such a list as a way of indicating that no response is to
be made. When such a line is randomly selected from the propdir, the
object will not respond that time around.
V. PRONOUN SUBSTITUTIONS
All of the standard pronoun substitutions will be made by the
program (type MAN PRONOUN for information on what can be used). In
addition, the speaker's sex and species can be inserted with %x and
%e, respectively. Example:
*hello*:waves to %N and beeps %p nose, then sits on the %x %e's shoulders!
In normal conversation:
Triggur whickers, "Hello!"
Foobar waves to Triggur and beeps his nose, then sits on the Male Bipedal
Nightstallion's shoulders!
Also, %l is replaced with the name of the current room.
VI. RESPONSE DELAYS
It doesn't seem 'natural' when a long response is _immediately_
given to a line of text. Therefore, it is possible to set a minimum
number and range of seconds for the response to follow. Example:
@set foobar=delay_min:3
@set foobar=delay_range:5
The object 'foobar' will then make its responses a minimum of 3
seconds afterwards, and a maximum of 8 (it's random).
VII. EVEN *SMARTER*?
There is another facility available, one not very well explored
yet. It is possible to call more advanced response programs as a
result of making a match. For instance:
*foobar*unmug*me*:@unmug snaps her fingers and suddenly %N has %d more pennies!
Note that the format of the response has changed. The '@' symbol
tells the software that the next word names a response program, and the
remaining text is passed into that program as a response string (the %d
olny mean something to that specific program, and in this case is
the number of pennies given).
For security reasons and safety reasons, response programs must
be registered with the AI program by hand; not just any program is
callable. Talk to Triggur if you have ideas or program submissions.
VIII. CURRENTLY AVAILABLE RESPONSE PROGRAMS:
@unmug
This gives to the speaker the number of pennies needed to total
the 20,000 penny limit. The text may contain %d, which will be
replaced with the number of pennies given. If the speaker already
has 20,000 or more pennies, @unmug fails and the search for the
next matching rule continues up the list. In this way, you can
print a different message when the operation fails. Example:
*foobar*unmug*me*:scowls at %N and notes that 20,000 pennies is the limit!
*foobar*unmug*me*:@unmug blinks and suddenly %N has %d more pennies!
This will give the user some money if possible, and scold them if
not possible.
@toll
This program subtracts 1 penny from the speaker's inventory, and
is to be used ONLY for taking tolls in your own rooms. A property
named 'tolls' is maintained on the object and reflects the number
of times it has charged. This program will work ONLY when
the object is in a room that YOU own. If the player doesn't have
any pennies, this program fails and rule-checking continues.
@prop [=]:
This program prints the given text only when the speaker has
a prop of the given name, optionally set to the value given. This
can be used to make a set of special behaviors available only to
people with some 'secret' property set. If the property does not
exist or is not equal to the value (if specified), nothing is printed
and rule-checking continues. If you use NONE as the text to be
printed, no output will be generated.
@bprop [=]:
Just like @prop, except that it checks the _BOT_ for the given
property.
@rprop [=]:
Just like @prop, except that it checks the ROOM for the given
property.
@boot
This program should be very seldom used. It prints the given
text and then kicks the player out of the room, sending them to
the current room's _sweep_to location or to their home if no _sweep_to
is specified on this room. This program will ONLY work when the
object is in a room that YOU own. It also will not work on
Wizards! If the room's _sweep_to is specified and you do not own
the destination room or it is not really a room, the program will
fail.
@force command [; command [;command ... ]]
This command is very, very powerful. Suppose you would like a
'butler' zombie. It allows you to have the object peform some
set of actions in response to what is said. Example:
*Jeeves*get*phone*:@force gohome ; get phone ; tomaster ; hand phone to %n
In normal conversation:
Triggur whickers, "Jeeves, get me the phone."
Jeeves is enveloped in a space/time rift and disappears.
Jeeves steps out of a space/time rift.
Jeeves hands phone to Triggur.
This assumes that the object Jeeves has an action 'tomaster' on itself
which is linked to you.
In order to make this work, you'll need to set the object up so that
actions can be forced to it, if you haven't done so already:
@set =x
@flock =me
Note also that in the example above, it will seem to mysteriously
fail unless the object is set hand #ok. The best way to set that (and
other things) up is to
@set =z
...which will print to you everything that object sees, including
error messages and stuff, and then follow the instructions in NEWS ZOMBIES
on how to set the object up to accept commands from you.
IX. I HATE THIS! HOW DO I SHUT THE STUPID THINGS UP???
Fortunately, you don't HAVE to listen to robot responses. If you
have the _nospam property set on yourself, you will never, ever see
anything said/posed by this program (this does not necessarily
apply to output generated by response programs). Example:
@set me=_nospam:yes
But you wouldn't wanna do that, now would you? :)
Triggur!
this page is linked to two others, so please choose:
Return to the Programming Page
Return to the Places Page
Page created by Telzey, and maintained by Tugrik d'Itichi.
Comments/Questions/Flames
to: FMPages@furry.com