diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index ba50a28b8d..26fed41836 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -107,6 +107,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api protected IScriptEngine m_ScriptEngine; protected SceneObjectPart m_host; + protected UUID RegionScopeID = UUID.Zero; /// /// The item that hosts this script /// @@ -133,6 +134,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api protected IMaterialsModule m_materialsModule = null; protected IEnvironmentModule m_envModule = null; protected IEmailModule m_emailModule = null; + protected IUserAccountService m_userAccountService = null; protected ExpiringCacheOS m_PresenceInfoCache = new ExpiringCacheOS(10000); protected int EMAIL_PAUSE_TIME = 20; // documented delay value for smtp. @@ -322,6 +324,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_envModule = m_ScriptEngine.World.RequestModuleInterface< IEnvironmentModule>(); m_AsyncCommands = new AsyncCommandManager(m_ScriptEngine); + m_userAccountService = World.UserAccountService; + if(World.RegionInfo != null) + RegionScopeID = World.RegionInfo.ScopeID; + } /// @@ -1308,7 +1314,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public string resolveName(UUID objecUUID) { // try avatar username surname - UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, objecUUID); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, objecUUID); if (account != null) { string avatarname = account.Name; @@ -3991,10 +3997,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api //The restriction only applies if the destination address is not local. if (m_restrictEmail == true && address.Contains(m_internalObjectHost) == false) { - UserAccount account = - World.UserAccountService.GetUserAccount( - World.RegionInfo.ScopeID, - m_host.OwnerID); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, m_host.OwnerID); if (account == null) { @@ -4067,18 +4070,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if(parent.OwnerID == parent.GroupID) return; - account = World.UserAccountService.GetUserAccount( - World.RegionInfo.ScopeID, - parent.OwnerID); + account = m_userAccountService.GetUserAccount(RegionScopeID, parent.OwnerID); } else if (target == ScriptBaseClass.TARGETED_EMAIL_ROOT_CREATOR) { // non standard avoid creator spam if(m_item.CreatorID == parent.RootPart.CreatorID) { - account = World.UserAccountService.GetUserAccount( - World.RegionInfo.ScopeID, - parent.RootPart.CreatorID); + account = m_userAccountService.GetUserAccount(RegionScopeID, parent.RootPart.CreatorID); } else return; @@ -4873,10 +4872,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (presence == null) { - UserAccount account = - World.UserAccountService.GetUserAccount( - World.RegionInfo.ScopeID, - destId); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, destId); if (account == null) { @@ -5013,7 +5009,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api reply = "1"; else { - account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, uuid); + account = m_userAccountService.GetUserAccount(RegionScopeID, uuid); if (account == null) reply = "0"; else @@ -5045,7 +5041,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api else { if (account == null) - account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, uuid); + account = m_userAccountService.GetUserAccount(RegionScopeID, uuid); if (account == null) reply = "0"; @@ -6606,7 +6602,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ex += World.RegionInfo.WorldLocX; ey += World.RegionInfo.WorldLocY; - if(World.GridService.GetRegionByPosition(World.RegionInfo.ScopeID, (int)ex, (int)ey) != null) + if(World.GridService.GetRegionByPosition(RegionScopeID, (int)ex, (int)ey) != null) return 0; return 1; } @@ -13054,7 +13050,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api Action act = eventID => { - GridRegion info = World.GridService.GetRegionByName(m_ScriptEngine.World.RegionInfo.ScopeID, simulator); + GridRegion info = World.GridService.GetRegionByName(RegionScopeID, simulator); string reply = "unknown"; if (info != null) { @@ -15288,7 +15284,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } else { - UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, key); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, key); if(account != null) { name = account.FirstName + " " + account.LastName; @@ -15345,7 +15341,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } else { - UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, key); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, key); if (account != null) { name = account.FirstName + " " + account.LastName; @@ -16774,7 +16770,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (!UUID.TryParse(avatar, out id)) return 0; - UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, id); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, id); isAccount = account != null ? true : false; if (!isAccount) { @@ -16992,7 +16988,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; } - UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, toID); + UserAccount account = m_userAccountService.GetUserAccount(RegionScopeID, toID); if (account == null) { replydata = "LINDENDOLLAR_ENTITYDOESNOTEXIST";