Scripting Features

  • Search existing ideas before submitting
  • Use support.secondlife.com for customer support issues
  • Keep posts on-topic
Thank you for your ideas!
Relax the restrictions on llSetContentType CONTENT_TYPE_HTML
Proposal Originally proposed on the Jira Allow non owners to receive HTML content. In responses from llHTTPResponse with llSetContentType(id, CONTENT_TYPE_HTML) Currently the restrictions are: (per the wiki) - the web browser is the Second Life client - the user (logged into the SL client viewing the page) is the owner of the object. - the user (logged into the SL client viewing the page) is connected to the region the object is located in I would propose relaxing at least the 2nd, "owner of the object" restriction. Reasoning The current restriction encourages the hosting of content external to sl, resulting in a form of "link rot" over time, leading to ever more broken scripts and objects as users forget/actively take down those external services. Removing it would allow prims to actually host their own pages when needed, in a simpler manner. There are already a few ways (but cumbersome) to circumvent it, so it is already ineffective. There has also been talk of serving content for HTTP requests directly from notecards at SUG meetings, this would compliment that massively. Concerns This should have no impact on either, security or privacy for SL users, as I mentioned above there is already a workaround for this, and the prim could just load an external site that can capture any data far better anyway. User privacy is primarily controlled client side with the decision on whether or not to load the page in the first place (be it via media being disabled, whitelists, or other settings). Additional The 1st and 3rd restrictions could also be lifted, but that is debatable, depending on how LL feels about prims being used to directly host content for use external to SL. I personally would like to make things like control panels etc for user to work with, and instead of having to upload complex meshes and moved things around with scripts a simple html ui would be perfect... but right now you have to bypass this restriction for that.
1
·

tracked

Request: llLinksetData functions via pin
I found a request for llLinksetDataWritePublic; I'm requesting something similar but distinctly different, hoping this will be compatible with what we have now. I'd like to request a variant of the linkset data functions with the word Remote, and a pin parameter. This set of functions would permit scripts in objects to get or set the linkset data in other objects via a secret access pin when the prim is set to Mod. There's precedent for this! We have remote script pin, for starting/stopping/replacing scripts in other objects. I propose we do the same for data. (I'll bold the new functions & events, the rest work like their current counterparts) Function Spec: function integer llSetRemoteLinksetDataPin(integer pin) Allows a prim to have scripts remotely get and set linkset data function integer llLockRemoteLinksetDataPin(integer pin, integer Locked) Allows a prim to be set to prevent linkset data access from being granted via pin, using a different pin. Eg, a creator could use a pin to set lock to TRUE, preventing a customer from enabling remote data access with a Mod prim. integer llLinksetDataRemoteWrite( key target, integer pin, string name, string value); string llLinksetDataRemoteRead( key target, integer pin, string name); integer llLinksetDataRemoteDelete( key target, integer pin, string name ); list llLinksetDataRemoteDeleteFound( key target, integer pin, string pattern, string pass ); llLinksetDataRemoteReset( key target, integer pin ); integer llLinksetDataRemoteAvailable( key target, integer pin ); integer llLinksetDataRemoteCountKeys( key target, integer pin ); integer llLinksetDataRemoteCountFound( key target, integer pin, string pattern ); list llLinksetDataRemoteListKeys( key target, integer pin, integer first, integer count ); list llLinksetDataRemoteFindKeys( key target, integer pin, string regex, integer first, integer count ); Read, Write, and Delete functions traditionally have a *Protected variation that works the same but adds a string password. This spec could extend protected functionality as well, or we could choose to implement just the functions above to alow data that is "already public." Events Spec: Minimal spec, using existing event: linkset_data( integer action, string name, string value ) Gains the following constants: LINKSET_DATA_REMOTE_RESET | The remote linkset's datastore has been cleared by a call to llLinksetDataRemoteReset. LINKSETDATA_REMOTE_DELETE | A key in the remote linkset's datastore has been deleted. Either through a call to llLinksetDataRemoteDelete or llLinksetDataRemoteWrite with an empty value LINKSETDATA_REMOTE_MULTIDELETE | A comma separated list of the keys in the remote linkset's datastore which have been deleted through a call to llLinksetDataRemoteDeleteFound. Maximal spec, using a new event: function integer linkset_data_listen( key target, integer pin ) | Fires a linkset_data_remote when the remote linkset data changes. Returns handle function linkset_data_close( integer handle ) | No longer fires an event when a remote linkset changes. Event linkset_data_remote( key linkset, integer action, string name, string value ) | Receives all linkset data events from the remote object as though it were that object itself. I see a minimal event spec as being useful and easier to implement; it essentially just tracks when successful remote linkset operations instigated by this script have completed. This provides the minimal needed feedback, and the script would need to check remote data when it intends to use it. The maximal spec might generate a lot of events between objects. But, it's nothing we're not already doing, more clumsily, with the messaging system, but this way would be much cleaner. With a dedicated listen/event event, we could properly have a multi-object game using common data, with events and functions fired by remote trigger. A real game platform! One consideration: It might be desirable to have mod objects, without allowing third-party control. I have included a function to lock/unlock pin access for this purpose.
1
Add LinkSet data equivalent to avatars – AvatarData
Linkset data is amazing for persistent storage and sending data between scripts. Having a set of data for avatars would be great too. It would enable synchronizing settings between multiple items of the same brand a lot easier. Storing shared settings, for example access block lists for interactive attachments. Or storing settings data when before swapping to a redelivered version of the same item, that can then read it. Sending password protected data between HUDs and other attachments, instead of using chat channels. I’m sure scripters would fine plenty of uses for something like this. Functionally it should have all the features of the LinkSetData, with some differences: • No equivalent for LlLinksetDataReset, as we wouldn’t want one brand’s items destroy other brand’s item’s data. • Larger storage than 128k, as there can’t be 30k avatars in a sim, compared to regular prims, more storage shouldn’t be a problem, I’d say 1mb or more sounds reasonable starting point. • Equivalent of https://feedback.secondlife.com/scripting-features/p/edit-linksetdata-from-inside-the-viewer would be a must, with a reset all button for the viewer. We wouldn’t want a broken item filling in someone’s whole storage, so ability for the Residents to clear all data or just select data would be required. • Maybe add a permission request before item can Write/Delete AvatarData, no read permission, or auto-grant read on attach. Again, since it is permanent storage on avatar, we wouldn’t want it to be corrupted by a broken script. • In terms of documentation there should be caveats pointed out that the data can be reset at any time by the Residents and that it should not be used for storing any license key or authorization type data. • Should have a listener functionality (similar to chat listen) for specific key changes instead of an equivalent of linkset_data event, as we wouldn’t want to trigger loads of scripts on many different attachments with each change.
16
·

tracked

Load More