diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index a5e62b9c50..e6ad1fbd12 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2294,6 +2294,8 @@ namespace OpenSim.Region.Framework.Scenes List takeCopyGroups = new List(); List takeDeleteGroups = new List(); + List noPermtakeCopyGroups = new List(); + ScenePresence sp = null; if(remoteClient != null) sp = remoteClient.SceneAgent as ScenePresence; @@ -2352,6 +2354,8 @@ namespace OpenSim.Region.Framework.Scenes { if (Permissions.CanTakeCopyObject(grp, sp)) takeCopyGroups.Add(grp); + else + noPermtakeCopyGroups.Add(grp); break; } @@ -2408,6 +2412,25 @@ namespace OpenSim.Region.Framework.Scenes if(deleteIDs.Count > 0) SendKillObject(deleteIDs); + if (noPermtakeCopyGroups != null && remoteClient != null) + { + if(noPermtakeCopyGroups.Count == 1) + remoteClient.SendAlertMessage("No permission to take copy object " + noPermtakeCopyGroups[0].Name); + else + { + StringBuilder sb = new StringBuilder(1024); + sb.Append("No permission to take copy object "); + int i = 0; + for (; i < noPermtakeCopyGroups.Count - 1; ++i) + { + sb.Append(noPermtakeCopyGroups[i].Name); + sb.Append(", "); + } + sb.Append(noPermtakeCopyGroups[i].Name); + remoteClient.SendAlertMessage(sb.ToString()); + } + } + if (takeDeleteGroups.Count > 0) { m_asyncSceneObjectDeleter.DeleteToInventory(action, destinationID, takeDeleteGroups,