aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs77
1 files changed, 77 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 9c7604b..5abe4b1 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1983,5 +1983,82 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1983 1983
1984 return (int)pws; 1984 return (int)pws;
1985 } 1985 }
1986 public void osSetSpeed(string UUID, float SpeedModifier)
1987 {
1988 CheckThreatLevel(ThreatLevel.Moderate, "osSetSpeed");
1989 m_host.AddScriptLPS(1);
1990 ScenePresence avatar = World.GetScenePresence(new UUID(UUID));
1991 avatar.SpeedModifier = SpeedModifier;
1992 }
1993 public void osKickAvatar(string FirstName,string SurName,string alert)
1994 {
1995 CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
1996 if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
1997 {
1998 foreach (ScenePresence presence in World.GetAvatars())
1999 {
2000 if ((presence.Firstname == FirstName) &&
2001 presence.Lastname == SurName)
2002 {
2003 // kick client...
2004 if (alert != null)
2005 presence.ControllingClient.Kick(alert);
2006
2007 // ...and close on our side
2008 presence.Scene.IncomingCloseAgent(presence.UUID);
2009 }
2010 }
2011 }
2012 }
2013 public void osCauseDamage(string avatar, double damage)
2014 {
2015 CheckThreatLevel(ThreatLevel.High, "osCauseDamage");
2016 m_host.AddScriptLPS(1);
2017
2018 UUID avatarId = new UUID(avatar);
2019 Vector3 pos = m_host.GetWorldPosition();
2020
2021 ScenePresence presence = World.GetScenePresence(avatarId);
2022 if (presence != null)
2023 {
2024 LandData land = World.GetLandData((float)pos.X, (float)pos.Y);
2025 if ((land.Flags & (uint)ParcelFlags.AllowDamage) == (uint)ParcelFlags.AllowDamage)
2026 {
2027 float health = presence.Health;
2028 health -= (float)damage;
2029 presence.setHealthWithUpdate(health);
2030 if (health <= 0)
2031 {
2032 float healthliveagain = 100;
2033 presence.ControllingClient.SendAgentAlertMessage("You died!", true);
2034 presence.setHealthWithUpdate(healthliveagain);
2035 presence.Scene.TeleportClientHome(presence.UUID, presence.ControllingClient);
2036 }
2037 }
2038 }
2039 }
2040 public void osCauseHealing(string avatar, double healing)
2041 {
2042 CheckThreatLevel(ThreatLevel.High, "osCauseHealing");
2043 m_host.AddScriptLPS(1);
2044
2045 UUID avatarId = new UUID(avatar);
2046 ScenePresence presence = World.GetScenePresence(avatarId);
2047 Vector3 pos = m_host.GetWorldPosition();
2048 bool result = World.ScriptDanger(m_host.LocalId, new Vector3((float)pos.X, (float)pos.Y, (float)pos.Z));
2049 if (result)
2050 {
2051 if (presence != null)
2052 {
2053 float health = presence.Health;
2054 health += (float)healing;
2055 if (health >= 100)
2056 {
2057 health = 100;
2058 }
2059 presence.setHealthWithUpdate(health);
2060 }
2061 }
2062 }
1986 } 2063 }
1987} 2064}