private static void MessageReceived(Tera.Message obj) { if (obj.Direction == Tera.MessageDirection.ClientToServer && obj.OpCode == 19900) { var message = new C_CHECK_VERSION_CUSTOM(new CustomReader(obj)); Version = message.Versions[0]; OpcodeDownloader.DownloadIfNotExist(Version, Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/")); if (!File.Exists(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/{message.Versions[0]}.txt")) && !File.Exists(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/protocol.{message.Versions[0]}.map")) || !File.Exists(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/smt_{message.Versions[0]}.txt")) && !File.Exists(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/sysmsg.{message.Versions[0]}.map"))) { { BasicTeraData.LogError("Unknown client version: " + message.Versions[0]); System.Windows.MessageBox.Show("Unknown client version: " + message.Versions[0]); App.CloseApp(); return; } } OpCodeNamer = new OpCodeNamer(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/{message.Versions[0]}.txt")); SystemMessageNamer = new OpCodeNamer(Path.Combine(BasicTeraData.Instance.ResourceDirectory, $"data/opcodes/smt_{message.Versions[0]}.txt")); MessageFactory.Init(); TeraSniffer.Instance.Connected = true; Proxy.ConnectToProxy(); } Packets.Enqueue(obj); }
private static MemoryStream GetStream(Tera.Message message) { return(new MemoryStream(message.Payload.Array, message.Payload.Offset, message.Payload.Count, false, true)); }
public CustomReader(Tera.Message message) : base(GetStream(message), Encoding.Unicode) { Message = message; }
private void HandleMessageReceived(Message obj) { var message = _messageFactory.Create(obj); _entityRegistry.Update(message); var skillResultMessage = message as EachSkillResultServerMessage; if (skillResultMessage != null) { _damageTracker.Update(skillResultMessage); } }