コード例 #1
0
        /// <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 }");
                }
            }
        }
コード例 #2
0
        protected virtual void OnL2RPacketArrival(L2RPacketArrivalEventArgs e)
        {
            EventHandler <L2RPacketArrivalEventArgs> eventhandler = L2RPacketArrivalEvent;

            if (eventhandler != null)
            {
                eventhandler(this, e);
            }
        }
コード例 #3
0
 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());
     }
 }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
 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());
     }
 }
コード例 #7
0
        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));
            }
        }
コード例 #8
0
 protected virtual void OnL2RPacketArrival(L2RPacketArrivalEventArgs e)
 {
     PacketArrivalEvent?.Invoke(this, e);
 }