예제 #1
0
        public void SendCpeMessage(CpeMessageType id, string message, bool colorParse = true)
        {
            if (id != CpeMessageType.Normal && !HasCpeExt(CpeExt.MessageTypes))
            {
                if (id == CpeMessageType.Announcement)
                {
                    id = CpeMessageType.Normal;
                }
                else
                {
                    return;
                }
            }
            message = ConvertMessage(message, colorParse);

            byte[] buffer = new byte[66];
            buffer[0] = Opcode.Message;
            buffer[1] = (byte)id;
            if (HasCpeExt(CpeExt.FullCP437))
            {
                NetUtils.WriteCP437(message, buffer, 2);
            }
            else
            {
                NetUtils.WriteAscii(message, buffer, 2);
            }
            SendRaw(buffer);
        }
예제 #2
0
        public void SendMessage(byte id, string message, bool colorParse = true)
        {
            message = ConvertMessage(message, colorParse);
            int totalTries = 0;

            if (MessageRecieve != null)
            {
                MessageRecieve(this, message);
            }
            if (OnMessageRecieve != null)
            {
                OnMessageRecieve(this, message);
            }
            OnMessageRecieveEvent.Call(this, message);
            if (cancelmessage)
            {
                cancelmessage = false;
                return;
            }

            retryTag : try {
                foreach (string line in Wordwrap(message))
                {
                    string newLine = line;
                    if (newLine.TrimEnd(' ')[newLine.TrimEnd(' ').Length - 1] < '!')
                    {
                        if (!HasCpeExt(CpeExt.EmoteFix))
                        {
                            newLine += '\'';
                        }
                    }

                    byte[] buffer = new byte[66];
                    buffer[0] = Opcode.Message;
                    buffer[1] = (byte)id;
                    if (HasCpeExt(CpeExt.FullCP437))
                    {
                        NetUtils.WriteCP437(newLine, buffer, 2);
                    }
                    else
                    {
                        NetUtils.WriteAscii(newLine, buffer, 2);
                    }
                    SendRaw(buffer);
                }
            } catch (Exception e) {
                message = "&f" + message;
                totalTries++;
                if (totalTries < 10)
                {
                    goto retryTag;
                }
                else
                {
                    Server.ErrorLog(e);
                }
            }
        }
예제 #3
0
        /// <summary> Sends a raw message without performing any token resolving, emoticon parsing, or color parsing. </summary>
        public void SendRawMessage(CpeMessageType id, string message)
        {
            byte[] buffer = new byte[66];
            buffer[0] = Opcode.Message;
            buffer[1] = (byte)id;

            if (HasCpeExt(CpeExt.FullCP437))
            {
                NetUtils.WriteCP437(message, buffer, 2);
            }
            else
            {
                NetUtils.WriteAscii(message, buffer, 2);
            }
            SendRaw(buffer);
        }