Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
commit
1747030d19
|
@ -2896,6 +2896,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_Float osGetHealth(string avatar)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.None, "osGetHealth");
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
LSL_Float health = new LSL_Float(-1);
|
||||||
|
ScenePresence presence = World.GetScenePresence(new UUID(avatar));
|
||||||
|
if (presence != null) health = presence.Health;
|
||||||
|
return health;
|
||||||
|
}
|
||||||
|
|
||||||
public void osCauseDamage(string avatar, double damage)
|
public void osCauseDamage(string avatar, double damage)
|
||||||
{
|
{
|
||||||
CheckThreatLevel(ThreatLevel.High, "osCauseDamage");
|
CheckThreatLevel(ThreatLevel.High, "osCauseDamage");
|
||||||
|
@ -3333,5 +3344,55 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
return new LSL_Key(m_host.ParentGroup.FromPartID.ToString());
|
return new LSL_Key(m_host.ParentGroup.FromPartID.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osRezDuplicate(LSL_Vector offset, LSL_Rotation rot)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osRezDuplicate");
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
Vector3 v = new Vector3((float)offset.x, (float)offset.y, (float)offset.z);
|
||||||
|
Quaternion r = new Quaternion(
|
||||||
|
(float)rot.x,
|
||||||
|
(float)rot.y,
|
||||||
|
(float)rot.z,
|
||||||
|
(float)rot.s
|
||||||
|
);
|
||||||
|
|
||||||
|
Vector3 destination = m_host.ParentGroup.AbsolutePosition + v;
|
||||||
|
|
||||||
|
if (!World.Permissions.CanRezObject(
|
||||||
|
m_host.ParentGroup.PrimCount,
|
||||||
|
m_host.OwnerID,
|
||||||
|
destination
|
||||||
|
))
|
||||||
|
{
|
||||||
|
OSSLShoutError("Cannot duplicate object to destination, owner cannot rez objects at destination parcel.");
|
||||||
|
|
||||||
|
ScriptSleep(100);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SceneObjectGroup duplicate = World.SceneGraph.DuplicateObject(
|
||||||
|
m_host.ParentGroup.LocalId,
|
||||||
|
v,
|
||||||
|
m_host.ParentGroup.RootPart.GetEffectiveObjectFlags(),
|
||||||
|
m_host.OwnerID,
|
||||||
|
m_host.GroupID,
|
||||||
|
r
|
||||||
|
);
|
||||||
|
|
||||||
|
m_ScriptEngine.PostObjectEvent(m_host.LocalId, new EventParams(
|
||||||
|
"object_rez", new Object[] {
|
||||||
|
new LSL_String(
|
||||||
|
duplicate.RootPart.UUID.ToString()) },
|
||||||
|
new DetectParams[0]));
|
||||||
|
|
||||||
|
ScriptSleep(100);
|
||||||
|
m_ScriptEngine.PostObjectEvent(duplicate.LocalId, new EventParams(
|
||||||
|
"on_rez", new Object[]{
|
||||||
|
new LSL_Integer(0)},
|
||||||
|
new DetectParams[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -258,6 +258,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
int osGetSimulatorMemory();
|
int osGetSimulatorMemory();
|
||||||
void osKickAvatar(string FirstName,string SurName,string alert);
|
void osKickAvatar(string FirstName,string SurName,string alert);
|
||||||
void osSetSpeed(string UUID, LSL_Float SpeedModifier);
|
void osSetSpeed(string UUID, LSL_Float SpeedModifier);
|
||||||
|
LSL_Float osGetHealth(string avatar);
|
||||||
void osCauseHealing(string avatar, double healing);
|
void osCauseHealing(string avatar, double healing);
|
||||||
void osCauseDamage(string avatar, double damage);
|
void osCauseDamage(string avatar, double damage);
|
||||||
LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules);
|
LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules);
|
||||||
|
@ -305,5 +306,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Rezzing object key or NULL_KEY if rezzed by agent or otherwise unknown.</returns>
|
/// <returns>Rezzing object key or NULL_KEY if rezzed by agent or otherwise unknown.</returns>
|
||||||
LSL_Key osGetRezzingObject();
|
LSL_Key osGetRezzingObject();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Duplicates an object as if the owner duplicated it.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="offset"></param>
|
||||||
|
/// <param name="rot"></param>
|
||||||
|
void osRezDuplicate(vector offset, rotation rot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -866,6 +866,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
m_OSSL_Functions.osSetSpeed(UUID, SpeedModifier);
|
m_OSSL_Functions.osSetSpeed(UUID, SpeedModifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_Float osGetHealth(string avatar)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osGetHealth(avatar);
|
||||||
|
}
|
||||||
|
|
||||||
public void osCauseDamage(string avatar, double damage)
|
public void osCauseDamage(string avatar, double damage)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osCauseDamage(avatar, damage);
|
m_OSSL_Functions.osCauseDamage(avatar, damage);
|
||||||
|
@ -950,5 +955,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osGetRezzingObject();
|
return m_OSSL_Functions.osGetRezzingObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osRezDuplicate(vector offset, rotation rot)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osRezDuplicate(offset, rot);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue