Mantis#1610. Thank you, Melanie for a patch that:

Implements the beginning of llInventoryDrop. Doesn't cover 
the actual dropping yet, just the permissions for it.
0.6.0-stable
Charles Krinke 2008-06-26 23:37:21 +00:00
parent 751150100b
commit 176efe3f06
4 changed files with 18 additions and 4 deletions

View File

@ -1009,8 +1009,7 @@ namespace OpenSim.Region.Environment.Scenes
return;
}
// todo: also check llAllowInventoryDrop when implemented
if(part.OwnerID != destPart.OwnerID)
if(part.OwnerID != destPart.OwnerID && (part.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.AllowInventoryDrop) == 0)
{
// object cannot copy items to an object owned by a different owner
// unless llAllowInventoryDrop has been called

View File

@ -97,6 +97,7 @@ namespace OpenSim.Region.Environment.Scenes
// TODO: This needs to be persisted in next XML version update!
[XmlIgnore] public int[] PayPrice = {-2,-2,-2,-2,-2};
[XmlIgnore] public bool AllowedDrop = false;
[XmlIgnore] private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>();
[XmlIgnore] public scriptEvents m_aggregateScriptEvents=0;
[XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None;
@ -2786,6 +2787,11 @@ namespace OpenSim.Region.Environment.Scenes
objectflagupdate |= (uint) LLObject.ObjectFlags.Money;
}
if (AllowedDrop)
{
objectflagupdate |= (uint) LLObject.ObjectFlags.AllowInventoryDrop;
}
if (
((m_aggregateScriptEvents & scriptEvents.collision) != 0) ||
((m_aggregateScriptEvents & scriptEvents.collision_end) != 0) ||

View File

@ -3185,7 +3185,12 @@ namespace OpenSim.Region.ScriptEngine.Common
public void llAllowInventoryDrop(int add)
{
m_host.AddScriptLPS(1);
NotImplemented("llAllowInventoryDrop");
if(add != 0)
m_host.ParentGroup.RootPart.AllowedDrop = true;
else
m_host.ParentGroup.RootPart.AllowedDrop = false;
}
public LSL_Types.Vector3 llGetSunDirection()

View File

@ -3114,7 +3114,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void llAllowInventoryDrop(int add)
{
m_host.AddScriptLPS(1);
NotImplemented("llAllowInventoryDrop");
if(add != 0)
m_host.ParentGroup.RootPart.AllowedDrop = true;
else
m_host.ParentGroup.RootPart.AllowedDrop = false;
}
public LSL_Types.Vector3 llGetSunDirection()