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