Further fixes for OpenSim.

In OpenSim, llGetLinkNumber() returns 0 for single prims with a sitting avatar. On top of that, in older versions llGetLinkKey returns NULL_KEY for link number 0, and in newer ones it does so for link number 1.

The present changes try to make sure that under either situation, the code behaves correctly for the core scripts.
This commit is contained in:
Sei Lisa 2017-08-19 16:14:01 +02:00 committed by Sei-Lisa
parent e77bddec30
commit 90bd72e1ff
3 changed files with 11 additions and 18 deletions

View file

@ -167,8 +167,7 @@ wipe_sit_targets()
integer i;
for (i = 0; i <= llGetNumberOfPrims(); i++)
{
string desc = llList2String(llGetObjectDetails(llGetLinkKey(i), [OBJECT_DESC]), 0);
if (desc != "-1")
if ((string)llGetLinkPrimitiveParams(i, [PRIM_DESC]) != "-1")
{
llLinkSitTarget(i, ZERO_VECTOR, ZERO_ROTATION);
}
@ -207,15 +206,11 @@ sittargets()
SITTERS_SITTARGETS += 1000;
ASSIGNED_SITTARGETS += FALSE;
}
for (i = 1; i <= prims; i++)
for (i = 1; i <= prims; i++) // FIXME: will this work for single prim in OpenSim?
{
integer next = llListFindList(SITTERS_SITTARGETS, [1000]);
string desc = llList2String(llGetObjectDetails(llGetLinkKey(i), [OBJECT_DESC]), 0);
integer index = llSubStringIndex(desc, "#");
if (index)
{
desc = llGetSubString(desc, index + 1, -1);
}
string desc = (string)llGetLinkPrimitiveParams(i, [PRIM_DESC]);
desc = llGetSubString(desc, llSubStringIndex(desc, "#") + 1, -1);
if (desc != "-1")
{
list data = llParseStringKeepNulls(desc, ["-"], []);
@ -303,7 +298,7 @@ set_sittarget()
{
target = 0;
}
if (llList2String(llGetObjectDetails(llGetLinkKey(target), [OBJECT_DESC]), 0) != "-1")
if ((string)llGetLinkPrimitiveParams(target, [PRIM_DESC]) != "-1")
{
llLinkSitTarget(target, target_pos - <0.,0.,0.4> + llRot2Up(target_rot) * 0.05, target_rot);
}