diff options
author | Oren Hurvitz | 2012-04-23 19:20:46 +0300 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-04-27 20:22:35 +0100 |
commit | 9622e8ac72d29b75b96d2dd481671b57d0a204bf (patch) | |
tree | b6fc23ad072190b1e260a7071e9b49b3f50f99ce /OpenSim/Region/CoreModules | |
parent | Use DotNetZip to compress OARs and IARs. (diff) | |
download | opensim-SC-9622e8ac72d29b75b96d2dd481671b57d0a204bf.zip opensim-SC-9622e8ac72d29b75b96d2dd481671b57d0a204bf.tar.gz opensim-SC-9622e8ac72d29b75b96d2dd481671b57d0a204bf.tar.bz2 opensim-SC-9622e8ac72d29b75b96d2dd481671b57d0a204bf.tar.xz |
If a Grid God teleports then include the Godlike teleport flag. This can affect the starting position in the destination region.
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | 31 |
2 files changed, 28 insertions, 9 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index a318a3c..779fd6b 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -161,6 +161,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
161 | 161 | ||
162 | public void Teleport(ScenePresence sp, ulong regionHandle, Vector3 position, Vector3 lookAt, uint teleportFlags) | 162 | public void Teleport(ScenePresence sp, ulong regionHandle, Vector3 position, Vector3 lookAt, uint teleportFlags) |
163 | { | 163 | { |
164 | if (sp.Scene.Permissions.IsGridGod(sp.UUID)) | ||
165 | { | ||
166 | // This user will be a God in the destination scene, too | ||
167 | teleportFlags |= (uint)TeleportFlags.Godlike; | ||
168 | } | ||
169 | |||
164 | if (!sp.Scene.Permissions.CanTeleport(sp.UUID)) | 170 | if (!sp.Scene.Permissions.CanTeleport(sp.UUID)) |
165 | return; | 171 | return; |
166 | 172 | ||
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 2032905..7d75fad 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -166,6 +166,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
166 | m_scene.Permissions.OnDeedParcel += CanDeedParcel; | 166 | m_scene.Permissions.OnDeedParcel += CanDeedParcel; |
167 | m_scene.Permissions.OnDeedObject += CanDeedObject; | 167 | m_scene.Permissions.OnDeedObject += CanDeedObject; |
168 | m_scene.Permissions.OnIsGod += IsGod; | 168 | m_scene.Permissions.OnIsGod += IsGod; |
169 | m_scene.Permissions.OnIsGridGod += IsGridGod; | ||
169 | m_scene.Permissions.OnIsAdministrator += IsAdministrator; | 170 | m_scene.Permissions.OnIsAdministrator += IsAdministrator; |
170 | m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; | 171 | m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; |
171 | m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED | 172 | m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED |
@@ -466,22 +467,34 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
466 | if (IsEstateManager(user) && m_RegionManagerIsGod) | 467 | if (IsEstateManager(user) && m_RegionManagerIsGod) |
467 | return true; | 468 | return true; |
468 | 469 | ||
470 | if (IsGridGod(user, null)) | ||
471 | return true; | ||
472 | |||
473 | return false; | ||
474 | } | ||
475 | |||
476 | /// <summary> | ||
477 | /// Is the given user a God throughout the grid (not just in the current scene)? | ||
478 | /// </summary> | ||
479 | /// <param name="user">The user</param> | ||
480 | /// <param name="scene">Unused, can be null</param> | ||
481 | /// <returns></returns> | ||
482 | protected bool IsGridGod(UUID user, Scene scene) | ||
483 | { | ||
484 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
485 | if (m_bypassPermissions) return m_bypassPermissionsValue; | ||
486 | |||
487 | if (user == UUID.Zero) return false; | ||
488 | |||
469 | if (m_allowGridGods) | 489 | if (m_allowGridGods) |
470 | { | 490 | { |
471 | ScenePresence sp = m_scene.GetScenePresence(user); | 491 | ScenePresence sp = m_scene.GetScenePresence(user); |
472 | if (sp != null) | 492 | if (sp != null) |
473 | { | 493 | return (sp.UserLevel >= 200); |
474 | if (sp.UserLevel >= 200) | ||
475 | return true; | ||
476 | return false; | ||
477 | } | ||
478 | 494 | ||
479 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user); | 495 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user); |
480 | if (account != null) | 496 | if (account != null) |
481 | { | 497 | return (account.UserLevel >= 200); |
482 | if (account.UserLevel >= 200) | ||
483 | return true; | ||
484 | } | ||
485 | } | 498 | } |
486 | 499 | ||
487 | return false; | 500 | return false; |