Merge branch 'avination' of ssh://3dhosting.de/var/git/careminster into avination
commit
5546757931
|
@ -58,6 +58,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddRegion(Scene scene)
|
public void AddRegion(Scene scene)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveRegion(Scene scene)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegionLoaded(Scene scene)
|
||||||
{
|
{
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
|
|
||||||
|
@ -73,14 +81,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,34 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
|
||||||
if (!m_scene.TryGetScenePresence(item.PermsGranter, out target))
|
if (!m_scene.TryGetScenePresence(item.PermsGranter, out target))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (target.UUID != hostPart.ParentGroup.OwnerID)
|
||||||
|
{
|
||||||
|
uint effectivePerms = hostPart.ParentGroup.GetEffectivePermissions();
|
||||||
|
|
||||||
|
if ((effectivePerms & (uint)PermissionMask.Transfer) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
hostPart.ParentGroup.SetOwnerId(target.UUID);
|
||||||
|
hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId);
|
||||||
|
|
||||||
|
if (m_scene.Permissions.PropagatePermissions())
|
||||||
|
{
|
||||||
|
foreach (SceneObjectPart child in hostPart.ParentGroup.Parts)
|
||||||
|
{
|
||||||
|
child.Inventory.ChangeInventoryOwner(target.UUID);
|
||||||
|
child.TriggerScriptChangedEvent(Changed.OWNER);
|
||||||
|
child.ApplyNextOwnerPermissions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hostPart.ParentGroup.RootPart.ObjectSaleType = 0;
|
||||||
|
hostPart.ParentGroup.RootPart.SalePrice = 10;
|
||||||
|
|
||||||
|
hostPart.ParentGroup.HasGroupChanged = true;
|
||||||
|
hostPart.ParentGroup.RootPart.SendPropertiesToClient(target.ControllingClient);
|
||||||
|
hostPart.ParentGroup.RootPart.ScheduleFullUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, true, true);
|
attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,16 +177,17 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
ScenePresence sp;
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
if (scene.TryGetScenePresence(agentID, out sp))
|
||||||
|
{
|
||||||
|
m_log.DebugFormat(
|
||||||
|
"[NPC MODULE]: Moving {0} to {1} in {2}, noFly {3}, landAtTarget {4}",
|
||||||
|
sp.Name, pos, scene.RegionInfo.RegionName, noFly, landAtTarget);
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
sp.MoveToTarget(pos, noFly, landAtTarget);
|
||||||
// "[NPC MODULE]: Moving {0} to {1} in {2}, noFly {3}, landAtTarget {4}",
|
sp.SetAlwaysRun = running;
|
||||||
// sp.Name, pos, scene.RegionInfo.RegionName, noFly, landAtTarget);
|
|
||||||
|
return true;
|
||||||
sp.MoveToTarget(pos, noFly, landAtTarget);
|
}
|
||||||
sp.SetAlwaysRun = running;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,12 +201,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
ScenePresence sp;
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
if (scene.TryGetScenePresence(agentID, out sp))
|
||||||
|
{
|
||||||
|
sp.Velocity = Vector3.Zero;
|
||||||
|
sp.ResetMoveToTarget();
|
||||||
|
|
||||||
sp.Velocity = Vector3.Zero;
|
return true;
|
||||||
sp.ResetMoveToTarget();
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,9 +225,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
|
||||||
|
|
||||||
m_avatars[agentID].Say(channel, text);
|
m_avatars[agentID].Say(channel, text);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -241,9 +240,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
|
||||||
|
|
||||||
m_avatars[agentID].Shout(channel, text);
|
m_avatars[agentID].Shout(channel, text);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -260,11 +256,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
ScenePresence sp;
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
if (scene.TryGetScenePresence(agentID, out sp))
|
||||||
sp.HandleAgentRequestSit(m_avatars[agentID], agentID, partID, Vector3.Zero);
|
{
|
||||||
// sp.HandleAgentSit(m_avatars[agentID], agentID);
|
sp.HandleAgentRequestSit(m_avatars[agentID], agentID, partID, Vector3.Zero);
|
||||||
|
// sp.HandleAgentSit(m_avatars[agentID], agentID);
|
||||||
return true;
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,9 +275,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
|
||||||
|
|
||||||
m_avatars[agentID].Whisper(channel, text);
|
m_avatars[agentID].Whisper(channel, text);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -296,10 +291,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
ScenePresence sp;
|
ScenePresence sp;
|
||||||
scene.TryGetScenePresence(agentID, out sp);
|
if (scene.TryGetScenePresence(agentID, out sp))
|
||||||
sp.StandUp();
|
{
|
||||||
|
sp.StandUp();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,6 +309,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
if (m_avatars.ContainsKey(agentID))
|
if (m_avatars.ContainsKey(agentID))
|
||||||
return m_avatars[agentID].Touch(objectID);
|
return m_avatars[agentID].Touch(objectID);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -322,9 +320,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
NPCAvatar av;
|
NPCAvatar av;
|
||||||
if (m_avatars.TryGetValue(agentID, out av))
|
if (m_avatars.TryGetValue(agentID, out av))
|
||||||
{
|
|
||||||
return av.OwnerID;
|
return av.OwnerID;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return UUID.Zero;
|
return UUID.Zero;
|
||||||
|
|
|
@ -2466,8 +2466,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (!npcModule.CheckPermissions(npcId, m_host.OwnerID))
|
if (!npcModule.CheckPermissions(npcId, m_host.OwnerID))
|
||||||
return new LSL_Vector(0, 0, 0);
|
return new LSL_Vector(0, 0, 0);
|
||||||
|
|
||||||
Vector3 pos = World.GetScenePresence(npcId).AbsolutePosition;
|
ScenePresence sp = World.GetScenePresence(npcId);
|
||||||
return new LSL_Vector(pos.X, pos.Y, pos.Z);
|
|
||||||
|
if (sp != null)
|
||||||
|
{
|
||||||
|
Vector3 pos = sp.AbsolutePosition;
|
||||||
|
return new LSL_Vector(pos.X, pos.Y, pos.Z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new LSL_Vector(0, 0, 0);
|
return new LSL_Vector(0, 0, 0);
|
||||||
|
@ -2535,9 +2540,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return new LSL_Rotation(Quaternion.Identity.X, Quaternion.Identity.Y, Quaternion.Identity.Z, Quaternion.Identity.W);
|
return new LSL_Rotation(Quaternion.Identity.X, Quaternion.Identity.Y, Quaternion.Identity.Z, Quaternion.Identity.W);
|
||||||
|
|
||||||
ScenePresence sp = World.GetScenePresence(npcId);
|
ScenePresence sp = World.GetScenePresence(npcId);
|
||||||
Quaternion rot = sp.Rotation;
|
|
||||||
|
|
||||||
return new LSL_Rotation(rot.X, rot.Y, rot.Z, rot.W);
|
if (sp != null)
|
||||||
|
{
|
||||||
|
Quaternion rot = sp.Rotation;
|
||||||
|
return new LSL_Rotation(rot.X, rot.Y, rot.Z, rot.W);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new LSL_Rotation(Quaternion.Identity.X, Quaternion.Identity.Y, Quaternion.Identity.Z, Quaternion.Identity.W);
|
return new LSL_Rotation(Quaternion.Identity.X, Quaternion.Identity.Y, Quaternion.Identity.Z, Quaternion.Identity.W);
|
||||||
|
@ -2559,7 +2567,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScenePresence sp = World.GetScenePresence(npcId);
|
ScenePresence sp = World.GetScenePresence(npcId);
|
||||||
sp.Rotation = LSL_Api.Rot2Quaternion(rotation);
|
|
||||||
|
if (sp != null)
|
||||||
|
sp.Rotation = LSL_Api.Rot2Quaternion(rotation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2737,6 +2747,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
CheckThreatLevel(ThreatLevel.High, "osNpcTouch");
|
CheckThreatLevel(ThreatLevel.High, "osNpcTouch");
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
int linkNum = link_num.value;
|
int linkNum = link_num.value;
|
||||||
if (module != null || (linkNum < 0 && linkNum != ScriptBaseClass.LINK_THIS))
|
if (module != null || (linkNum < 0 && linkNum != ScriptBaseClass.LINK_THIS))
|
||||||
|
@ -2744,12 +2755,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
UUID npcId;
|
UUID npcId;
|
||||||
if (!UUID.TryParse(npcLSL_Key, out npcId) || !module.CheckPermissions(npcId, m_host.OwnerID))
|
if (!UUID.TryParse(npcLSL_Key, out npcId) || !module.CheckPermissions(npcId, m_host.OwnerID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SceneObjectPart part = null;
|
SceneObjectPart part = null;
|
||||||
UUID objectId;
|
UUID objectId;
|
||||||
if (UUID.TryParse(LSL_String.ToString(object_key), out objectId))
|
if (UUID.TryParse(LSL_String.ToString(object_key), out objectId))
|
||||||
part = World.GetSceneObjectPart(objectId);
|
part = World.GetSceneObjectPart(objectId);
|
||||||
|
|
||||||
if (part == null)
|
if (part == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (linkNum != ScriptBaseClass.LINK_THIS)
|
if (linkNum != ScriptBaseClass.LINK_THIS)
|
||||||
{
|
{
|
||||||
if (linkNum == 0 || linkNum == ScriptBaseClass.LINK_ROOT)
|
if (linkNum == 0 || linkNum == ScriptBaseClass.LINK_ROOT)
|
||||||
|
@ -2764,6 +2778,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.Touch(npcId, part.UUID);
|
module.Touch(npcId, part.UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue