diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/World')
3 files changed, 48 insertions, 25 deletions
diff --git a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs index 9c838d0..d206f69 100644 --- a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs +++ b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs | |||
@@ -838,6 +838,10 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule | |||
838 | if (module != null) | 838 | if (module != null) |
839 | module.BuyObject(remoteClient, categoryID, localID, saleType, salePrice); | 839 | module.BuyObject(remoteClient, categoryID, localID, saleType, salePrice); |
840 | } | 840 | } |
841 | |||
842 | public void MoveMoney(UUID fromAgentID, UUID toAgentID, int amount, string text) | ||
843 | { | ||
844 | } | ||
841 | } | 845 | } |
842 | 846 | ||
843 | public enum TransactionType : int | 847 | public enum TransactionType : int |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 67989ba..97db7e1 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -47,7 +47,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
47 | private readonly string m_firstname; | 47 | private readonly string m_firstname; |
48 | private readonly string m_lastname; | 48 | private readonly string m_lastname; |
49 | private readonly Vector3 m_startPos; | 49 | private readonly Vector3 m_startPos; |
50 | private readonly UUID m_uuid = UUID.Random(); | 50 | private UUID m_uuid = UUID.Random(); |
51 | private readonly Scene m_scene; | 51 | private readonly Scene m_scene; |
52 | private readonly UUID m_ownerID; | 52 | private readonly UUID m_ownerID; |
53 | 53 | ||
@@ -221,7 +221,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
221 | #pragma warning disable 67 | 221 | #pragma warning disable 67 |
222 | public event Action<IClientAPI> OnLogout; | 222 | public event Action<IClientAPI> OnLogout; |
223 | public event ObjectPermissions OnObjectPermissions; | 223 | public event ObjectPermissions OnObjectPermissions; |
224 | 224 | public event MoveItemsAndLeaveCopy OnMoveItemsAndLeaveCopy; | |
225 | public event MoneyTransferRequest OnMoneyTransferRequest; | 225 | public event MoneyTransferRequest OnMoneyTransferRequest; |
226 | public event ParcelBuy OnParcelBuy; | 226 | public event ParcelBuy OnParcelBuy; |
227 | public event Action<IClientAPI> OnConnectionClosed; | 227 | public event Action<IClientAPI> OnConnectionClosed; |
@@ -241,6 +241,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
241 | public event ObjectDrop OnObjectDrop; | 241 | public event ObjectDrop OnObjectDrop; |
242 | public event StartAnim OnStartAnim; | 242 | public event StartAnim OnStartAnim; |
243 | public event StopAnim OnStopAnim; | 243 | public event StopAnim OnStopAnim; |
244 | public event ChangeAnim OnChangeAnim; | ||
244 | public event LinkObjects OnLinkObjects; | 245 | public event LinkObjects OnLinkObjects; |
245 | public event DelinkObjects OnDelinkObjects; | 246 | public event DelinkObjects OnDelinkObjects; |
246 | public event RequestMapBlocks OnRequestMapBlocks; | 247 | public event RequestMapBlocks OnRequestMapBlocks; |
@@ -290,6 +291,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
290 | public event UpdatePrimTexture OnUpdatePrimTexture; | 291 | public event UpdatePrimTexture OnUpdatePrimTexture; |
291 | public event UpdateVector OnUpdatePrimGroupPosition; | 292 | public event UpdateVector OnUpdatePrimGroupPosition; |
292 | public event UpdateVector OnUpdatePrimSinglePosition; | 293 | public event UpdateVector OnUpdatePrimSinglePosition; |
294 | public event ClientChangeObject onClientChangeObject; | ||
293 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; | 295 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; |
294 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; | 296 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; |
295 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | 297 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; |
@@ -427,7 +429,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
427 | public event ClassifiedInfoRequest OnClassifiedInfoRequest; | 429 | public event ClassifiedInfoRequest OnClassifiedInfoRequest; |
428 | public event ClassifiedInfoUpdate OnClassifiedInfoUpdate; | 430 | public event ClassifiedInfoUpdate OnClassifiedInfoUpdate; |
429 | public event ClassifiedDelete OnClassifiedDelete; | 431 | public event ClassifiedDelete OnClassifiedDelete; |
430 | public event ClassifiedDelete OnClassifiedGodDelete; | 432 | public event ClassifiedGodDelete OnClassifiedGodDelete; |
431 | 433 | ||
432 | public event EventNotificationAddRequest OnEventNotificationAddRequest; | 434 | public event EventNotificationAddRequest OnEventNotificationAddRequest; |
433 | public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest; | 435 | public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest; |
@@ -466,6 +468,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
466 | public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; | 468 | public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; |
467 | public event SimWideDeletesDelegate OnSimWideDeletes; | 469 | public event SimWideDeletesDelegate OnSimWideDeletes; |
468 | public event SendPostcard OnSendPostcard; | 470 | public event SendPostcard OnSendPostcard; |
471 | public event ChangeInventoryItemFlags OnChangeInventoryItemFlags; | ||
469 | public event MuteListEntryUpdate OnUpdateMuteListEntry; | 472 | public event MuteListEntryUpdate OnUpdateMuteListEntry; |
470 | public event MuteListEntryRemove OnRemoveMuteListEntry; | 473 | public event MuteListEntryRemove OnRemoveMuteListEntry; |
471 | public event GodlikeMessage onGodlikeMessage; | 474 | public event GodlikeMessage onGodlikeMessage; |
@@ -493,6 +496,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
493 | public virtual UUID AgentId | 496 | public virtual UUID AgentId |
494 | { | 497 | { |
495 | get { return m_uuid; } | 498 | get { return m_uuid; } |
499 | set { m_uuid = value; } | ||
496 | } | 500 | } |
497 | 501 | ||
498 | public UUID SessionId | 502 | public UUID SessionId |
@@ -901,8 +905,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
901 | 905 | ||
902 | public void Close() | 906 | public void Close() |
903 | { | 907 | { |
904 | // Remove ourselves from the scene | 908 | Close(true); |
905 | m_scene.RemoveClient(AgentId, false); | 909 | } |
910 | |||
911 | public void Close(bool sendStop) | ||
912 | { | ||
906 | } | 913 | } |
907 | 914 | ||
908 | public void Start() | 915 | public void Start() |
@@ -1227,5 +1234,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
1227 | public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) | 1234 | public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) |
1228 | { | 1235 | { |
1229 | } | 1236 | } |
1237 | |||
1238 | public void SendPartPhysicsProprieties(ISceneEntity entity) | ||
1239 | { | ||
1240 | } | ||
1241 | |||
1230 | } | 1242 | } |
1231 | } | 1243 | } |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index 1e85fb4..b37aba3 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -144,29 +144,30 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
144 | // acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); | 144 | // acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); |
145 | // } | 145 | // } |
146 | 146 | ||
147 | lock (m_avatars) | 147 | ManualResetEvent ev = new ManualResetEvent(false); |
148 | { | ||
149 | scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); | ||
150 | scene.AddNewClient(npcAvatar, PresenceType.Npc); | ||
151 | 148 | ||
152 | ScenePresence sp; | 149 | Util.FireAndForget(delegate(object x) { |
153 | if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) | 150 | lock (m_avatars) |
154 | { | 151 | { |
155 | // m_log.DebugFormat( | 152 | scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); |
156 | // "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); | 153 | scene.AddNewClient(npcAvatar, PresenceType.Npc); |
157 | 154 | ||
158 | sp.CompleteMovement(npcAvatar, false); | 155 | ScenePresence sp; |
159 | m_avatars.Add(npcAvatar.AgentId, npcAvatar); | 156 | if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp)) |
160 | m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); | 157 | { |
161 | 158 | sp.CompleteMovement(npcAvatar, false); | |
162 | return npcAvatar.AgentId; | 159 | m_avatars.Add(npcAvatar.AgentId, npcAvatar); |
163 | } | 160 | m_log.DebugFormat("[NPC MODULE]: Created NPC {0} {1}", npcAvatar.AgentId, sp.Name); |
164 | else | 161 | } |
165 | { | ||
166 | m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); | ||
167 | return UUID.Zero; | ||
168 | } | 162 | } |
169 | } | 163 | ev.Set(); |
164 | }); | ||
165 | |||
166 | ev.WaitOne(); | ||
167 | |||
168 | // m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); | ||
169 | |||
170 | return npcAvatar.AgentId; | ||
170 | } | 171 | } |
171 | 172 | ||
172 | public bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos, bool noFly, bool landAtTarget, bool running) | 173 | public bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos, bool noFly, bool landAtTarget, bool running) |
@@ -366,9 +367,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
366 | { | 367 | { |
367 | NPCAvatar av; | 368 | NPCAvatar av; |
368 | if (m_avatars.TryGetValue(npcID, out av)) | 369 | if (m_avatars.TryGetValue(npcID, out av)) |
370 | { | ||
371 | if (npcID == callerID) | ||
372 | return true; | ||
369 | return CheckPermissions(av, callerID); | 373 | return CheckPermissions(av, callerID); |
374 | } | ||
370 | else | 375 | else |
376 | { | ||
371 | return false; | 377 | return false; |
378 | } | ||
372 | } | 379 | } |
373 | } | 380 | } |
374 | 381 | ||
@@ -380,7 +387,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
380 | /// <returns>true if they do, false if they don't.</returns> | 387 | /// <returns>true if they do, false if they don't.</returns> |
381 | private bool CheckPermissions(NPCAvatar av, UUID callerID) | 388 | private bool CheckPermissions(NPCAvatar av, UUID callerID) |
382 | { | 389 | { |
383 | return callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID; | 390 | return callerID == UUID.Zero || av.OwnerID == UUID.Zero || av.OwnerID == callerID || av.AgentId == callerID; |
384 | } | 391 | } |
385 | } | 392 | } |
386 | } | 393 | } |