private static void OnDropItemRequested(int client, PacketReader reader)
 {
     const int oldLen08 = 0x0E;
     const int newLen08 = 0x0F;
     if (reader.Size != oldLen08 && reader.Size != newLen08)
         return;
     int serial8 = reader.ReadInt32();
     int x8 = reader.ReadInt16();
     int y8 = reader.ReadInt16();
     int z8 = reader.ReadSByte();
     int container8;
     if (reader.Size == newLen08)
         reader.ReadByte(); // Grid location
     container8 = reader.ReadInt32();
     OutgoingPackets.OnDropItemRequested(client, serial8, x8, y8, z8, container8);
 }
        private static void OnExtendedCommand(int client, PacketReader reader)
        {
            int command = reader.ReadInt16();

            PacketHandler handler = GetExtendedHandler(command);
            if (handler != null)
                handler.OnReceive(client, reader);
        }
 private static void OnUseItemRequested(int client, PacketReader reader)
 {
     int serial6 = reader.ReadInt32();
     OutgoingPackets.OnUseItemRequested(client, serial6);
 }
 private static void OnDragItemRequested(int client, PacketReader reader)
 {
     int serial7 = reader.ReadInt32();
     int amount7 = reader.ReadInt16();
     OutgoingPackets.OnDragItemRequested(client, serial7, amount7);
 }
 private static void OnTargetSent(int client, PacketReader reader)
 {
     int type6c = reader.ReadByte();
     int charSerial6c = reader.ReadInt32();
     bool checkCrime6c = reader.ReadByte() == 1;
     int serial6c = reader.ReadInt32();
     int x6c = reader.ReadUInt16();
     int y6c = reader.ReadUInt16();
     int z6c = reader.ReadUInt16();
     int id6c = reader.ReadUInt16();
     OutgoingPackets.OnTargetSent(client, type6c, checkCrime6c, serial6c, x6c, y6c, z6c, id6c, reader.Data);
 }
        private static void OnUnicodeSpeech( int client, PacketReader reader )
        {
            byte messagetype = reader.ReadByte();
            int color = reader.ReadInt16();
            int font = reader.ReadInt16();
            string lang = reader.ReadString( 4 );
            string text;

            int[] keywords;

            if ((messagetype & 0xC0) != 0)
            {
                int value = reader.ReadInt16();
                int count = ( value & 0xFFF0 ) >> 4;
                int hold = value & 0xF;

                if (count < 0 || count > 50)
                    return;

                List<int> keyList = new List<int>();

                for (int i = 0; i < count; ++i)
                {
                    int speechID;

                    if (( i & 1 ) == 0)
                    {
                        hold <<= 8;
                        hold |= reader.ReadByte();
                        speechID = hold;
                        hold = 0;
                    }
                    else
                    {
                        value = reader.ReadInt16();
                        speechID = ( value & 0xFFF0 ) >> 4;
                        hold = value & 0xF;
                    }

                    if (!keyList.Contains( speechID ))
                        keyList.Add( speechID );
                }

                text = reader.ReadStringSafe();

                keywords = keyList.ToArray();
            }
            else
            {
                keywords = new int[0];
                text = reader.ReadUnicodeStringSafe();
            }
            OutgoingPackets.OnUnicodeSpeech( client, messagetype, color, font, lang, keywords, text );
        }
 private static void OnStatLockChanged(int client, PacketReader reader)
 {
     int type = reader.ReadByte();
     int value = reader.ReadByte();
     OutgoingPackets.OnStatLockChanged(client, type, value);
 }
 private static void OnSkillLockChanged(int client, PacketReader reader)
 {
     int skillID3a = reader.ReadInt16();
     LockStatus lockStatus3a = (LockStatus)reader.ReadByte();
     OutgoingPackets.OnSkillLockChanged(client, skillID3a, lockStatus3a);
 }
 private static void OnMoveRequested(int client, PacketReader reader)
 {
     int direction2 = reader.ReadByte() & 0x07;
     int sequence2 = reader.ReadByte();
     OutgoingPackets.OnMoveRequested(client, direction2, sequence2);
 }
        private static void OnGumpButtonPressed(int client, PacketReader reader)
        {
            //gump choice, only button & switches are processed
            int serialb1 = reader.ReadInt32();
            int gumpb1 = reader.ReadInt32();
            int buttonb1 = reader.ReadInt32();
            int[] switchvaluesb1 = new int[0];
            if (gumpb1 != 461)
            {
                int switchesb1 = reader.ReadInt32();
                switchvaluesb1 = new int[switchesb1];

                for (int xb1 = 0; xb1 < switchesb1; xb1++)
                {
                    switchvaluesb1[xb1] = reader.ReadInt32();
                }
            }
            OutgoingPackets.OnGumpButtonPressed(client, serialb1, gumpb1, buttonb1, switchvaluesb1);
        }
Пример #11
0
        public static PacketFilterInfo Deserialize( byte[] bytes )
        {
            PacketReader reader = new PacketReader( bytes, bytes.Length, false );
            byte pid = reader.ReadByte();
            int numconditions = reader.ReadInt16();

            List<PacketFilterCondition> conditions = new List<PacketFilterCondition>();

            for (int i = 0; i < numconditions; i++)
            {
                int pos = reader.ReadInt16();
                int blen = reader.ReadInt16();
                byte[] bytes2 = new byte[blen];
                bytes2 = reader.ReadByteArray( blen );
                int len = reader.ReadInt16();
                conditions.Add( new PacketFilterCondition( pos, bytes2, len ) );
            }

            if (conditions.Count == 0)
                return new PacketFilterInfo( pid, null );

            return new PacketFilterInfo( pid, conditions.ToArray() );
        }