mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 13:55:35 +08:00
* Fix/implement LSL group-related functions llDetectedGroup, llSameGroup * Thanks nlin
This commit is contained in:
@@ -932,14 +932,17 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||
}
|
||||
|
||||
public LSL_Types.LSLInteger llDetectedGroup(int number)
|
||||
{ //CFK: I *think* this is right, but am not sure.
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
EntityBase SensedObject = entityDetectedKey(number);
|
||||
if (SensedObject == null)
|
||||
UUID SensedUUID = uuidDetectedKey(number);
|
||||
if (SensedUUID == UUID.Zero)
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
if (m_host.GroupID == m_host.ParentGroup.RootPart.GroupID)
|
||||
ScenePresence presence = World.GetScenePresence(SensedUUID);
|
||||
IClientAPI client = presence.ControllingClient;
|
||||
if (m_host.GroupID == client.ActiveGroupId)
|
||||
return new LSL_Types.LSLInteger(1);
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
else
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
}
|
||||
|
||||
public LSL_Types.LSLInteger llDetectedLinkNumber(int number)
|
||||
@@ -4708,8 +4711,17 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||
public LSL_Types.LSLInteger llSameGroup(string agent)
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
NotImplemented("llSameGroup");
|
||||
return 0;
|
||||
UUID agentId = new UUID();
|
||||
if (!UUID.TryParse(agent, out agentId))
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
ScenePresence presence = World.GetScenePresence(agentId);
|
||||
if (presence == null)
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
IClientAPI client = presence.ControllingClient;
|
||||
if (m_host.GroupID == client.ActiveGroupId)
|
||||
return new LSL_Types.LSLInteger(1);
|
||||
else
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
}
|
||||
|
||||
public void llUnSit(string id)
|
||||
|
||||
@@ -4553,8 +4553,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
public LSL_Types.LSLInteger llSameGroup(string agent)
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
NotImplemented("llSameGroup");
|
||||
return 0;
|
||||
UUID agentId = new UUID();
|
||||
if (!UUID.TryParse(agent, out agentId))
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
ScenePresence presence = World.GetScenePresence(agentId);
|
||||
if (presence == null)
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
IClientAPI client = presence.ControllingClient;
|
||||
if (m_host.GroupID == client.ActiveGroupId)
|
||||
return new LSL_Types.LSLInteger(1);
|
||||
else
|
||||
return new LSL_Types.LSLInteger(0);
|
||||
}
|
||||
|
||||
public void llUnSit(string id)
|
||||
|
||||
Reference in New Issue
Block a user