Jump to content

Help with a RLV script for folders.


Anna Nova
 Share

You are about to reply to a thread that has been inactive for 2331 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I'm using RLV successfully to add some base items from a folder using a notecard to drive the attachment.

I want now to eliminate the notecard and use the folder in which the script is stored in Inv to contain the items.  This seems possible with RLV using the uuid of the prim containing the script to identify the folder it comes from.

However I made a small test script to develop my understanding of the folder side of RLV and it's not doing what I expect:

integer listen_handle;

default
{
    state_entry()
    {
        listen_handle == llListen(2222,"",llGetOwner(), "");
    }

    attach (key owner_id)
    {
        llOwnerSay("Attached");
        llOwnerSay("@getpathnew:jaw=2222");
    }
    
    listen (integer chan, string name, key id, string message )
    {
       llOwnerSay("Message on channel:"+(string)chan);
       llOwnerSay(message);
       llListenRemove(listen_handle);
    }
}

Before using the uuid, I decided to use an attachment point (jaw) that I know has an item from the #RLV folders attached, but after the initial "Attached" diagnostic, I get no outputs.  I tried various other attachment points that I know are occupied, but no luck.  The script-prim is in RLV, as is the item attached on the jaw.

What am I doing wrong?

 

Edited by anna2358
typo
Link to comment
Share on other sites

51 minutes ago, anna2358 said:

llOwnerSay("@getpathnew:jaw=2222");

I don't remember a 'jaw' point in the RLV/RLVa system unless its recently added, mouth yes, chin yes, jaw?

Try turning on the rlv debug messages in your viewer, and thus be able to SEE exactly what commands your viewer is getting and what errors it any it's throwing up. You'll find rlv debug options on the RLV menu, if you havn't enabled display of the rlv menu, don't even try to write rlv code for attachments as you're wandering blind, hehe
 

  • Thanks 1
Link to comment
Share on other sites

21 minutes ago, Klytyna said:

I don't remember a 'jaw' point in the RLV/RLVa system unless its recently added, mouth yes, chin yes, jaw?

Try turning on the rlv debug messages in your viewer, and thus be able to SEE exactly what commands your viewer is getting and what errors it any it's throwing up. You'll find rlv debug options on the RLV menu, if you havn't enabled display of the rlv menu, don't even try to write rlv code for attachments as you're wandering blind, hehe
 

Thanks for that.  The jaw does exist as far as my CTS Wardrobe is concerned (and it uses RLV), and it's where Lelutka parks it's head.

I got the script going now.  Several stupid typos.

I'm usually wandering blind...

Link to comment
Share on other sites

1 minute ago, anna2358 said:

The jaw does exist as far as my CTS Wardrobe is concerned (and it uses RLV)

Doesn't really mean much, you can attach an object manually, to an attachment point that SL recognises but which the version of rlv/rlva in your viewer doesn't, and sl will remember where that object as attached...

Then you stick that item in a folder, and use an rlv command to @attachover that folder, and hey presto, rlv/rlva can add that item, and even remove it by folder, but that doesn't guarantee that @detach:new-bento-point will work as intended.

Toggle on debug messages for rlv, basically it just echoes rlv commands recieved by your viewer to the local chat window, so you can see if it's saying stuff like "unknown attach point' etc. Worth checking before trying to work with stuff by specific attach points instead of by folders.

The wiki's for rlv/rlva dont seen to get updated that well or often, and some of the info is definately out of date, and I honestly don't know if rlv recognised points have been updated to include new bento points or not.
 

Link to comment
Share on other sites

6 hours ago, Innula Zenovka said:

According to Marine's blog, her RLV has been Bento-compatible since this time last year:  http://realrestraint.blogspot.co.uk/2016/12/rlv-2921.html

I assume Kitty will have updated RLVa at about the same time, though I haven't bothered to check.

Technically, all that blog states is that she added her rlv code to a "BENTO SL Viewer" source code to make a "BENTO Marine Viewer". Doesn't say SQUAT about adding additional attach points to the rlv code, just that your hands won't end made of rubber and up welded to your feet or something, like in the 32 bit Frankenviewer...

Typically unclear Marine blog post...

Ho Hum...
 

Link to comment
Share on other sites

@Klytyna  Come to think of it, I don't really understand what "adding additional attach points to the RLV code" would involve.     It's presumably the simulator, not the viewer, that needs to understand what the attachment points mean, isn't it?    I don't really understand how the viewer works but I'm assuming that it no more needs to know what attachment point 47 (ATTACH_FACE_JAW) means than does a script that calls llAttachToAvatar(47) or llGetAttached().     All the viewer needs to understand is how to understand the messages it gets from your GPU and CPU, which get those from the simulator, I would have thought.  

So long as the viewer can understand where to draw the attachment -- so "your hands won't end made of rubber and up welded to your feet or something" as you put it -- what does the RLV need to know?    I suspect that all the @attach* commands actually do is tell the viewer to send (or to refuse to send until further notice) messages to the simulator concerning attachment point n, regardless of whether or not n represents an attachment point that the simulator understands.

Link to comment
Share on other sites

12 hours ago, Innula Zenovka said:

@Klytyna  Come to think of it, I don't really understand what "adding additional attach points to the RLV code" would involve.     It's presumably the simulator, not the viewer, that needs to understand what the attachment points mean, isn't it?    I don't really understand how the viewer works but I'm assuming that it no more needs to know what attachment point 47 (ATTACH_FACE_JAW) means than does a script that calls llAttachToAvatar(47) or llGetAttached().     All the viewer needs to understand is how to understand the messages it gets from your GPU and CPU, which get those from the simulator, I would have thought.  

So long as the viewer can understand where to draw the attachment -- so "your hands won't end made of rubber and up welded to your feet or something" as you put it -- what does the RLV need to know?    I suspect that all the @attach* commands actually do is tell the viewer to send (or to refuse to send until further notice) messages to the simulator concerning attachment point n, regardless of whether or not n represents an attachment point that the simulator understands.

Remember when all rlv collars were worn on spine or chest attach points, because there wasn't a NECK point you could use.

LL added neck as a usable point, that update was in two parts, server side so the servers allowed that, and client side, so clients could handle the extra point numbers on the list. But old rlv/rlva versions didn't like 'neck' as a point, didn't understand it

This isn't my area of expertise, need to ask a viewer dev, maybe Super Whirly, but, when SSA came in, the system went sort of like this...

You look at your inv, you click on an item to add it to your avatar, your CLIENT looks the item up in the clientside inventory list, finds out what the damn thing is, and where it's supposed to go, and adds it to your "current outfit" then sends a "change of outfit notification" to the server, which pulls details from the asset server, does the whole Server Side appearance, thing, and tells all the clients what to draw.

This is why, BTW, a bad logout or a crash, damaging your clientside inv list, can make it impossible to add or remove items until you clear and rebuild the list, that old "wearing LL medium rock" thing on your gut when you relogged after a bad crash.

Now the ability to add an item to a new attach point is part of the client merge code supplied by LL to match the server rollout, so a recently updated client will understand that there is an attach point "62 : Arse", but... the RLV/RLVa code is separate, not made by or maintained by LL, a black box module dropped into the viewer code...

 

Different viewers refer to points like Avatar Center/Avatar Root/Root by different names, but the RLV/RLVa commands related to it, are the same...

Somebody needs to make sure that the RLV code understands "@detach:Arse=force" and doesn't kick back with "invalid rlv command - what is Arse?" because while the client merge code recognises point 62, and can pull "arse" off a server list to name it for poor humans who don't read binary numbers, you might STILL need to tell the RLV code module how to turn "@detach:arse=force" into something connected with point 62.

I honestly haven't tried using specific bento points in rlv commands, yeah the viewers are updated to use bento, but is the rlv/rlva?

Time to experiment?



 

Link to comment
Share on other sites

6 hours ago, Klytyna said:

Time to experiment?

I used this script: 

integer iLocked;
list lOptions = ["y","n"];

default {
    state_entry() {
        
    }

    touch_start(integer num_detected) {

       llOwnerSay("@detach:jaw="+llList2String(lOptions, (iLocked=!iLocked)));
        
    }
}

with "show debug messages" turned on in Catznip R12.0.4 - Oct  5 2017 00:37:45 (64bit) (Catznip Beta).

The results were

Quote

[07:30] Object:  executes: @detach:jaw=n
[07:30] Object:  executes: @detach:jaw=y

I also attached a prim to my Jaw using the inventory menu and then called   llOwnerSay("@detach:jaw=force");    That removed the item.

So Catznip Beta appears to understand these new(ish) attachment points, or "jaw" at least.

I'm not completely sure I agree with your reconstruction of how RLV/RLVa handle attachments (or, indeed, how the viewer handles them).   Your inventory is simply an list of symbolic links to entries on the main inventory server, and I think all the viewer does is tell the simulator to attach or detach the particular item.   Then, I think, the simulator gets all the information it needs from the inventory server, including the attachment point and the attachment's offset and rotation.    

Otherwise, I can't see how rezzing an object set to an experience and calling llAttachToAvatarTemp could possibly work -- that attaches stuff in the right place and correctly adjusted, and everyone else can see it, and the object never goes anywhere near your inventory.   

The fact that different viewers have different names for some attachment points is, to my mind, neither here nor there, since that would be simply a matter of alkalising them on the menu.   The official viewer has button on the top menu bar called "Me" but in Firestorm it's "Avatar".   They're still the same menu with the same underlying code.

Anyway, I am satisfied that Catznip understands the Bento attachment points and I assume other viewers do too.

Edited by Innula Zenovka
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2331 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...