public void TestScriptReset(ScriptInstance instance) { lock (instance) { instance.PostEvent(new ResetScriptEvent()); } }
private void HandleScriptDialog(ScriptDialog dialog, UUID fromSceneID) { foreach (KeyValuePair <UUID, RwLockedDictionary <UUID, Func <ScriptDialog, IScriptEvent> > > kvp in m_ScriptedDialogListeners) { ObjectPart part; ObjectPartInventoryItem item; if (CurrentScene.Primitives.TryGetValue(kvp.Key, out part)) { foreach (KeyValuePair <UUID, Func <ScriptDialog, IScriptEvent> > kvpinner in kvp.Value) { if (part.Inventory.TryGetValue(kvpinner.Key, out item)) { ScriptInstance instance = item.ScriptInstance; /* Translate listen event to mapped channel */ IScriptEvent ev = kvpinner.Value(dialog); if (ev != null) { instance?.PostEvent(ev); } } } } else { m_ScriptedDialogListeners.Remove(kvp.Key); } } }
public override void AssetTransferComplete() { base.AssetTransferComplete(); m_Transaction?.Commit(); ObjectPart part; SceneInterface scene; UGUI sellOwner; if (TryGetScene(m_SceneID, out scene) && scene.Primitives.TryGetValue(m_SellingPrimitiveID, out part)) { sellOwner = part.Owner; foreach (ObjectBuyListen lt in scene.m_ObjectBuyListeners.Values) { ObjectPartInventoryItem item; if (scene.Primitives.TryGetValue(lt.PrimitiveID, out part) && part.Inventory.TryGetValue(lt.ItemID, out item) && part.Owner.EqualsGrid(sellOwner)) { ScriptInstance script = item.ScriptInstance; script?.PostEvent(new ItemSoldEvent { Agent = m_DestinationAgent, ObjectID = m_SellingPrimitiveID, ObjectName = part.Name }); } } } }
public override bool IMSend(GridInstantMessage im) { if (im.Dialog == GridInstantMessageDialog.MessageFromAgent) { m_ScriptedIMSessions.Add(im.FromAgent.ID, im.IMSessionID); } if (im.Dialog == GridInstantMessageDialog.MessageFromAgent || im.Dialog == GridInstantMessageDialog.MessageFromObject) { foreach (KeyValuePair <UUID, RwLockedDictionary <UUID, int> > kvp in m_ScriptedChatListeners) { ObjectPart part; ObjectPartInventoryItem item; if (CurrentScene.Primitives.TryGetValue(kvp.Key, out part)) { foreach (KeyValuePair <UUID, int> kvpinner in kvp.Value) { if (part.Inventory.TryGetValue(kvpinner.Key, out item)) { ScriptInstance instance = item.ScriptInstance; /* Translate IM event to mapped channel */ instance?.PostEvent(new ListenEvent { ButtonIndex = -1, Channel = kvpinner.Value, Distance = 0, GlobalPosition = Vector3.Zero, ID = im.FromAgent.ID, Message = im.Message, Name = im.FromAgent.FullName, OriginSceneID = UUID.Zero, OwnerID = im.FromAgent.ID, SourceType = im.Dialog == GridInstantMessageDialog.MessageFromObject ? ListenEvent.ChatSourceType.Object : ListenEvent.ChatSourceType.Agent, TargetID = ID, Type = ListenEvent.ChatType.Say }); } } } else { m_ScriptedIMListeners.Remove(kvp.Key); } } } return(true); }
private void OnChatReceive(ListenEvent ev) { if (ev.ID == ID) { /* if it is this npc, ignore the chat event */ return; } foreach (KeyValuePair <UUID, RwLockedDictionary <UUID, int> > kvp in m_ScriptedChatListeners) { ObjectPart part; ObjectPartInventoryItem item; if (CurrentScene.Primitives.TryGetValue(kvp.Key, out part)) { foreach (KeyValuePair <UUID, int> kvpinner in kvp.Value) { if (part.Inventory.TryGetValue(kvpinner.Key, out item)) { ScriptInstance instance = item.ScriptInstance; /* Translate listen event to mapped channel */ instance?.PostEvent(new ListenEvent { ButtonIndex = ev.ButtonIndex, Channel = kvpinner.Value, Distance = ev.Distance, GlobalPosition = ev.GlobalPosition, ID = ev.ID, Message = ev.Message, Name = ev.Name, OriginSceneID = ev.OriginSceneID, OwnerID = ev.OwnerID, SourceType = ev.SourceType, TargetID = ev.TargetID, Type = ev.Type }); } } } else { m_ScriptedChatListeners.Remove(kvp.Key); } } }