Scripting Features

  • Search existing ideas before submitting
  • Use support.secondlife.com for customer support issues
  • Keep posts on-topic
Thank you for your ideas!
Please make llSetVehicleFlags(VEHICLE_FLAG_CAMERA_DECOUPLED) not require mouselook steering
VEHICLE_FLAG_CAMERA_DECOUPLED is incredibly useful for use in vehicles, and allows for scripters to create a stabilized platform on otherwise uneven or rough terrain. This was attempted to be brought up in https://feedback.secondlife.com/scripting-bugs/p/llsetvehicleflags-vehicle-flag-camera-decoupled-does-not-work In said thread, it was elaborated on by the lindens that VEHICLE_FLAG_CAMERA_DECOUPLED requires VEHICLE_FLAG_MOUSELOOK_STEER or VEHICLE_FLAG_MOUSELOOK_BANK This limits the usability of a desirable function and requires scripters to create work arounds if they are creating some form of track or wheel driven vehicle they want to stabilize. Additionally, without the ability to decouple non mouselook driven vehicles, they are very nauseating and difficult to control, creating an opportunity for physics grief to negatively impact user experiences. A lack of decoupling for non mouselook steered vehicles was previously worked around for LLCS vehicles, prior to the implementation of llSetLinkSitFlags(link,SIT_FLAG_NO_DAMAGE), by setting the volume detect "sit prim" to be a mouselook steered vehicle that didn't actually make use of any vehicle movement. In short : The current functionality of VEHICLE_FLAG_CAMERA_DECOUPLED is limited to mouselook steered vehicles, limiting usefulness, the desired functionality of this flag as shown by the existing feedback threads regarding this very topic is use with non mouselook steered vehicles as well. Additionally, camera decoupled vehicles are more user friendly and less prone to being griefed via applying rotations via physical prims as well. feedback threads in question: https://feedback.secondlife.com/scripting-features/p/link-camera-decoupling https://feedback.secondlife.com/scripting-bugs/p/llsetvehicleflags-vehicle-flag-camera-decoupled-does-not-work
1
LSL to write/update/change notecards needs to exist
I'm not sure why this is still not a thing, but for a long time, Second Life's data in scripts is like playing an RPG without a memory card, and no way to save. There's a lot of valuable information that is relegated to variables, where if something breaks and the script needs to be reset, or something needs to be moved and placing it down resets the script, all of that information is gone. Right now, the only other option is to set up an external data server to send and receive information from, and that's overkill. Implementing a way to store, edit, and erase data from a notecard within an object would grant us the following at the least: Dynamic data storage: Scripts could save and update information without requiring manual editing of notecards. Improved configuration management: Scripts could automatically update configuration parameters stored in notecards, making it easier to maintain and modify object behavior. User data persistence: Objects could store user-specific data, allowing for personalized experiences without manual intervention. Storing with script restarts: Right now, there is no way to restart a script and still store the information inside without the use of an external webhost. Extended variable use: Too many variables can make a script problematic. Notecards could allow for storing and recalling them as needed to a far easier degree. Simplified data sharing: Scripts could generate and distribute notecards with custom content to users or other objects, facilitating information exchange. Reduced script memory usage: By offloading data to notecards, scripts could potentially use less memory for storing large amounts of information. Enhanced debugging and logging: Scripts could write log data or debug information to notecards for easier troubleshooting and analysis. Dynamic content creation: Objects could generate and update notecards with current information, such as player statistics or in-world event details. We need the ability to write to notecards. I'm shocked we don't have this yet but it feels like not having this as an option does a great disservice to creators and customers in Second Life.
7
Add a Text Rendering Method
Add a new function LSL function named llRenderText or similar, which allows users to dynamically render text, with limited but flexible formatting, onto the face of their choosing. Concept: // Signature llRenderText(integer face, string text, list params); // Basic example llRenderText(ALL_FACES, "Lorem ipsum...", [ FONT_ALIGN, "right", FONT_WEIGHT, "bold", FONT_FAMILY, "sans serif" ]); Rationale Text is ubiquitous, yet Second Life has no way for users to display text other than uploading a texture, setting floating text using llSetText , or using relatively resource intensive solution such as XyText/Furware/et al. This absence precludes interesting features, such as being able to create a responsive interactive terminal in Second Life, HUDs with dynamic text, etc. A scripted and efficient text solution that displays on the face of a prim/mesh would give Second Life the biggest bang for the buck: Limited in scope (easier to implement than grand UI-creation ideas) Easy to kitbash into existing and new creations For inspiration, you can look to how the Text Display widget is implemented in the Playstation game Dreams. It has limited options: a finite number of fonts and formatting options, but the fact that it can be combined with other content makes it rather powerful. Other details Font color, opacity, glow, etc are controlled by prim properties (Example: setting face color to red sets font color to red) Questions Should the background always be transparent? Creators could put another prim behind the text display face to give it a background, or it could be a property of the render params. Possible Parameters FONT_WEIGHT FONT_STYLE FONT_FAMILY FONT_VERTICAL_ALIGN FONT_HORIZONTAL_ALIGN FONT_TEXT_WRAP FONT_LINE_HEIGHT FONT_SIZE Possible Features Markdown / rich text
29
·

tracked

[Function Requests] llGetGroupDetails
Currently, the process to obtain group information is extremely limited. For avatars, pulling the UUID via llGetObjectDetails with a list entry given by llGetAttachedList is the only way. Objects themselves being only able to natively return the group UUID via llGetObjectDetails, but obtaining additional details about the group is not possible with any existing function. The only way to pull the name of the group an avatar/object is set to is via the group's webpage which requires running a HTML request, with other things such as the group's texture being pulled the same way. Due to these reasons, trying to set up systems which interface with groups has been largely unintuitive and unreliable beyond a simple true-or-false check. The goal of this request is to create simple functions that can pull group information directly ingame without having to call upon external resources, in addition to adding ways to pull the specific information of a group which there is currently no function for. Examples: string llGetGroupKey(key UUID) - Returns the group UUID active on object or avatar. string llGetGroupName(key Group_UUID) - Returns a string that is the group's name string llGetGroupTexture(key Group_UUID) - Returns the UUID that is the texture set to the group. string llGetGroupDesc(key Group_UUID) - Returns a string that is the description of the group. integer llGetGroupRating(key Group_UUID) - Returns 0 if group is General, or 1 if the rating is set to Moderate. list llGetGroupDetails(key UUID, list flags) - Returns a list containing the information request in 'flags'. Valid flags would be GROUP_KEY, GROUP_NAME, GROUP_TEXTURE, GROUP_DESC, GROUP_RATING.
2
·

tracked

PBR llFunctions
I've spent about the last week updating some scripts to handle both PBR and Blinn-Phong updates simultaneously. The scripts work fine, but the current way you have to update PBR values - through llSetPrimitiveParams and the full list of values - is not ideal. In order to avoid overwriting your existing values with blank or incorrect data, you have to have a way to know and store your existing values, modify those values, and send the whole list back in. Adding in some llFunctions for PBR values, so you don't have to modify the entire parameter array to change one value, would make scripting PBR modifications much more pleasant to work with. If llFunctions are not feasible, a way to update individual values in the parameter arrays without data loss (e.g. being able to pass a blank string as a texture and have it skip the value instead of applying it) would be appreciated. I've compiled a list below of how I would personally pop each value out into a Set function (they would have matching Get functions, a la llGetColor and llSetColor): --- For PRIM_GLTF_BASE_COLOR: llSetGLTFBaseTexture(string texture, vector repeats, vector offsets, float rotation_in_radians, integer face); llSetGLTFBaseColor(vector color, integer face); llSetGLTFBaseAlphaMode(integer gltf_alpha_mode, integer face); llSetGLTFBaseAlpha(float alpha, integer face); llSetGLTFBaseAlphaMask(float alpha_mask_cutoff, integer face); llSetGLTFBaseDoubleSided(integer double_sided, integer face); --- For PRIM_GLTF_NORMAL (this really only has one function): llSetGLTFNormal(string texture, vector repeats, vector offsets, float rotation_in_radians, integer face); --- For PRIM_GLTF_METALLIC_ROUGHNESS: llSetGLTFMetalRoughTexture(string texture, vector repeats, vector offsets, float rotation_in_radians, integer face); llSetGLTFMetallicFactor(float metallic_factor, integer face); llSetGLTFRoughnessFactor(float roughness_factor, integer face); --- For PRIM_GLTF_EMISSIVE: llSetGLTFEmissiveTexture(string texture, vector repeats, vector offsets, float rotation_in_radians, integer face); llSetGLTFEmissiveTint(float emissive_tint, integer face);
11
·

tracked

Load More