Function returns 'true' of the physics engine is configured to be 'OpenDynamicsEngine'.
The presumption is that all other physics engines work the same (like SL) or it is a bug.
Does not require ossl functions to be enabled.
Add permission by identifying uuid (owner/creator/group) and function. Revoke
permission in the same manner. Permission adjustments immediately effect
running scripts ability to call os functions.
osGrantScriptPermissions(UUID key,string function) Threat Level Severe
osRevokeScriptPermissions(UUID key,string function) Threat Level Severe
work sponsored by: Rage
This is somewhat more in keeping with something like osForceAttachToOtherAvatarFromInventory()
and potentially allows a separate osForceSit() command with High threat rather than VeryHigh that only sits the owner and can be enabled without enabling sit of other avatars.
Allows a script IN the target prim to force an avatar to sit on it using normal methods as if called by the client.
Overload method of osForceSit() to allow a script NOT in the target prim to force an avatar to sit on the target prim using normal methods as if called by the client.
This patch is based on previous work from
http://opensimulator.org/mantis/view.php?id=4492
and also includes the suggestions from justincc including change of threat level
Thank you Christos Lightling.
These are identical to llCreateLink() and llBreakLink() except that they don't require script permissions.
However, osForceCreateLink() still requires that linked and linkee still have the same owner.
There's also an AutomaticLinkPermission setting in [XEngine] that could be set to true to prevent the LSL function checks.
But this doesn't allow the finer control over which users/scripts, etc. can do this that the OSSL functions provide.
Routines in Util to compute region world coordinates from region coordinates
as well as the conversion to and from region handles. These routines have
replaced a lot of math scattered throughout the simulator.
Should be no functional changes.
the physics engines to return the name that is specified in the INI
file ("physics = XXX") as the type of engine.
This os function is a little different than the others in that it
does not throw an exception of one is not privilaged to use it.
It merely returns an empty string.
type for an HTTP request. Since the "official" LSL function limits
the use of the response type, it is implemented as osSetContentType
with a string for the content mime type and a threat level of high.
With this function you should be able to implement rather functional
media-on-a-prim application with much less difficulty.
Returns the amount of health (in an integer) that an avatar has left in the scene.
If an avatar is not found or safe is enabled on a region, -1 is returned.
Example usage:
default
{
touch_end(integer _t)
{
key agentID = llDetectedKey(0);
osCauseDamage(agentID, 50);
llSay(0, llKey2Name(agentID) + " has " + (string)osGetHealth(agentID) + "% health left.");
}
}
This works like osForceAttachToAvatar() but allows an object to be directly specified from the script object's inventory rather than forcing it to be rezzed in the scene first.
Still only attaches objects to the owner of the script.
This allows one to bypass the complicated co-ordination of first rezzing objects in the scene before attaching them.
Threat level high.
These behave identically to llAttachToAvatar() and llDetachFromAvatar() except that they do not enforce the PERMISSION_ATTACH check
Intended for use in completely controlled dedicated environments where these checks are more a UI hinderance than a help.
Threat level high.
are osReplaceString(string source, string patter, string replace, integer count, integer start)
The count parameter specifies the total number of replacements to make, -1 makes
all replacements.
llGetOwnerKey() could also be extended but this does not allow one to distinguish between an unowned NPC and some other result (e.g. 'no such object' if NULL_KEY is the return.
Also, any future extensions to LSL functions by Linden Lab are unpredictable and OpenSim-specific extensions could clash.