public virtual void Message(byte id, string message) { // Message should start with server color if no initial color if (message.Length > 0 && !(message[0] == '&' || message[0] == '%')) { message = Server.Config.DefaultColor + message; } message = Chat.Format(message, this); OnMessageRecievedEvent.Call(this, message); if (cancelmessage) { cancelmessage = false; return; } try { foreach (string raw in LineWrapper.Wordwrap(message)) { string line = raw; if (!Supports(CpeExt.EmoteFix) && LineEndsInEmote(line)) { line += '\''; } Send(Packet.Message(line, (CpeMessageType)id, hasCP437)); } } catch (Exception e) { Logger.LogError(e); } }
public virtual void Message(byte id, string message) { // Message should start with server color if no initial color if (message.Length > 0 && !(message[0] == '&' || message[0] == '%')) { message = Server.Config.DefaultColor + message; } message = Chat.Format(message, this); OnMessageRecievedEvent.Call(this, message); if (cancelmessage) { cancelmessage = false; return; } try { List <string> lines = LineWrapper.Wordwrap(message); byte[] packet = new byte[lines.Count * 66]; for (int i = 0; i < lines.Count; i++) { string line = lines[i]; if (!Supports(CpeExt.EmoteFix) && LineEndsInEmote(line)) { line += '\''; } Packet.WriteMessage(line, id, hasCP437, packet, i * 66); } // So multi-line messages from multiple threads don't interleave Send(packet); } catch (Exception e) { Logger.LogError(e); } }
public void SendMessage(byte id, string message, bool colorParse = true) { message = Chat.Format(message, this, 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 raw in LineWrapper.Wordwrap(message)) { string line = raw; if (!HasCpeExt(CpeExt.EmoteFix) && line.TrimEnd(' ')[line.TrimEnd(' ').Length - 1] < '!') { line += '\''; } byte[] buffer = new byte[66]; buffer[0] = Opcode.Message; buffer[1] = (byte)id; NetUtils.Write(line, buffer, 2, HasCpeExt(CpeExt.FullCP437)); Send(buffer); } } catch (Exception e) { message = "&f" + message; totalTries++; if (totalTries < 10) { goto retryTag; } else { Server.ErrorLog(e); } } }
public virtual void Message(byte type, string message) { // Message should start with server color if no initial color if (message.Length > 0 && !(message[0] == '&' || message[0] == '%')) { message = Server.Config.DefaultColor + message; } message = Chat.Format(message, this); OnMessageRecievedEvent.Call(this, message); if (cancelmessage) { cancelmessage = false; return; } try { SendLines(LineWrapper.Wordwrap(message), type); } catch (Exception e) { Logger.LogError(e); } }
public virtual void Message(byte type, string message) { // Message should start with server color if no initial color if (message.Length > 0 && !(message[0] == '&' || message[0] == '%')) { message = "&S" + message; } message = Chat.Format(message, this); bool cancel = false; OnMessageRecievedEvent.Call(this, ref message, ref cancel); if (cancel) { return; } try { message = LineWrapper.CleanupColors(message, this); SendLines(LineWrapper.Wordwrap(message, hasEmoteFix), type); } catch (Exception e) { Logger.LogError(e); } }