Halcyon Server 0.9.32 R6272 is now running on all InWorldz and InWorldz Beta grid regions.
- Increased the number of attachment points supported (and saved with the user appearance) to include the additional attachment points necessary to support the recent SL "Project Bento" attachments. Also provides the associated LSL constant definitions, such as
ATTACH_LHAND_RING1, and are the less-documented (red) ones listed here.
- Fixed Mantis 3282 the restrictions that were preventing the viewer's Request Teleport operation from working.
- Fixed Mantis 3285: Dual support for SL's new active/non-active sit targets led to a regression where the existing method of calling
llSitTarget(ZERO_VECTOR, ZERO_ROTATION)didn't actually remove the sit target. The region server could not tell the difference between the case of an active zero sit target and an inactive (removed) sit target. The InWorldz database has been extended to provide storage for this data. LSL script developers, see background note below. This should finally, once and for all, hopefully resolve all sit target differences from SL. See details below.
- Also implemented the setter for
llSetPrimitiveParamsfamily of functions). Previously on the getter was supported (e.g.
- Restored the fix for Mantis 2847: Ghost copies of sim-crossing objects, and Mantis 2025: DD Culling confusing viewers. The server now sends 'kill' updates if an object moves outside of the view distance. This fix has been restored after applying a small additional fix for the problem discovered during testing of these changes in the attempt to include it in the previous Halcyon 0.9.31 release.
llReturnObjectsByID. Also includes a performance enhancement to factor the code handling the caching of group powers, and otherwise also favor use of client-cached powers if available when not cached. Fixes Mantis 1179. See details below.
- Fixed a possible null reference on money transfers, if the sender leaves the region or disconnects before it is processed.
- Added implementation "stub" functions for
llResetAnimationOverride(work in progress). These currently just result in "Not implemented" being displayed if called.
- Fixed a Phlox script engine crash seen on Sandbox 5, Sandbox 6 and Plus Sandbox. Avoids a race condition when the user deletes the a script from the Contents a second time before the viewer updates the Contents to remove it.
- Changed the
loadexplicit oarconsole command to not fail if a creator ID no longer exists. (We've seen this with some of YadNi's items, not sure what method was used to create them in InWorldz.)
- [Halcyon] Provide a default
bin/aperture.example.cfgfor other open-source users and grids.
- [Halcyon] Some initial support for Flatbuffers for the MOSES Arbiter project.
- [Halcyon] Replaced the former hard-coded InWorldz currency account (
CURRENCY_ACCOUNT_ID) with a grid-configurable one. Useful for other Halcyon grids. to be overridden by halcyon.ini, use something like:
[Economy] CurrencyAccount = efbfe4e6-95c2-4af3-9d27-25a35c2fd575
Additional Info and Background on the Sit Target fixes
The following additional information is provided for LSL scripters and administrators of other Halcyon grids:
Some time ago, SL extended sit target support to include a new
PRIM_SIT_TARGET option for the llGet/SetPrimitiveParams family of functions. This option supports
active, pos, rot parameters in a general way, which even supports
ZERO_VECTOR,ZERO_ROTATION. As a result, the region servers must persist this boolean state data too. This is done now with an update to the
prims table in the region database:
ALTER TABLE `inworldz_rdb`.`prims` ADD COLUMN `ServerFlags` INT(11) NOT NULL DEFAULT '0' AFTER `KeyframeAnimation`;
The fixes have been tested heavily both in InWorldz and SL, and produce identical results in InWorldz as to the ones provided by SL. This should finally resolve any and all remaining sit target differences from SL.
Additional Details on llReturnObjectsByOwner and llReturnObjectsByID
This server upgrade provides implementations of the
llReturnObjectsByIDfunctions. These should now be fully-compatible with their SL counterparts.
The implementation delay on these functions was partly due to a rather unexpected set of differences from the normal (viewer) Return operations. The SL semantics when called from these functions are quite different, likely to reduce cases of griefing and social exploits.
For the convenience of LSL scripters in InWorldz (and SL), here is a summary of the semantics of these functions, rewritten a bit to try to be clearer than the SL wiki:
- Both llReturnObjectsByOwner (wildcard) and llReturnObjectsByID (specific IDs) return the number of items returned, or an ERR_ flag on error.
- Both functions do two primary checks (more info below) before even beginning to consider the objects being returned, a script check and a parcel check.
- Script check:
PERMISSION_RETURN_OBJECTScan only be used if:
- the script owner is the permissions granter, or if:
- the object containing the script is deeded and the permissions granter is an "Owner" in the object's group.
- Parcel check:
PERMISSION_RETURN_OBJECTScan also only be used if:
- permissions granter is the owner of the other parcel with the target object, or if:
- the other parcel with the target object is deeded to a group and the permissions granter is a group "Owner".
- If fails any of these checks, a script error is reported.
- Estate Owner, Estate Managers, and parcel owners cannot have items returned, except:
- llReturnObjectsByID only: the scripted object is allowed to return itself (by ID)
- llReturnObjectsByID only: If script owner is the Estate Owner or an Estate Manager, this function works anywhere on region. Otherwise:
- Supports objects located in any parcel on the region that is owned by the script owner.
- llReturnObjectsByOwner only: objects deeded, to the group that their parcel is set to, are not returned.