/// <summary> /// Subcribe to the l2r packet arrival event (a packet has been recognized as an l2r packet). /// </summary> private static void OnL2RPacketArrival(object sender, L2RPacketArrivalEventArgs e) { var test = e.Packet; if (test != null) { //Console.WriteLine($"Packet Received: { e.Packet.GetType().FullName }"); // just a couple of packet types that we may be interested in monitoring... if (e.Packet is PacketClanMemberKillNotify) { var p = e.Packet as PacketClanMemberKillNotify; Console.WriteLine($"Received Packet: PacketClanMemberKillNotify"); Console.WriteLine($"\t{ p.PlayerName } ({ p.ClanName }) murdered { p.Player2Name } ({ p.Clan2Name })"); } else if (e.Packet is PacketChatGuildListReadResult) { var p = e.Packet as PacketChatGuildListReadResult; Console.WriteLine($"Received Packet: PacketChatGuildListReadResult"); Console.WriteLine($"\t[{ p.MessageTime }] { p.PlayerName }: { p.Message }"); } } }
protected virtual void OnL2RPacketArrival(L2RPacketArrivalEventArgs e) { EventHandler <L2RPacketArrivalEventArgs> eventhandler = L2RPacketArrivalEvent; if (eventhandler != null) { eventhandler(this, e); } }
private void OnL2RPacketArrival(object sender, L2RPacketArrivalEventArgs e) { try { //L2RPacketService proceesses the incoming payload and translates it to a concrete class IL2RPacket l2rPacket = e.Packet; if (l2rPacket != null) { _Packets.Add(e); } } catch (Exception ex) { Console.WriteLine("Process packet: " + ex.ToString()); } }
private void ProcessPackets(byte[] payloadData) { try { //get packetlength byte[] tmparray = new byte[2]; tmparray[0] = payloadData[0]; tmparray[1] = payloadData[1]; ushort packetLength = BitConverter.ToUInt16(tmparray, 0); if (payloadData.Length >= packetLength) { byte spacer = payloadData[2]; // skip 1 byte byte[] packetData = new byte [payloadData.Length - 3]; //payloadData.CopyTo(packetData, 3); Array.Copy(payloadData, 3, packetData, 0, packetLength - 3); DecryptPacket(packetData); byte[] packetBytes = packetData; //Get packet id L2RPacket packetReader = new L2RPacket(packetData); ushort packetId = (ushort)(packetReader.ReadUInt16() - 1); Console.Out.WriteLineAsync("-Packet ID: " + packetId + "\r"); PacketFactory factory = new ConcretePacketFactory(); IL2RPacket l2rpckt = factory.GetPacket(packetId, packetReader); //FIRE L2RPacketArrivalEvent L2RPacketArrivalEventArgs args = new L2RPacketArrivalEventArgs { ID = packetId, Packet = l2rpckt, PacketBytes = packetBytes }; OnL2RPacketArrival(args); packetQue.Enqueue(l2rpckt); } } catch (Exception ex) { _incomingBuffer.Clear(); Console.WriteLine(ex.ToString()); } }
private static async void OnL2RPacketArrival(object sender, L2RPacketArrivalEventArgs e) { var test = e.Packet; if (test != null) { Console.WriteLine("GOT ONE!!"); } if (e.Packet is PacketStatusMovement) { PacketStatusMovement pkt = (PacketStatusMovement)e.Packet; Console.WriteLine($"Move status: Player ID = {pkt.playerId}, " + $"movetype = {pkt.playerMoveType}, " + $"destX = {pkt.playerDestXpos}, " + $"destY = {pkt.playerDestYpos} "); } if (e.Packet is PacketExpDisplayNotify) { PacketExpDisplayNotify pkt = (PacketExpDisplayNotify)e.Packet; Console.WriteLine($"Exp tick: Exp = {pkt.Exp}, " + $"Bonus = {pkt.Bonus} "); } if (e.Packet is PacketClanInfoReadResult) { PacketClanInfoReadResult pkt = (PacketClanInfoReadResult)e.Packet; JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new JavaScriptDateTimeConverter()); serializer.NullValueHandling = NullValueHandling.Ignore; string json = JsonConvert.SerializeObject(pkt); Console.WriteLine(json); } }
private async void OnL2RPacketArrival(object sender, L2RPacketArrivalEventArgs e) { try { //L2RPacketService proceesses the incoming payload and translates it to a concrete class IL2RPacket l2rPacket = e.Packet; if (l2rPacket is PacketPlayerKillNotify) { //NOTIFY KILL //await _killService.NotifyKill((PacketPlayerKillNotify)l2rPacket); } else if (l2rPacket is PacketClanMemberKillNotify) { //NOTIFY KILL await _killService.NotifyKill((PacketClanMemberKillNotify)l2rPacket); } else if (l2rPacket is PacketChatGuildListReadResult && _config["clanchat:enabled"] == "true") { //NOTIFY CLAN CHAT await UtilService.NotifyClanChat((PacketChatGuildListReadResult)l2rPacket); } else if (l2rPacket is PacketClanMemberListReadResult) { //NOTIFY CLAN INFO await _playerService.NotifyClanMembersAsync((PacketClanMemberListReadResult)l2rPacket); } else if (l2rPacket is PacketClanInfoReadResult) { //NOTIFY CLAN INFO await _playerService.NotifyClanInfoAsync((PacketClanInfoReadResult)l2rPacket); } } catch (Exception ex) { Console.WriteLine("Process packet: " + ex.ToString()); } }
private void ProcessPackets(byte[] payloadData) { try { if (payloadData == null || payloadData.Length < 2) { return; } //get packetlength byte[] tmparray = new byte[2]; tmparray[0] = payloadData[0]; tmparray[1] = payloadData[1]; ushort packetLength = BitConverter.ToUInt16(tmparray, 0); if (payloadData.Length >= packetLength) { byte spacer = payloadData[2]; // skip 1 byte byte[] packetData = new byte [payloadData.Length - 3]; //payloadData.CopyTo(packetData, 3); Array.Copy(payloadData, 3, packetData, 0, packetLength - 3); DecryptPacket(packetData); byte[] packetBytes = packetData; //Get packet id L2RPacket packetReader = new L2RPacket(packetData); ushort packetId = (ushort)(packetReader.ReadUInt16() - 1); PacketFactory factory = new ConcretePacketFactory(); IL2RPacket l2rpckt = factory.GetPacket(packetId, packetReader); /*** Fixed Queue ***/ _triggerEvent = true; foreach (var id in _packetIdQueue) { if (id == packetId) { _triggerEvent = false; } } _packetIdQueue.Enqueue(packetId); if (_triggerEvent) { //FIRE L2RPacketArrivalEvent L2RPacketArrivalEventArgs args = new L2RPacketArrivalEventArgs { ID = packetId, Packet = l2rpckt, PacketBytes = packetBytes }; OnL2RPacketArrival(args); //packetQue.Enqueue(l2rpckt); } /*** end Fixed Queue ***/ } } catch (Exception ex) { _incomingBuffer.Clear(); PacketError?.Invoke(this, new L2RPacketErrorEventArgs(ex)); } }
protected virtual void OnL2RPacketArrival(L2RPacketArrivalEventArgs e) { PacketArrivalEvent?.Invoke(this, e); }