if a NPC is owned, allow access if ownerID matchs parcel owner or it is in the access list. option OS_NPC_OBJECT_GROUP it still needed if access is by group (this option should also work with not owned NPC) NEEDS TESTING, may prove to be a bad solution
parent
a08c354a07
commit
90b825cda8
|
@ -694,7 +694,30 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
if (HasGroupAccess(avatar))
|
if (HasGroupAccess(avatar))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return !IsInLandAccessList(avatar);
|
if(IsInLandAccessList(avatar))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// check for a NPC
|
||||||
|
ScenePresence sp;
|
||||||
|
if (!m_scene.TryGetScenePresence(avatar, out sp))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(sp==null || !sp.isNPC)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
INPC npccli = (INPC)sp.ControllingClient;
|
||||||
|
if(npccli== null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
UUID owner = npccli.Owner;
|
||||||
|
|
||||||
|
if(owner == UUID.Zero)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (owner == LandData.OwnerID)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return !IsInLandAccessList(owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsInLandAccessList(UUID avatar)
|
public bool IsInLandAccessList(UUID avatar)
|
||||||
|
|
|
@ -57,6 +57,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool SenseAsAgent { get; }
|
bool SenseAsAgent { get; }
|
||||||
UUID ActiveGroupId { get; set; }
|
UUID ActiveGroupId { get; set; }
|
||||||
|
UUID Owner { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface INPCModule
|
public interface INPCModule
|
||||||
|
|
|
@ -43,6 +43,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
public class NPCAvatar : IClientAPI, INPC
|
public class NPCAvatar : IClientAPI, INPC
|
||||||
{
|
{
|
||||||
public bool SenseAsAgent { get; set; }
|
public bool SenseAsAgent { get; set; }
|
||||||
|
public UUID Owner
|
||||||
|
{
|
||||||
|
get { return m_ownerID;}
|
||||||
|
}
|
||||||
|
|
||||||
public delegate void ChatToNPC(
|
public delegate void ChatToNPC(
|
||||||
string message, byte type, Vector3 fromPos, string fromName,
|
string message, byte type, Vector3 fromPos, string fromName,
|
||||||
|
|
Loading…
Reference in New Issue