• 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-1167
Type: New Feature New Feature
Status: Open Open
Priority: Normal Normal
Assignee: Unassigned
Reporter: WarKirby Magojiro
Votes: 53
Watchers: 12
Operations

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

Script function to return objects

Created: 08/May/07 10:49 AM   Updated: 09/Mar/09 08:09 AM
Component/s: Scripts
Affects Version/s: None
Fix Version/s: None

Issue Links:
Duplicate
 
Relates
 


 Description  « Hide
Simply put. We need a function that can return other people's objects on your land. The lack of such a function makes automatic efforts to counter sim attacks somewhat ineffective. I'm trying to design a system to automatically counter mass rezzing attacks in my sandbox, when I can;t be there to see to it personally. But the best I can really do is ban the offender and hope they don't come back with an alt.

llReturnObjects(key avatar)

Would return all objects owned by avatar in the same parcel as the task. Would require that you have appropriate permissions to return them.

Edit :

Improved syntax to support return by object or owner key.

LLReturnObjects(list [key item, key owner])



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Elbereth Witte added a comment - 09/May/07 10:39 AM
My understanding is that countering each rez with a return in a high speed fashion could make the attack effects worse, if not for the region, for whoever else is using the dataservers involved.

It would be a really awesome feature though. (might also want stronger permission checks here)


Shadow Garden added a comment - 15/May/07 12:02 PM
I'd like to offer an entirely alternate reason to create this function. As a sim owner who rents spaces, it would assist in helping maintain property. A rental cube could automatically return items at the end of a lease for example. Perhaps require the objects to be within a certain distance from the object requesting the return as a control mechanism?

WarKirby Magojiro added a comment - 30/May/07 12:37 AM
Elbereth. IT would not be countering each rez qwith a return. The idea behingd my system is that it would automatically ban the offender to prevent worsening the problem, then mass return all of his objects at once.

Shadow has another good reason .We need this function


Elbereth Witte added a comment - 31/May/07 12:40 AM
That anyone might responsibly use it doesn't help on the script-assumed-hostile consideration that LSL was built under. People abuse every other function out there that can be abused, which seems particularly bad in cases of "defending my land with magical orbs and stuff".

I appreciate the use for it, I'm just typically wary and trying to keep the user viewpoint and the linden viewpoint in balance.


WarKirby Magojiro added a comment - 01/Jun/07 12:14 PM
Ultimately, residents have a right to do what they want with their land. This function, as stated would require you to own the land, or be part of the landowning group.

I can't see ANY potential for abuse here. You can't grief people by returning their stuff. It's your right to do so on your land. If they don;'t like it, they can go somewhere else.

Please explain how there's a problem with this?


Davey Callisto added a comment - 01/Jul/07 02:03 PM
Voted.

In addition to this function, one for returning single objects would be most useful too. Something like:

llReturnObject( key id);

where id is the asset UUID of the object in question. Both returning all objects, and a single object would be MOST helpful for parcel owners, and sandbox admins!

I agree with WarKirby, too. I'm not seeing how there's much room for griefing, unless you give someone untrustworthy access to your land. In which case they could just return all the objects through the conventional means, anyway.


Radian Artaud added a comment - 23/Sep/07 07:39 PM
I would love to see a feature like this, especially if it could return single objects as well as mass return all objects created by a user.

Another potential use for this is automated grief object clean up for when admins are not around. I have already designed a security system that notifies admins when a single user has created a sudden spike of objects on their property, and I have been looking for a function like this for ages to allow it to automatically clean up the mess as well. This function would have enumerable uses for security.

Also, I agree with previous posters, as long as the object was rezzed by someone who has permission to return objects on the property anyway, this function would have very little potential for griefing.

Voted


Jennie Panacek added a comment - 03/Jan/08 01:35 PM
This would be incredibly convenient at our sandbox. I could script an object to return all of a user's things when they click it. It would let people clean up who might not otherwise know how, or might miss things.

anthony reisman added a comment - 14/Jan/08 09:44 AM
This combined with the http://jira.secondlife.com/browse/SVC-58 feature request would make it easy to return all objects when a user leaves an area. This could be used with sandboxes, and any other place that allows some building but wants people to clean up after themselves.

Ashrilyn Hayashida added a comment - 15/Jan/08 11:26 AM
I do think this could be very useful.

I think being able to return your own objects could be useful as well, say if you're in someone else's sandbox.. if you manage to lose track of some prims or just want to use an "emergency return all my own objects" button.

I also like the single object llReturnObject(key id) idea. If that's implemented, I think the other function should be renamed to llReturnAllObjects(key avatar).. that or make llReturnObjects() NOT work when used on an object id instead of avatar id. Just in case of script-writing typos. "Objects" is not far from "Object" and someone might use the wrong one and.. wham, all objects owned by the object's owner returned instead of just one.

It should be clarified, how this function will work: Only per-parcel, or sim-wide, or nearby objects only. Maybe have a switch in it? Like llReturnObjects(1234-1234-1234,SIM_WIDE) or llReturnObjects(1234-1234-1234,PARCEL_ONLY) (I know, I know, those are bad example variable names.)
I think that there could be some usefulness in being able to narrow down the range if wanted. (Someone could return all their objects from a sandbox parcel but leave alone the ones outside of it.)

However, I can think of some potential griefing usage, depending on how this works. I think having some sort of permission check with a popup Yes/No window could be very good. Just once at the start of the script, then it will remember the permission for so long as the script runs.. like with the money permission, etc.

Someone could make an object that has llReturnObjects(llGetOwner()) in a no (mod/copy/trans) script, then give the object to the owner of a sim or someone else with return power, the owner or officer-person rezzes/wears this object, and suddenly all their work (or the sim-owner's work) is returned which they'd have to re-rez and reposition. Or it could seek out other objects nearby and return them, returning others' building work unexpectedly. That would be bad if the builds are part of the sim's usual buildings and whatnot.

Even if it can't return your own objects, there are sims with things built by others that should never be returned.. I could just easily imagine someone creating something that when rezzed or worn, detects objects and tries to return all objects owned by the owner of the detected object. It could be very bad if it's not expected.
What if someone made a wearable item with this script in it that returns all others' objects except for the owner's, and gave it to a sim owner.. then the sim owner wears it and takes a walk around their sim? They'd see others' builds returning and wouldn't know what's going on (no "You returned object x from sim y" messages for the owner I assume), unless the script must ask for permission to return objects first.
I know I'm being paranoid, but I would not doubt someone will try it if it's at all possible.

I definitely see the usefulness of this for ANTI-griefing, though!


Ey Ren added a comment - 15/Jan/08 12:06 PM
Any functions that would return objects should require owner's permissions to run. In addition, the return message to the owner of the objects should include name and location of the object that returned them, as well as the owner (pretty much identical to the one you get on the bottom of IMs sent from objects):
= <Object> is owned by <Owner>
= http://slurl.com/secondlife/<region>/<x>/<y>/<z>

darling brody added a comment - 16/Jan/08 05:24 AM
I would like to suggest a more robust version of this very desirable command. You might like to permit an agent to rez some objects and not others.

llReturnObject(list avatar_key_list, list object_key_list); // assume list of keys.

You can pass a list of agent keys and/or a list of object keys to have the item returned. The two lists are seperate so the objects listed do not have to belong to the agents listed.

-------

Alernativly you could have : llReturnObject(list Avatar_or_object_keys);

When passed an agent key it will return all objects from that agent. When passed an object key it returns only that object. Because it is a list you can return objects detected by sensors, or objects belonging to agents that are no longer detected by sensors. (see USE below)

Use
******

A retail shop might let a customer rez an object when the shop owner is the creator, so the customer can unpack a product they just bought. While returning any other undesirable objects!
eg: llReturnObjects( [ ], BadObjectKeyList);

Then once the person leaves your shop you might like to return anything they have left behind.
eg: llReturnObjects(AgentKeyList, [ ] );

A command like this has some very usefull applications in basic land management.

Security
***********

It would need to ask for permission just like taking money to negate any griefer use for it.
It should also have a built in time delay so scripters with poor skills dont set one up on a 0.01 sensor cycle and lag out the region.

A function like this in a land security tool would also negate all those cleaver tricks people use to avoid the parcel auto return.

Darling.


Bayru Jiagu added a comment - 22/Feb/08 03:50 AM
I too am strongly in favour of any function that could return a single object by key on a parcel with owner permissions.

I would suggest fashioning a "llReturnFromLand( key object );" to work similar to "llEjectFromLand( key agent );". I actually expected that function to work for objects too when I first encountered it ...
I think the abuse-potential for both functions would be of similar magnitude.

Apart from returning objects owned by an agent (as for security reasons explained in the other comments it could also be used (with a sensor/compare loop) to return all objects with keys not included in a list, which could be very usefull if you have a more or less permanent structure you want to keep but want to change the decorations every few weeks.

It could also be used to establish more specific filter capabilities as returning all objects that are invisible, all objects above or below a certain height/in a certain area, all objects with a certain naming pattern ... all objects created by a certain person (

{ if(llList2String(llGetObjectDetails(key id, [OBJECT_CREATOR]),0))=="adfacb56-390b-4fdc-9216-3494f1c59862")}

if you would want to get rid of all the mega-prims for example... ). I know it would take a lot of script-runtime but I don't think you would want those scripts to run every 5 seconds ... those would be specificly tailored scripts with a very specific application.

A few of the mentioned uses would also adress other suggested issues in a workaround way
( http://jira.secondlife.com/browse/SVC-1197 and others ... ).


darling brody added a comment - 11/Apr/08 09:05 AM
Improved syntax for the function to give maximum flexability

Function
------------
LLReturnObjects(list [key item, key owner])

Operation
------------
This function takes a list of keys as its paramater. The list is made up of object and / or avatar keys. If the key belongs to an object, that object is returned from the parcel the script is over. If the key belongs to an avatar, ALL of that avatar's objects are returned from the parcel the script is over.

Security
-----------
The function will only work if the script is owned by the land owner. (agent or group)

This can be scripted into a more selective auto return. For example it might not return a physical object that an avatar is sitting on. Thus avoiding returning a jet someone is flying over your land.

more here http://jira.secondlife.com/browse/SVC-2114


Cristalle Karami added a comment - 11/Jun/08 12:39 PM
Actually, as much as I like this, it needs another failsafe. As a landlord, I do not want anyone deeding such an object to group and returning my stuff. You need to be more than a member of the group, it should only respond to the group OWNER or OFFICERS. Without the ability to make that distinction, it is a dangerous tool. How many complex (expensive) builds could go up in smoke because of it?

darling brody added a comment - 24/Jun/08 11:49 PM
@Cristalle Karami

The secuity features are already in place.

1) group members can only DEED objects to the group if they are in a (trusted) roll with the deed ability.
2) objects that are not deeded to the group are unable to effect the group land.

This issue was raised and resolved long ago. There are already a number of functions that can ban, eject, and even alter the land height using scripts. That is why deeding an object to a group is not given to all group rolls.

Darling Brody.


Bayru Jiagu added a comment - 02/Jul/08 07:37 AM
@darling brody

The dual functionality (key agent vs. key objects) seems a great idea, though it should be cnsidered with care for safety issues (someone returning a full sim of objects by the sim owner for example.

I am more in favour of a single item return as opposed to a list though, since it's more intuitive to have function(key); than function([key]); . It is also more in line with existing functions, and would be an extra safeguard against someone returning a massload of objects (sleeptimer per object/linkset instead of per 72 objects/linksets).


darling brody added a comment - 03/Jul/08 10:55 AM
@Bayru Jiagu

I disagree.

The oldest functions like llSetColor() and llSetAlpha() etc do take only one param. However newer functions like llSetPrimitiveParams() set many things at once using a list. Other new functions like llGetObjectDetails() take a list and give a list as a result too. Clearly LSL is moving towards the use of lists due to their flexability.

It is far more efficiant to build a list of objects to return and then send that list ONCE into the function, rather than looping around the function.

Using a list also gives greater flexibility for change in the future as a list can have all kinds of differnt constants fed into it without effecting the existing scripts using the fucntion. look at llGetObjectDetails() as a wonderfull example of how lists can be used for function flexability.

I see the greatest potencial for such a function in the ability to manage a private sandbox. One can record the UUID of ariving avatars and then return all of their objects using their UUID once they have left the region for 5-10 minutes. In this way there is no need for an auto return that may return things that are still being worked on, while at the same time people who leave the sandbox will have a 5-10 minute auto return. This gets around all the tricks people use to avoid auto-return, and breaks all the self replicating griefer junk too. It also opens up the ability to return objects if the owner has rezzed too much stuff, thus solving the sandbox hog issues. You can even return objects by their name, so anything called BULLET could be returned instantly from a non-combat sandbox!

Shops can leave their land open to REZ for unpacking your new purchase without the need to leave your shop. A script can return any object that is not a retail box from yoru shop to prevent scammers from placing invisible skins on your vending machines to steal money.

This function could be the most usefull land management tool we have if it is done right.

Darling.


sayrah parx added a comment - 27/Feb/09 05:21 PM
This would be great for if you want to make sure something stays in a certain area or region. It could be programmed to automatically return itself if it doesn't check in with another object, if it goes into another sim than the one it was assigned to, or fulfills or fails to fulfill some other condition. Currently it's possible to do that, if you're ok with destroying it forever. However, some objects contain settings that you would not want to have to duplicate, so it would be better to just have it return itself and redeploy it later from lost and found.

tim vantelli added a comment - 09/Mar/09 08:09 AM
Seems crazy that in script I can eject an avatar from my land and also ban them but I have no way of returning their objects. Anyone with any kind of rental scenario would find this functionality hugely useful IMHO