a few changes on ban checks, thx Tampa

This commit is contained in:
UbitUmarov
2023-05-21 20:49:21 +01:00
parent 6743934434
commit dd9e365e00

View File

@@ -726,30 +726,44 @@ namespace OpenSim.Region.CoreModules.World.Land
if (m_estateSettings.TaxFree) // region access control only
return false;
if (IsBannedFromLand(avatar))
{
if (m_scenePermissions.IsAdministrator(avatar))
return false;
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
return false;
if (avatar.Equals(LandData.OwnerID))
return false;
if (IsBannedFromLand_inner(avatar))
return true;
}
else if (IsRestrictedFromLand(avatar))
{
if (IsRestrictedFromLand_inner(avatar))
return true;
}
return false;
}
public bool CanBeOnThisLand(UUID avatar, float posHeight)
{
if (m_estateSettings.TaxFree) // region access control only
return true;
if (m_estateSettings.TaxFree) // estate access only
return false;
if (posHeight < m_scene.LandChannel.BanLineSafeHeight && IsBannedFromLand(avatar))
{
if (m_scenePermissions.IsAdministrator(avatar))
return false;
}
else if (IsRestrictedFromLand(avatar))
{
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
return false;
}
if (avatar.Equals(LandData.OwnerID))
return false;
if (posHeight < m_scene.LandChannel.BanLineSafeHeight && IsBannedFromLand_inner(avatar))
return false;
else if (IsRestrictedFromLand_inner(avatar))
return false;
return true;
}
@@ -808,6 +822,11 @@ namespace OpenSim.Region.CoreModules.World.Land
if (avatar.Equals(LandData.OwnerID))
return false;
return IsBannedFromLand_inner(avatar);
}
private bool IsBannedFromLand_inner(UUID avatar)
{
if ((LandData.Flags & (uint) ParcelFlags.UseBanList) > 0)
{
int now = Util.UnixTimeSinceEpoch();
@@ -825,6 +844,20 @@ namespace OpenSim.Region.CoreModules.World.Land
if (m_estateSettings.TaxFree) // estate access only
return false;
if (m_scenePermissions.IsAdministrator(avatar))
return false;
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
return false;
if (avatar.Equals(LandData.OwnerID))
return false;
return IsRestrictedFromLand_inner(avatar);
}
private bool IsRestrictedFromLand_inner(UUID avatar)
{
if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) == 0)
{
bool adults = m_estateSettings.DoDenyMinors &&
@@ -851,15 +884,6 @@ namespace OpenSim.Region.CoreModules.World.Land
return false;
}
if (m_scenePermissions.IsAdministrator(avatar))
return false;
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
return false;
if (avatar.Equals(LandData.OwnerID))
return false;
if (HasGroupAccess(avatar))
return false;