So after about a month of working non-stop on the Vixen Leather Training Set, here I am back on the RLV, which needed some attention.
First of all, it needed to be upgraded to the latest SL viewer codebase, just so you could benefit from the 40-groups-limit that was introduced in the SL viewer v2.5, and the RLV was lagging behind until now.
Secondly... well there are a lot of commands that I always wanted to add, and that are now going to be live soon. See for yourself :
- added : Notification to scripts on clothes and attachment changes. This allows a script to be notified when the user wears or unwears an outfit, without having to constantly poll for the list of worn items. The notifications are "(worn/unworn/attached/detached) (legally/illegally) (path_to_outfit)"
- added : "@adjustheight" command, as implemented by Henri Beauchamp (see http://sldev.free.fr/forum/viewtopic.php?f=7&p=1847#p1847 for details).
- added : "@attachoverorreplace", "@attachthisoverorreplace", "@attachalloverorreplace" and "@attachallthisoverorreplace" commands, which now do what respectively "@attach", "@attachthis", "@attachall" and "@attachallthis" used to do from v2.0 to v2.4.
- added : "@setgroup:(name)=force" command to force the user to activate the specified group (they must be a member of course). "none" will deactivate the group tag.
- added : "@setgroup=n" to prevent the user from switching groups.
- added : "@getgroup=2222" to obtain the name of the current activated group of the user. Please note that the UUID of the group is not disclosed, only the name, to stay consistent with the LSL API.
- added : "@touchworld:(uuid)=add" exception to allow to touch an specific object in world even when "@touchworld=n" is active.
- added : "@touchthis:uuid=n" restriction to prevent from touching one object in particular.
- added : "@unsharedwear=n" command to prevent the user from wearing anything that is not under #RLV. (*)
- added : "@unsharedunwear=n" command to prevent the user from unwearing anything that is not under #RLV. (*)
- added : "@detachthis_except:(folder_child)=add" to add an exception to a "@detachallthis:(folder_parent)=n" restriction, provided that (folder_child) is contained somewhere under (folder_parent) and that "@detachthis_except" has been issued by the same object (this kind of exception does not work between different objects, on purpose). (*)
- added : "@detachallthis_except:(folder_child)=add", same thing as above but will include all the sub-folders in the exception as well. (*)
- added : "@attachthis_except:(folder_child)=add" to add an exception to a "@attachallthis:(folder_parent)=n" restriction, provided that (folder_child) is contained somewhere under (folder_parent) and that "@attachthis_except" has been issued by the same object (this kind of exception does not work between different objects, on purpose). (*)
- added : "@attachallthis_except:(folder_child)=add", same thing as above but will include all the sub-folders in the exception as well. (*)
- changed : "@attach" now does not care about the "+" character in the beginning of a folder when attaching it anymore, this command will now always replace what was previously worn, exactly like it used to do in v1.x. The "@attachoverorreplace" command and its derivatives will do what "@attach" used to do from v2.0 to v2.4 included. This spares the script from having to "guess" whether an outfit would stack or replace when wearing it with "@attach".
- changed : Now "@attachall:=force" (notice the lack of option after the colon) is ignored, to avoid a common mistake that would make the user attach their whole #RLV folder (and given the time it takes, probably disconnect their viewer in the process).
- changed : The minimap is not hidden anymore when "@showloc=n" is issued.
- fixed : Could remove the jacket layer even when contained into a shared folder and "@detachthis:jacket=n" was issued.
(*) : These new commands are extremely helpful when you want to lock everything except a particular folder (and its subfolders if you need). You can for example issue a "@attachallthis=n" command to lock the whole #RLV off, followed by a "@unsharedwear=n" command to make sure that no other folder can be worn instead (locking the inventory out would work well too but would be a bit overkill), then issue a "@attachallthis_except:boots=add" to allow the avatar to wear only what is contained inside the "#RLV/Boots" folder (if any) or any of its children.
Of course, while a folder is locked that way, the user is unable to rename it, move it, or move its contents. Moreso, since such an exception is valid only with restrictions issued by the same object, if another object issues a "@attachallthis=n" command, this will completely void the exceptions issued by the former object and lock the whole #RLV folder anyway.
Finally, the RLV checks the closest parent's restriction when it comes to determining whether an outfit can be worn or unworn. In other words, you can decide that a folder and all its children are locked off, except one sub-folder that can be worn, and a couple of its own children cannot.
All these features are coded and tested, so unless something happens in the meantime (a huge bug when testing or yet-another-super-interesting-command coming up and me feeling the urge to add it to this version), the new RLV 2.5 should be released during the week. The only thing I am still missing is a Starlight skin to go with it.
I must add that I am also working on the Outfit plugin for my products, in order to include the new "@attach[all]this_except" and "@detach[all]this_except" commands. This should make the management of outfit restrictions much more interesting. These commands are also what I was waiting for before I could actually write this Outfit tutorial that I have been promising for nearly two years now. Heh.
Have fun !