From 33bdf572c688ef8259537d53e849c3a258d27353 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 18 Apr 2023 17:54:24 +0100 Subject: [PATCH] fix several PARCEL_DETAILS_* constants for getparceldetails, add PARCEL_DETAILS_GEOMETRICCENTER; Stop script on unknown parameter, instead of keep running with a wrong integer 0 result --- .../Shared/Api/Implementation/LSL_Api.cs | 38 +++++++++---------- .../Shared/Api/Runtime/LSL_Constants.cs | 14 ++++++- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 93779a60c0..1121ec72ae 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -13986,66 +13986,66 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if (o is not LSL_Integer io) { - Error("GetParcelDetails", $"Unknown parameter {o.ToString()}"); + Error("GetParcelDetails", $"Unknown parameter {o}"); return new LSL_List(0); } switch (io.value) { - case 0: + case ScriptBaseClass.PARCEL_DETAILS_NAME: ret.Add(new LSL_String(land.Name)); break; - case 1: + case ScriptBaseClass.PARCEL_DETAILS_DESC: ret.Add(new LSL_String(land.Description)); break; - case 2: + case ScriptBaseClass.PARCEL_DETAILS_OWNER: ret.Add(new LSL_Key(land.OwnerID.ToString())); break; - case 3: + case ScriptBaseClass.PARCEL_DETAILS_GROUP: ret.Add(new LSL_Key(land.GroupID.ToString())); break; - case 4: + case ScriptBaseClass.PARCEL_DETAILS_AREA: ret.Add(new LSL_Integer(land.Area)); break; - case 5: + case ScriptBaseClass.PARCEL_DETAILS_ID: ret.Add(new LSL_Key(land.GlobalID.ToString())); break; - case 6: + case ScriptBaseClass.PARCEL_DETAILS_SEE_AVATARS: ret.Add(new LSL_Integer(land.SeeAVs ? 1 : 0)); break; - case 7: + case ScriptBaseClass.PARCEL_DETAILS_PRIM_CAPACITY: ret.Add(new LSL_Integer(parcel.GetParcelMaxPrimCount())); break; case 8: ret.Add(new LSL_Integer(parcel.PrimCounts.Total)); break; - case 9: + case ScriptBaseClass.PARCEL_DETAILS_LANDING_POINT: ret.Add(new LSL_Vector(land.UserLocation)); break; - case 10: + case ScriptBaseClass.PARCEL_DETAILS_LANDING_LOOKAT: ret.Add(new LSL_Vector(land.UserLookAt)); break; - case 11: + case ScriptBaseClass.PARCEL_DETAILS_TP_ROUTING: ret.Add(new LSL_Integer(land.LandingType)); break; - case 12: + case ScriptBaseClass.PARCEL_DETAILS_FLAGS: ret.Add(new LSL_Integer(land.Flags)); break; - case 13: + case ScriptBaseClass.PARCEL_DETAILS_SCRIPT_DANGER: ret.Add(new LSL_Integer(World.LSLScriptDanger(m_host, parcel) ? 1 : 0)); break; - case 64: + case ScriptBaseClass.PARCEL_DETAILS_DWELL: ret.Add(new LSL_Integer(land.Dwell)); break; - case 65: + case ScriptBaseClass.PARCEL_DETAILS_GETCLAIMDATE: ret.Add(new LSL_Integer(land.ClaimDate)); break; - case 66: + case ScriptBaseClass.PARCEL_DETAILS_GEOMETRICCENTER: ret.Add(new LSL_Vector(parcel.CenterPoint.X, parcel.CenterPoint.Y, 0)); break; default: - ret.Add(new LSL_Integer(0)); - break; + Error("GetParcelDetails", $"Unknown parameter {io.value}"); + return new LSL_List(0); } } return ret; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index d44c58126a..95b20c631d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs @@ -742,12 +742,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public const int PARCEL_DETAILS_AREA = 4; public const int PARCEL_DETAILS_ID = 5; public const int PARCEL_DETAILS_SEE_AVATARS = 6; - public const int PARCEL_DETAILS_ANY_AVATAR_SOUNDS = 7; - public const int PARCEL_DETAILS_GROUP_SOUNDS = 8; + public const int PARCEL_DETAILS_PRIM_CAPACITY = 7; + public const int PARCEL_DETAILS_PRIM_USED = 8; + public const int PARCEL_DETAILS_LANDING_POINT = 9; + public const int PARCEL_DETAILS_LANDING_LOOKAT = 10; + public const int PARCEL_DETAILS_TP_ROUTING = 11; + public const int PARCEL_DETAILS_FLAGS = 12; + public const int PARCEL_DETAILS_SCRIPT_DANGER = 13; + // constants for llGetParcelDetails os specific public const int PARCEL_DETAILS_DWELL = 64; + public const int PARCEL_DETAILS_GETCLAIMDATE = 65; + public const int PARCEL_DETAILS_GEOMETRICCENTER = 66; //osSetParcelDetails + public const int PARCEL_DETAILS_ANY_AVATAR_SOUNDS = 7; + public const int PARCEL_DETAILS_GROUP_SOUNDS = 8; public const int PARCEL_DETAILS_CLAIMDATE = 10; // constants for llSetClickAction