mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:30:02 +08:00
Add osNpcPlayAnimation and osNpcStopAnimation which respect ownership as well
This commit is contained in:
@@ -897,6 +897,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.VeryHigh, "osAvatarPlayAnimation");
|
||||
|
||||
AvatarPlayAnimation(avatar, animation);
|
||||
}
|
||||
|
||||
private void AvatarPlayAnimation(string avatar, string animation)
|
||||
{
|
||||
UUID avatarID = (UUID)avatar;
|
||||
|
||||
m_host.AddScriptLPS(1);
|
||||
@@ -929,6 +934,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.VeryHigh, "osAvatarStopAnimation");
|
||||
|
||||
AvatarStopAnimation(avatar, animation);
|
||||
}
|
||||
|
||||
private void AvatarStopAnimation(string avatar, string animation)
|
||||
{
|
||||
UUID avatarID = (UUID)avatar;
|
||||
|
||||
m_host.AddScriptLPS(1);
|
||||
@@ -2341,6 +2351,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
}
|
||||
}
|
||||
|
||||
public void osNpcPlayAnimation(LSL_Key npc, string animation)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.High, "osPlayAnimation");
|
||||
|
||||
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||
if (module != null)
|
||||
{
|
||||
UUID npcID = new UUID(npc.m_string);
|
||||
if (module.IsNPC(npcID))
|
||||
{
|
||||
UUID ownerID = module.GetOwner(npcID);
|
||||
if (ownerID == UUID.Zero || ownerID == m_host.OwnerID)
|
||||
AvatarPlayAnimation(npcID.ToString(), animation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void osNpcStopAnimation(LSL_Key npc, string animation)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.High, "osNpcStopAnimation");
|
||||
|
||||
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||
if (module != null)
|
||||
{
|
||||
UUID npcID = new UUID(npc.m_string);
|
||||
if (module.IsNPC(npcID))
|
||||
{
|
||||
UUID ownerID = module.GetOwner(npcID);
|
||||
if (ownerID == UUID.Zero || ownerID == m_host.OwnerID)
|
||||
AvatarStopAnimation(npcID.ToString(), animation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save the current appearance of the script owner permanently to the named notecard.
|
||||
/// </summary>
|
||||
|
||||
@@ -185,6 +185,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
void osNpcSit(key npc, key target, int options);
|
||||
void osNpcStand(LSL_Key npc);
|
||||
void osNpcRemove(key npc);
|
||||
public void osNpcPlayAnimation(LSL_Key npc, string animation);
|
||||
public void osNpcStopAnimation(LSL_Key npc, string animation);
|
||||
|
||||
LSL_Key osOwnerSaveAppearance(string notecard);
|
||||
LSL_Key osAgentSaveAppearance(key agentId, string notecard);
|
||||
|
||||
@@ -553,6 +553,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
m_OSSL_Functions.osNpcRemove(npc);
|
||||
}
|
||||
|
||||
public void osNpcPlayAnimation(LSL_Key npc, string animation)
|
||||
{
|
||||
m_OSSL_Functions.osNpcPlayAnimation(npc, animation);
|
||||
}
|
||||
|
||||
public void osNpcStopAnimation(LSL_Key npc, string animation)
|
||||
{
|
||||
m_OSSL_Functions.osNpcStopAnimation(npc, animation);
|
||||
}
|
||||
|
||||
public LSL_Key osOwnerSaveAppearance(string notecard)
|
||||
{
|
||||
return m_OSSL_Functions.osOwnerSaveAppearance(notecard);
|
||||
|
||||
Reference in New Issue
Block a user