diff options
4 files changed, 56 insertions, 20 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/INPCModule.cs b/OpenSim/Region/Framework/Interfaces/INPCModule.cs index c50e734..b428c40 100644 --- a/OpenSim/Region/Framework/Interfaces/INPCModule.cs +++ b/OpenSim/Region/Framework/Interfaces/INPCModule.cs | |||
@@ -134,4 +134,4 @@ namespace OpenSim.Region.Framework.Interfaces | |||
134 | /// <returns>UUID of owner if the NPC exists, UUID.Zero if there was no such agent, the agent is unowned or the agent was not an NPC</returns> | 134 | /// <returns>UUID of owner if the NPC exists, UUID.Zero if there was no such agent, the agent is unowned or the agent was not an NPC</returns> |
135 | UUID GetOwner(UUID agentID); | 135 | UUID GetOwner(UUID agentID); |
136 | } | 136 | } |
137 | } | 137 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 7792ab5..ba96ad8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -2313,6 +2313,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2313 | } | 2313 | } |
2314 | } | 2314 | } |
2315 | 2315 | ||
2316 | public LSL_Key osNpcGetOwner(LSL_Key npc) | ||
2317 | { | ||
2318 | CheckThreatLevel(ThreatLevel.None, "osNpcGetOwner"); | ||
2319 | |||
2320 | INPCModule npcModule = World.RequestModuleInterface<INPCModule>(); | ||
2321 | if (npcModule != null) | ||
2322 | { | ||
2323 | UUID npcId; | ||
2324 | if (UUID.TryParse(npc.m_string, out npcId)) | ||
2325 | { | ||
2326 | UUID owner = npcModule.GetOwner(npcId); | ||
2327 | if (owner != UUID.Zero) | ||
2328 | return new LSL_Key(owner.ToString()); | ||
2329 | else | ||
2330 | return npc; | ||
2331 | } | ||
2332 | } | ||
2333 | |||
2334 | return new LSL_Key(UUID.Zero.ToString()); | ||
2335 | } | ||
2336 | |||
2316 | public LSL_Vector osNpcGetPos(LSL_Key npc) | 2337 | public LSL_Vector osNpcGetPos(LSL_Key npc) |
2317 | { | 2338 | { |
2318 | CheckThreatLevel(ThreatLevel.High, "osNpcGetPos"); | 2339 | CheckThreatLevel(ThreatLevel.High, "osNpcGetPos"); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 0f8cbdc..ee48ec4 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -173,25 +173,35 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
173 | 173 | ||
174 | LSL_List osGetLinkPrimitiveParams(int linknumber, LSL_List rules); | 174 | LSL_List osGetLinkPrimitiveParams(int linknumber, LSL_List rules); |
175 | 175 | ||
176 | key osNpcCreate(string user, string name, vector position, string notecard); | 176 | key osNpcCreate(string user, string name, vector position, string notecard); |
177 | key osNpcCreate(string user, string name, vector position, string notecard, int options); | 177 | key osNpcCreate(string user, string name, vector position, string notecard, int options); |
178 | LSL_Key osNpcSaveAppearance(key npc, string notecard); | 178 | LSL_Key osNpcSaveAppearance(key npc, string notecard); |
179 | void osNpcLoadAppearance(key npc, string notecard); | 179 | void osNpcLoadAppearance(key npc, string notecard); |
180 | vector osNpcGetPos(key npc); | 180 | vector osNpcGetPos(key npc); |
181 | void osNpcMoveTo(key npc, vector position); | 181 | void osNpcMoveTo(key npc, vector position); |
182 | void osNpcMoveToTarget(key npc, vector target, int options); | 182 | void osNpcMoveToTarget(key npc, vector target, int options); |
183 | rotation osNpcGetRot(key npc); | 183 | |
184 | void osNpcSetRot(LSL_Key npc, rotation rot); | 184 | /// <summary> |
185 | void osNpcStopMoveToTarget(LSL_Key npc); | 185 | /// Get the owner of the NPC |
186 | void osNpcSay(key npc, string message); | 186 | /// </summary> |
187 | void osNpcSit(key npc, key target, int options); | 187 | /// <param name="npc"></param> |
188 | void osNpcStand(LSL_Key npc); | 188 | /// <returns> |
189 | void osNpcRemove(key npc); | 189 | /// The owner of the NPC for an owned NPC. The NPC's agent id for an unowned NPC. UUID.Zero if the key is not an npc. |
190 | void osNpcPlayAnimation(LSL_Key npc, string animation); | 190 | /// </returns> |
191 | void osNpcStopAnimation(LSL_Key npc, string animation); | 191 | LSL_Key osNpcGetOwner(key npc); |
192 | 192 | ||
193 | LSL_Key osOwnerSaveAppearance(string notecard); | 193 | rotation osNpcGetRot(key npc); |
194 | LSL_Key osAgentSaveAppearance(key agentId, string notecard); | 194 | void osNpcSetRot(LSL_Key npc, rotation rot); |
195 | void osNpcStopMoveToTarget(LSL_Key npc); | ||
196 | void osNpcSay(key npc, string message); | ||
197 | void osNpcSit(key npc, key target, int options); | ||
198 | void osNpcStand(LSL_Key npc); | ||
199 | void osNpcRemove(key npc); | ||
200 | void osNpcPlayAnimation(LSL_Key npc, string animation); | ||
201 | void osNpcStopAnimation(LSL_Key npc, string animation); | ||
202 | |||
203 | LSL_Key osOwnerSaveAppearance(string notecard); | ||
204 | LSL_Key osAgentSaveAppearance(key agentId, string notecard); | ||
195 | 205 | ||
196 | key osGetMapTexture(); | 206 | key osGetMapTexture(); |
197 | key osGetRegionMapTexture(string regionName); | 207 | key osGetRegionMapTexture(string regionName); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 02efecf..38a814d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -513,6 +513,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
513 | m_OSSL_Functions.osNpcLoadAppearance(npc, notecard); | 513 | m_OSSL_Functions.osNpcLoadAppearance(npc, notecard); |
514 | } | 514 | } |
515 | 515 | ||
516 | public LSL_Key osNpcGetOwner(LSL_Key npc) | ||
517 | { | ||
518 | return m_OSSL_Functions.osNpcGetOwner(npc); | ||
519 | } | ||
520 | |||
516 | public vector osNpcGetPos(LSL_Key npc) | 521 | public vector osNpcGetPos(LSL_Key npc) |
517 | { | 522 | { |
518 | return m_OSSL_Functions.osNpcGetPos(npc); | 523 | return m_OSSL_Functions.osNpcGetPos(npc); |