예제 #1
0
        private void onChat(object sender, OSChatMessage chat)
        {
            lock (m_dialogs)
            {
                DialogData data = m_dialogs.Find(x => x.ListenerID == chat.Channel && x.UserID == chat.Sender.AgentId);

                if (data != null)
                {
                    if (chat.Message != "<--" && chat.Message != "-->" && chat.Message != "<- EXIT ->" && chat.Message != " " && chat.Message != String.Empty)
                    {
                        m_scriptEngine.PostScriptEvent(data.ScriptID, "listen", new Object[] { data.ListenerID, chat.From.ToString(), data.UserID.ToString(), chat.Message });
                        return;
                    }

                    if (chat.Message == " " || chat.Message == String.Empty)
                    {
                        return;
                    }

                    if (chat.Message == "<- EXIT ->")
                    {
                        m_dialogs.Remove(data);
                        return;
                    }

                    if (chat.Message == "-->")
                    {
                        data.CurrentPage++;
                    }

                    if (chat.Message == "<--")
                    {
                        data.CurrentPage--;
                    }

                    m_dialogModule.SendDialogToUser(data.UserID, data.ObjectName, data.HostID, data.OwnerID, data.getMessage(), new UUID("00000000-0000-2222-3333-100000001000"), data.ListenerID, data.getPageButtons(data.CurrentPage));
                }
            }
        }
예제 #2
0
        public int osEasyDialog(UUID hostID, UUID scriptID, String user, String message, Object[] labels)
        {
            List <String> buttons = new List <String>();

            if (UUID.TryParse(user, out UUID target))
            {
                if (labels.Length == 0)
                {
                    throw new ScriptException("Labels must dont be empty!");
                }

                if (Encoding.UTF8.GetByteCount(message) > 512)
                {
                    throw new ScriptException("Message longer than 512 bytes.");
                }

                lock (m_dialogs)
                {
                    SceneObjectPart part = base.World.GetSceneObjectPart(hostID);

                    foreach (Object o in labels)
                    {
                        String text = o.ToString().Trim();

                        if (text == String.Empty)
                        {
                            text = " ";
                        }

                        if (text.Length >= 24)
                        {
                            text = text.Substring(0, 24);
                        }

                        buttons.Add(text);
                    }

                    DialogData dialog = new DialogData(hostID, scriptID, target, part.OwnerID, part.Name, message, buttons.ToArray());
                    m_dialogModule.SendDialogToUser(dialog.UserID, dialog.ObjectName, dialog.HostID, dialog.OwnerID, dialog.getMessage(), new UUID("00000000-0000-2222-3333-100000001000"), dialog.ListenerID, dialog.getPageButtons(dialog.CurrentPage));
                    m_dialogs.Add(dialog);
                    return(dialog.ListenerID);
                }
            }
            else
            {
                throw new ScriptException("User must be a valid key.");
            }
        }