• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-864
Type: New Feature New Feature
Status: Open Open
Priority: Normal Normal
Assignee: Unassigned
Reporter: anthony reisman
Votes: 5
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

Allow llGiveInventory to work across region boundaries

Created: 23/Oct/07 02:53 PM   Updated: 08/Apr/08 07:26 AM
Return to search
Component/s: Scripts
Affects Version/s: None
Fix Version/s: None

Environment: All
Issue Links:
Relates
 


 Description  « Hide
it would be nice to be able to give inventory to an object that is outside the region a script is in. Currently this restriction is not in place for giving inventory to agents.

Particularly, this could be used to create an updater system (combined with llRemoteLoadScript) to enable updates inworld that are more transparent.

Is there a reason why the restriction exists?

This could be combined with SVC-71 http://jira.secondlife.com/browse/SVC-71 in case the transaction fails.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
WarKirby Magojiro added a comment - 23/Oct/07 09:44 PM
I don't think this is possible. I may be wrong here, but:

Objects change their key whenever they are rezzed. The key is only stored in the current simulator, I believe. Since avatars don't change their keys, they have universal and static keys, which allows things to be given to them. Object keys are limityed to that sim, and therefore the script can't acess the data needed to find the destination object.

I think, a possible solution to this, would be something like

llWideGiveInventory(string simulator, key destination, string item);

Which would send the item to the sim the destination is in, then have the simulator deliver it from there. Presumably, for things like an updater system, the object would communicate it's key and simulator to the update server.

I'm not sure if having this done with llRemoteLoadScriptPin would be a good idea. Rather, the target object could be sent an updater, which it would rez. The updater containing scripts and inventory items for the update, delivering them then deleting itself. As long as the object doesn't leave the sim while the update is in progress.

So, in short. I think we need a new function. I don't think this functionality can be added to llGiveInventory. But I'm not entirely certain.


anthony reisman added a comment - 24/Oct/07 07:09 AM
I understand your first point, but if the key doesn't exist, couldn't the function return something (as in with SVC-71) that a failure occured, or it could fail silently. I would be OK with that happening if the key didn't exist, so the delivery would try, but fail. I would even be OK with the object being deleted (instead of returned) if it failed as long as it was documented as being the expected result.

My example of creating an updater would be as you said, the object would deliver the object key to an updater object in a different sim, currently there is no way to give an item to the object.

I would also be fine with having to specify the region, if that would make it easier on the asset system from having to try and locate it (or if they don't have that capability in place). I just want to be able to deliver it somehow, even if there are other restrictions.

The only part that llRemoteLoadScript would play would be to transfer the scripts and set as a running state since, llGiveInventory is not allowed to do that. Anyways, llRemoteLoadScript can only be used between objects with the same owner. So your example is one case that I was thinking of, but we have to be able to deliver the updater object (or the update items to a helper object already connected to the target) across region boundaries to do anything.

You might be right on needing a new function, and if so, I think this information could be incorporated in with SVC-71 for that new function.


Lex Neva added a comment - 24/Oct/07 09:38 AM
I think warkirby's right: the only way this would be feasible currently is if the giving object specified a region to look in. There're just way too many regions to hunt through to find a given object by UUID.

anthony reisman added a comment - 24/Oct/07 10:28 AM
Ok, it wouldn't bother me (for the purposes I'd use it for), it would be trivial to specify the region to start looking in.

I didn't think that agents were different from other stored assets, but if it is, well, then that's what we have to work with.

I will adjust the description to be a new function similar to the once requested in SVC-71 with some added parameters when I get a chance.


Talirion Loon added a comment - 07/Apr/08 09:58 PM
i hope this will be fixed soon, i only think this THread is not so good posted becasue there ist not so important to have a llGiveInventoryWithConfirmation, more important is it to fix the llGiveInventory!

what happend if we send a Object to another object in a nother region?
1. if the key is wrong you got a error
2. if you send to an agent it works
3. if you send to an object it also works but the object is not deliverd to the object the owner of the sending object gets it? and this is crazy!

please fix this asap


anthony reisman added a comment - 08/Apr/08 07:23 AM - edited
Changed the issue back to a feature since the current functionality seems to be intentional which makes this a feature. Also returned the description closer to my original statement as the new wording confused me.

Talirion: Currently you only get an error if you send an invalid key (not if it is a key to nothing or is a wrong key).
I am confused by your number 3 wording, can you elaborate? Is this what occurs, or what you are expecting.