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