The following should silently fail when attached,
llBreakAllLinks, llBreakLink, llCreateLink.
The following should be restricted to avatars in the same sim,
llGetAgentInfo, llSameGroup, llGetAgentSize, llGetAnimationList.
Comment added to the following unimplemented functions,
llGetAgentLanguage, llGetAnimation.
llGetBoundingBox is completely unimplemented. The attached
patch contains a partial implementation for single prim
objects and standing, flying and ground sitting avatars.
In the case of an avatar sat on an object or multi-prim
objects only the bounding box of the root prim is returned.
llRezObject and llRezAtRoot ignored any velocity parameter.
The attached patch makes use of it if it is not a zero vector.
chat relaying via private channels, and old IRCBridgeModule
behaviour. also cleaning up IRCBridgeModule's OpenSim.ini
configuration variable names (still supporting "old" variable
names). refactored IRCChatModule into IRCConnector and incorporating
watchdog from IRCBridgeModule into IRCConnector.
enabling ChatModule to be used as a super-class and utilizing it in
ConciergeModule.
* Implement the linear impulse portion of llPushObject. We should have a lsl compatible implementation of that portion of the push. Angular.. well. still have yet to implement a torque accumulator.
* llPushObject respects the region and parcel settings for Restrict Push, it also respects GodMode as is defined in the LSL spec.
* Calculate an agents height in LLGetAgentSize() from apperance parameters rather than physics avatar numbers
* Another good looking patch from idb - thanks!
If prim is part of SOG, then ask the SOG to update the
position, rather than asking the part itself.
Ghosted child prims should no longer result from llSetPos.
Not sure if this is the right approach for all cases ,
would appreciate feedback on the patch.
The attached patch fixes mantis bug 2312 (llGetPos() returns incorrect
values for child prims where the root prim is rotated). Regression
tests still pass.
Incidentally AbsolutePosition which was used before looks a little
suspicious to me as its always going to return the wrong value if the
root prim is rotated. GetWorldPosition does take the rotation into
account, but AbsolutePosition is used in a lot of places. Though i
don't understand why there is both GetWorldPosition as well as
AbsolutePosition so I've left the latter alone.
[i also cleaned up some indent problems, --- dr scofield]
Attached is a patch for LLGround which was just plain broken and could
cause a runtime error. It now returns valid data with valid input (ie
the offset does not take the position off the edge of the sim), but a
runtime error will occur if invalid data is given.
On invalid data the LL servers return the ground height based on a
valid point closest to the effective position calculated using the
supplied offset. Is the OpenSim convention to replicate the LL servers
as closely as possible? If so I can submit an additional patch to
replicate the LL behaviour.
llSetLinkApha is not fully implemented and has not been updated
to use the recently added GetLinkParts and associated implementation
pattern as per llSetLinkColor and llSetLinkPrimitiveParams.
Prevent EventAbortException inner exceptions of
TargetInvocationException being re-thrown from
OpenSim.Region.ScriptEngine.Shared.ScriptBase.
Executor.ExecuteEvent
Implementation of llModifyLand() and There is a bug on
permission-check of land-terraforming: x an y-coordinates
are interchanged on function-call ExternalChecksCanTerraformLand.
Correct: x is west, and y is north. 2) Missing check of
"Other allow to terraform-flag" (Parcel.ParcelFlags.AllowTerraform)
Addresses llDie issues. The attached patch catches run time
exceptions that occur during method invocation (of type
TargetInvocationException) and exposes the internal exception.
This makes it possible to pass out the SelfDeleteException.
Also added handlers in a couple places to make sure that
exception was being passed out far enough to be handled
correctly. Tested on DNE.
In Second Life's implementation of llParseString2List(), all spacer
strings which occur within the source string are included in the
resulting list. In OpenSim's implementation, any spacers occurring
at the beginning of the string are discarded; furthermore, if multiple
spacers occur between non-spacer elements, or at the end of the source
string, only the first spacer is added to the resulting list;
the remainder are discarded.
Thank you, fusspawn, for an implementation of osGetSimulatorVersion.
This patch removes the llRequestSimulatorData(..., 128) hack and
implements the functionality as an osFunction.
A number of the deprecated functions had missing parameters
causing compile errors. These included:
llSound, llMakeExplosion, llMakeFountain, llMakeSmoke,
llMakeFire, llPointAt, llXorBase64Strings, llSetPrimURL
OS/SL script conformance, implement llSoundPreload and
llRemoteLoadScript to behave as in SL. In SL
llSoundPreload appears to do nothing. In OS
llRemoteLoadScript shouts an error when invoked
"Deprecated. Please use llRemoteLoadScriptPin instead."
The current llGetLinkName returns an empty string if a prim
with the given link number is not found in the link set. In
SL an empty string is only returned if the prim name is actually
blank, a NULL_KEY is returned instead with a couple of exceptions.
The binaries are still different, but that is only a small step away now.
The OSSLPrim has been removed. This commit will breal all scripts
using Prim.Scale(), etc, syntax. It was not secure and will have to
be brought back in another form.
Scene. Make the script engines check that the engine name in the
//Engine:language comment is a valid engine and treat it as a normal
comment if it's not.
//DotNetEngine: needs to be written as //ScriptEngine.DotNetEngine: now, since
that is it's real internal name. //XEngine: still works
Check the client dialog box (from top menu) WORLD / REGION ESTATE
/ REGION tab. The client dialog box seems to have a hard limit of
about 32 characters per line available for displaying the region
version number. Our regions are sending a string which is greater
than the limit, causing the client to wrap the text and look ugly.
The entire LSL API is now in the single, shared file
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api_Base.cs
This is for both engines. The OSSL function are still separate.
and makes it use a common set of types in both engine. Fixes the issues with
running both engines and HTTP requests / listens / timers etc..
Also fixes a couple of minor Scene issues and a CTB by nullref.
all methods needed outside the API ststic. Async command processing
is now wholly internal to the API. This sets the stage for the next
convergence step.
Thank you, tyre, for a patch that refactors LSL to use a unified set of
method signatures and type names, reorders methods and removes unused
and adds new method stubs.
ordinary region modules and are able to coexist in one instance.
See http://opensimulator.org/wiki/ScriptEngines for details. There were
changes to OpenSim.ini.example, please note DefaultScriptEngine.
Also see the User docs and FAQ on the Wiki. Default is DotNetEngine.
- Conformance fix: If the notecard can't be found, shout on DEBUG_CHANNEL as the docs state
- Bug fix: Don't let llGetNotecardLine throw an exception on freshly created notecards
Correct a condition where a prim is linked before it has been persisted
for the first time and is then persisted through it's former SOG with
a bad offset position.
XEngine: Change a number of methods to use the new link part method.
Fix ALL_SIDES for llSetColor, llSetTexture, llSetAlpha, llSetPrimitiveParams,
llGetPrimitiveParams(PRIM_TEXTURE, PRIM_COLOR).
XEngine fixes: prevent queue overruns, prevent spamming when no key
is down. Release controls when conflicting permissions are requested
or permissions are refused later. Release when prim or script are deleted.
Fixes Scene script instance deletion semantics.
works. Also makes llGetFreeMemory return the constant 16384.
LLGetFreeMemory is useless in SL, as it never goes up, only down.
So, the only thing it is used for, in practice, is to detect an imminent
stack/heap collision, a danger we don't have.
Remove some unused osFunctions that were left in the LSL function
file from the separation way back when. Inline the osSetParcelMediaURL
code to get rid of the osFunction. Really need to add a way for one API
to call another.
functions return CLI strings, which, in the case of lists, don't
get wrapped. Therefore, the list had to be able to deal with
that CLI type here. The correct fix would be to change all LSL
function returns to LSL types.
Thank you, ralphos, for a patch the adapts llSetColor and friends to
a change in the underlying types.
Also, thank you for a much cleaner way of casting types out of
lists, which I will adopt throughout.
Floating text, Rotation, Texture animation, Particle System
This will make "Eye Candy" scripts work without modification in
XEngine. The use of the CHANGED_REGION_RESTART hack is no longer
needed. Implemented in MySQL only, hovertext also in SQLite.
* Please note that this implementation has not been mathematically verified to be correct-as-described, it is probable that this implementation may produce differing results to Linden Lab. Testing (and test data) would be appreciated.
duplicate delivery of state_entry if a region is restarted just after
saving the script. Changes script state saves to no longer abort long-
running event handlers. Queues the save instead. Adds shutdown handler
to save script state on irderly shutdown
* This is a HUGE OMG update and will definitely have unknown side effects.. so this is really only for the strong hearted at this point. Regular people should let the dust settle.
* This has been tested to work with most basic functions. However.. make sure you back up 'everything' before using this. It's that big!
* Essentially we're back at square 1 in the testing phase.. so lets identify things that broke.
Types extracted from a LSL_Types.list have to be down-cast initially
to the exact type of value type object that the Object actually is.
This would make for very cumbersome, ugly code when extracting list
parameter items in ll functions where a few implicit conversions
should be applied such as key -> LSLString and LSLInteger -> LSLFloat
(but not LSLFloat -> LSLInteger). This patch adds a set of GetXXXItem
member functions to the LLS_Type.list class, where XXX is the name
of the LSL_Type to be extracted: LSLFLoat, LSLInteger etc. All take
a single, int parameter that is the item number to be extracted.
1000 chars to avoid the exception thrown by libomv at 1100 chars.
Change string->int conversion so it copes with non-numeric chars
after the number and no longer uses a float to parse the value.
It wraps constants in new LSLType(x), so that lists with
constant values are processed correctly. Contains changes to
the lsl.parser.cs that are not (yet) reflected in opensim-libs,
since this experimental patch affects XEngine only. Also contains
nuts.
which is a thin wrapper around a IWorkItemResult from the SmartThreadPool.
However, it is very easy to reimplement on top of basic threading and therefore
makes the IScriptInstance class independent of the specific threading
implementation.
engines that want to use the XEngine's instance handling and state
persistence can do so. IScriptInstance is optional, but it does
require the SmartThreadPool if it is used.
This patch adds even more LSL compatibility to llSetPos() As stated in the
wiki http://wiki.secondlife.com/wiki/LlSetPos, [^] movement should also be
capped to 10m per call for unattached root prims.
Beside this issue the attached patch adds (hopefully) all known LSL script
delays (as ScriptSleep(), but still commented out) to LSL_BuiltIn_Commands.cs
and LSL_Api.cs and a lot of format cleanup.
Thank you, salahzar, for a patch that corrects the behavior
of PRIM_TYPE in llGetPrimitiveParams() and improves LSL
conformance in llGetNumberOfSides();
also enable LSLconformance on some texture functions as well.
Applied the part of the patch in Shared/.
The part for Common/ needs to be reworked to remove the reference
into Shared/
It is now possible to use module interfaces without referencing Scene.
Place those interfaces in OpenSim/Region/Interfaces. They may not
use any refs from OpenSim.Region.Environment as parameters.
This resolves a circular library ref introduced in r5949
* Yield Prolog 1.0.1 Released : it passes all but 9 of the
421 tests in the ISO Prolog test suite (97.8%) .
* support dynamic predicates and rules.
* support 'import' to use external static functions
improves connection to C# functions
* Matches Yield Prolog r831
llRezObject changed to llRezAtRoot. llRezObject implemented
to call llRezAtRoot until I can figure out how to calculate
a bounding box. Partial implementation of llPushObject
(no angular impulse applied)
used in scripts
-cast from bool to LSL{Integer,Float,String} so functions such as `integer
isZero(integer x) { return (x == 0); }` work
-progress on issue 1863