From b512ecd1dc538f029e6772f526db78eb6687d938 Mon Sep 17 00:00:00 2001 From: Marck Date: Fri, 10 Dec 2010 22:13:05 +0100 Subject: Normalization of OSSL function names. Added the following replacement functions for compliance to the OSSL standards stated on the wiki: osGetTerrainHeight osSetTerrainHeight osGetSunParam osSetSunParam osSetPenColor The functions that do not comply to the standard give a warning when used but work normally otherwise. The graphics primitive drawing command "PenColor" has also been added as well as dynamic texture parameter "bgcolor" as an alternative to "bgcolour". The following two functions have been renamed because they are not enabled yet aynway: osWindParamSet => osSetWindParam osWindParamGet => osGetWindParam --- .../Shared/Api/Implementation/OSSL_Api.cs | 71 +++++++++++++++++++--- .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 19 +++--- .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 33 ++++++++-- 3 files changed, 103 insertions(+), 20 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 827626f..691b67f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -336,6 +336,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } + internal void OSSLDeprecated(string function, string replacement) + { + OSSLShoutError(string.Format("Use of function {0} is deprecated. Use {1} instead.", function, replacement)); + } + protected void ScriptSleep(int delay) { delay = (int)((float)delay * m_ScriptDelayFactor); @@ -347,13 +352,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // // OpenSim functions // + public LSL_Integer osSetTerrainHeight(int x, int y, double val) + { + CheckThreatLevel(ThreatLevel.High, "osSetTerrainHeight"); + return SetTerrainHeight(x, y, val); + } public LSL_Integer osTerrainSetHeight(int x, int y, double val) { CheckThreatLevel(ThreatLevel.High, "osTerrainSetHeight"); - + OSSLDeprecated("osTerrainSetHeight", "osSetTerrainHeight"); + return SetTerrainHeight(x, y, val); + } + private LSL_Integer SetTerrainHeight(int x, int y, double val) + { m_host.AddScriptLPS(1); if (x > ((int)Constants.RegionSize - 1) || x < 0 || y > ((int)Constants.RegionSize - 1) || y < 0) - OSSLError("osTerrainSetHeight: Coordinate out of bounds"); + OSSLError("osSetTerrainHeight: Coordinate out of bounds"); if (World.Permissions.CanTerraformLand(m_host.OwnerID, new Vector3(x, y, 0))) { @@ -366,13 +380,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } + public LSL_Float osGetTerrainHeight(int x, int y) + { + CheckThreatLevel(ThreatLevel.None, "osGetTerrainHeight"); + return GetTerrainHeight(x, y); + } public LSL_Float osTerrainGetHeight(int x, int y) { CheckThreatLevel(ThreatLevel.None, "osTerrainGetHeight"); - + OSSLDeprecated("osTerrainGetHeight", "osGetTerrainHeight"); + return GetTerrainHeight(x, y); + } + private LSL_Float GetTerrainHeight(int x, int y) + { m_host.AddScriptLPS(1); if (x > ((int)Constants.RegionSize - 1) || x < 0 || y > ((int)Constants.RegionSize - 1) || y < 0) - OSSLError("osTerrainGetHeight: Coordinate out of bounds"); + OSSLError("osGetTerrainHeight: Coordinate out of bounds"); return World.Heightmap[x, y]; } @@ -1001,9 +1024,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return drawList; } + public string osSetPenColor(string drawList, string color) + { + CheckThreatLevel(ThreatLevel.None, "osSetPenColor"); + + m_host.AddScriptLPS(1); + drawList += "PenColor " + color + "; "; + return drawList; + } + // Deprecated public string osSetPenColour(string drawList, string colour) { CheckThreatLevel(ThreatLevel.None, "osSetPenColour"); + OSSLDeprecated("osSetPenColour", "osSetPenColor"); m_host.AddScriptLPS(1); drawList += "PenColour " + colour + "; "; @@ -1012,7 +1045,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public string osSetPenCap(string drawList, string direction, string type) { - CheckThreatLevel(ThreatLevel.None, "osSetPenColour"); + CheckThreatLevel(ThreatLevel.None, "osSetPenCap"); m_host.AddScriptLPS(1); drawList += "PenCap " + direction + "," + type + "; "; @@ -1157,6 +1190,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public double osSunGetParam(string param) { CheckThreatLevel(ThreatLevel.None, "osSunGetParam"); + OSSLDeprecated("osSunGetParam", "osGetSunParam"); + return GetSunParam(param); + } + public double osGetSunParam(string param) + { + CheckThreatLevel(ThreatLevel.None, "osGetSunParam"); + return GetSunParam(param); + } + private double GetSunParam(string param) + { m_host.AddScriptLPS(1); double value = 0.0; @@ -1173,6 +1216,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void osSunSetParam(string param, double value) { CheckThreatLevel(ThreatLevel.None, "osSunSetParam"); + OSSLDeprecated("osSunSetParam", "osSetSunParam"); + SetSunParam(param, value); + } + public void osSetSunParam(string param, double value) + { + CheckThreatLevel(ThreatLevel.None, "osSetSunParam"); + SetSunParam(param, value); + } + private void SetSunParam(string param, double value) + { m_host.AddScriptLPS(1); ISunModule module = World.RequestModuleInterface(); @@ -1198,9 +1251,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return String.Empty; } - public void osWindParamSet(string plugin, string param, float value) + public void osSetWindParam(string plugin, string param, float value) { - CheckThreatLevel(ThreatLevel.VeryLow, "osWindParamSet"); + CheckThreatLevel(ThreatLevel.VeryLow, "osSetWindParam"); m_host.AddScriptLPS(1); IWindModule module = World.RequestModuleInterface(); @@ -1214,9 +1267,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } - public float osWindParamGet(string plugin, string param) + public float osGetWindParam(string plugin, string param) { - CheckThreatLevel(ThreatLevel.VeryLow, "osWindParamGet"); + CheckThreatLevel(ThreatLevel.VeryLow, "osGetWindParam"); m_host.AddScriptLPS(1); IWindModule module = World.RequestModuleInterface(); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 10d61ca..da81a51 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -67,8 +67,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces string osSetDynamicTextureDataBlendFace(string dynamicID, string contentType, string data, string extraParams, bool blend, int disp, int timer, int alpha, int face); - LSL_Float osTerrainGetHeight(int x, int y); - LSL_Integer osTerrainSetHeight(int x, int y, double val); + LSL_Float osGetTerrainHeight(int x, int y); + LSL_Float osTerrainGetHeight(int x, int y); // Deprecated + LSL_Integer osSetTerrainHeight(int x, int y, double val); + LSL_Integer osTerrainSetHeight(int x, int y, double val); //Deprecated void osTerrainFlush(); int osRegionRestart(double seconds); @@ -107,7 +109,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces string osSetFontName(string drawList, string fontName); string osSetFontSize(string drawList, int fontSize); string osSetPenSize(string drawList, int penSize); - string osSetPenColour(string drawList, string colour); + string osSetPenColor(string drawList, string color); + string osSetPenColour(string drawList, string colour); // Deprecated string osSetPenCap(string drawList, string direction, string type); string osDrawImage(string drawList, int width, int height, string imageUrl); vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize); @@ -119,13 +122,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void osSetRegionSunSettings(bool useEstateSun, bool sunFixed, double sunHour); void osSetEstateSunSettings(bool sunFixed, double sunHour); double osGetCurrentSunHour(); - double osSunGetParam(string param); - void osSunSetParam(string param, double value); + double osGetSunParam(string param); + double osSunGetParam(string param); // Deprecated + void osSetSunParam(string param, double value); + void osSunSetParam(string param, double value); // Deprecated // Wind Module Functions string osWindActiveModelPluginName(); - void osWindParamSet(string plugin, string param, float value); - float osWindParamGet(string plugin, string param); + void osSetWindParam(string plugin, string param, float value); + float osGetWindParam(string plugin, string param); // Parcel commands void osParcelJoin(vector pos1, vector pos2); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index f3142e6..70d489e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -81,11 +81,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_OSSL_Functions.osGetCurrentSunHour(); } + public double osGetSunParam(string param) + { + return m_OSSL_Functions.osGetSunParam(param); + } + // Deprecated public double osSunGetParam(string param) { return m_OSSL_Functions.osSunGetParam(param); } + public void osSetSunParam(string param, double value) + { + m_OSSL_Functions.osSetSunParam(param, value); + } + // Deprecated public void osSunSetParam(string param, double value) { m_OSSL_Functions.osSunSetParam(param, value); @@ -97,14 +107,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase } // Not yet plugged in as available OSSL functions, so commented out -// void osWindParamSet(string plugin, string param, float value) +// void osSetWindParam(string plugin, string param, float value) // { -// m_OSSL_Functions.osWindParamSet(plugin, param, value); +// m_OSSL_Functions.osSetWindParam(plugin, param, value); // } // -// float osWindParamGet(string plugin, string param) +// float osGetWindParam(string plugin, string param) // { -// return m_OSSL_Functions.osWindParamGet(plugin, param); +// return m_OSSL_Functions.osGetWindParam(plugin, param); // } public void osParcelJoin(vector pos1, vector pos2) @@ -165,11 +175,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase blend, disp, timer, alpha, face); } + public LSL_Float osGetTerrainHeight(int x, int y) + { + return m_OSSL_Functions.osGetTerrainHeight(x, y); + } + // Deprecated public LSL_Float osTerrainGetHeight(int x, int y) { return m_OSSL_Functions.osTerrainGetHeight(x, y); } + public LSL_Integer osSetTerrainHeight(int x, int y, double val) + { + return m_OSSL_Functions.osSetTerrainHeight(x, y, val); + } + // Deprecated public LSL_Integer osTerrainSetHeight(int x, int y, double val) { return m_OSSL_Functions.osTerrainSetHeight(x, y, val); @@ -333,6 +353,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_OSSL_Functions.osSetPenCap(drawList, direction, type); } + public string osSetPenColor(string drawList, string color) + { + return m_OSSL_Functions.osSetPenColor(drawList, color); + } + // Deprecated public string osSetPenColour(string drawList, string colour) { return m_OSSL_Functions.osSetPenColour(drawList, colour); -- cgit v1.1 From 69538d14d4bfb9cc27705e7776845faeea123e5d Mon Sep 17 00:00:00 2001 From: Marck Date: Sat, 11 Dec 2010 11:41:45 +0100 Subject: More OSSL function name normalization, this time for osParcelSetDetails. --- .../ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 18 +++++++++++++++--- .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 3 ++- .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 7 ++++++- 3 files changed, 23 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 691b67f..3b13d06 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -1310,7 +1310,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void osParcelSetDetails(LSL_Vector pos, LSL_List rules) { - CheckThreatLevel(ThreatLevel.High, "osParcelSetDetails"); + const string functionName = "osParcelSetDetails"; + CheckThreatLevel(ThreatLevel.High, functionName); + OSSLDeprecated(functionName, "osSetParcelDetails"); + SetParcelDetails(pos, rules, functionName); + } + public void osSetParcelDetails(LSL_Vector pos, LSL_List rules) + { + const string functionName = "osSetParcelDetails"; + CheckThreatLevel(ThreatLevel.High, functionName); + SetParcelDetails(pos, rules, functionName); + } + private void SetParcelDetails(LSL_Vector pos, LSL_List rules, string functionName) + { m_host.AddScriptLPS(1); // Get a reference to the land data and make sure the owner of the script @@ -1349,13 +1361,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api break; case 2: - CheckThreatLevel(ThreatLevel.VeryHigh, "osParcelSetDetails"); + CheckThreatLevel(ThreatLevel.VeryHigh, functionName); if (UUID.TryParse(arg , out uuid)) newLand.OwnerID = uuid; break; case 3: - CheckThreatLevel(ThreatLevel.VeryHigh, "osParcelSetDetails"); + CheckThreatLevel(ThreatLevel.VeryHigh, functionName); if (UUID.TryParse(arg , out uuid)) newLand.GroupID = uuid; break; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index da81a51..63007c6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -135,7 +135,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces // Parcel commands void osParcelJoin(vector pos1, vector pos2); void osParcelSubdivide(vector pos1, vector pos2); - void osParcelSetDetails(vector pos, LSL_List rules); + void osSetParcelDetails(vector pos, LSL_List rules); + void osParcelSetDetails(vector pos, LSL_List rules); // Deprecated string osGetScriptEngineName(); string osGetSimulatorVersion(); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 70d489e..e3ea556 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -126,7 +126,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { m_OSSL_Functions.osParcelSubdivide(pos1, pos2); } - + + public void osSetParcelDetails(vector pos, LSL_List rules) + { + m_OSSL_Functions.osSetParcelDetails(pos, rules); + } + // Deprecated public void osParcelSetDetails(vector pos, LSL_List rules) { m_OSSL_Functions.osParcelSetDetails(pos,rules); -- cgit v1.1 From 9bd7f3b03a315d713d53451a36fd64c419ce5f35 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 13 Dec 2010 20:35:56 +0000 Subject: Revamp the viewer -> banlist packet processing so fix a number of bugs. Remove the too coarse CanEditParcel method in favor of a CanEditParcelProperties method that takes a GroupPowers argument to specify what action is to be taken. Also, make the method to set parcel data much more granular. Permissions in a deeded setting should now work. --- .../Shared/Api/Implementation/LSL_Api.cs | 88 ++++++++++++++-------- .../Shared/Api/Implementation/OSSL_Api.cs | 2 +- 2 files changed, 56 insertions(+), 34 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 3c5f2d0..30fb252 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -6287,16 +6287,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); UUID key; - LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).LandData; - if (land.OwnerID == m_host.OwnerID) + ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed)) { ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); if (UUID.TryParse(avatar, out key)) { - entry.AgentID = key; - entry.Flags = AccessList.Access; - entry.Time = DateTime.Now.AddHours(hours); - land.ParcelAccessList.Add(entry); + if (land.LandData.ParcelAccessList.FindIndex( + delegate(ParcelManager.ParcelAccessEntry e) + { + if (e.AgentID == key && e.Flags == AccessList.Access) + return true; + return false; + }) == -1) + { + entry.AgentID = key; + entry.Flags = AccessList.Access; + entry.Time = DateTime.Now.AddHours(hours); + land.LandData.ParcelAccessList.Add(entry); + } } } ScriptSleep(100); @@ -9023,7 +9032,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // according to the docs, this command only works if script owner and land owner are the same // lets add estate owners and gods, too, and use the generic permission check. ILandObject landObject = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); - if (!World.Permissions.CanEditParcel(m_host.OwnerID, landObject)) return; + if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, landObject, GroupPowers.ChangeMedia)) return; bool update = false; // send a ParcelMediaUpdate (and possibly change the land's media URL)? byte loop = 0; @@ -9466,16 +9475,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); UUID key; - LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).LandData; - if (land.OwnerID == m_host.OwnerID) + ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned)) { ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); if (UUID.TryParse(avatar, out key)) { - entry.AgentID = key; - entry.Flags = AccessList.Ban; - entry.Time = DateTime.Now.AddHours(hours); - land.ParcelAccessList.Add(entry); + if (land.LandData.ParcelAccessList.FindIndex( + delegate(ParcelManager.ParcelAccessEntry e) + { + if (e.AgentID == key && e.Flags == AccessList.Ban) + return true; + return false; + }) == -1) + { + entry.AgentID = key; + entry.Flags = AccessList.Ban; + entry.Time = DateTime.Now.AddHours(hours); + land.LandData.ParcelAccessList.Add(entry); + } } } ScriptSleep(100); @@ -9485,19 +9503,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); UUID key; - LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).LandData; - if (land.OwnerID == m_host.OwnerID) + ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed)) { if (UUID.TryParse(avatar, out key)) { - foreach (ParcelManager.ParcelAccessEntry entry in land.ParcelAccessList) - { - if (entry.AgentID == key && entry.Flags == AccessList.Access) - { - land.ParcelAccessList.Remove(entry); - break; - } - } + int idx = land.LandData.ParcelAccessList.FindIndex( + delegate(ParcelManager.ParcelAccessEntry e) + { + if (e.AgentID == key && e.Flags == AccessList.Access) + return true; + return false; + }); + + if (idx != -1) + land.LandData.ParcelAccessList.RemoveAt(idx); } } ScriptSleep(100); @@ -9507,19 +9527,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); UUID key; - LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).LandData; - if (land.OwnerID == m_host.OwnerID) + ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned)) { if (UUID.TryParse(avatar, out key)) { - foreach (ParcelManager.ParcelAccessEntry entry in land.ParcelAccessList) - { - if (entry.AgentID == key && entry.Flags == AccessList.Ban) - { - land.ParcelAccessList.Remove(entry); - break; - } - } + int idx = land.LandData.ParcelAccessList.FindIndex( + delegate(ParcelManager.ParcelAccessEntry e) + { + if (e.AgentID == key && e.Flags == AccessList.Ban) + return true; + return false; + }); + + if (idx != -1) + land.LandData.ParcelAccessList.RemoveAt(idx); } } ScriptSleep(100); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 3b13d06..5a796b8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -1335,7 +1335,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; } - if (! World.Permissions.CanEditParcel(m_host.OwnerID, startLandObject)) + if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, startLandObject, GroupPowers.LandOptions)) { OSSLShoutError("You do not have permission to modify the parcel"); return; -- cgit v1.1