Tweak to PrimLimits and add missing Regions.ini example

Signed-off-by: Melanie <melanie@t-data.com>
0.8.0.3
Dev Random 2014-04-12 09:40:36 -04:00 committed by Melanie
parent f0998a9222
commit 18b91fdbe9
2 changed files with 10 additions and 17 deletions

View File

@ -175,15 +175,9 @@ namespace OpenSim.Region.OptionalModules
private string DoCommonChecks(int objectCount, UUID ownerID, ILandObject lo, Scene scene) private string DoCommonChecks(int objectCount, UUID ownerID, ILandObject lo, Scene scene)
{ {
string response = null; string response = null;
EstateSettings estateSettings = scene.RegionInfo.EstateSettings;
// counts don't seem to be updated, so force it.
scene.EventManager.TriggerParcelPrimCountUpdate();
int usedPrims = lo.PrimCounts.Total;
int simulatorCapacity = lo.GetSimulatorMaxPrimCount(); int simulatorCapacity = lo.GetSimulatorMaxPrimCount();
if ((objectCount + lo.PrimCounts.Total) > simulatorCapacity)
if ((objectCount + usedPrims) > simulatorCapacity)
{ {
response = "Unable to rez object because the parcel is too full"; response = "Unable to rez object because the parcel is too full";
} }
@ -195,21 +189,16 @@ namespace OpenSim.Region.OptionalModules
// per-user prim limit is set // per-user prim limit is set
if (ownerID != lo.LandData.OwnerID || lo.LandData.IsGroupOwned) if (ownerID != lo.LandData.OwnerID || lo.LandData.IsGroupOwned)
{ {
// caller is not the sole parcel owner // caller is not the sole Parcel owner
EstateSettings estateSettings = scene.RegionInfo.EstateSettings;
if (ownerID != estateSettings.EstateOwner) if (ownerID != estateSettings.EstateOwner)
{ {
// caller is NOT the Estate owner // caller is NOT the Estate owner
List<UUID> mgrs = new List<UUID>(estateSettings.EstateManagers); List<UUID> mgrs = new List<UUID>(estateSettings.EstateManagers);
if (!mgrs.Contains(ownerID)) if (!mgrs.Contains(ownerID))
{ {
// caller is NOT an Estate Manager, so check quota // caller is not an Estate Manager
Dictionary<UUID, int> objectMap = lo.GetLandObjectOwners(); if ((lo.PrimCounts.Users[ownerID] + objectCount) > maxPrimsPerUser)
int currentCount;
if (!objectMap.TryGetValue(ownerID, out currentCount))
{
currentCount = 0;
}
if ((currentCount + objectCount) > maxPrimsPerUser)
{ {
response = "Unable to rez object because you have reached your limit"; response = "Unable to rez object because you have reached your limit";
} }

View File

@ -34,6 +34,10 @@ ExternalHostName = "SYSTEMIP"
; MaxPrims = 15000 ; MaxPrims = 15000
; MaxAgents = 100 ; MaxAgents = 100
; * Max prims per user (per parcel).
; * Negative values will disable the check.
; MaxPrimsPerUser = -1
; * ; *
; * Multi-Tenancy. Only set if needed ; * Multi-Tenancy. Only set if needed
; * ; *
@ -83,4 +87,4 @@ ExternalHostName = "SYSTEMIP"
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are ; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
; * still drawn on top of the static map by the World Map module. ; * still drawn on top of the static map by the World Map module.
; MaptileStaticFile = "SomeFile.png" ; MaptileStaticFile = "SomeFile.png"