diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index bb0ba3d..c1a700a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -2067,10 +2067,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2067 | return retVal; | 2067 | return retVal; |
2068 | } | 2068 | } |
2069 | 2069 | ||
2070 | public LSL_Key osNpcCreateOwned(string firstname, string lastname, LSL_Vector position, string notecard) | ||
2071 | { | ||
2072 | CheckThreatLevel(ThreatLevel.High, "osNpcCreateOwned"); | ||
2073 | return NpcCreate(firstname, lastname, position, notecard, true); | ||
2074 | } | ||
2075 | |||
2070 | public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, string notecard) | 2076 | public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, string notecard) |
2071 | { | 2077 | { |
2072 | CheckThreatLevel(ThreatLevel.High, "osNpcCreate"); | 2078 | CheckThreatLevel(ThreatLevel.High, "osNpcCreated"); |
2079 | return NpcCreate(firstname, lastname, position, notecard, false); | ||
2080 | } | ||
2073 | 2081 | ||
2082 | private LSL_Key NpcCreate(string firstname, string lastname, LSL_Vector position, string notecard, bool owned) | ||
2083 | { | ||
2074 | INPCModule module = World.RequestModuleInterface<INPCModule>(); | 2084 | INPCModule module = World.RequestModuleInterface<INPCModule>(); |
2075 | if (module != null) | 2085 | if (module != null) |
2076 | { | 2086 | { |
@@ -2099,11 +2109,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2099 | if (appearance == null) | 2109 | if (appearance == null) |
2100 | return new LSL_Key(UUID.Zero.ToString()); | 2110 | return new LSL_Key(UUID.Zero.ToString()); |
2101 | 2111 | ||
2112 | UUID ownerID = UUID.Zero; | ||
2113 | if (owned) | ||
2114 | ownerID = m_host.OwnerID; | ||
2102 | UUID x = module.CreateNPC(firstname, | 2115 | UUID x = module.CreateNPC(firstname, |
2103 | lastname, | 2116 | lastname, |
2104 | new Vector3((float) position.x, (float) position.y, (float) position.z), | 2117 | new Vector3((float) position.x, (float) position.y, (float) position.z), |
2105 | World, | 2118 | ownerID, |
2106 | appearance); | 2119 | World,appearance); |
2107 | 2120 | ||
2108 | return new LSL_Key(x.ToString()); | 2121 | return new LSL_Key(x.ToString()); |
2109 | } | 2122 | } |
@@ -2132,6 +2145,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2132 | if (!npcModule.IsNPC(npcId, m_host.ParentGroup.Scene)) | 2145 | if (!npcModule.IsNPC(npcId, m_host.ParentGroup.Scene)) |
2133 | return new LSL_Key(UUID.Zero.ToString()); | 2146 | return new LSL_Key(UUID.Zero.ToString()); |
2134 | 2147 | ||
2148 | UUID ownerID = npcModule.GetOwner(npcId); | ||
2149 | if (ownerID != UUID.Zero && ownerID != m_host.OwnerID) | ||
2150 | return new LSL_Key(UUID.Zero.ToString()); | ||
2151 | |||
2135 | return SaveAppearanceToNotecard(npcId, notecard); | 2152 | return SaveAppearanceToNotecard(npcId, notecard); |
2136 | } | 2153 | } |
2137 | 2154 | ||
@@ -2311,7 +2328,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2311 | INPCModule module = World.RequestModuleInterface<INPCModule>(); | 2328 | INPCModule module = World.RequestModuleInterface<INPCModule>(); |
2312 | if (module != null) | 2329 | if (module != null) |
2313 | { | 2330 | { |
2314 | module.DeleteNPC(new UUID(npc.m_string), World); | 2331 | module.DeleteNPC(new UUID(npc.m_string), m_host.OwnerID, World); |
2315 | } | 2332 | } |
2316 | } | 2333 | } |
2317 | 2334 | ||