public static void TellAbove(this Client player, string prefix, string message) { if (player == null) { return; } //macros message = Format.ReceiverMacros(player, message); ChatMessageServer cm = ChatMessageServer.CreateText(prefix + message); cm.Position = ChatPosition.AboveActionBar; player.Queue.Queue(cm); }
public static List <ChatMessageServer> Split(string prefix, string message, ChatPosition pos) { List <ChatMessageServer> msg = new List <ChatMessageServer>(); if (prefix.Length + message.Length <= wrapLength) { msg.Add(ChatMessageServer.CreateText(prefix + message, pos)); return(msg); } //Split long messages if (prefix.Length > 57) { return(Split("", prefix + message, pos)); //Split long prefix too } int max = 57 - prefix.Length; if (max <= 30) { msg.Add(ChatMessageServer.CreateText(prefix)); prefix = ""; max = 57; } string[] parts = message.Split(' '); string m = ""; foreach (string p in parts) { //Fit if (m.Length + p.Length + (m == "" ? 0 : 1) <= max) { if (m == "") { m = p; } else { m += " " + p; } continue; } //Dont fit, push it if (m == "") { int step = max - prefix.Length; for (int n = 0; n < p.Length; n += step) { if (n + step < p.Length) { msg.Add(ChatMessageServer.CreateText(prefix + p.Substring(n, step))); } else { msg.Add(ChatMessageServer.CreateText(prefix + p.Substring(n))); } } continue; } //Send old, start a new msg.Add(ChatMessageServer.CreateText(prefix + m)); m = p; } if (m != "") { msg.Add(ChatMessageServer.CreateText(prefix + m)); } return(msg); }