Fix a compile issue and reintroduce the "GOD" script option

melanie
Melanie Thielker 2017-01-07 23:12:51 +00:00
parent c9736755d8
commit f457925f80
2 changed files with 31 additions and 22 deletions

View File

@ -310,7 +310,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
foreach (string id in ids) foreach (string id in ids)
{ {
string current = id.Trim(); string current = id.Trim();
if (current.ToUpper() == "PARCEL_GROUP_MEMBER" || current.ToUpper() == "PARCEL_OWNER" || current.ToUpper() == "ESTATE_MANAGER" || current.ToUpper() == "ESTATE_OWNER" || current.ToUpper() == "ACTIVE_GOD" || current.ToUpper() == "GRID_GOD") if (current.ToUpper() == "PARCEL_GROUP_MEMBER" || current.ToUpper() == "PARCEL_OWNER" || current.ToUpper() == "ESTATE_MANAGER" || current.ToUpper() == "ESTATE_OWNER" || current.ToUpper() == "ACTIVE_GOD" || current.ToUpper() == "GRID_GOD" || current.ToUpper() == "GOD")
{ {
if (!perms.AllowedOwnerClasses.Contains(current)) if (!perms.AllowedOwnerClasses.Contains(current))
perms.AllowedOwnerClasses.Add(current.ToUpper()); perms.AllowedOwnerClasses.Add(current.ToUpper());
@ -425,6 +425,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
} }
} }
//Any god may use the function
if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("GOD"))
{
if (World.Permissions.IsAdministrator(ownerID))
{
return String.Empty;
}
}
//Only active gods may use the function //Only active gods may use the function
if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("ACTIVE_GOD")) if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("ACTIVE_GOD"))
{ {

View File

@ -927,28 +927,28 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
if(e.InnerException != null && e.InnerException is ScriptException) if(e.InnerException != null && e.InnerException is ScriptException)
{ {
if (e.InnerException.Message == "Softfail") if (e.InnerException.Message != "Softfail")
return; {
string text = e.InnerException.Message +
string text = e.InnerException.Message + "(script: " + ScriptName +
"(script: " + ScriptName + " event: " + data.EventName +
" event: " + data.EventName + " at " + Part.AbsolutePosition + ")";
" at " + Part.AbsolutePosition + ")"; if (text.Length > 1000)
if (text.Length > 1000) text = text.Substring(0, 1000);
text = text.Substring(0, 1000); Engine.World.SimChat(Utils.StringToBytes(text),
Engine.World.SimChat(Utils.StringToBytes(text), ChatTypeEnum.DebugChannel, 2147483647,
ChatTypeEnum.DebugChannel, 2147483647, Part.AbsolutePosition,
Part.AbsolutePosition, Part.Name, Part.UUID, false);
Part.Name, Part.UUID, false); m_log.Debug(string.Format(
m_log.Debug(string.Format( "[SCRIPT INSTANCE]: {0} (at event {1}, part {2} {3} at {4} in {5}",
"[SCRIPT INSTANCE]: {0} (at event {1}, part {2} {3} at {4} in {5}", e.InnerException.Message,
e.InnerException.Message, data.EventName,
data.EventName, PrimName,
PrimName, Part.UUID,
Part.UUID, Part.AbsolutePosition,
Part.AbsolutePosition, Part.ParentGroup.Scene.Name));
Part.ParentGroup.Scene.Name));
}
} }
else else
{ {