public static void HandleSystemMessage(S_SYSTEM_MESSAGE x) { try { var msg = x.Message.Split('\v'); var opcode = ushort.Parse(msg[0].Substring(1)); var opcodeName = SystemMessageNamer.GetName(opcode); if (SessionManager.SystemMessagesDatabase.Messages.TryGetValue(opcodeName, out var m)) { SystemMessagesProcessor.AnalyzeMessage(x.Message, m, opcodeName); } } catch (Exception) { File.AppendAllText("chat-errors.log", x.Message + "\n"); } }
public static void SendTestMessage() { //var str = "@3947questNameDefeat HumedraszoneName@zoneName:181npcName@creature:181#2050"; //var str = "@3789cityname@cityWar:20guildFated"; //var str = "@1773ItemName@item:152141ItemName1@item:447ItemCount5"; const string str = "@3821userNametestNameguildQuestName@GuildQuest:31007001value1targetValue3"; var toBytes = Encoding.Unicode.GetBytes(str); var arr = new byte[toBytes.Length + 2 + 4]; for (var i = 0; i < toBytes.Length - 1; i++) { arr[i + 4] = toBytes[i]; } var seg = new ArraySegment <byte>(arr); var sysMsg = new S_SYSTEM_MESSAGE(new TeraMessageReader(new Message(DateTime.Now, MessageDirection.ServerToClient, seg), OpCodeNamer, Factory, SystemMessageNamer)); HandleSystemMessage(sysMsg); }
private Task ReadSystemMessage(S_SYSTEM_MESSAGE systemMessage, CancellationToken token) => Dispatcher.Notify(systemMessageReader.Read(systemMessage.Content), token);