Esempio n. 1
0
        public override void OnPacketInbound(Packet pPacket)
        {
            exporter.AddPacket(pPacket, false);

            ushort header = pPacket.ReadUShort();
            Console.WriteLine("Packet: {0}", pPacket.ToString());
            if (header == 0x0038) //(header == 0x0043)
            {
                // Version? > lets get rollin
                ServerPackets.EnterMapPacket(this, true, 180000000);

                short slot = 1;

                foreach (var kvp in Program.ITEMS)
                    ServerPackets.SendTestItem(this, kvp.Value, kvp.Key);

                /*

                ServerPackets.SendTestItem(this, 1003142, slot++);
                ServerPackets.SendTestItem(this, 1102275, slot++);

                ItemEquip equip = new ItemEquip(1222009)
                {
                    BattleModeDamage = 20,
                    BossDamageRate = 30,
                    Durability = 500000,
                    IgnoreDamageRate = 50,
                };
                ServerPackets.SendTestItem(this, equip, slot++);

                equip = new ItemEquip(1003142)
                {
                    AllStatsPercentage = 11,
                    TotalDamagePercentage = 22,
                    IncreasesSkills = 33
                };

                ushort statusflag = 0;
                statusflag |= 0x0020;
                //statusflag |= 0x2000;

                equip.StatusFlags = statusflag;

                ServerPackets.SendTestItem(this, equip, slot++);


                equip = new ItemEquip(1003142)
                {
                    Durability = 100,
                };
                ServerPackets.SendTestItem(this, equip, slot++);



                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0001 }, slot++); // Potential?
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0002 }, slot++); // Potential?
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0004 }, slot++); // Potential?
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0008 }, slot++); // Potential?
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0010 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0020 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0040 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113015) { StatusFlags = 0x0080 }, slot++);

                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x0001 }, slot++); 
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x0002 }, slot++); 
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x0004 }, slot++); 
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x0008 }, slot++); 
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x001F }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x002F }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x004F }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113016) { SocketState = 0x008F }, slot++);

                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x0100 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x0200 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x0400 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x0800 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x1000 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x2000 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x4000 }, slot++);
                ServerPackets.SendTestItem(this, new ItemEquip(1113017) { SocketState = 0x8000 }, slot++);

                ServerPackets.SendTestItem(this, new ItemEquip(1113017)
                {
                    StatusFlags = 0x0714,
                    Potential1 = 40356,
                    Potential2 = 30041,
                    Potential3 = 30044,
                    Potential4 = 12011,
                    Potential5 = 2014,
                    Potential6 = 2014,
                    SocketState = 0x00FF,
                    Nebulite2 = 1001,
                    Nebulite1 = 2001,
                    Nebulite3 = 3400,

                }, slot++);
                */

            }
            else if (header == 0x0030)
            {
                int request = pPacket.ReadInt();
                int response;

                response = ((request >> 5) << 5) + (((((request & 0x1F) >> 3) ^ 2) << 3) + (7 - (request & 7)));
                response |= ((request >> 7) << 7);
                response -= 2;

                Packet packet = new Packet(0x0015);
                packet.WriteInt(response);
                this.SendPacket(packet);
            }
            else if (header == 0x040)
            {
                Packet packet = new Packet(0x0000);
                packet.WriteInt(0);
                packet.WriteShort(0);
                
                packet.WriteInt(12222222); // User ID
                packet.WriteByte(0);
                packet.WriteByte(0);
                packet.WriteUShort(0xFFFF); // admin flags
                packet.WriteInt(0);
                packet.WriteByte(0x95);
                packet.WriteString("TestUser"); // Username
                packet.WriteByte(0);
                packet.WriteByte(0);
                packet.WriteLong(0);
                packet.WriteLong(128664365579370000); // create date

                packet.WriteInt(78);

                packet.WriteBool(false); // Else, 18 bytes
                packet.WriteBool(true); // Send 0x22 back
                packet.WriteByte(0);

                packet.WriteLong(0); // CC key

                this.SendPacket(packet);
            }
            else if (header == 0x0022)
            {
                Packet packet = new Packet(0x0009);
                byte worldid = 41;
                string worldname = "Ultimate";
                byte channels = 10;

                packet.WriteByte(worldid);
                packet.WriteString(worldname);
                packet.WriteByte(1);
                packet.WriteString("");
                packet.WriteUShort(100);
                packet.WriteUShort(100);

                packet.WriteByte(0);

                packet.WriteByte(channels); // Channels
                for (byte i = 0; i < channels; i++)
                {
                    packet.WriteString(string.Format("{0}-{1}", worldname, i + 1));
                    packet.WriteInt(1000);
                    packet.WriteByte(worldid);
                    packet.WriteByte(i);
                    packet.WriteByte(0);
                }

                packet.WriteShort(0); // Tooltip thingies

                packet.WriteInt(0);

                this.SendPacket(packet);

                packet = new Packet(0x0009);
                packet.WriteByte(0xFF);
                packet.WriteByte(0); // ? Restriction message?
                this.SendPacket(packet);

            }
            else if (header == 0x001D)
            {
                Packet packet = new Packet(0x0004);
                packet.WriteByte(0); // Server status
                packet.WriteByte(0);
                this.SendPacket(packet);
            }
            else
            {
                Console.WriteLine("Unknown");
            }
        }