add config option automatic_gods. With this option true, users that can be Gods will have that level automaticly without the need request on viewer; Propagate current god level to nearby regions (with local checks)
parent
1a35af229c
commit
1fb01a0099
|
@ -89,6 +89,7 @@ namespace OpenSim.Framework
|
||||||
public Vector3 AtAxis;
|
public Vector3 AtAxis;
|
||||||
public Vector3 LeftAxis;
|
public Vector3 LeftAxis;
|
||||||
public Vector3 UpAxis;
|
public Vector3 UpAxis;
|
||||||
|
public int GodLevel;
|
||||||
public bool ChangedGrid;
|
public bool ChangedGrid;
|
||||||
|
|
||||||
// This probably shouldn't be here
|
// This probably shouldn't be here
|
||||||
|
@ -116,6 +117,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
args["far"] = OSD.FromReal(Far);
|
args["far"] = OSD.FromReal(Far);
|
||||||
args["changed_grid"] = OSD.FromBoolean(ChangedGrid);
|
args["changed_grid"] = OSD.FromBoolean(ChangedGrid);
|
||||||
|
args["god_level"] = OSD.FromString(GodLevel.ToString());
|
||||||
|
|
||||||
if ((Throttles != null) && (Throttles.Length > 0))
|
if ((Throttles != null) && (Throttles.Length > 0))
|
||||||
args["throttles"] = OSD.FromBinary(Throttles);
|
args["throttles"] = OSD.FromBinary(Throttles);
|
||||||
|
@ -174,6 +176,9 @@ namespace OpenSim.Framework
|
||||||
if (args["changed_grid"] != null)
|
if (args["changed_grid"] != null)
|
||||||
ChangedGrid = args["changed_grid"].AsBoolean();
|
ChangedGrid = args["changed_grid"].AsBoolean();
|
||||||
|
|
||||||
|
if (args["god_level"] != null)
|
||||||
|
Int32.TryParse(args["god_level"].AsString(), out GodLevel);
|
||||||
|
|
||||||
if (args["far"] != null)
|
if (args["far"] != null)
|
||||||
Far = (float)(args["far"].AsReal());
|
Far = (float)(args["far"].AsReal());
|
||||||
|
|
||||||
|
|
|
@ -2077,6 +2077,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
agentpos.Position = sp.AbsolutePosition;
|
agentpos.Position = sp.AbsolutePosition;
|
||||||
agentpos.Velocity = sp.Velocity;
|
agentpos.Velocity = sp.Velocity;
|
||||||
agentpos.RegionHandle = currentRegionHandler;
|
agentpos.RegionHandle = currentRegionHandler;
|
||||||
|
agentpos.GodLevel = sp.GodLevel;
|
||||||
agentpos.Throttles = spClient.GetThrottlesPacked(1);
|
agentpos.Throttles = spClient.GetThrottlesPacked(1);
|
||||||
// agentpos.ChildrenCapSeeds = seeds;
|
// agentpos.ChildrenCapSeeds = seeds;
|
||||||
|
|
||||||
|
|
|
@ -316,6 +316,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public bool m_seeIntoBannedRegion = false;
|
public bool m_seeIntoBannedRegion = false;
|
||||||
public int MaxUndoCount = 5;
|
public int MaxUndoCount = 5;
|
||||||
|
|
||||||
|
public bool AutomaticGodsOption {get; private set; }
|
||||||
|
|
||||||
public bool SeeIntoRegion { get; set; }
|
public bool SeeIntoRegion { get; set; }
|
||||||
|
|
||||||
// Using this for RegionReady module to prevent LoginsDisabled from changing under our feet;
|
// Using this for RegionReady module to prevent LoginsDisabled from changing under our feet;
|
||||||
|
@ -1207,6 +1209,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion Interest Management
|
#endregion Interest Management
|
||||||
|
|
||||||
|
AutomaticGodsOption = Util.GetConfigVarFromSections<bool>(config, "automatic_gods",
|
||||||
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
|
|
||||||
StatsReporter = new SimStatsReporter(this);
|
StatsReporter = new SimStatsReporter(this);
|
||||||
|
|
||||||
|
|
|
@ -1087,6 +1087,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (account != null)
|
if (account != null)
|
||||||
UserLevel = account.UserLevel;
|
UserLevel = account.UserLevel;
|
||||||
|
|
||||||
|
if(!isNPC && m_scene.AutomaticGodsOption && m_scene.Permissions != null)
|
||||||
|
{
|
||||||
|
if(m_scene.Permissions.IsGod(m_uuid))
|
||||||
|
m_godLevel = 200;
|
||||||
|
if(m_godLevel < UserLevel)
|
||||||
|
m_godLevel = UserLevel;
|
||||||
|
}
|
||||||
|
|
||||||
// IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
// IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
// if (gm != null)
|
// if (gm != null)
|
||||||
// Grouptitle = gm.GetGroupTitle(m_uuid);
|
// Grouptitle = gm.GetGroupTitle(m_uuid);
|
||||||
|
@ -4262,6 +4270,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
agentpos.Position = AbsolutePosition;
|
agentpos.Position = AbsolutePosition;
|
||||||
agentpos.Velocity = Velocity;
|
agentpos.Velocity = Velocity;
|
||||||
agentpos.RegionHandle = RegionHandle;
|
agentpos.RegionHandle = RegionHandle;
|
||||||
|
agentpos.GodLevel = GodLevel;
|
||||||
agentpos.Throttles = ControllingClient.GetThrottlesPacked(1);
|
agentpos.Throttles = ControllingClient.GetThrottlesPacked(1);
|
||||||
|
|
||||||
// Let's get this out of the update loop
|
// Let's get this out of the update loop
|
||||||
|
@ -4510,6 +4519,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void GrantGodlikePowers(UUID token, bool godStatus)
|
public void GrantGodlikePowers(UUID token, bool godStatus)
|
||||||
{
|
{
|
||||||
|
if(m_scene.AutomaticGodsOption)
|
||||||
|
return;
|
||||||
|
|
||||||
int oldgodlevel = GodLevel;
|
int oldgodlevel = GodLevel;
|
||||||
|
|
||||||
if (godStatus && !isNPC && m_scene.Permissions.IsGod(UUID))
|
if (godStatus && !isNPC && m_scene.Permissions.IsGod(UUID))
|
||||||
|
@ -4568,6 +4580,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_pos = cAgentData.Position + offset;
|
m_pos = cAgentData.Position + offset;
|
||||||
|
|
||||||
CameraPosition = cAgentData.Center + offset;
|
CameraPosition = cAgentData.Center + offset;
|
||||||
|
if(!m_scene.AutomaticGodsOption)
|
||||||
|
{
|
||||||
|
if(cAgentData.GodLevel >= 200 && m_scene.Permissions.IsGod(m_uuid))
|
||||||
|
GodLevel = cAgentData.GodLevel;
|
||||||
|
else
|
||||||
|
GodLevel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0)
|
if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -4627,11 +4646,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
cAgent.HeadRotation = m_headrotation;
|
cAgent.HeadRotation = m_headrotation;
|
||||||
cAgent.BodyRotation = Rotation;
|
cAgent.BodyRotation = Rotation;
|
||||||
cAgent.ControlFlags = (uint)m_AgentControlFlags;
|
cAgent.ControlFlags = (uint)m_AgentControlFlags;
|
||||||
|
if(!m_scene.AutomaticGodsOption)
|
||||||
if (GodLevel > 200 && m_scene.Permissions.IsGod(cAgent.AgentID))
|
{
|
||||||
|
if (GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID))
|
||||||
cAgent.GodLevel = (byte)GodLevel;
|
cAgent.GodLevel = (byte)GodLevel;
|
||||||
else
|
else
|
||||||
cAgent.GodLevel = (byte) 0;
|
cAgent.GodLevel = (byte) 0;
|
||||||
|
}
|
||||||
|
|
||||||
cAgent.AlwaysRun = SetAlwaysRun;
|
cAgent.AlwaysRun = SetAlwaysRun;
|
||||||
|
|
||||||
|
@ -4729,10 +4750,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Rotation = cAgent.BodyRotation;
|
Rotation = cAgent.BodyRotation;
|
||||||
m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags;
|
m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags;
|
||||||
|
|
||||||
if (cAgent.GodLevel >200 && m_scene.Permissions.IsGod(cAgent.AgentID))
|
if(!m_scene.AutomaticGodsOption)
|
||||||
|
{
|
||||||
|
if (cAgent.GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID))
|
||||||
GodLevel = cAgent.GodLevel;
|
GodLevel = cAgent.GodLevel;
|
||||||
else
|
else
|
||||||
GodLevel = 0;
|
GodLevel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
SetAlwaysRun = cAgent.AlwaysRun;
|
SetAlwaysRun = cAgent.AlwaysRun;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue