diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 89 |
1 files changed, 83 insertions, 6 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 6438312..9a1b652 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -3102,7 +3102,19 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3102 | public void llAddToLandPassList(string avatar, double hours) | 3102 | public void llAddToLandPassList(string avatar, double hours) |
3103 | { | 3103 | { |
3104 | m_host.AddScriptLPS(1); | 3104 | m_host.AddScriptLPS(1); |
3105 | NotImplemented("llAddToLandPassList"); | 3105 | LLUUID key; |
3106 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; | ||
3107 | if (land.ownerID == m_host.OwnerID) | ||
3108 | { | ||
3109 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); | ||
3110 | if (LLUUID.TryParse(avatar, out key)) | ||
3111 | { | ||
3112 | entry.AgentID = key; | ||
3113 | entry.Flags = ParcelManager.AccessList.Access; | ||
3114 | entry.Time = DateTime.Now.AddHours(hours); | ||
3115 | land.parcelAccessList.Add(entry); | ||
3116 | } | ||
3117 | } | ||
3106 | } | 3118 | } |
3107 | 3119 | ||
3108 | public void llSetTouchText(string text) | 3120 | public void llSetTouchText(string text) |
@@ -4240,19 +4252,64 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4240 | public void llAddToLandBanList(string avatar, double hours) | 4252 | public void llAddToLandBanList(string avatar, double hours) |
4241 | { | 4253 | { |
4242 | m_host.AddScriptLPS(1); | 4254 | m_host.AddScriptLPS(1); |
4243 | NotImplemented("llAddToLandBanList"); | 4255 | LLUUID key; |
4256 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; | ||
4257 | if (land.ownerID == m_host.OwnerID) | ||
4258 | { | ||
4259 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); | ||
4260 | if (LLUUID.TryParse(avatar, out key)) | ||
4261 | { | ||
4262 | entry.AgentID = key; | ||
4263 | entry.Flags = ParcelManager.AccessList.Ban; | ||
4264 | entry.Time = DateTime.Now.AddHours(hours); | ||
4265 | land.parcelAccessList.Add(entry); | ||
4266 | } | ||
4267 | } | ||
4268 | //NotImplemented("llAddToLandBanList"); | ||
4244 | } | 4269 | } |
4245 | 4270 | ||
4246 | public void llRemoveFromLandPassList(string avatar) | 4271 | public void llRemoveFromLandPassList(string avatar) |
4247 | { | 4272 | { |
4248 | m_host.AddScriptLPS(1); | 4273 | m_host.AddScriptLPS(1); |
4249 | NotImplemented("llRemoveFromLandPassList"); | 4274 | LLUUID key; |
4275 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; | ||
4276 | if (land.ownerID == m_host.OwnerID) | ||
4277 | { | ||
4278 | if (LLUUID.TryParse(avatar, out key)) | ||
4279 | { | ||
4280 | foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList) | ||
4281 | { | ||
4282 | if (entry.AgentID == key && entry.Flags == ParcelManager.AccessList.Access) | ||
4283 | { | ||
4284 | land.parcelAccessList.Remove(entry); | ||
4285 | break; | ||
4286 | } | ||
4287 | } | ||
4288 | } | ||
4289 | } | ||
4290 | //NotImplemented("llRemoveFromLandPassList"); | ||
4250 | } | 4291 | } |
4251 | 4292 | ||
4252 | public void llRemoveFromLandBanList(string avatar) | 4293 | public void llRemoveFromLandBanList(string avatar) |
4253 | { | 4294 | { |
4254 | m_host.AddScriptLPS(1); | 4295 | m_host.AddScriptLPS(1); |
4255 | NotImplemented("llRemoveFromLandBanList"); | 4296 | LLUUID key; |
4297 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; | ||
4298 | if (land.ownerID == m_host.OwnerID) | ||
4299 | { | ||
4300 | if (LLUUID.TryParse(avatar, out key)) | ||
4301 | { | ||
4302 | foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList) | ||
4303 | { | ||
4304 | if (entry.AgentID == key && entry.Flags == ParcelManager.AccessList.Ban) | ||
4305 | { | ||
4306 | land.parcelAccessList.Remove(entry); | ||
4307 | break; | ||
4308 | } | ||
4309 | } | ||
4310 | } | ||
4311 | } | ||
4312 | //NotImplemented("llRemoveFromLandPassList"); | ||
4256 | } | 4313 | } |
4257 | 4314 | ||
4258 | public void llSetCameraParams(LSL_Types.list rules) | 4315 | public void llSetCameraParams(LSL_Types.list rules) |
@@ -4363,13 +4420,33 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4363 | public void llResetLandBanList() | 4420 | public void llResetLandBanList() |
4364 | { | 4421 | { |
4365 | m_host.AddScriptLPS(1); | 4422 | m_host.AddScriptLPS(1); |
4366 | NotImplemented("llResetLandBanList"); | 4423 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; |
4424 | if (land.ownerID == m_host.OwnerID) | ||
4425 | { | ||
4426 | foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList) | ||
4427 | { | ||
4428 | if (entry.Flags == ParcelManager.AccessList.Ban) | ||
4429 | { | ||
4430 | land.parcelAccessList.Remove(entry); | ||
4431 | } | ||
4432 | } | ||
4433 | } | ||
4367 | } | 4434 | } |
4368 | 4435 | ||
4369 | public void llResetLandPassList() | 4436 | public void llResetLandPassList() |
4370 | { | 4437 | { |
4371 | m_host.AddScriptLPS(1); | 4438 | m_host.AddScriptLPS(1); |
4372 | NotImplemented("llResetLandPassList"); | 4439 | LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData; |
4440 | if (land.ownerID == m_host.OwnerID) | ||
4441 | { | ||
4442 | foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList) | ||
4443 | { | ||
4444 | if (entry.Flags == ParcelManager.AccessList.Access) | ||
4445 | { | ||
4446 | land.parcelAccessList.Remove(entry); | ||
4447 | } | ||
4448 | } | ||
4449 | } | ||
4373 | } | 4450 | } |
4374 | 4451 | ||
4375 | public int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) | 4452 | public int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) |