If a Grid God teleports then include the Godlike teleport flag. This can affect the starting position in the destination region.
parent
37d770f814
commit
9622e8ac72
|
@ -161,6 +161,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
public void Teleport(ScenePresence sp, ulong regionHandle, Vector3 position, Vector3 lookAt, uint teleportFlags)
|
public void Teleport(ScenePresence sp, ulong regionHandle, Vector3 position, Vector3 lookAt, uint teleportFlags)
|
||||||
{
|
{
|
||||||
|
if (sp.Scene.Permissions.IsGridGod(sp.UUID))
|
||||||
|
{
|
||||||
|
// This user will be a God in the destination scene, too
|
||||||
|
teleportFlags |= (uint)TeleportFlags.Godlike;
|
||||||
|
}
|
||||||
|
|
||||||
if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
m_scene.Permissions.OnDeedParcel += CanDeedParcel;
|
m_scene.Permissions.OnDeedParcel += CanDeedParcel;
|
||||||
m_scene.Permissions.OnDeedObject += CanDeedObject;
|
m_scene.Permissions.OnDeedObject += CanDeedObject;
|
||||||
m_scene.Permissions.OnIsGod += IsGod;
|
m_scene.Permissions.OnIsGod += IsGod;
|
||||||
|
m_scene.Permissions.OnIsGridGod += IsGridGod;
|
||||||
m_scene.Permissions.OnIsAdministrator += IsAdministrator;
|
m_scene.Permissions.OnIsAdministrator += IsAdministrator;
|
||||||
m_scene.Permissions.OnDuplicateObject += CanDuplicateObject;
|
m_scene.Permissions.OnDuplicateObject += CanDuplicateObject;
|
||||||
m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED
|
m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED
|
||||||
|
@ -466,22 +467,34 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
if (IsEstateManager(user) && m_RegionManagerIsGod)
|
if (IsEstateManager(user) && m_RegionManagerIsGod)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (IsGridGod(user, null))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is the given user a God throughout the grid (not just in the current scene)?
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="user">The user</param>
|
||||||
|
/// <param name="scene">Unused, can be null</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected bool IsGridGod(UUID user, Scene scene)
|
||||||
|
{
|
||||||
|
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||||
|
if (m_bypassPermissions) return m_bypassPermissionsValue;
|
||||||
|
|
||||||
|
if (user == UUID.Zero) return false;
|
||||||
|
|
||||||
if (m_allowGridGods)
|
if (m_allowGridGods)
|
||||||
{
|
{
|
||||||
ScenePresence sp = m_scene.GetScenePresence(user);
|
ScenePresence sp = m_scene.GetScenePresence(user);
|
||||||
if (sp != null)
|
if (sp != null)
|
||||||
{
|
return (sp.UserLevel >= 200);
|
||||||
if (sp.UserLevel >= 200)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user);
|
UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user);
|
||||||
if (account != null)
|
if (account != null)
|
||||||
{
|
return (account.UserLevel >= 200);
|
||||||
if (account.UserLevel >= 200)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -67,6 +67,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene);
|
public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene);
|
||||||
public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand);
|
public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand);
|
||||||
public delegate bool IsGodHandler(UUID user, Scene requestFromScene);
|
public delegate bool IsGodHandler(UUID user, Scene requestFromScene);
|
||||||
|
public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene);
|
||||||
public delegate bool IsAdministratorHandler(UUID user);
|
public delegate bool IsAdministratorHandler(UUID user);
|
||||||
public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
||||||
public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene);
|
public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene);
|
||||||
|
@ -134,6 +135,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public event RunConsoleCommandHandler OnRunConsoleCommand;
|
public event RunConsoleCommandHandler OnRunConsoleCommand;
|
||||||
public event IssueEstateCommandHandler OnIssueEstateCommand;
|
public event IssueEstateCommandHandler OnIssueEstateCommand;
|
||||||
public event IsGodHandler OnIsGod;
|
public event IsGodHandler OnIsGod;
|
||||||
|
public event IsGridGodHandler OnIsGridGod;
|
||||||
public event IsAdministratorHandler OnIsAdministrator;
|
public event IsAdministratorHandler OnIsAdministrator;
|
||||||
// public event EditParcelHandler OnEditParcel;
|
// public event EditParcelHandler OnEditParcel;
|
||||||
public event EditParcelPropertiesHandler OnEditParcelProperties;
|
public event EditParcelPropertiesHandler OnEditParcelProperties;
|
||||||
|
@ -728,6 +730,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsGridGod(UUID user)
|
||||||
|
{
|
||||||
|
IsGridGodHandler handler = OnIsGridGod;
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
Delegate[] list = handler.GetInvocationList();
|
||||||
|
foreach (IsGridGodHandler h in list)
|
||||||
|
{
|
||||||
|
if (h(user, m_scene) == false)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsAdministrator(UUID user)
|
public bool IsAdministrator(UUID user)
|
||||||
{
|
{
|
||||||
IsAdministratorHandler handler = OnIsAdministrator;
|
IsAdministratorHandler handler = OnIsAdministrator;
|
||||||
|
|
Loading…
Reference in New Issue