diff options
author | TBG Renfold | 2012-08-09 18:03:26 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-08-24 00:13:14 +0100 |
commit | 4f3fabae5bec8a71f9953ef9f4c247e086e4757f (patch) | |
tree | e274526ce8e1653175f8da04000d8b07f10507b3 /OpenSim/Region/ScriptEngine/Shared/Api/Implementation | |
parent | If a script state save fails for some reason on shutdown/region removal, get ... (diff) | |
download | opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.zip opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.gz opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.bz2 opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.xz |
Adds osGetHealth.
Returns the amount of health (in an integer) that an avatar has left in the scene.
If an avatar is not found or safe is enabled on a region, -1 is returned.
Example usage:
default
{
touch_end(integer _t)
{
key agentID = llDetectedKey(0);
osCauseDamage(agentID, 50);
llSay(0, llKey2Name(agentID) + " has " + (string)osGetHealth(agentID) + "% health left.");
}
}
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 21 |
1 files changed, 21 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 1e8b51b..3d233d7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -2895,6 +2895,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2895 | } | 2895 | } |
2896 | }); | 2896 | }); |
2897 | } | 2897 | } |
2898 | |||
2899 | public LSL_Float osGetHealth(string avatar) | ||
2900 | { | ||
2901 | CheckThreatLevel(ThreatLevel.None, "osGetHealth"); | ||
2902 | m_host.AddScriptLPS(1); | ||
2903 | |||
2904 | UUID avatarId = new UUID(avatar); | ||
2905 | Vector3 pos = m_host.GetWorldPosition(); | ||
2906 | |||
2907 | LSL_Float health = new LSL_Float(-1); | ||
2908 | ScenePresence presence = World.GetScenePresence(avatarId); | ||
2909 | if (presence != null) | ||
2910 | { | ||
2911 | LandData land = World.GetLandData((float)pos.X, (float)pos.Y); | ||
2912 | if ((land.Flags & (uint)ParcelFlags.AllowDamage) == (uint)ParcelFlags.AllowDamage) | ||
2913 | { | ||
2914 | health = presence.Health; | ||
2915 | } | ||
2916 | } | ||
2917 | return health; | ||
2918 | } | ||
2898 | 2919 | ||
2899 | public void osCauseDamage(string avatar, double damage) | 2920 | public void osCauseDamage(string avatar, double damage) |
2900 | { | 2921 | { |