And as promised, here it is, the latest version of the RLV.
Those of you who read this blog regularly know that this version is a bit big, with more than a few new commands. If you're interested in knowing what is new, read on. If you prefer downloading it right away, just go grab it at the usual location :
http://www.erestraint.com/realrestraint
And the MD5 hash for the Windows executable is
b59d5b3e49c50ad3c0178d4b034cdf6c
Still here ? Let me paste the readme file for you then :
- 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 until now, in preparation for a possible change in the future.
- 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 : 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.
- changed : The user can now wear up to 10 pieces of clothing per layer (for example, 10 jackets at the same time). Please note that the maximum number of objects per attachment point has NOT been increased, in order to avoid hogging the sim.
- changed : The avatar will not bounce up and down when wearing and removing clothes, having the nice side-effect of increasing the speed of changing outfits.
- fixed : Could remove the jacket layer even when contained into a shared folder and "@detachthis:jacket=n" was issued.
- fixed : Could change shape even under "@remoutfit:shape=n".
(*) : 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.
You may have noticed that the commands "@attach" and "@attachoverorreplace" are synonyms now, as well as their derivatives. Although I wanted to revert "@attach" back to how it used to behave on RLV 1.x (i.e. always replacing existing attachments when attaching new ones), this had the nasty effect of upsetting a lot more people than I thought at first. I am not here to upset people, so this change is going to be postponed until further notice. I'll try to communicate early enough when it really needs to take place, but for now it is not a necessity yet.
Have fun !
Marine