mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Add a data path for error messages
Committed from my other box where git is not configured properly Signed-off-by: Melanie <melanie@t-data.com>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
|
||||
@@ -71,6 +72,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||
/// Start all the scripts contained in this entity's inventory
|
||||
/// </summary>
|
||||
void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource);
|
||||
ArrayList GetScriptErrors(UUID itemID);
|
||||
|
||||
/// <summary>
|
||||
/// Stop all the scripts in this entity.
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace OpenSim.Region.Framework.Interfaces
|
||||
@@ -39,5 +40,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||
|
||||
bool PostScriptEvent(UUID itemID, string name, Object[] args);
|
||||
bool PostObjectEvent(UUID itemID, string name, Object[] args);
|
||||
|
||||
ArrayList GetScriptErrors(UUID itemID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Timers;
|
||||
@@ -215,13 +216,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <param name="primID">The prim which contains the item to update</param>
|
||||
/// <param name="isScriptRunning">Indicates whether the script to update is currently running</param>
|
||||
/// <param name="data"></param>
|
||||
public void CapsUpdateTaskInventoryScriptAsset(IClientAPI remoteClient, UUID itemId,
|
||||
public ArrayList CapsUpdateTaskInventoryScriptAsset(IClientAPI remoteClient, UUID itemId,
|
||||
UUID primId, bool isScriptRunning, byte[] data)
|
||||
{
|
||||
if (!Permissions.CanEditScript(itemId, primId, remoteClient.AgentId))
|
||||
{
|
||||
remoteClient.SendAgentAlertMessage("Insufficient permissions to edit script", false);
|
||||
return;
|
||||
return new ArrayList();
|
||||
}
|
||||
|
||||
// Retrieve group
|
||||
@@ -234,7 +235,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
"Prim inventory update requested for item ID {0} in prim ID {1} but this prim does not exist",
|
||||
itemId, primId);
|
||||
|
||||
return;
|
||||
return new ArrayList();
|
||||
}
|
||||
|
||||
// Retrieve item
|
||||
@@ -247,7 +248,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
+ " but the item does not exist in this inventory",
|
||||
itemId, part.Name, part.UUID);
|
||||
|
||||
return;
|
||||
return new ArrayList();
|
||||
}
|
||||
|
||||
AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)AssetType.LSLText, data);
|
||||
@@ -264,29 +265,33 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
part.GetProperties(remoteClient);
|
||||
|
||||
// Trigger rerunning of script (use TriggerRezScript event, see RezScript)
|
||||
ArrayList errors = new ArrayList();
|
||||
|
||||
if (isScriptRunning)
|
||||
{
|
||||
// Needs to determine which engine was running it and use that
|
||||
//
|
||||
part.Inventory.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine, 0);
|
||||
errors = part.Inventory.GetScriptErrors(item.ItemID);
|
||||
}
|
||||
else
|
||||
{
|
||||
remoteClient.SendAgentAlertMessage("Script saved", false);
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <see>CapsUpdateTaskInventoryScriptAsset(IClientAPI, UUID, UUID, bool, byte[])</see>
|
||||
/// </summary>
|
||||
public void CapsUpdateTaskInventoryScriptAsset(UUID avatarId, UUID itemId,
|
||||
public ArrayList CapsUpdateTaskInventoryScriptAsset(UUID avatarId, UUID itemId,
|
||||
UUID primId, bool isScriptRunning, byte[] data)
|
||||
{
|
||||
ScenePresence avatar;
|
||||
|
||||
if (TryGetAvatar(avatarId, out avatar))
|
||||
{
|
||||
CapsUpdateTaskInventoryScriptAsset(
|
||||
return CapsUpdateTaskInventoryScriptAsset(
|
||||
avatar.ControllingClient, itemId, primId, isScriptRunning, data);
|
||||
}
|
||||
else
|
||||
@@ -295,6 +300,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
"[PRIM INVENTORY]: " +
|
||||
"Avatar {0} cannot be found to update its prim item asset",
|
||||
avatarId);
|
||||
return new ArrayList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ using System;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using OpenMetaverse;
|
||||
using log4net;
|
||||
@@ -205,6 +206,27 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList GetScriptErrors(UUID itemID)
|
||||
{
|
||||
ArrayList ret = new ArrayList();
|
||||
|
||||
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
||||
if (engines == null) // No engine at all
|
||||
return ret;
|
||||
|
||||
foreach (IScriptModule e in engines)
|
||||
{
|
||||
if (e != null)
|
||||
{
|
||||
ArrayList errors = e.GetScriptErrors(itemID);
|
||||
foreach (Object line in errors)
|
||||
ret.Add(line);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stop all the scripts in this prim.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user