From a08c354a0737aa1c39e8abd1bc77446c5ace2997 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 28 Jun 2016 18:14:30 +0100 Subject: [PATCH] fix NPCs OS_NPC_OBJECT_GROUP option. group ID needs to be set during creation, before scenepresence.CompleteMovement, set tittle just after it. --- OpenSim/Region/Framework/Interfaces/INPCModule.cs | 2 +- OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | 9 +++++---- .../ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/Framework/Interfaces/INPCModule.cs b/OpenSim/Region/Framework/Interfaces/INPCModule.cs index a40f150934..14610ffe47 100644 --- a/OpenSim/Region/Framework/Interfaces/INPCModule.cs +++ b/OpenSim/Region/Framework/Interfaces/INPCModule.cs @@ -107,7 +107,7 @@ namespace OpenSim.Region.Framework.Interfaces /// failure. /// UUID CreateNPC(string firstname, string lastname, - Vector3 position, UUID agentID, UUID owner, bool senseAsAgent, Scene scene, + Vector3 position, UUID agentID, UUID owner, string groupTitle, UUID groupID, bool senseAsAgent, Scene scene, AvatarAppearance appearance); /// diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index d40fa481d9..8462661232 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs @@ -157,14 +157,14 @@ namespace OpenSim.Region.OptionalModules.World.NPC } public UUID CreateNPC(string firstname, string lastname, - Vector3 position, UUID owner, bool senseAsAgent, Scene scene, + Vector3 position, UUID owner, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { - return CreateNPC(firstname, lastname, position, UUID.Zero, owner, senseAsAgent, scene, appearance); + return CreateNPC(firstname, lastname, position, UUID.Zero, owner, "", UUID.Zero, senseAsAgent, scene, appearance); } public UUID CreateNPC(string firstname, string lastname, - Vector3 position, UUID agentID, UUID owner, bool senseAsAgent, Scene scene, + Vector3 position, UUID agentID, UUID owner, string groupTitle, UUID groupID, bool senseAsAgent, Scene scene, AvatarAppearance appearance) { NPCAvatar npcAvatar = null; @@ -222,8 +222,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC ScenePresence sp; if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) { - + npcAvatar.ActiveGroupId = groupID; sp.CompleteMovement(npcAvatar, false); + sp.Grouptitle = groupTitle; m_avatars.Add(npcAvatar.AgentId, npcAvatar); // m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 5b5c25775e..90b7494464 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -2748,7 +2748,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api UUID x = module.CreateNPC(firstname, lastname, position, + UUID.Random(), ownerID, + groupTitle, + groupID, senseAsAgent, World, appearance); @@ -2756,9 +2759,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ScenePresence sp; if (World.TryGetScenePresence(x, out sp)) { - sp.Grouptitle = groupTitle; - ((INPC)(sp.ControllingClient)).ActiveGroupId = groupID; - sp.SendAvatarDataToAllAgents(); } return new LSL_Key(x.ToString());