/// <summary> /// Used internally to write messages /// </summary> /// <param name="message"></param> /// <param name="mode"></param> public void OnMessage(string message, MessageModes mode = MessageModes.Information) { if (WriteMessage != null) { WriteMessage(message, mode); } }
private static void WriteConsole(string msg, MessageModes mode) { var consoleColor = Console.ForegroundColor; if (mode == Westwind.HtmlPackager.MessageModes.Error) { Console.ForegroundColor = ConsoleColor.Red; } else if (mode == Westwind.HtmlPackager.MessageModes.Warning) { Console.ForegroundColor = ConsoleColor.DarkYellow; } else if (mode == Westwind.HtmlPackager.MessageModes.Information) { Console.ForegroundColor = ConsoleColor.Yellow; } else if (mode == Westwind.HtmlPackager.MessageModes.Information2) { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.White; } Console.WriteLine(msg); Console.ForegroundColor = consoleColor; }
private static void WriteConsole(string msg, MessageModes mode) { var consoleColor = Console.ForegroundColor; if (mode == MessageModes.Error) { Console.ForegroundColor = ConsoleColor.Red; } else if (mode == MessageModes.Warning) { Console.ForegroundColor = ConsoleColor.DarkYellow; } else if (mode == MessageModes.Information) { Console.ForegroundColor = ConsoleColor.Yellow; } else if (mode == MessageModes.Success) { Console.ForegroundColor = ConsoleColor.Green; } Console.WriteLine(msg); Console.ForegroundColor = consoleColor; }
public void SendTalk(MessageModes mode, params object[] rest) { OutputMessage message = new OutputMessage(); message.AddU8(ClientServerOpCodes.Talk); message.AddU8((byte)mode); if (rest.Length == 1 && rest[0] is string) { message.AddString(rest[0] as string); } else if (rest.Length == 2 && rest[0] is string && rest[1] is string) { message.AddString(rest[0] as string); message.AddString(rest[1] as string); } else if (rest.Length == 2 && rest[0] is int && rest[1] is string) { int channelID = (int)rest[0]; message.AddU16((ushort)channelID); message.AddString(rest[1] as string); } WriteToOutput(message); }
public MessageMode GetMessageMode(MessageModes mode) { if (!MessageMode.s_CheckMode((int)mode)) { throw new System.ArgumentException("MessageModeSet.getMessageMode: Invalid mode: " + mode + "."); } return(m_MessageModes[(int)mode]); }
public OnscreenMessageBox(Vector3Int?position, string speaker, int speakerLevel, MessageModes mode, int messagesSize, TMPro.TextMeshProUGUI textMesh = null) { m_Position = position; Speaker = speaker; m_SpeakerLevel = speakerLevel; Mode = mode; m_Messages = new Utility.RingBuffer <OnscreenMessage>(messagesSize); m_TextMesh = textMesh; }
// [TODO] Allowment to have custom filter sets (changing the default colors of anything) public MessageFilterSet(int id) { m_ID = id; m_MessageModes = new MessageMode[(int)MessageModes.BeyondLast]; for (MessageModes i = MessageModes.None; i < MessageModes.BeyondLast; i++) { AddMessageMode(new MessageMode(i)); } }
public Channel(Utility.UnionStrInt ID, string name, MessageModes sendMode) { m_ID = ID; m_Name = name; m_SendMode = sendMode; m_Closable = true; m_SendAllowed = true; m_NicklistItems = new List <object>(); m_Messages = new List <ChannelMessage>(MessagesSize); }
public MessageMode(MessageModes mode) { m_ID = mode; m_ShowOnscreenMessage = MessageModeDefaults[(int)m_ID].ShowOnscreen; m_ShowChannelMessage = MessageModeDefaults[(int)m_ID].ShowChannel; m_TextARGB = MessageModeDefaults[(int)m_ID].TextARGB; m_HighlightARGB = MessageModeDefaults[(int)m_ID].HighlightARGB; m_ScreenTarget = MessageModeDefaults[(int)m_ID].ScreenTarget; m_Header = MessageModeDefaults[(int)m_ID].Header; m_Prefix = MessageModeDefaults[(int)m_ID].Prefix; }
public MessageModeProperties(MessageModes mode, bool showOnscreen, bool showChannel, uint textARGB, uint highlightARGB, bool editable, bool ignoreNameFilter, MessageScreenTargets screenTarget, MessageModeHeaders header = MessageModeHeaders.None, MessageModePrefixes prefix = MessageModePrefixes.None) { Mode = mode; ShowOnscreen = showOnscreen; ShowChannel = showChannel; TextARGB = textARGB; HighlightARGB = highlightARGB; Editable = editable; IgnoreNameFilter = ignoreNameFilter; ScreenTarget = screenTarget; Header = header; Prefix = prefix; }
public ChannelMessage(int id, string speaker, int speakerLevel, MessageModes mode, string text) { if (id <= 0) { m_ID = --s_NextID; } else { m_ID = id; } m_Speaker = speaker; m_SpeakerLevel = speakerLevel; m_Mode = mode; m_RawText = text; m_TimeStamp = System.DateTime.Now.Ticks; }
public OnscreenMessage(int statementID, string speaker, int speakerLevel, MessageModes mode, string text) { if (statementID <= 0) { m_ID = --s_NextID; } else { m_ID = statementID; } m_Speaker = speaker; m_SpeakerLevel = speakerLevel; m_Mode = mode; m_Text = text; m_VisibleSince = int.MaxValue; m_TTL = (30 + m_Text.Length / 3) * 100; }
public void AddText(string text) { if (text == null) { throw new System.ArgumentNullException("MessageBlock.AddText: text is null."); } m_TextPieces.Add(text); MessageModes mode = m_NextOnscreenMessageIndex == 0 ? MessageModes.NpcFromStartBlock : MessageModes.NpcFrom; OpenTibiaUnity.ChatStorage.AddChannelMessage(ChatStorage.NpcChannelID, 0, m_Speaker, 0, mode, text); if (m_NextOnscreenMessageIndex == 0 || m_NextOnscreenMessageIndex > 0 && OpenTibiaUnity.TicksMillis > m_MinTimeForNextOnscreenMessage) { ShowNextOnscreenMessage(); } else if (!m_TimerEventRegistered) { OpenTibiaUnity.GameManager.AddSecondaryTimerListener(OnSecondaryTimer); m_TimerEventRegistered = true; } }
public Channel AddChannel(Utility.UnionStrInt channelID, string name, MessageModes mode) { Channel channel = GetChannel(channelID); if (channel != null) { channel.Name = name; channel.SendAllowed = true; } else { channel = new Channel(channelID, name, mode); m_Channels.Add(channel); onAddChannel.Invoke(channel); switch ((int)channelID) { case HelpChannelID: AddChannelMessage(channelID, -1, null, 0, MessageModes.ChannelManagment, "Welcome to the help channel. In this channel you can ask questions about/ Tibia. Experienced players will gladly help you to the best of their knowledge. If their answer was helpful, reward them with a \"Thank You!\" which/you /can select by right-clicking on their statement. For detailed information about quests and other game content, please take a look at our /supported fansite in /the community section of the official Tibia website."); break; case MainAdvertisingChannelID: case RookAdvertisingChannelID: AddChannelMessage(channelID, -1, null, 0, MessageModes.ChannelManagment, "Here you can advertise all kinds of things. Among others, you can trade Tibia/ items, advertise ingame events, seek characters for a quest or a hunting group, find members for your guild or look for somebody to help you with /something. It goes without saying that all advertisements must conform to the Tibia Rules. Keep in mind that it is illegal to advertise trades /including real money or Tibia characters."); break; default: break; } } var player = OpenTibiaUnity.Player; if (!!player && player.Name != null) { channel.PlayerJoined(player.Name); } return(channel); }
public string SendChannelMessage(string text, Channel channel, MessageModes mode) { var protocolGame = OpenTibiaUnity.ProtocolGame; var player = OpenTibiaUnity.Player; if (protocolGame == null || !protocolGame.IsGameRunning) { return(""); } text = text.Trim(); if (text.Length > Constants.MaxTalkLength) { text = text.Substring(0, Constants.MaxTalkLength); } if (text.Length == 0) { return(""); } mode = mode != MessageModes.None ? mode : channel.SendMode; Utility.UnionStrInt channelID = null; if ((!channel.ID.IsInt || (channel.ID != DebugChannelID && channel.ID != LocalChannelID && channel.ID != ServerChannelID)) && channel.SendAllowed) { channelID = channel.ID; } string channelName = null; var regex1 = new System.Text.RegularExpressions.Regex(@"^#([sywbixc])\s+(.*)"); var regex2 = new System.Text.RegularExpressions.Regex(@"^([*@$])([^\1]+?)\1\s*(.*)"); string externalCommand = null; System.Text.RegularExpressions.Match match; if ((match = regex1.Match(text)) != null && match.Success) { externalCommand = match.Groups[1].ToString().ToLower(); if (externalCommand == "b") { mode = MessageModes.GamemasterBroadcast; } else if (externalCommand == "c") { mode = MessageModes.GamemasterChannel; } else if (externalCommand == "i") { mode = MessageModes.None; } else if (externalCommand == "s") { mode = MessageModes.Say; } else if (externalCommand == "w") { mode = MessageModes.Whisper; } else if (externalCommand == "x") { mode = MessageModes.None; } else if (externalCommand == "y") { mode = MessageModes.Yell; } text = match.Groups[2].ToString(); } else if ((match = regex2.Match(text)) != null && match.Success) { externalCommand = match.Groups[1].ToString().ToLower(); if (externalCommand == "*") { mode = MessageModes.PrivateTo; } else if (externalCommand == "@") { mode = MessageModes.GamemasterPrivateTo; } channelID = match.Groups[2].ToString(); channelName = channelID; if (channelName.Length > Constants.MaxChannelLength) { channelName = channelName.Substring(0, Constants.MaxChannelLength); } text = match.Groups[3].ToString(); } if (mode == MessageModes.GamemasterChannel && (!channelID.IsInt || channelID == NpcChannelID)) { OpenTibiaUnity.WorldMapStorage.AddOnscreenMessage(MessageModes.Failure, TextResources.MSG_CHANNEL_NO_ANONYMOUS); return(""); } if (HasOwnPrivateChannel) { if (externalCommand == "i") { protocolGame.SendInviteToChannel(text, OwnPrivateChannelID); } else if (externalCommand == "x") { protocolGame.SendExcludeFromChannel(text, OwnPrivateChannelID); } } switch (mode) { case MessageModes.None: break; case MessageModes.Say: case MessageModes.Whisper: case MessageModes.Yell: protocolGame.SendTalk(mode, text); break; case MessageModes.Channel: protocolGame.SendTalk(mode, (int)channelID, text); break; case MessageModes.PrivateTo: AddChannelMessage(channelID, -1, player.Name, player.Level, mode, text); if (channelID != player.Name.ToLower()) { protocolGame.SendTalk(mode, channelID, text); } break; } if (channelID != channel.ID && (mode == MessageModes.PrivateTo || mode == MessageModes.GamemasterPrivateTo)) { return("*" + channelName + "* "); } return(""); }
public ChannelMessage AddChannelMessage(Utility.UnionStrInt channelID, int statementID, string speaker, int speakerLevel, MessageModes mode, string text) { var messageFilterSet = OpenTibiaUnity.OptionStorage.GetMessageFilterSet(MessageFilterSet.Default); var messageMode = messageFilterSet.GetMessageMode(mode); if (messageMode == null || !messageMode.ShowChannelMessage) { return(null); } // TODO: NameFilterSet bool isReportName = speaker != null && channelID.IsInt && ((int)channelID == ChatStorage.HelpChannelID || speakerLevel > 0); bool isReportStatement = statementID > 0; Channel channel = null; ChannelMessage channelMessage = new ChannelMessage(statementID, speaker, speakerLevel, mode, text); channelMessage.FormatMessage(messageFilterSet.ShowTimeStamps, messageFilterSet.ShowLevels, messageMode.TextARGB, messageMode.HighlightARGB); switch (mode) { case MessageModes.Say: case MessageModes.Yell: case MessageModes.Whisper: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(ChatStorage.LocalChannelID); break; case MessageModes.PrivateFrom: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(channelID); if (channel == null) { channel = GetChannel(ChatStorage.LocalChannelID); } break; case MessageModes.PrivateTo: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(channelID); if (channel == null) { channel = GetChannel(ChatStorage.LocalChannelID); } break; case MessageModes.ChannelManagment: channel = GetChannel(channelID); if (channel == null) { channel = GetChannel(ChatStorage.LocalChannelID); } break; case MessageModes.Channel: case MessageModes.ChannelHighlight: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(channelID); break; case MessageModes.Spell: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channel = GetChannel(ChatStorage.LocalChannelID); break; case MessageModes.NpcFromStartBlock: case MessageModes.NpcFrom: case MessageModes.NpcTo: channel = AddChannel(ChatStorage.NpcChannelID, "NPCs", MessageModes.NpcTo); break; case MessageModes.GamemasterBroadcast: channel = GetChannel(ChatStorage.ServerChannelID); break; case MessageModes.GamemasterChannel: channel = GetChannel(channelID); break; case MessageModes.GamemasterPrivateFrom: case MessageModes.GamemasterPrivateTo: channel = GetChannel(ChatStorage.ServerChannelID); break; case MessageModes.Login: case MessageModes.Admin: case MessageModes.Game: case MessageModes.GameHighlight: case MessageModes.Look: case MessageModes.DamageDealed: case MessageModes.DamageReceived: case MessageModes.Heal: case MessageModes.Mana: case MessageModes.Exp: case MessageModes.DamageOthers: case MessageModes.HealOthers: case MessageModes.ExpOthers: case MessageModes.Status: case MessageModes.Loot: case MessageModes.TradeNpc: case MessageModes.Report: case MessageModes.HotkeyUse: case MessageModes.TutorialHint: case MessageModes.Thankyou: channel = GetChannel(ChatStorage.ServerChannelID); break; case MessageModes.Guild: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(channelID); if (channel == null) { channel = GetChannel(ChatStorage.ServerChannelID); } break; case MessageModes.PartyManagement: case MessageModes.Party: channelMessage.SetReportTypeAllowed(ReportTypes.Name, isReportName); channelMessage.SetReportTypeAllowed(ReportTypes.Statement, isReportStatement); channel = GetChannel(channelID); if (channel == null) { channel = GetChannel(ChatStorage.ServerChannelID); } break; } if (channel != null) { channel.AppendMessage(channelMessage); return(channelMessage); } return(null); }
public OnscreenMessageBox AddOnscreenMessage(MessageModes mode, string text) { return(AddOnscreenMessage(null, -1, null, 0, mode, text, uint.MaxValue)); }
private void ParseTalk(InputMessage message) { uint statementID = message.GetU32(); string speaker = message.GetString(); ushort speakerLevel = message.GetU16(); MessageModes mode = (MessageModes)message.GetU8(); Vector3Int?absolutePosition = null; Utility.UnionStrInt channelID = null; switch (mode) { case MessageModes.Say: case MessageModes.Whisper: case MessageModes.Yell: absolutePosition = message.GetPosition(); channelID = Chat.ChatStorage.LocalChannelID; break; case MessageModes.PrivateFrom: channelID = speaker; break; case MessageModes.Channel: case MessageModes.ChannelHighlight: channelID = message.GetU16(); break; case MessageModes.Spell: absolutePosition = message.GetPosition(); channelID = Chat.ChatStorage.LocalChannelID; break; case MessageModes.NpcFromStartBlock: absolutePosition = message.GetPosition(); break; case MessageModes.GamemasterBroadcast: break; case MessageModes.GamemasterChannel: channelID = message.GetU16(); break; case MessageModes.GamemasterPrivateFrom: channelID = speaker; break; case MessageModes.BarkLow: case MessageModes.BarkLoud: absolutePosition = message.GetPosition(); channelID = -1; break; case MessageModes.Game: break; default: throw new System.Exception("ProtocolGame.ParseTalk: invalid message mode."); } string text = message.GetString(); if (mode != MessageModes.NpcFromStartBlock && mode != MessageModes.NpcFrom) { try { m_WorldMapStorage.AddOnscreenMessage(absolutePosition, (int)statementID, speaker, speakerLevel, mode, text); m_ChatStorage.AddChannelMessage(channelID, (int)statementID, speaker, speakerLevel, mode, text); } catch (System.Exception e) { throw new System.Exception("ProtocolGame.ParseTalk: Failed to add message: " + e.Message + "\n" + e.StackTrace); } } else if (mode == MessageModes.NpcFromStartBlock) { m_MessageStorage.StartMessageBlock(speaker, absolutePosition, text); } else if (mode == MessageModes.NpcFrom) { m_MessageStorage.AddTextToBlock(speaker, text); } }
private void ParseTextMessage(InputMessage message) { MessageModes mode = (MessageModes)message.GetU8(); try { switch (mode) { case MessageModes.ChannelManagment: int channelID = message.GetU16(); string text = message.GetString(); // TODO name filter //var regex = new System.Text.RegularExpressions.Regex(@"^(.+?) invites you to |^You have been excluded from the channel ([^']+)'s Channel\.$"); //var match = regex.Match(text); //string speaker = match != null && match.Success ? match.Value : null; m_WorldMapStorage.AddOnscreenMessage(null, -1, null, 0, mode, text); m_ChatStorage.AddChannelMessage(channelID, -1, null, 0, mode, text); break; case MessageModes.Guild: case MessageModes.PartyManagement: case MessageModes.Party: channelID = message.GetU16(); text = message.GetString(); m_WorldMapStorage.AddOnscreenMessage(null, -1, null, 0, mode, text); m_ChatStorage.AddChannelMessage(channelID, -1, null, 0, mode, text); break; case MessageModes.Login: case MessageModes.Admin: case MessageModes.Game: case MessageModes.GameHighlight: case MessageModes.Failure: case MessageModes.Look: case MessageModes.Status: case MessageModes.Loot: case MessageModes.TradeNpc: case MessageModes.HotkeyUse: channelID = -1; text = message.GetString(); m_WorldMapStorage.AddOnscreenMessage(null, -1, null, 0, mode, text); m_ChatStorage.AddChannelMessage(channelID, -1, null, 0, mode, text); break; case MessageModes.Market: text = message.GetString(); // TODO: market break; case MessageModes.Report: // TODO //ReportWidget.s_ReportTimestampReset(); text = message.GetString(); m_WorldMapStorage.AddOnscreenMessage(null, -1, null, 0, mode, text); m_ChatStorage.AddChannelMessage(-1, -1, null, 0, mode, text); break; case MessageModes.DamageDealed: case MessageModes.DamageReceived: case MessageModes.DamageOthers: Vector3Int position = message.GetPosition(); uint value = message.GetU32(); uint color = message.GetU8(); if (value > 0) { m_WorldMapStorage.AddOnscreenMessage(position, -1, null, 0, mode, (int)value, color); } value = message.GetU32(); color = message.GetU8(); if (value > 0) { m_WorldMapStorage.AddOnscreenMessage(position, -1, null, 0, mode, (int)value, color); } text = message.GetString(); m_ChatStorage.AddChannelMessage(-1, -1, null, 0, mode, text); break; case MessageModes.Heal: case MessageModes.Mana: case MessageModes.Exp: case MessageModes.HealOthers: case MessageModes.ExpOthers: position = message.GetPosition(); value = message.GetU32(); color = message.GetU8(); m_WorldMapStorage.AddOnscreenMessage(position, -1, null, 0, mode, (int)value, color); text = message.GetString(); m_ChatStorage.AddChannelMessage(-1, -1, null, 0, mode, text); break; default: throw new System.Exception("Invalid message mode " + mode + "."); } } catch (System.Exception e) { throw new System.Exception("Connection.readSMESSAGE: Failed to add message of type " + mode + ": " + e.Message + "\n" + e.StackTrace); } }
public OnscreenMessageBox AddOnscreenMessage(UnityEngine.Vector3Int?position, int statementID, string speaker, int speakerLevel, MessageModes mode, string text) { return(AddOnscreenMessage(position, statementID, speaker, speakerLevel, mode, text, uint.MaxValue)); }
public OnscreenMessageBox AddOnscreenMessage(UnityEngine.Vector3Int?position, int statementID, string speaker, int speakerLevel, MessageModes mode, Utility.UnionStrInt text, uint color) { Chat.MessageFilterSet messageFilterSet = Chat.MessageFilterSet.DefaultFilterSet; Chat.MessageMode messageMode = messageFilterSet.GetMessageMode(mode); if (messageMode == null || !messageMode.ShowOnScreen || messageMode.ScreenTarget == MessageScreenTargets.None) { return(null); } // TODO: name filter (speaker) var screenTarget = messageMode.ScreenTarget; if (screenTarget == MessageScreenTargets.EffectCoordinate) { // color effect on a position // Tip: Here you can modify this "is int" and "as int" to add colored text and so on. if (!position.HasValue) { throw new System.Exception("WorldMapStorage.AddOnscreenMessage: Missing co-ordinate."); } if (text.IsInt) { //uint value = (uint)((int)text); //var textualEffect = OpenTibiaUnity.AppearanceStorage.CreateTextualEffect(-1, color, value); //AppendEffect(position.Value, textualEffect); } return(null); } OnscreenMessageBox messageBox = null; OnscreenMessage message = null; if (screenTarget == MessageScreenTargets.BoxCoordinate) { if (!position.HasValue) { throw new System.Exception("WorldMapStorage.AddOnscreenMessage: Missing co-ordinate."); } bool visible = true; for (int i = (int)screenTarget; i < MessageBoxes.Count; i++) { var tmpMessageBox = MessageBoxes[i]; if (tmpMessageBox.Position == null || tmpMessageBox.Position == position.Value) { if (tmpMessageBox.Speaker == speaker && tmpMessageBox.Mode == mode) { messageBox = tmpMessageBox; break; } visible = false; } } if (messageBox == null) { var textBox = UnityEngine.Object.Instantiate(m_TextBoxPrefab, OpenTibiaUnity.GameManager.OnscreenMessagesContainer); messageBox = new OnscreenMessageBox(position, speaker, speakerLevel, mode, Constants.NumOnscreenMessages, textBox); messageBox.Visible = visible; var tmpMessage = messageMode.GetOnscreenMessageHeader(speaker, speakerLevel); if (tmpMessage != null) { message = new OnscreenMessage(-1, speaker, speakerLevel, mode, tmpMessage); message.FormatMessage(null, messageMode.TextARGB, messageMode.HighlightARGB); message.TTL = int.MaxValue; messageBox.AppendMessage(message); } MessageBoxes.Add(messageBox); } } else { messageBox = MessageBoxes[(int)screenTarget]; } message = new OnscreenMessage(statementID, speaker, speakerLevel, mode, text); message.FormatMessage(messageMode.GetOnscreenMessagePrefix(speaker, speakerLevel), messageMode.TextARGB, messageMode.HighlightARGB); messageBox.AppendMessage(message); messageBox.Visible = true; InvalidateOnscreenMessages(); return(messageBox); }