Allows to sell objects on a parcel of land together with that parcel of land. The objects that are sold together with the parcel of land need to fulfill the following preconditions: owned by the current parcel owner, not set to a group, transferrable. This feature does not work for group owned parcels or land bought by a group.
parent
c725ad1577
commit
32ad66c274
|
@ -385,9 +385,16 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
newData.SalePrice = 0;
|
newData.SalePrice = 0;
|
||||||
newData.AuthBuyerID = UUID.Zero;
|
newData.AuthBuyerID = UUID.Zero;
|
||||||
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
||||||
|
|
||||||
|
bool sellObjects = (LandData.Flags & (uint)(ParcelFlags.SellParcelObjects)) != 0
|
||||||
|
&& !LandData.IsGroupOwned && !groupOwned;
|
||||||
|
UUID previousOwner = LandData.OwnerID;
|
||||||
|
|
||||||
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
||||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
SendLandUpdateToAvatarsOverMe(true);
|
SendLandUpdateToAvatarsOverMe(true);
|
||||||
|
|
||||||
|
if (sellObjects) SellLandObjects(previousOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeedToGroup(UUID groupID)
|
public void DeedToGroup(UUID groupID)
|
||||||
|
@ -1067,6 +1074,43 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Object Sales
|
||||||
|
|
||||||
|
public void SellLandObjects(UUID previousOwner)
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[LAND OBJECT]: Request to sell objects in {0} from {1}", LandData.Name, previousOwner);
|
||||||
|
|
||||||
|
if (LandData.IsGroupOwned)
|
||||||
|
return;
|
||||||
|
|
||||||
|
IBuySellModule m_BuySellModule = m_scene.RequestModuleInterface<IBuySellModule>();
|
||||||
|
if (m_BuySellModule == null)
|
||||||
|
{
|
||||||
|
m_log.Error("[LAND OBJECT]: BuySellModule not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScenePresence sp;
|
||||||
|
if (!m_scene.TryGetScenePresence(LandData.OwnerID, out sp))
|
||||||
|
{
|
||||||
|
m_log.Error("[LAND OBJECT]: New owner is not present in scene");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lock (primsOverMe)
|
||||||
|
{
|
||||||
|
foreach (SceneObjectGroup obj in primsOverMe)
|
||||||
|
{
|
||||||
|
if (obj.OwnerID == previousOwner && obj.GroupID == UUID.Zero &&
|
||||||
|
(obj.GetEffectivePermissions() & (uint)(OpenSim.Framework.PermissionMask.Transfer)) != 0)
|
||||||
|
m_BuySellModule.BuyObject(sp.ControllingClient, UUID.Zero, obj.LocalId, 1, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Object Returning
|
#region Object Returning
|
||||||
|
|
||||||
public void ReturnObject(SceneObjectGroup obj)
|
public void ReturnObject(SceneObjectGroup obj)
|
||||||
|
|
Loading…
Reference in New Issue