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); }
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); }
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); }
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; } }
/// <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); }
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); } }
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); }
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); }
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); } }
// 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); }
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); }
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); }
/// <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); }