diff options
Diffstat (limited to 'OpenSim')
4 files changed, 43 insertions, 9 deletions
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 0e5eaf2..03ead01 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs | |||
@@ -89,6 +89,7 @@ namespace OpenSim.Framework | |||
89 | public Vector3 AtAxis; | 89 | public Vector3 AtAxis; |
90 | public Vector3 LeftAxis; | 90 | public Vector3 LeftAxis; |
91 | public Vector3 UpAxis; | 91 | public Vector3 UpAxis; |
92 | public int GodLevel; | ||
92 | public bool ChangedGrid; | 93 | public bool ChangedGrid; |
93 | 94 | ||
94 | // This probably shouldn't be here | 95 | // This probably shouldn't be here |
@@ -116,6 +117,7 @@ namespace OpenSim.Framework | |||
116 | 117 | ||
117 | args["far"] = OSD.FromReal(Far); | 118 | args["far"] = OSD.FromReal(Far); |
118 | args["changed_grid"] = OSD.FromBoolean(ChangedGrid); | 119 | args["changed_grid"] = OSD.FromBoolean(ChangedGrid); |
120 | args["god_level"] = OSD.FromString(GodLevel.ToString()); | ||
119 | 121 | ||
120 | if ((Throttles != null) && (Throttles.Length > 0)) | 122 | if ((Throttles != null) && (Throttles.Length > 0)) |
121 | args["throttles"] = OSD.FromBinary(Throttles); | 123 | args["throttles"] = OSD.FromBinary(Throttles); |
@@ -174,6 +176,9 @@ namespace OpenSim.Framework | |||
174 | if (args["changed_grid"] != null) | 176 | if (args["changed_grid"] != null) |
175 | ChangedGrid = args["changed_grid"].AsBoolean(); | 177 | ChangedGrid = args["changed_grid"].AsBoolean(); |
176 | 178 | ||
179 | if (args["god_level"] != null) | ||
180 | Int32.TryParse(args["god_level"].AsString(), out GodLevel); | ||
181 | |||
177 | if (args["far"] != null) | 182 | if (args["far"] != null) |
178 | Far = (float)(args["far"].AsReal()); | 183 | Far = (float)(args["far"].AsReal()); |
179 | 184 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 6b1eb54..ebebfd0 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -2077,6 +2077,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
2077 | agentpos.Position = sp.AbsolutePosition; | 2077 | agentpos.Position = sp.AbsolutePosition; |
2078 | agentpos.Velocity = sp.Velocity; | 2078 | agentpos.Velocity = sp.Velocity; |
2079 | agentpos.RegionHandle = currentRegionHandler; | 2079 | agentpos.RegionHandle = currentRegionHandler; |
2080 | agentpos.GodLevel = sp.GodLevel; | ||
2080 | agentpos.Throttles = spClient.GetThrottlesPacked(1); | 2081 | agentpos.Throttles = spClient.GetThrottlesPacked(1); |
2081 | // agentpos.ChildrenCapSeeds = seeds; | 2082 | // agentpos.ChildrenCapSeeds = seeds; |
2082 | 2083 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 352bc05..a293c92 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -316,6 +316,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
316 | public bool m_seeIntoBannedRegion = false; | 316 | public bool m_seeIntoBannedRegion = false; |
317 | public int MaxUndoCount = 5; | 317 | public int MaxUndoCount = 5; |
318 | 318 | ||
319 | public bool AutomaticGodsOption {get; private set; } | ||
320 | |||
319 | public bool SeeIntoRegion { get; set; } | 321 | public bool SeeIntoRegion { get; set; } |
320 | 322 | ||
321 | // Using this for RegionReady module to prevent LoginsDisabled from changing under our feet; | 323 | // Using this for RegionReady module to prevent LoginsDisabled from changing under our feet; |
@@ -1207,6 +1209,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1207 | 1209 | ||
1208 | #endregion Interest Management | 1210 | #endregion Interest Management |
1209 | 1211 | ||
1212 | AutomaticGodsOption = Util.GetConfigVarFromSections<bool>(config, "automatic_gods", | ||
1213 | new string[] { "Startup", "Permissions" }, true); | ||
1210 | 1214 | ||
1211 | StatsReporter = new SimStatsReporter(this); | 1215 | StatsReporter = new SimStatsReporter(this); |
1212 | 1216 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 29e139b..c8d28f9 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1087,6 +1087,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1087 | if (account != null) | 1087 | if (account != null) |
1088 | UserLevel = account.UserLevel; | 1088 | UserLevel = account.UserLevel; |
1089 | 1089 | ||
1090 | if(!isNPC && m_scene.AutomaticGodsOption && m_scene.Permissions != null) | ||
1091 | { | ||
1092 | if(m_scene.Permissions.IsGod(m_uuid)) | ||
1093 | m_godLevel = 200; | ||
1094 | if(m_godLevel < UserLevel) | ||
1095 | m_godLevel = UserLevel; | ||
1096 | } | ||
1097 | |||
1090 | // IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); | 1098 | // IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); |
1091 | // if (gm != null) | 1099 | // if (gm != null) |
1092 | // Grouptitle = gm.GetGroupTitle(m_uuid); | 1100 | // Grouptitle = gm.GetGroupTitle(m_uuid); |
@@ -4262,6 +4270,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4262 | agentpos.Position = AbsolutePosition; | 4270 | agentpos.Position = AbsolutePosition; |
4263 | agentpos.Velocity = Velocity; | 4271 | agentpos.Velocity = Velocity; |
4264 | agentpos.RegionHandle = RegionHandle; | 4272 | agentpos.RegionHandle = RegionHandle; |
4273 | agentpos.GodLevel = GodLevel; | ||
4265 | agentpos.Throttles = ControllingClient.GetThrottlesPacked(1); | 4274 | agentpos.Throttles = ControllingClient.GetThrottlesPacked(1); |
4266 | 4275 | ||
4267 | // Let's get this out of the update loop | 4276 | // Let's get this out of the update loop |
@@ -4510,6 +4519,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
4510 | /// </summary> | 4519 | /// </summary> |
4511 | public void GrantGodlikePowers(UUID token, bool godStatus) | 4520 | public void GrantGodlikePowers(UUID token, bool godStatus) |
4512 | { | 4521 | { |
4522 | if(m_scene.AutomaticGodsOption) | ||
4523 | return; | ||
4524 | |||
4513 | int oldgodlevel = GodLevel; | 4525 | int oldgodlevel = GodLevel; |
4514 | 4526 | ||
4515 | if (godStatus && !isNPC && m_scene.Permissions.IsGod(UUID)) | 4527 | if (godStatus && !isNPC && m_scene.Permissions.IsGod(UUID)) |
@@ -4568,6 +4580,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
4568 | m_pos = cAgentData.Position + offset; | 4580 | m_pos = cAgentData.Position + offset; |
4569 | 4581 | ||
4570 | CameraPosition = cAgentData.Center + offset; | 4582 | CameraPosition = cAgentData.Center + offset; |
4583 | if(!m_scene.AutomaticGodsOption) | ||
4584 | { | ||
4585 | if(cAgentData.GodLevel >= 200 && m_scene.Permissions.IsGod(m_uuid)) | ||
4586 | GodLevel = cAgentData.GodLevel; | ||
4587 | else | ||
4588 | GodLevel = 0; | ||
4589 | } | ||
4571 | 4590 | ||
4572 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) | 4591 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) |
4573 | { | 4592 | { |
@@ -4627,11 +4646,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
4627 | cAgent.HeadRotation = m_headrotation; | 4646 | cAgent.HeadRotation = m_headrotation; |
4628 | cAgent.BodyRotation = Rotation; | 4647 | cAgent.BodyRotation = Rotation; |
4629 | cAgent.ControlFlags = (uint)m_AgentControlFlags; | 4648 | cAgent.ControlFlags = (uint)m_AgentControlFlags; |
4630 | 4649 | if(!m_scene.AutomaticGodsOption) | |
4631 | if (GodLevel > 200 && m_scene.Permissions.IsGod(cAgent.AgentID)) | 4650 | { |
4632 | cAgent.GodLevel = (byte)GodLevel; | 4651 | if (GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID)) |
4633 | else | 4652 | cAgent.GodLevel = (byte)GodLevel; |
4634 | cAgent.GodLevel = (byte) 0; | 4653 | else |
4654 | cAgent.GodLevel = (byte) 0; | ||
4655 | } | ||
4635 | 4656 | ||
4636 | cAgent.AlwaysRun = SetAlwaysRun; | 4657 | cAgent.AlwaysRun = SetAlwaysRun; |
4637 | 4658 | ||
@@ -4729,10 +4750,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
4729 | Rotation = cAgent.BodyRotation; | 4750 | Rotation = cAgent.BodyRotation; |
4730 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; | 4751 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; |
4731 | 4752 | ||
4732 | if (cAgent.GodLevel >200 && m_scene.Permissions.IsGod(cAgent.AgentID)) | 4753 | if(!m_scene.AutomaticGodsOption) |
4733 | GodLevel = cAgent.GodLevel; | 4754 | { |
4734 | else | 4755 | if (cAgent.GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID)) |
4735 | GodLevel = 0; | 4756 | GodLevel = cAgent.GodLevel; |
4757 | else | ||
4758 | GodLevel = 0; | ||
4759 | } | ||
4736 | 4760 | ||
4737 | SetAlwaysRun = cAgent.AlwaysRun; | 4761 | SetAlwaysRun = cAgent.AlwaysRun; |
4738 | 4762 | ||