The LockMeister system is a set of commands used for enhanced features in bondage toys. Its main function is to get the keys needed for particle chains, but as the protocol grows more and more commands are added. This protocol is maintained and designed by Kyrah Abattoir; IM her inworld if you have suggestions.
Return to the Protocol Exchange
Main features:
-simple to use
-flexible
-fully backward compatible
-sensorless key grabbing (possible on child prims too) for particle chains (several mooring points)
-boot/shoes animation overrider controlling (on/off)
-color propagation in a lockmeister item set
How does it work?
All lockmeister items listen on channel
-8888. It's strongly recommended that you use only the
llWhisper() function for sending the commands.
When someone sits on a lockmeister compliant item, it will sequentially send the ping messages to each of the mooring points it needs. For example, for a St. Andrew's Cross we will ping the wrist and ankle cuffs. Thus, we will have to send the messages for four attachment points:
lcuff,rcuff,llcuff,rlcuff.
When a lockmeister attachment detect the message corresponding to itself on channel -8888, it will answer by appending " ok" to the original message.
Messages are in the following format:
Sender | Format | Example | Comments |
LockMeister item | <avatar key><command> | 748bb591-0d9d-4907-8287-dc27b8267e24lcuff | Ping the left wrist cuff of the avatar with the given key |
Attachment Response | <avatar key><command> ok | 748bb591-0d9d-4907-8287-dc27b8267e24lcuff ok | The attachment on the left wrist sends this response |
In order to draw a chain of particles, we need the key of the attachment, not the key of the avatar wearing the attachment. This is easy, because the listen event that gets the answer message has the attachment key in the
key_id event parameter.
List of the different mooring points

1: rcuff - right wrist cuff
2: rbiceps - right upperarm cuff
3: lbiceps - left upper arm cuff
4: lcuff - left wrist cuff
5: lblade - left shoulder blade
6: rblade - right shoulder blade
7: rnipple - right nipple point
8: lnipple - left nipple point
9: rfbelt - right front of the belt
10: lfbelt - left front of the belt
11: rtigh - right upper leg cuff
12: ltigh - left upper leg cuff
13: rlcuff - right ankle cuff
14: llcuff - left ankle cuff
15: lbbelt - left back of the belt
16: rbbelt - right back of the belt
17: pelvis - lower front of the pelvis
18: fbelt - front of the belt
19: bbelt - back of the belt
20: rcollar - right of the collar
21: lcollar - left of the collar
22: thead - top of the head
23: collar - front of the collar
24: lbit - left corner of mouth/cheek (for pony bits)
25: rbit - right corner of mouth/cheek (for pony bits)
26: nose - nose
27: bcollar - back of the collar
28: back - middle of the back
OTHERS:
handle - type "leash handle" , this is useful for leashing to a leash handle.
rigmiddle - type "rig", target for suspending to the middle point.
rigleft - type "rig", target for suspending to the left point.
rigright - type "rig", target for suspending to the right point.
special commands
<avatar key>col<vector> - order a color change (used in lockmeister collars to tint the cuffs like the collar) OPTIONAL
ex: "748bb591-0d9d-4907-8287-dc27b8267e24col<1.0,1.0,1.0>" will say to an item able to understand it (color yourself in white)
<avatar key>booton/bootoff = commands sent by collar objects, asking for the shoes animation overrider to be stopped
ex: "748bb591-0d9d-4907-8287-dc27b8267e24booton" activate the animation overrider
ex: "748bb591-0d9d-4907-8287-dc27b8267e24bootoff" deactivate the animation overrider
stuffs to be added
-freeform data channel
-all purpose locking system
-various probing commands
amethyst extension commands
The following commands are not part of the main lockmeister protocol, but additions Amethyst Rosencrans made in her sold and free cuff scripts. They are here to document the extensions so others can utilize them.
<avatar key>target|point1|point2 = Connect a chain from mooring point 1 to mooring point 2
ex: "748bb591-0d9d-4907-8287-dc27b8267e24target|lcuff|rcuff" will create a chain from the left cuff to the right cuff
<avatar key>target|point = Remove a chain from mooring point
ex: "748bb591-0d9d-4907-8287-dc27b8267e24target|lcuff" will remove a chain from the left cuff
<avatar key>texture|<texture key> = Change the texture of the chains used by the target command
ex: "748bb591-0d9d-4907-8287-dc27b8267e24texture|1ffb37fa-2fc1-dbec-d8ea-0607583a03c6" will change the chain texture
<avatar key>gravity|<downward acceleration float> = Change the rate at which the chain particles move down
ex: "748bb591-0d9d-4907-8287-dc27b8267e24gravity|0.5" will change the chain texture to move down half a meter a second
<avatar key>age|<age float> = Change how fast the chain particles move from point 1 to point 2
ex: "748bb591-0d9d-4907-8287-dc27b8267e24age|2.0" will change the chain texture to move the distance in 2 seconds
Cool Products extension commands
The following commands are not part of the main lockmeister protocol, but additions Henri Beauchamp made for use by his Cool Products (such as the Cool Collar). They are here to document the extensions so others can utilize them.
<avatar key>point here = Signals that anchoring point "point" just appeared.
ex: "748bb591-0d9d-4907-8287-dc27b8267e24handle here" could be emitted by the on_rez event of a leash handle to signal the collars connected to the owner of the leash handle that they should connect to it instead of staying connected to the center of the avatar.
<avatar key>point gone = Signals that anchoring point "point" just disappeared.
ex: "748bb591-0d9d-4907-8287-dc27b8267e24handle gone" could be emitted by the a leash handle when it is detached to signal the collars connected to it that they should unleash.
if you plan to integrate the lockmeister system to your products, contact
KyrahAbattoir inworld if you want to get the approval logo (it's a plus not an obligation)
a basic lockmeister furniture need to receive the seal of approval:
-high quality building
-use a single listener for the lockmeister channel
-test the presence of the cuffs it need when the avatar sit on it
-if cuffs respond, draw the chains properly
-must provide a free cuff set or the required attachments it need to work properly (you can get mines)
Example scripts
Lockmeister basic opensource project - courtesy of Lynn Kukulcan
Lockmeister basic furniture script - courtesy of KDC
example attachment script:
//KDC sample lockmeister attachment version 1.0
//
//NOTE: this script must be in the root prim of the object for working properly and the root prim must ALSO be the prim you want the particles to go to, since this script use an attach event, if you want the root prim to be another prim you will need to write your own code
//...
//and in a general way this script is here as an explanation to the lockmeister system so ... WRITE YOUR OWN CODE!!
//
//KDC, kyrah design concept
string mooring_point = "lcuff";
//write here the mooring point you want to use
integer attach_control = TRUE;
//TRUE if you want to control the attach point (and detach if attached on the wrong part of the body, else, FALSE
integer attach_point = ATTACH_LLARM;
//write here the attachment point that need to be controlled
//example :
//left wrist/arm = ATTACH_LLARM
//right wrist/arm = ATTACH_RLARM
string attach_text = "this cuff must be attached to the left forearm";
//the text to display when the object detach itself
default
{
attach(key id)
{
if(id != NULL_KEY)
llResetScript();
}
state_entry()
{
if(llGetAttached() != attach_point && attach_control)
llRequestPermissions(llGetOwner(),PERMISSION_ATTACH);
else
llListen(-8888,"","","");//open the lockmeister channel
}
listen(integer channel,string name,key id,string message)
{
if (message == (string)llGetOwner()+ mooring_point)//did we get a ping message for us?
llWhisper(-8888, message + " ok");//answering it
}
run_time_permissions(integer perm)
{
llOwnerSay(attach_text);
llDetachFromAvatar();
}
}