For a very long time now (years !), this is a feature I advocated for... And I got tired to wait for it to get implemented by Marine and to have, in the mean time, to compile personal builds of the Cool VL Viewer with blacklisting enabled (since there are some RestrainedLove commands that are just
unacceptable for a true role-player like me). So, here it is for everyone to enjoy (and I hope, for Marine and RLVa folks to inspire themselves from it).
Starting with Cool VL Viewer v1.26.0.28 and v1.26.2.6, you can blacklist RestrainedLove commands with the exception of information commands and a few management commands (none of the @get* and @version* commands can be blacklisted, neither any of @clear, @notify, @detachme, @findfolder, @setrot, @adjustheight, @emote).
Blacklisting is done by listing the commands (as a comma-separated list) in the RestrainedLoveBlacklist variable. Note however, that this variable is only read when the viewer is started (so that one can't cheat by adding a command to the blacklist and see it ignored during an ongoing session). Also since some commands have a different effect depending on whether you use them with a "add"/"rem" parameter or with a "force" parameter, the latter are distinguished in the black list by adding "%f" to their "behaviour" name (i.e., you use "behav" in the variable to black-list @behav=add, and "behav%f" to blacklist @behav=force). So, for example, to blacklist @*im*, @setdebug=add and @setdebug_*=force commands, you set the RestrainedLoveBlacklist variable to "sendim,sendim_sec,sendimto,startim,startimto,recvim,recvim_sec,recvimfrom,setdebug,setdebug_%f".
Since it would be unpractical for the average, non-geeky user to set this variable manually, the Cool VL Viewer provides an easier way to set it.
For a start, I defined three basic profiles as follow (with the explanations that you will also find as tool tips for the corresponding radio buttons in the preferences floater):
- BDSM Persona-Player: Persona-players are people who consider they make one with their avatar (their avatar is bearing their own persona, even if they don't share the same appearance or even gender). For them, IC (In Character) and OOC (Out Of Character) do not really mean anything (they are both IC and OOC at the same time when they play). They enjoy being restricted in the same way as their avatar and even further. RestrainedLove was primarily designed for persona-players. With this setting checked, no RestrainedLove command will be blacklisted.
- BDSM Role-Player: Role-players are people who consider that, while their avatar may share some of their own traits, it is just a character (like the character in a novel) that they use to play a role. For them, IC (In Character) and OOC (Out Of Character) are two, entirely different things just like the writer of the novel (their OOC self), and a character in the novel (their IC self). They do not want to be restricted as a player (no OOC restrictions), but enjoy seeing their avatar restricted as a part of and as an enhancement to the role-play.
- Non-BDSM: If you are not into BDSM and yet wish to benefit from some features RestrainedLove can offer to you, such as allowing scripts to change what your avatar is wearing, or to redirect your chat (used by emoters), or to TP you automatically (used by teleporting gates), but don't wish to get restricted in what you can do in any way, then this profile is for you !
And here is how it shows in the "Cool features" tab, "RetrainedLove" sub-tab of the "Preferences" floater:
Then, if the black lists defined for the above profiles still don't suit you, you may choose to press the "Custom" button, that opens the following floater:
As you can see, the commands are actually regrouped in categories that should hopefully prove clear and easy to understand even to the newbies. For the geeky folks among you, hovering the mouse cursor on the check boxes also pops up a tool tip containing all the @commands that are associated with the corresponding category.
Now, some scripters among you could start yelling at me for implementing stuff that breaks their RestrainedLove scripts. Well, as a scripter myself, and a maker and seller of RestrainedLove-enabled products, I did think about it all a lot before implementing such a feature.
For a start, you must consider that many RestrainedLove relays already implemented their own black-listing feature, so the viewer-side black list won't affect more in-world scripted items (those RestrainedLove items that are not worn and thus need a relay) than the black-list enabled relays have already been affecting for years. In fact, the viewer-side black list may even improve the situation since, unlike relays, it can give feedback about commands support... which brings us to the following chapter:
You also get a new info command (@getcommand), which may be used to retrieve the list of the commands that are both supported and not blacklisted by the viewer. This command actually already existed in RLVa (it reported the supported commands too, but of course, didn't take into account any black-list since there was none). It works much like the @getstatus command. The syntax is as follow:
@getcommand[:partial_name_match]=channel
Where "partial_name_match" is the (part) name of the command(s) for which you want to know if the viewer will execute it(them).
Example:
@getcommand:sendim=222
Will report "/sendim/sendim_sec/sendimto" for a "BDSM Persona-Player" profile and an empty string for a "BDSM Role-Player" or "Non-BDSM" profile.
There is however a small issue with @getcommand as it was implemented in RLVa: it didn't make any distinction between the @behav=add, and @behav=force variations of some commands and just returned "behav" (since with no black-list, if one variation was supported, the other was too). With the possibility to blacklist one variation and not the other, it would be better if @getcommand could distinguish both...
For now and by default, the Cool VL Viewer implements a RLVa-compatible version of @getcommand, but if you set a special debug variable to TRUE, then @getcommand reports differently.This debug variable is "RestrainedLoveExtendedGetcommand" and can be changed easily from the Advanced -> RestrainedLove sub-menu:In the above screen-shot, you can see that the "Enable the extended @getcommand version" is checked.(
EDIT: see
this post for update)
With the extended @getcommand version, you could, for example, issue "@getcommand:remattach=222" and get "/remattach/remattach%f" when none of @remattach=add or @remattach=force are blacklisted (Persona and Role Players profiles), or just "/remattach%f" when @remattach=add is blacklisted (Non-BDSM profile).
It must also be noted that @notify reports succeed even for blacklisted commands. This is so that existing scripts (that expect some commands to be present based on RLV version number) don't get "stuck" waiting for a @notify report upon issuing a blacklisted command.
As a final word, I'll say that the black list actually broadens immensely the use of RestrainedLove that non BDSM-Persona-Players were so far very reluctant to enable in their viewer because of the unwanted restrictions they hated or just feared.