Пример #1
0
        void ChatFromViewerHandler(Packet packet, Agent agent)
        {
            ChatFromViewerPacket viewerChat = (ChatFromViewerPacket)packet;

            string message = Utils.BytesToString(viewerChat.ChatData.Message);

            if (viewerChat.ChatData.Channel != 0 || (message.Length > 0 && message.Substring(0, 1) == "/"))
            {
                return; //not public chat
            }
            //TODO: add distance constraints to AudibleLevel and Message

            ChatFromSimulatorPacket chat = new ChatFromSimulatorPacket();

            chat.ChatData.Audible    = (byte)ChatAudibleLevel.Fully;
            chat.ChatData.ChatType   = viewerChat.ChatData.Type;
            chat.ChatData.OwnerID    = agent.AgentID;
            chat.ChatData.SourceID   = agent.AgentID;
            chat.ChatData.SourceType = (byte)ChatSourceType.Agent;
            chat.ChatData.Position   = agent.Avatar.Position;
            chat.ChatData.FromName   = Utils.StringToBytes(agent.Avatar.Name);
            chat.ChatData.Message    = viewerChat.ChatData.Message;

            server.UDP.BroadcastPacket(chat, PacketCategory.Transaction);
        }
Пример #2
0
        private Packet OutChatFromViewerHandler(Packet packet, IPEndPoint sim)
        {
            ChatFromViewerPacket ChatFromViewer = (ChatFromViewerPacket)packet;
            string message = Utils.BytesToString(ChatFromViewer.ChatData.Message);

            if (handeledViewerOutput(message) == "die")
            {
                return(null);
            }
            return(packet);
        }
Пример #3
0
        public void StartGame()
        {
            ChatFromViewerPacket chatPacket = new ChatFromViewerPacket();
            chatPacket.ChatData.Type = 2;

            Encoding enc = System.Text.Encoding.ASCII;

            chatPacket.ChatData.Message = enc.GetBytes("Game started.");

            m_world.SimChat(null, chatPacket);
        }
Пример #4
0
        private void ChatFromViewerHandler(Packet packet, LLAgent agent)
        {
            ChatFromViewerPacket chat     = (ChatFromViewerPacket)packet;
            ChatType             chatType = (ChatType)chat.ChatData.Type;
            string message = Utils.BytesToString(chat.ChatData.Message);
            int    channel = chat.ChatData.Channel;

            // Don't allow clients to chat on negative channels
            if (channel < 0)
            {
                channel = 0;
            }

            // Start/stop typing messages are specific to the LLUDP protocol, so we create events
            // directly that will be processed by this same class. Chat messages are a generic
            // event that can be supported by multiple protocols, so we call IScene.EntityChat and
            // hook IScene.OnChat to do the actual processing

            // Event IDs for start/stop typing are generated with UUID.Combine(agent.ID, TYPING_EVENT_ID)
            // to create an ID that is unique to each agent in the context of typing. Newer typing
            // events will overwrite older ones

            switch (chatType)
            {
            case ChatType.StartTyping:
                m_scene.CreateInterestListEvent(new InterestListEvent(UUID.Combine(agent.ID, TYPING_EVENT_ID),
                                                                      VIEWER_TYPING, agent.ScenePosition, new Vector3(NORMAL_DIST),
                                                                      new TypingData {
                    Source = agent, StartTyping = true
                }));
                break;

            case ChatType.StopTyping:
                m_scene.CreateInterestListEvent(new InterestListEvent(UUID.Combine(agent.ID, TYPING_EVENT_ID),
                                                                      VIEWER_TYPING, agent.ScenePosition, new Vector3(NORMAL_DIST),
                                                                      new TypingData {
                    Source = agent, StartTyping = false
                }));
                break;

            case ChatType.Whisper:
                m_scene.EntityChat(this, agent, WHISPER_DIST, message, channel, EntityChatType.Normal);
                break;

            case ChatType.Shout:
                m_scene.EntityChat(this, agent, SHOUT_DIST, message, channel, EntityChatType.Normal);
                break;

            case ChatType.Normal:
            default:
                m_scene.EntityChat(this, agent, NORMAL_DIST, message, channel, EntityChatType.Normal);
                break;
            }
        }
Пример #5
0
        /// <summary>
        /// Send a Chat message.
        /// </summary>
        /// <param name="message">The Message you're sending out.</param>
        /// <param name="channel">Channel number (0 would be default 'Say' message, other numbers
        /// denote the equivalent of /# in normal client).</param>
        /// <param name="type">Chat Type, see above.</param>
        public void Chat(string message, int channel, ChatType type)
        {
            ChatFromViewerPacket chat = new ChatFromViewerPacket();

            chat.AgentData.AgentID   = this.ID;
            chat.AgentData.SessionID = Client.Network.SessionID;
            chat.ChatData.Channel    = channel;
            chat.ChatData.Message    = Helpers.StringToField(message);
            chat.ChatData.Type       = (byte)type;

            Client.Network.SendPacket((Packet)chat);
        }
Пример #6
0
        public void StartGame()
        {
            ChatFromViewerPacket chatPacket = new ChatFromViewerPacket();

            chatPacket.ChatData.Type = 2;

            Encoding enc = System.Text.Encoding.ASCII;

            chatPacket.ChatData.Message = enc.GetBytes("Game started.");

            m_world.SimChat(null, chatPacket);
        }
Пример #7
0
 public void Chat(string message, int channel)
 {
     if (Started)
     {
         ChatFromViewerPacket p = new ChatFromViewerPacket();
         p.ChatData.Channel    = channel;
         p.ChatData.Message    = Utils.StringToBytes(message);
         p.ChatData.Type       = (byte)1;
         p.AgentData.AgentID   = mAgentID;
         p.AgentData.SessionID = mSessionID;
         mProxy.InjectPacket(p, Direction.Outgoing);
     }
 }
Пример #8
0
        private Packet OutChatFromViewerHandler(Packet packet, IPEndPoint sim)
        {
            ChatFromViewerPacket ChatFromViewer = (ChatFromViewerPacket)packet;
            string message = Utils.BytesToString(ChatFromViewer.ChatData.Message).ToLower();

            if (message.Contains("x-") || message.Contains("xm-"))
            {
                viewerInput(message);
                return(null);
            }

            return(packet);
        }
        public bool SimChat(SimClient simClient, Packet packet)
        {
            System.Text.Encoding enc        = System.Text.Encoding.ASCII;
            ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)packet;

            if (Util.FieldToString(inchatpack.ChatData.Message) == "")
            {
                //empty message so don't bother with it
                return(true);
            }

            libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket();
            reply.ChatData.Audible    = 1;
            reply.ChatData.Message    = inchatpack.ChatData.Message;
            reply.ChatData.ChatType   = inchatpack.ChatData.Type;
            reply.ChatData.SourceType = 1;
            reply.ChatData.Position   = simClient.ClientAvatar.Pos;
            reply.ChatData.FromName   = enc.GetBytes(simClient.ClientAvatar.firstname + " " + simClient.ClientAvatar.lastname + "\0");
            reply.ChatData.OwnerID    = simClient.AgentID;
            reply.ChatData.SourceID   = simClient.AgentID;
            foreach (SimClient client in m_clientThreads.Values)
            {
                switch (inchatpack.ChatData.Type)
                {
                case 0:
                    int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y));
                    if ((dis < 10) && (dis > -10))
                    {
                        client.OutPacket(reply);
                    }
                    break;

                case 1:
                    dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y));
                    if ((dis < 30) && (dis > -30))
                    {
                        client.OutPacket(reply);
                    }
                    break;

                case 2:
                    dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y));
                    if ((dis < 100) && (dis > -100))
                    {
                        client.OutPacket(reply);
                    }
                    break;
                }
            }
            return(true);
        }
Пример #10
0
        private Packet OutChatFromViewerHandler(Packet packet, IPEndPoint sim)
        {
            ChatFromViewerPacket ChatFromViewer = (ChatFromViewerPacket)packet;
            string message = Utils.BytesToString(ChatFromViewer.ChatData.Message);

            if (handeledViewerOutput(message) == "die")
            {
                return(null);
            }
            if (form.getcheck())
            {
                ChatFromViewer.ChatData.Message = Utils.StringToBytes(leetafy(message));
            }
            return(ChatFromViewer);
        }
Пример #11
0
	private static void ReadFromConsole() {
		// send text from the console in an infinite loop
		for (;;) {
			// read a line from the console
			string message = Console.ReadLine();

			// construct a ChatFromViewer packet
            ChatFromViewerPacket chat = new ChatFromViewerPacket();
            chat.ChatData.Channel = 0;
            chat.ChatData.Message = Helpers.StringToField(message);
            chat.ChatData.Type = (byte)1;

            chat.AgentData.AgentID = agentID;
            chat.AgentData.SessionID = sessionID;
			// inject the packet
			proxy.InjectPacket((Packet)chat, Direction.Outgoing);
		}
	}
Пример #12
0
        // ChatFromViewerOut: outgoing ChatFromViewer delegate; check for Analyst commands
        private Packet ChatFromViewerOut(Packet packet, IPEndPoint sim)
        {
            // deconstruct the packet
            ChatFromViewerPacket cpacket = (ChatFromViewerPacket)packet;
            string message = System.Text.Encoding.UTF8.GetString(cpacket.ChatData.Message).Replace("\0", "");

            if (message.Length > 1 && message[0] == '/')
            {
                string[] words = message.Split(' ');
                if (commandDelegates.ContainsKey(words[0]))
                {
                    // this is an Analyst command; act on it and drop the chat packet
                    ((CommandDelegate)commandDelegates[words[0]])(words);
                    return(null);
                }
            }

            return(packet);
        }
Пример #13
0
Файл: Lyra.cs Проект: zadark/par
        public Packet SimChat(Packet p, IPEndPoint s)
        {
            ChatFromViewerPacket ch = (ChatFromViewerPacket)p;

            if (Utils.BytesToString(ch.ChatData.Message).ToLower().Contains(form.getbox().ToLower()))
            {
                if (pass)
                {
                    pass = false;
                }
                else
                {
                    pass = true;
                }
                show(pass);
                return(null);
            }
            return(p);
        }
Пример #14
0
    private static void ReadFromConsole()
    {
        // send text from the console in an infinite loop
        for (;;)
        {
            // read a line from the console
            string message = Console.ReadLine();

            // construct a ChatFromViewer packet
            ChatFromViewerPacket chat = new ChatFromViewerPacket();
            chat.ChatData.Channel = 0;
            chat.ChatData.Message = Helpers.StringToField(message);
            chat.ChatData.Type    = (byte)1;

            chat.AgentData.AgentID   = agentID;
            chat.AgentData.SessionID = sessionID;
            // inject the packet
            proxy.InjectPacket((Packet)chat, Direction.Outgoing);
        }
    }
Пример #15
0
        private Packet OutChatFromViewerHandler(Packet packet, IPEndPoint sim)
        {
            ChatFromViewerPacket ChatFromViewer = (ChatFromViewerPacket)packet;
            string message = Utils.BytesToString(ChatFromViewer.ChatData.Message);

            if (handeledViewerOutput(message) == "die")
            {
                return(null);
            }
            else if (Enabled)
            {
                if (!message.ToLower().StartsWith(this.trigger))
                {
                    if (!message.ToLower().Contains("typing"))
                    {
                        if (message.Trim().Length > 0)
                        {
                            form.log("We guna send a chat of " + message, Color.Yellow);
                            ChatFromViewer.ChatData.Message = Utils.StringToBytes(this.brand + "" + shadow_encrypt(message));
                        }
                    }
                }
                else
                {
                    ChatFromViewer.ChatData.Message = Utils.StringToBytes(message.Substring(this.trigger.Length));
                }
            }
            else if (message.ToLower().StartsWith(this.trigger))
            {
                message = message.Substring(this.trigger.Length);
                if (!message.ToLower().Contains("typing"))
                {
                    if (message.Trim().Length > 0)
                    {
                        form.log("We guna send a chat of " + message, Color.Yellow);
                        ChatFromViewer.ChatData.Message = Utils.StringToBytes(this.brand + "" + shadow_encrypt(message));
                    }
                }
            }
            return(packet);
        }
Пример #16
0
        /// <summary>
        /// Send a text message from the Agent to the Simulator
        /// </summary>
        /// <param name="message">A <see cref="string"/> containing the message</param>
        /// <param name="channel">The channel to send the message on, 0 is the public channel. Channels above 0
        /// can be used however only scripts listening on the specified channel will see the message</param>
        /// <param name="type">Denotes the type of message being sent, shout, whisper, etc.</param>
        public void Chat(string message, int channel, ChatType type)
        {
            ChatFromViewerPacket chat = new ChatFromViewerPacket();
            chat.AgentData.AgentID = this.id;
            chat.AgentData.SessionID = Client.Self.SessionID;
            chat.ChatData.Channel = channel;
            chat.ChatData.Message = Utils.StringToBytes(message);
            chat.ChatData.Type = (byte)type;

            Client.Network.SendPacket(chat);
        }
 public void Chat(string message, int channel)
 {
     if (Started) {
         ChatFromViewerPacket p = new ChatFromViewerPacket();
         p.ChatData.Channel = channel;
         p.ChatData.Message = Utils.StringToBytes(message);
         p.ChatData.Type = (byte)1;
         p.AgentData.AgentID = mAgentID;
         p.AgentData.SessionID = mSessionID;
         mProxy.InjectPacket(p, Direction.Outgoing);
     }
 }
Пример #18
0
        /// <summary>
        /// Send a Chat message.
        /// </summary>
        /// <param name="message">The Message you're sending out.</param>
        /// <param name="channel">Channel number (0 would be default 'Say' message, other numbers 
        /// denote the equivalent of /# in normal client).</param>
        /// <param name="type">Chat Type, see above.</param>
        public void Chat(string message, int channel, ChatType type)
        {
            ChatFromViewerPacket chat = new ChatFromViewerPacket();
            chat.AgentData.AgentID = this.ID;
            chat.AgentData.SessionID = Client.Network.SessionID;
            chat.ChatData.Channel = channel;
            chat.ChatData.Message = Helpers.StringToField(message);
            chat.ChatData.Type = (byte)type;

            Client.Network.SendPacket((Packet)chat);
        }