Sunday, October 18, 2009

RestrainedLife 1.22.1

Hi there,

As promised here is the latest version of the RLV, which is a minor update but interesting nonetheless :

- Updated the code to match the one of the SL viewer v1.23.5.
- And for RealRestraint fans who like to spend time bound, the ability to focus the camera on objects at all times, even when "blocked" (meaning a huge prim blocks their clicks, to make the restraint feel even more "real").

Download it here :
http://www.erestraint.com/realrestraint

MD5 hash for the Windows zip file :
2b5efeb94cce38cc56c7ce73325ab20d

Have fun !
Marine

PS : This is the 100th post on my blog. Yay !

PS 2 : I had to re-upload the zip file a few hours later, because I messed up with the version of the SL viewer, it showed 1.23.4 instead of 1.23.5. Fixed now, and the hash code has changed (new one is up there). The old hash code was
e24da2cab06c2062dd88d1345615cfda

Saturday, October 17, 2009

RestrainedLife 1.22.1 coming soon

Hi there,

Just a quick post to say that I have a working RLV 1.22.1 on my Mac, and that it will soon be released for Windows. This new version will include :

- Compiled from the latest SL 1.23.5 with its notecard changes.
- The ability to focus your camera through HUDs. This one is made for hardcore RealRestraint fans who like to spend their life bound and blocked, but who regret their camera can't focus on objects because of the blocking prim on their HUD (which is made to intercept touches). It also discards right-clicks while holding the Alt key, since it would allow you to sit or touch objects through a HUD. This change does not apply if you're in Mouselook view, though, it wouldn't make sense.

As this update is not really urgent, RLV 1.22 works with SL 1.23.5 already, and as Real Life is rather busy at the moment, please be patient while the compiler warms up. Thank you !

Have fun,
Marine

Tuesday, October 13, 2009

RR Tutorial : Gag plugin

Hi !

Today we are going to talk about a plugin everyone knows, the one you find in any RR gag. This plugin is rather easy, but half of it is RLV-oriented, and that's the hard part. As the easy part is really easy, and not worth a tutorial, let's assume that the captive is using the RLV so I can explain everything smoothly.

We all know what a gag is for, it is used to make chatty captives shut the hell up. Oops. Hrm. Sorry, I get carried away sometimes. But you will agree that some really do need it ! *g* What ? Who said "just as you do" ?!

Very well then, I'll demonstrate it for you since you insist ! Let me lock it on "Medium" and... mmmmph ! Now everything I say seems to be garbled, except my emotes with appear normally but are... truncated. It is not very easy to make myself clear anymore, save for very short sentences.

But you already knew all this. Let's take a look at the plugin shall we ? I click on my gag, then go to Plugins > Gag... and once again I bang into a wall of buttons :



* "Typing" and "Cheating" are irrelevant to the RLV, which takes all these into account.

* "Slashes" will make the gag complain or not when I say something like "/ao on" or "/hug so-and-so".

* "Notif owner" will decide whether my keyholder will receive a message when I cheat by speaking on channel 0. Note that this button is poorly worded, but "Notif keyholder" did not fit. I could have called it "Notif khldr" or "Ntf kh" or "Mxmsfgbh", but it would not have been very clear...

* "Emote" will make the gag truncate emotes or not.

* "Drool" will make me... drool. Or not. That depends on how messy my keyholder wants it !

* "Ch. evasion" (meaning "Channel evasion") is fun. When I say something, my chat is automatically redirected to a random channel, which changes every 30 seconds, in order to avoid those pesky "gag translators". If I deactivate channel evasion, my chat will fall back to channel 1, but I can change it to, say, channel 12 by simply saying "channel 12".

* "IM blockable" is a little trickier, and only I (the wearer) can see this button. If I set it to Yes, then my keyholder can decide to prevent me from sending IMs to people at any time.

* "IM restriction" only appears to me (the wearer) or to the keyholder if "IM blockable" is set to Yes. It gives the keyholder the ability to prevent the captive from sending IMs to anyone. She can also prevent me from sending IMs to anyone except to herself, provided the gag is locked and she has the key.


That's about it... this one was rather simple after all !

Have fun,
Marine

RR Tutorial : Wriggle plugin

Hello there, we are going to talk about maybe the most misunderstood and underused plugin of all the RR suite, yet it can prove itself useful in certain situations.

Sometimes a captive may want to change position, if her restraints allow. Or rather, when she thinks that if she was bound that way in RL, she would have a chance to wriggle to a different position. For example her hands could be cuffed behind her back, and if she was fit and nimble enough she would be able to move them to the front after some squirming. That's the purpose of the Wriggle plugin, to give the captive a chance to wriggle to a different position, when possible.


First of all, you cannot wriggle from just any position to just any other position, it has to make sense. You can move your cuffed hands from front to back, back to front, but not from the sides to the back or whatnot, because it would imply a change in how the cuffs are locked, and that wouldn't make much sense without the key.

But enough chit-chatting, let's try a practical example. There, my hands are cuffed behind my back, and I'm blocked. Remember the tutorial about arms restraints ? When my hands are cuffed behind me, I can't touch anything anymore. But right now it may be a problem, I might need to touch something, operate something, or open a box, or do whatever I need to do that my cuffs prevent. In other words, I need to move those hands to in front of me ! And if I don't have a key, there is only one solution : the Wriggle plugin.




Let's just look at the menu of this plugin, I go to Plugins > Wriggle and here is what I get :


It asks me to choose which pose I am aiming at, i.e. where my wriggling would take me in case I succeeded. There is only one choice, "1 Hnd front", because realistically I could only move my hands to the front from where they are. So I press that button.



Whoa. What's this ? "Progression", "Chances", "Pot"... are we in Vegas now ? Where do I insert my tokens ? Well ok, hold fire and let me explain. "Tokens" in this plugins are the tries that you spend when you try to struggle out from your restraints. Remember that tutorial ? Struggling consumes tries, and you recover them more or less quickly depending on how well you are doing. Well Wriggling also consumes tries, that's the same energy source (your sweat). Basically this means that you can either struggle or wriggle, but not both. Wriggling is meant to be easier, though.

So what you have to "pay" for wriggling is tries. When you attempt to wriggle, you have 3 choices :

* Soft, consuming one try
* Medium, consuming two tries
* Hard, consuming three tries

And for every attempt, you have a chance to progress or not. Of course the harder you wriggle, the higher the chance, and it is stated on the menu itself.

When you wriggle, you do not actually lose tries right away. They go into the "pot" instead, with a 1:1 ratio (i.e. every try you bet goes into the pot). But if you fail an attempt, the pot loses double the amount of tries you have just bet ! But before talking about the pot, let's try to wriggle a little.


I press "Soft", and immediately the restraints says "You progress a little in your wriggling..." and I notice the progress bar on the menu has gained a little step (marked with a ">") to indicate that I am making progress. The goal is actually to fill up the progress bar. At the same time, the Pot is equal to 1, because I have "spent" one try in order to attempt this move. And succeeded so far. Okay then, 9 more steps to go.



I press "Medium" because I feel lucky (even if there is no stupidest thing to say than "I feel lucky", it could even qualify for "famous last words"). Notice that "Medium" has exactly one more chance than "Soft", but it costs 2 tries. This time the restraint says "You progress a little in your wriggling, and your chances of success are now higher...". Woohoo ! All the probabilities have been increased by one ! It's going to be easier to wriggle now, and cheaper ! Oh, and I've made one more step on the progress bar, and the Pot is now equal to 3 (1 for the Soft move, then 2 for the Medium one).


Ok so now that I have made 2 steps and both were successes, my 3 tries spent are all in the pot. If I pressed "Cancel" now they would be given back to me, and my progress would have been cancelled, and I would be back to square one, not losing anything and not winning anything either. But I won't press Cancel. I would if I desperately needed the tries in the pot to, say, struggle.


Let's fast-forward a little instead, let's say I have made 6 steps and the pot is now 8. I choose "Hard" this time, spending 3 tries to maximize my chances. However this results in a failure, and the pot is now reduced by twice the number of tries I bet ! That's 6 tries lost ! It's back down to 2 (even if I only spent 3 tries, but they obviously didn't make it to the pot).

This leaves me no choice than to go ahead, because the pot has suddenly become far less interesting. If I pressed "Cancel" now, I would only get 2 tries back and lose all my 5 steps, after having spent 8 tries. That would be 6 tries wasted ! Note that if I wriggled Hard at the beginning of the progress, and missed without losing all my steps, the pot would go down to 0 but not lower. This is interesting because it saves me from wasting too many tries.


Ok, this is pretty straightforward from now on, I think you got the point. The strength of the wriggling can be Soft, Medium or Hard, the stronger the more chances but also the more expensive. Internally, the plugin "throws a 10-sided die" at each wriggle attempt, the lower the result the more likely to progress one step forward. If the result is low enough, then the chances are even increased for later, but if the result is too high they are lowered instead !


And what happens if I actually manage to make all 10 steps ? Well the cuffs are automatically relocked into the pose I have selected in the first place (in this case "1 Hnd front"), and I get back all my tries because this is actually a new pose !



Oh, here is a little hint for you since you've read this far : the more you struggle (and make progress in struggling), the looser the restraint, hence the higher the chances at wriggling ! It is something like... hmm... *cough*onemorechanceperfivesuccesses*cough*. Hey, I've said it !


Have fun !
Marine

RR Tutorial : Leash plugin

Hi there, let me tell you about one of the most popular plugins in the RR brand (and this feature is provided in many other brands as well) : the Leash. It is always useful to fasten a chain to the cuffs of your captive to force her to follow you, or to force her to stay there. Note : at the time of this writing, the version of the RR suite is 1.22, including a way to make a leashable restraint behave like a leash handle, or "anchor". In other words, to make it possible to leash another captive to this restraint, even without its wearer's consent. It can also leash the captive to any prim, regardless of whether it is a root prim or a child prim, and whether it contains a script or not.

Please note that I need to lock the restraint for the leash to work (it used to not be necessary, but really it doesn't make sense to be leashed and not locked).

So, I lock my restraint and I take a look at the menu. I go to "Plugins...", "Leash" :



This is pretty straightforward actually. I can be leashed, unleashed, yanked, leashed to another captive and the length of my leash can be changed. Easy. I can also hide and show the leash, and retrieve some additional tools.


I press "Leash" and immediately a chain is attached to my collar. It's dangling from it, not being leashed anywhere. In fact I am leashed to myself. What's the point to being leashed to yourself would you ask ? Well if I am using the Restrained Love Viewer, then I am unable to teleport until I am unleashed.

There are several ways to use a leash actually. The first one is when the top leashes the captive's restraint directly. The result would be a chain going from the restraint to the top's crotch... Ouch ! That's gotta hurt. Meet my alt Mary (the blonde on the left), who is going to demonstrate it for you. She clicks on my collar, goes to Plugins > Leash, and presses "Leash" :


The second way would be to use what I call a "leash handle", a small handle to carry and attach the leash to. In other words the chain woud not go to the crotch anymore but to a special attachment that the top wears, usually in a hand. The leash handle can be retrieved by the top directly from the Leash plugin of the captive, by pressing the "Give tools" button. Once the handle is obtained, the top (Mary in this case) wears it and the leash immediately connects to it, nothing to do. The "Give tools" button also gives a HUD called "RR Leash anywhere". More on that below.



I have to mention a... bug there. Yes, there are some known issues with this tricky piece of plugin. If the top unwears the leash handle, the chain disappears, but the captive is still leashed to the top and unable to teleport. Only there is no visual cue anymore, and that may be confusing. So don't do this, once you wear your leash handle, don't unwear it before unleashing your captive, or if you do it is better you leash her again afterwards, to see the chain again.


However, the top can drop the leash handle to the floor. Mary simply right-clicks on her own leash handle, and selects "Drop". And see what happens :




I can move around only so far away from the handle that is now on the floor, no matter where Mary goes. I am effectively leashed to the leash handle that has been dropped, and no longer to Mary.


Now, Mary can choose to get her handle back, while I'm still leashed to it ! She just right-clicks on the handle on the floor and selects "Put on" > "Wear" on her context menu (or if she decides, "Attach > Right Hand" or wherever else she likes). This will make her walk or run or fly to the handle and wear it automatically. And...




... I am now leashed to Mary again, to her carried handle to be exact. Easy !


Now, maybe Mary does not have permission to rez things where she is, or maybe she sees other leash handles around (there are many around SL, as they are looking very simple and can even be modified), and wants to leash me to one of them, even if it doesn't belong to her. For instance in a public BDSM place. Well, she can !

She simply clicks on a ring in-world (riveted to a wall, floating in the air, half-buried into the ground etc) and Woosh ! I am instantly leashed to that ring and no longer to Mary ! However if she did that to another ring afterwards it would not do anything, she would have to leash me again first. And once again, if that ring belongs to her she can Wear it directly too, even if she was already carrying a handle (the ring, which is a handle, would probably replace the one she is carrying).


Another fun thing, since we are talking about leash handles... Since 1.17 a restraint that contains a Leash plugin (in other words, a leashable restraint) can also serve as a leash handle ! That way the top can literally make "chain-gangs" of captives. To do this, simply press the "Anchor" button on a captive's restraint (for instance a collar) while another captive is leashed to you, and you will see the latter being leashed to the former. For example, Mary is now wearing a Vixen Collar (which is leashable) and has me leashed to her. Please note that she must not be wearing a leash handle anymore, because otherwise it would conflict. She clicks on her collar, goes to Plugins > Leash, and presses "Anchor"...



I'm now leashed to her collar directly ! And if she presses "No anchor", the leashes goes back... to myself. This means that I am still unable to teleport, but at least my movements do not depend on the other captive, in this case Mary. She has broken the chain-gang.

While "Anchor" is active on Mary's collar, every leash that she activates from my restraints are automatically connected to it after 10 seconds at most. This happens only because Mary wears a restraint and is also spawning leashes. My leashes wouldn't connect to Mary's collar automatically if I was leashed by someone else, unless that someone pressed "No anchor" then "Anchor" again on Mary's collar.

I mentioned the "RR Leash anywhere" HUD above. This is a new feature as of version 1.22 of the RR product line. It allows the top to leash the captive to anything. Really anything, except the ground. Mary simply wears the HUD she had retrieved earlier, it looks like a round green button with a chain symbol on it (the color is completely arbitrary, you can change it to whatever you like).



She leashes me again, looks around, and decides to leash me to, say, one of the rings on that post in the bedroom (yes, I have BDSM posts in my bedroom...). All she has to do is to focus her camera on it by Alt-clicking on it (her screen shifts until the ring is in the middle), and she clicks on her HUD. My leash immediately goes to the ring ! That ring is not even the root prim of the whole object, and although it is scripted (but does not contain the script for the handle), it could also be clear of any script, it would work all the same.





She could even be mean and leash me to someone (another captive or just anybody) with this trick. The only thing she cannot leash me to is the land.


That's about all there is to know about the Leash plugin. Changing the length of the leash is a no-brainer, it goes from 70 cm (as close as possible without making the avatar bounce around) to 15 m. Oh and the top can "Yank" the captive, which means giving a tug at the chain to pull the her close without changing the length.


One fun thing to do with the leash handle is to drop it on the ground and turn it into a physical steel ball, that is slighlty ovoid (so that it doesn't roll too far). It would act like a ball-n-chain-like fetter ! Very frustrating for the captive, believe me. Hehe.

Oh, one last thing ! If Mary locks me in a different way, the leash might change place. There might even be several leashes, like here on the yoke, after she grabs my leash again :




Have fun !

Marine

Saturday, October 10, 2009

RestrainedLife 1.22

Hi there,

As promised, here is the latest version of the RLV, with the features we have been discussing in the previous post (read the comments if you want to know everything).

In short, scripters will be able to tell the viewer whether they want to lock an attachment point empty, or occupied, or both. The old command, which was doing only both, has been maintained so the existing scripts do not stop working. They can also tell the viewer which point they want to lock, or all of them (exactly like the @remoutfit and @addoutfit commands do). It is much more consistent and flexible now.

There are also two new commands to prevent the user from opening scripts, or textures. These ones act exactly like the old notecard restriction, and add to the security when it comes to preventing the sub from communicating. Hehe.

And finally, I'm sorry to say that the "Add To Outfit", "Take Off Items" and "Replace Items" commands that you get in the context menu have to be disabled while an object is locked on the avatar. I have tried to do otherwise, and it works, but the viewer has a fundamental flaw : it cannot tell whether a folder is up-to-date according to the asset server or not. If the folders appears to be empty, then the viewer believes it is empty, and sends its command to the server without knowing what it is actually treating. That's dangerous, because you could do a "Take Off Items" on an apparently empty folder, but that actually contained locked objects. Of course, they would have been reattached, but still. Not secure enough.

That's why we are reverting to the old behaviour (pre-1.21) which said "these context menu items are disabled as soon as something is locked on you". This is more secure, and is not a serious loss of usability because "Wear" still works as expected, including the automatic reattaching of locked items if needed. But if I find a secure way to allow these menu items even when something is locked, regardless of whether the folder is up-to-date or not, then I will code it.

Gosh that was long and technical. Sorry !

Download the viewer here :
http://www.erestraint.com/realrestraint

MD5 hash for the Windows zip file :
cc9588adaa134dd4415c9561660032c1

Have fun !
Marine

Wednesday, October 7, 2009

A request for comments

Hello there,

There has been a growing concern about the @detach:[point] restriction, which locks an attach point to the state it is when the restriction is issued. For example, @detach:spine=n would lock anything that was attached on spine, or lock the spine empty... in any case the spine would not change at all until @detach:spine=y is issued.

However... in very laggy places, upon relog, things do not rez as fast as they should and the restriction is issued before the object to lock, so it would be locked out. When it finally attaches it is too late, the viewer detaches it automatically, and obviously the product is not working as it should. I have heard of two separate examples of it already.

So the obvious solution would be to divide @detach:
[point] into two commands :

* @detach:
[point] to prevent whatever is attached there from being detached, and
* @attach:
[point] to lock the point empty

Pros : It solves the problem, and it is more or less consistent with @remoutfit and @addoutfit respectively.
Cons : It requires a new command, nerfs an already existing command... so it kinda breaks existing content.

This is why I'm asking people who make products that use this @detach:
[point] command to post comments here to tell me whether they agree to this change for 1.22 or not. I don't want to break content but I don't want to refrain myself from doing the right thing if nobody is actually impacted.

Please only comment about that issue though, no need to stray to any other subject.

Thanks !
Marine

Tuesday, October 6, 2009

RestrainedLife 1.21.1

Hello there,

The version 1.21 of the RLV brought a little improvement in usability, but brought a bug along with it, it broke the @detach: commands...

Here is a fixed version, which took a while to make due to the intricate consequences of maintaining this particular command. But it seems to be working now, so here is it.

Download it at
http://www.erestraint.com/realrestraint

The MD5 hash for the Windows zip file is
10618c0006e55289eaaae1fcec2a9de8

Have fun !
Marine

Saturday, October 3, 2009

RestrainedLife 1.21

Hello there,

Today we are having an interesting release for the RLV : 1.21 allows you to use the "Wear" contextual command again, even in the cases when it was hidden before (typically when something was locked). Same for "Add To Outfit" and "Take Off Items" !

And there was much rejoicing.

Aside from that, there is also a fundamental change to the way exceptions are handled. Exceptions are the way a restraint allows its wearer to send an IM to someone even though IMs are restricted, for example. Before this version, any restraint could issue an exception to a restriction set by any other restraint, in other words a collar could issue an exception to allow the sub to send an IM to someone even though she was gagged and unable to IM.

It still works that way now...

... but...

... some people were concerned that the security of the RLV was only mild, since a sub could use one restraint herself in order to allow her to do things another restraint was restricting (we are talking about sending IMs, receiving them, hearing chat, speaking on channels and accepting teleport offers here, only).

That's why now the RLV provides more secure versions of these commands (@sendim, @recvim etc, all the commands that accept exceptions) on top of these regular commands (that would be @sendim_sec, @recvim_sec etc, respectively). When these secure commands are used, only exceptions that are issued by the same object that issued the restriction are taken into account. In other words, a collar could not issue an exception to @sendim if @sendim_sec was issued by a gag. Simple as that. It does increase the level of security of the viewer, without breaking stuff.

Let me paste the release notes here :

- fixed : A clever way to cheat around @shownames (thank you Talisha Allen).
- changed : Reinstated "Wear" on the contextual menu even when something is locked and no attach point is contained in the name of the item. This holds the risk of kicking a locked object off, but it will be reattached automatically after 5 seconds anyway. Even "Add To Outfit" and "Take Off Items" work. This was a MUCH awaited feature !
- changed : Added support for reattaching several objects at the same time. Objects will be reattached at 1 second interval.
- added : @defaultwear restriction. When this restriction is set, the "Wear" command will work like it did before this version, i.e. disappear if something is locked and no attach point information is contained within the name. This is for subs who tend to abuse the Wear menu and kicking off locked objects a little too often.
- added : @versionnum command to retrieve the version number directly, instead of having parse the "RestrainedLife viewer v1.20.2 (1.23.4)" string. Here it will return "1210000".
- added : @permissive command that tells the viewer that any exception to @sendim, @recvim, @recvchat, @tplure, @recvemote and @sendchannel MUST come from the object that issued it or will be ignored (without this command, any object can set an exception to the restrictions issued by any other object).
- added : @sendim_sec, @recvim_sec, @recvchat_sec, @tplure_sec, @recvemote_sec and @sendchannel_sec to do the same as @permissive, but one restriction at a time (i.e. exceptions to @sendchannel from other objects won't be ignored if @sendim_sec is set).

Go grab it at http://www.erestraint.com/realrestraint

MD5 hash for the Windows zip file :
a10f708fbd6573ceec19d4667ab74727

Have fun !
Marine