Currently LSL code such as below does not compile on OpenSim, but compiles fine in Second Life:
list mylist = [];
mylist += [1, 2, 3];
mylist += "four";
list newlist = mylist + 5.0;
The problem is that the LSL_Types.list class does not have an operator for adding a string to a list.
I am including a patch which implements adding a string, integer or float to a list.
I am also including tests. The file LSL_TypesTestList.cs belongs in
OpenSim/Tests/OpenSim/Region/ScriptEngine/Common/.
The attatched patch makes the changed() event fire properly and
lets scripts run properly.
NOTE: All existing state files must be deleted:
rm ScriptEngines/*/*.state
was incorrectly sending the command along with the args to the CommandDelegate
help was getting lost on top of normal help & help was getting missed except
in an exact match (and only returning the first)
Adds full implementation of all llDetected* functions for sensors,
collisions and touches. Adds changed(CHANGED_REGION_RESTART) event
to allow restarting of eye-candy functionality not currently
persisted with the prim.
I'm getting an unhandled exception in openxmlrpcchannel during simulator initialization.
I have two objects in different regions that open remote data channels in the state_entry event.
It appears that the state_entry call is executing before the postinitialize method is called in
xmlrpcmodule (the exception occurs because m_openChannels is not initialized).
the function that reports errors in event handling is not computing the
line numbers correctly for windows paths (and probably linux paths).
As a result, the conversion to int throws an exception.
note... i'm not sure why we extract the line number, convert it to an int,
then convert it back to a string... but hey... :-)
I have detected a bug of conversion data type in OpenSim.Data.MSSQL.MSSQLInventoryData.addInventoryItem(InventoryItemBase item)
in the GroupOwned field.
My sollution is to change the flield to bit in the table. In the
readInventoryItem(IDataReader reader) change too item.Flags =
(uint) reader["flags"]; to item.Flags = Convert.ToUInt32(reader["flags"]);
Now Inventory runs fine.
LSL scripts in which a float type is cast to a string or a string type
is cast to a float do not compile. When the script is translated from
LSL to C#, the LSL float type is translated into double. There is no
string <-> double cast in C#, so compilation fails.
There is a LSLFloat type, however it seems unfinished and is not used.
I am attaching a patch that implements the LSLFloat type. I have also
added two methods to the LSLString type to facilitate float <-> string casts.