diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 113b16c653..d1e0c2491c 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -2088,10 +2088,11 @@ namespace OpenSim.Region.Environment.Scenes } // Fire on_rez - group.CreateScriptInstances(0, true, DefaultScriptEngine, 0); - if (!attachment) + { + group.CreateScriptInstances(0, true, DefaultScriptEngine, 0); rootPart.ScheduleFullUpdate(); + } if (!Permissions.BypassPermissions()) { diff --git a/OpenSim/Region/Environment/Scenes/SceneGraph.cs b/OpenSim/Region/Environment/Scenes/SceneGraph.cs index da3be089ff..22e515071c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Environment/Scenes/SceneGraph.cs @@ -472,6 +472,10 @@ namespace OpenSim.Region.Environment.Scenes objatt.ScheduleGroupForFullUpdate(); if (tainted) objatt.HasGroupChanged = true; + + // Fire after attach, so we don't get messy perms dialogs + // + objatt.CreateScriptInstances(0, true, m_parentScene.DefaultScriptEngine, 0); } return objatt; } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs index 793d31bb26..99ac72204e 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPartInventory.cs @@ -241,6 +241,15 @@ namespace OpenSim.Region.Environment.Scenes if (!m_part.ParentGroup.Scene.RegionInfo.RegionSettings.DisableScripts) { + if (stateSource == 1) // Prim crossing + { + m_items[item.ItemID].PermsMask = 0; + m_items[item.ItemID].PermsGranter = UUID.Zero; + m_part.ParentGroup.Scene.EventManager.TriggerRezScript( + m_part.LocalId, item.ItemID, String.Empty, startParam, postOnRez, engine, stateSource); + m_part.ParentGroup.AddActiveScriptCount(1); + m_part.ScheduleFullUpdate(); + } AssetCache cache = m_part.ParentGroup.Scene.AssetCache; cache.GetAsset(item.AssetID, delegate(UUID assetID, AssetBase asset) diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index dbcc4ed3bf..31202e261d 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs @@ -40,7 +40,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces { NewRez = 0, PrimCrossing = 1, - ScriptedRez= 2 + ScriptedRez = 2 } public interface IScriptWorkItem diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs index 4c87c8aa54..a40b5ee4f7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs @@ -286,6 +286,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools } } + if (Script == String.Empty) + { + if (File.Exists(OutFile)) + + { + m_scriptEngine.Log.DebugFormat("[Compiler] Returning existing assembly for {0}", asset); + return OutFile; + } + + throw new Exception("Cannot find script assembly and no script text present"); + } + enumCompileType l = DefaultCompileLanguage; if (Script.StartsWith("//c#", true, CultureInfo.InvariantCulture))