From e7abf834d1b51353ec90f424b87487bbeb391582 Mon Sep 17 00:00:00 2001 From: Makopoppo Date: Mon, 4 Jul 2011 22:45:21 +0900 Subject: Instance-types-in-list fix for LSL/OSSL functions. This will fix llListFindList() which always returns -1 when you compare with the list from those functions. *llCSV2List *llGetAnimationList *llGetLinkPrimitiveParams *llGetObjectDetails *llGetParcelDetails *llGetParcelPrimOwners *llGetPrimitiveParams *GetLinkPrimitiveParamsEx *osGetAgents *osMatchString *osGetLinkPrimitiveParams *osGetPrimitiveParams *osGetAvatarList --- .../Shared/Api/Implementation/LSL_Api.cs | 48 +++++++++++----------- .../Shared/Api/Implementation/OSSL_Api.cs | 13 +++--- 2 files changed, 31 insertions(+), 30 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 22f8ddb..fd6d64c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -5050,7 +5050,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } - result.Add(src.Substring(start,length).Trim()); + result.Add(new LSL_String(src.Substring(start,length).Trim())); return result; } @@ -7391,7 +7391,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api UUID[] anims; anims = av.Animator.GetAnimationArray(); foreach (UUID foo in anims) - l.Add(foo.ToString()); + l.Add(new LSL_Key(foo.ToString())); return l; } @@ -7926,17 +7926,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api case (int)ScriptBaseClass.PRIM_TEXT: Color4 textColor = part.GetTextColor(); - res.Add(part.Text); + res.Add(new LSL_String(part.Text)); res.Add(new LSL_Vector(textColor.R, textColor.G, textColor.B)); res.Add(new LSL_Float(textColor.A)); break; case (int)ScriptBaseClass.PRIM_NAME: - res.Add(part.Name); + res.Add(new LSL_String(part.Name)); break; case (int)ScriptBaseClass.PRIM_DESC: - res.Add(part.Description); + res.Add(new LSL_String(part.Description)); break; case (int)ScriptBaseClass.PRIM_ROT_LOCAL: res.Add(new LSL_Rotation(part.RotationOffset.X, part.RotationOffset.Y, part.RotationOffset.Z, part.RotationOffset.W)); @@ -9895,8 +9895,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { foreach (KeyValuePair detectedParams in land.GetLandObjectOwners()) { - ret.Add(detectedParams.Key.ToString()); - ret.Add(detectedParams.Value); + ret.Add(new LSL_String(detectedParams.Key.ToString())); + ret.Add(new LSL_Integer(detectedParams.Value)); } } ScriptSleep(2000); @@ -9946,25 +9946,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api switch (o.ToString()) { case "0": - ret = ret + new LSL_List(land.Name); + ret.Add(new LSL_String(land.Name)); break; case "1": - ret = ret + new LSL_List(land.Description); + ret.Add(new LSL_String(land.Description)); break; case "2": - ret = ret + new LSL_List(land.OwnerID.ToString()); + ret.Add(new LSL_Key(land.OwnerID.ToString())); break; case "3": - ret = ret + new LSL_List(land.GroupID.ToString()); + ret.Add(new LSL_Key(land.GroupID.ToString())); break; case "4": - ret = ret + new LSL_List(land.Area); + ret.Add(new LSL_Integer(land.Area)); break; case "5": - ret = ret + new LSL_List(land.GlobalID); + ret.Add(new LSL_Key(land.GlobalID.ToString())); break; default: - ret = ret + new LSL_List(0); + ret.Add(new LSL_Integer(0)); break; } } @@ -9996,10 +9996,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api switch (o.ToString()) { case "1": - ret.Add(av.Firstname + " " + av.Lastname); + ret.Add(new LSL_String(av.Firstname + " " + av.Lastname)); break; case "2": - ret.Add(""); + ret.Add(new LSL_String("")); break; case "3": ret.Add(new LSL_Vector((double)av.AbsolutePosition.X, (double)av.AbsolutePosition.Y, (double)av.AbsolutePosition.Z)); @@ -10011,13 +10011,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ret.Add(new LSL_Vector(av.Velocity.X, av.Velocity.Y, av.Velocity.Z)); break; case "6": - ret.Add(id); + ret.Add(new LSL_String(id)); break; case "7": - ret.Add(UUID.Zero.ToString()); + ret.Add(new LSL_String(UUID.Zero.ToString())); break; case "8": - ret.Add(UUID.Zero.ToString()); + ret.Add(new LSL_String(UUID.Zero.ToString())); break; } } @@ -10031,10 +10031,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api switch (o.ToString()) { case "1": - ret.Add(obj.Name); + ret.Add(new LSL_String(obj.Name)); break; case "2": - ret.Add(obj.Description); + ret.Add(new LSL_String(obj.Description)); break; case "3": ret.Add(new LSL_Vector(obj.AbsolutePosition.X, obj.AbsolutePosition.Y, obj.AbsolutePosition.Z)); @@ -10046,13 +10046,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ret.Add(new LSL_Vector(obj.Velocity.X, obj.Velocity.Y, obj.Velocity.Z)); break; case "6": - ret.Add(obj.OwnerID.ToString()); + ret.Add(new LSL_String(obj.OwnerID.ToString())); break; case "7": - ret.Add(obj.GroupID.ToString()); + ret.Add(new LSL_String(obj.GroupID.ToString())); break; case "8": - ret.Add(obj.CreatorID.ToString()); + ret.Add(new LSL_String(obj.CreatorID.ToString())); break; } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 1bc4534..b3f90e2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -811,7 +811,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api World.ForEachScenePresence(delegate(ScenePresence sp) { if (!sp.IsChildAgent) - result.Add(sp.Name); + result.Add(new LSL_String(sp.Name)); }); return result; } @@ -2030,8 +2030,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if (g.Success) { - result.Add(g.Value); - result.Add(g.Index); + result.Add(new LSL_String(g.Value)); + result.Add(new LSL_Integer(g.Index)); } } } @@ -2365,9 +2365,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if (avatar.IsChildAgent == false) { - result.Add(avatar.UUID); - result.Add(avatar.AbsolutePosition); - result.Add(avatar.Name); + result.Add(new LSL_String(avatar.UUID.ToString())); + OpenMetaverse.Vector3 ap = avatar.AbsolutePosition; + result.Add(new LSL_Vector(ap.X, ap.Y, ap.Z)); + result.Add(new LSL_String(avatar.Name)); } } }); -- cgit v1.1