예제 #1
0
        public static void Init()
        {
            if (Initialized)
            {
                return;
            }

            ReqOplParent = PacketHandlers.GetExtendedHandler(0x10);
            PacketHandlers.RegisterExtended(ReqOplParent.PacketID, ReqOplParent.Ingame, OnQueryProperties);

            ReqBatchOplParent = PacketHandlers.GetHandler(0xD6);

            PacketHandlers.Register(
                ReqBatchOplParent.PacketID,
                ReqBatchOplParent.Length,
                ReqBatchOplParent.Ingame,
                OnBatchQueryProperties);

            PacketHandlers.Register6017(
                ReqBatchOplParent.PacketID,
                ReqBatchOplParent.Length,
                ReqBatchOplParent.Ingame,
                OnBatchQueryProperties);

            OutParent0xD6 = OutgoingPacketOverrides.GetHandler(0xD6);
            OutgoingPacketOverrides.Register(0xD6, OnEncode0xD6);

            Initialized = true;
        }
예제 #2
0
 public static void RegisterExtended(int packetID, OutgoingPacketOverrideHandler handler)
 {
     if (packetID >= 0 && packetID < 0x100)
         _ExtendedHandlersLow[packetID] = handler;
     else
         _ExtendedHandlersHigh[packetID] = handler;
 }
예제 #3
0
            public void EncodeOutgoingPacket(NetState to, ref byte[] packetBuffer, ref int packetLength)
            {
                byte[] buffer;
                int    bufferLength = 0;

                byte packetID;

                if (to.CompressionEnabled)
                {
                    var firstByte = Decompressor.DecompressFirstByte(packetBuffer, packetLength);

                    if (!firstByte.HasValue)
                    {
                        Utility.PushColor(ConsoleColor.Yellow);
                        Console.WriteLine("Outgoing Packet Override: Unable to decompress packet!");
                        Utility.PopColor();

                        return;
                    }

                    packetID = firstByte.Value;
                }
                else
                {
                    packetID = packetBuffer[0];
                }

                OutgoingPacketOverrideHandler handler = GetHandler(packetID);

                if (handler == null)
                {
                    handler = GetExtendedHandler(packetID);
                }

                if (handler != null)
                {
                    if (to.CompressionEnabled)
                    {
                        Decompressor.DecompressAll(packetBuffer, packetLength, _UnpackBuffer, ref bufferLength);

                        buffer = new byte[bufferLength];
                        Buffer.BlockCopy(_UnpackBuffer, 0, buffer, 0, bufferLength);
                    }
                    else
                    {
                        buffer       = packetBuffer;
                        bufferLength = packetLength;
                    }

                    handler(to, new PacketReader(buffer, packetLength, true), ref packetBuffer, ref packetLength);
                }

                if (_Successor != null)
                {
                    _Successor.EncodeOutgoingPacket(to, ref packetBuffer, ref packetLength);
                }
            }
예제 #4
0
 public static void RegisterExtended(int packetID, OutgoingPacketOverrideHandler handler)
 {
     if (packetID >= 0 && packetID < 0x100)
     {
         _ExtendedHandlersLow[packetID] = handler;
     }
     else
     {
         _ExtendedHandlersHigh[packetID] = handler;
     }
 }
예제 #5
0
 public static void Register(int packetID, OutgoingPacketOverrideHandler handler)
 {
     _Handlers[packetID] = handler;
 }
예제 #6
0
		public static void Register(int packetID, OutgoingPacketOverrideHandler handler)
		{
			_Handlers[packetID] = handler;
		}