Don't click here unless you want to be banned.

LSL Wiki : exchangeLockMeisterSystem

HomePage :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings :: You are crawl338.us.archive.org
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();
    }
}
There is no comment on this page. [Display comments/form]