* Fix/implement LSL group-related functions llDetectedGroup, llSameGroup 
* Thanks nlin
0.6.0-stable
Justin Clarke Casey 2008-09-17 13:14:07 +00:00
parent 5c165c9bdd
commit 6bcdc82a46
2 changed files with 30 additions and 9 deletions

View File

@ -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)

View File

@ -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)