예제 #1
0
        public override byte[] WritedData()
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                var inventory = _player.Inventory;
                
                writer.WriteC(1);
                writer.WriteC(1);
                writer.WriteD(_player.GameSessionId);
                writer.Skip(12);
                writer.WriteH(inventory.Items.Count);
                writer.WriteC(0);

                for (short i = 0; i < inventory.Items.Count; i++)
                {
                    var item = inventory.Items[(short) (i + 1)];
                   
                    writer.WriteC(i);
                    writer.WriteD(item.ItemId);
                    writer.WriteQ(item.Count);
                    writer.Write("FFFFFFFFFFFFFFFF".ToBytes());
                    writer.WriteD(i == 0 ? 0 : 1);
                    writer.WriteD(0);
                    writer.WriteC(0);
                    writer.Write("0100FF7FFF7F3A38E56FF2862300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000".ToBytes());
                }

                return stream.ToArray();
            }
        }
예제 #2
0
		public void Write(BinaryWriter writer)
		{
			writer.Write(OffsetX);
			writer.Write(OffsetY);
			writer.Write(OffsetZ);
			writer.Write(Material);
			writer.Write(Level);
			writer.Skip(2);
		}
예제 #3
0
        public override byte[] WritedData()
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.Skip(4);
                writer.WriteD(DateTime.Now.Millisecond);
                writer.Skip(4);

                var realms = NetworkService.WorldServers.Values.ToList();

                writer.WriteH(realms.Count);

                for (int i = 0; i < realms.Count; i++)
                {
                    var realm = realms[i];

                    writer.WriteH(realm.ChannelId); 
                    writer.WriteH(realm.Id);

                    writer.Write(BinaryExt.WriteFixedString($" {realm.ChannelName}", Encoding.Unicode, 62));
                    writer.Write(BinaryExt.WriteFixedString($" {realm.RealmName}", Encoding.Unicode, 62));

                    writer.Write("CB4B00".ToBytes());

                    writer.Write(BinaryExt.WriteFixedString(realm.RealmIp, Encoding.ASCII, 16));
                    writer.WriteH(realm.RealmPort);

                    writer.WriteC(1);
                    writer.WriteC(1);
                    writer.WriteC(1);

                    writer.WriteC(AuthProcessor.GetCharacterCount(_accInfo.Id));
                    writer.WriteC(_accInfo.MaxSlotCount);

                    writer.Write("0000FEFFFFFFFFFFFFFFD48D6155000000000000000000000000000000000000".ToBytes());
                }

                return stream.ToArray();
            }
        }
예제 #4
0
        public override byte[] WritedData()
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.WriteQ(_character.Uid);
                writer.WriteD(1);
                writer.WriteH(1);
                writer.WriteD(_character.GameSessionId);

                writer.Write("8014BCC7".ToBytes()); //x
                writer.Write("000072C5".ToBytes()); //y
                writer.Write("80F99747".ToBytes()); //z
                writer.Write("046788BE".ToBytes()); //cosinus
                writer.WriteD(0);
                writer.Write("80BF763F".ToBytes()); //sinus

                writer.WriteD(_character.DatabaseCharacterData.ClassType.Ordinal());
                writer.Write("0000803F00004743ABE7FFFFFFFFFFFFABE7FFFFFFFFFFFF02946DE4950000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000FE00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000FEFFFF00000000000000000000000000000000000000000000000000000000FFFFFF0000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000FE00000000000000000000000000000000000000000000000000000000FFFFFFFFD3090000000000006F09170000000000".ToBytes());
                writer.WriteD(1);
                writer.WriteQ(_character.Uid);

                writer.WriteD(1);
                writer.WriteD(1);
                writer.WriteD(2);
                writer.WriteD(1);

                writer.WriteD(0);
                writer.WriteD(0);
                writer.WriteD(0);

                writer.Write("3B34000005FCFFFF2500000000000000000000000005511D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FCFFFF01".ToBytes());
                writer.WriteD(_character.DatabaseCharacterData.Level);
                writer.WriteD(0);
            
                writer.Write("030000000000000000000000000000000000000000000000A05100000000000000000000000000000000000000FCFFFF000000000000000000000000020000000000000000000000000000000200000000000000000000000000".ToBytes());

                writer.WriteD(1);
                writer.Write(BinaryExt.WriteFixedString(_character.DatabaseCharacterData.Surname, Encoding.Unicode, 62));
                writer.Skip(402); //zeros
                writer.WriteD(1);
                writer.Write(BinaryExt.WriteFixedString(_character.DatabaseCharacterData.CharacterName, Encoding.Unicode, 62));
                writer.Write(_character.DatabaseCharacterData.AppearancePresets);

                //TODO - inventory
                writer.Write("3B340000FFFFFFFFFFFFFFFF6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF002E330000FFFFFFFFFFFFFFFF6400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F72C0000FFFFFFFFFFFFFFFF2F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F82C0000FFFFFFFFFFFFFFFF3200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00382A0000FFFFFFFFFFFFFFFF6400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F62C0000FFFFFFFFFFFFFFFF3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FEFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000060C9F67F0000000000000100FFFF18CE4A490100000000000000000000000019E9070000000040F3B8611800000052C460C8F67F00000000000000000000F018E9070000000000000000F10C000080C928C8FFFFFFFFFEFFFFFFFFFFFFFF38F4B86118000000010000000000000031EA5FC8F67F0000F08617091800000000000000000000001300000000000000000000000000000000000000FFFFFFFF18CE4A49010000000000000000000000B8F4B86118000000FEFFFFFFFFFFFFFF29E85FC8F67F00000100".ToBytes());
                writer.WriteH(_character.DatabaseCharacterData.Zodiac.GetHashCode());
                writer.Write("FCFFFF37010000000000001301000000000000000000000000000037010000000000000000000000000000000000000000FEFF01".ToBytes());

                return stream.ToArray();
            }
        }
예제 #5
0
 public override byte[] WritedData()
 {
     using (var stream = new MemoryStream())
     using (var writer = new BinaryWriter(stream))
     {
         writer.Write("ABE7FFFFFFFFFFFFABE7FFFFFFFFFFFF".ToBytes());//static field
         writer.WriteD(_player.GameSessionId);
         writer.WriteD(_player.DatabaseCharacterData.Level);              
         writer.WriteQ(0); 
         writer.WriteQ(1); //2626 percent todo
         writer.Skip(9);
         return stream.ToArray();
     }
 }
        public override byte[] WritedData()
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write("04A4C200".ToBytes());
                writer.Write("D309000000000000".ToBytes()); 
                writer.Write("46B2C16FF2862300".ToBytes());
                //writer.WriteQ(_character.CharacterId);
                writer.Write("B1E57656".ToBytes()); //todo - static server date time
                writer.Skip(12);
                writer.Write("1E000000".ToBytes());
                writer.Write(BinaryExt.WriteFixedString(_character.CharacterName, Encoding.Unicode, 62));
                writer.Write(_character.Level);
                writer.Write("ABE7FFFFFFFFFFFF".ToBytes());
                writer.Write(BinaryExt.WriteFixedString(_character.Surname, Encoding.Unicode, 62));
                writer.WriteH(4); //unk
                writer.WriteH(_character.ClassType.Ordinal());

                return stream.ToArray();
            }
        }
예제 #7
0
        public void Write(BinaryWriter writer)
        {
            writer.Write(EntityId);
            writer.Write(PositionX);
            writer.Write(PositionY);
            writer.Write(PositionZ);
            writer.Write(Pitch);
            writer.Write(Roll);
            writer.Write(Yaw);

            writer.Write(Health);
            writer.Write(Experience);
            writer.Write(Level);
            writer.Write((byte)Class);
            writer.Write(Specialization);
            writer.Write(unknown1);
            writer.Write(unknown2);

            foreach (Item equipment in Equipment)
                equipment.Write(writer);

            writer.WriteLongString(Name);
            writer.Write(Race);
            writer.Write(Gender);
            writer.Skip(3);
            writer.Write(Face);
            writer.Write(Hair);
            writer.Write(Utility.ToAbgr(HairColor));

            writer.Write(InventoryCount);
            foreach (Inventory inventory in Inventories)
                inventory.Write(writer);

            writer.Write(Coins);
            writer.Write(PlatinumCoins);

            writer.Write(CraftingRecipes.Count);
            foreach (Item recipe in CraftingRecipes)
                recipe.Write(writer);

            writer.Write(Worlds.Count);
            foreach (World world in Worlds)
                world.Write(writer);

            writer.Write(LastWorld.Seed);
            writer.WriteLongString(LastWorld.Name);

            writer.Write(unknown3);
            writer.Write(SkillCount);
            writer.Write(PetMasterSkillLevel);
            writer.Write(PetRidingSkillLevel);
            writer.Write(ClimbingSkillLevel);
            writer.Write(HangGlidingSkillLevel);
            writer.Write(SwimmingSkillLevel);
            writer.Write(SailingSkillLevel);
            writer.Write(TierOneSkillLevel);
            writer.Write(TierTwoSkillLevel);
            writer.Write(TierThreeSkillLevel);
            writer.Write(unknown4);
            writer.Write(unknown5);
        }
예제 #8
0
            public override byte[] WritedData()
            {
                using (var stream = new MemoryStream())
                using (var writer = new BinaryWriter(stream))
                {
                    writer.Write(_player.GameSessionId);
                    writer.Write("2873000000000000".ToBytes()); //unk
                    writer.WriteD(1);
                    writer.Write(BinaryExt.WriteFixedString(_accountInfo.FamilyName, Encoding.Unicode, 62));
                    writer.Skip(402);

                    return stream.ToArray();
                }
            }
예제 #9
0
        public void Write(BinaryWriter writer)
        {
            writer.Write(Type);
            writer.Write(Subtype);
            writer.Skip(2);
            writer.Write(Modifier);
            writer.Skip(2);
            writer.Write(unknown1);
            writer.Write(Rarity);
            writer.Write(Material);
            writer.Write(Flags);
            writer.Skip(1);
            writer.Write(Level);
            writer.Skip(2);

            foreach (ItemAttribute attribute in Attributes)
                attribute.Write(writer);

            writer.Write(Attributes.Count(attr => attr.Used));
        }
예제 #10
0
        public override byte[] WritedData()
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.Skip(24);
                writer.Write(BinaryExt.WriteFixedString(_account.FamilyName, Encoding.Unicode, 62));
               
                /*GAG || If charaters not exist */

                if (!_characters.Any())
                {
                    writer.WriteH(65535);
                    writer.WriteD(0);
                    writer.WriteQ(-1);
                    writer.WriteQ(0);
                    writer.WriteC(0);
                    writer.WriteQ(0);
                    writer.WriteH(0);
                    writer.WriteC(254);
                    writer.WriteD(65535);
                    writer.WriteC(0);
                    writer.WriteC(254);
                    writer.WriteQ(-1);
                    writer.WriteQ(0);
                    writer.WriteQ(0);
                    writer.WriteQ(0);
                    writer.WriteC(0);
                    writer.WriteC(254);
                    writer.WriteC(255);
                    writer.WriteH(65535);
                    writer.WriteQ(-1);
                    writer.Skip(51);

                    return stream.ToArray();
                }

                writer.Write(_staticField);
                writer.WriteC(_characters.Count);

                for (int index = 0; index < _characters.Count; index++)
                {
                    var characterInfo = _characters[index];
                    var equipment = (EquipmentStorage)characterInfo.EquipmentData;

                    writer.WriteH(characterInfo.ClassType.Ordinal());
                    writer.WriteQ(characterInfo.CharacterId);
                    writer.WriteC(0); //unk flag
                    writer.Write(BinaryExt.WriteFixedString(characterInfo.CharacterName, Encoding.Unicode, 62));
                    writer.WriteD(characterInfo.Level);
                    writer.WriteD(0); //unk

                    using (equipment)
                        if (equipment.Items.Count != 0)
                        {
                            byte[] equipmentData = equipment.GetEquipmentData();

                            writer.Write(equipmentData);
                            writer.Skip(107);
                        }
                        else
                            writer.Write(_inventoryField);

                    writer.Write(characterInfo.AppearancePresets);
                    writer.WriteC((byte)characterInfo.Zodiac);
                    writer.Write(characterInfo.AppearanceOptions);
                    writer.Skip(62);
                    writer.Write("FFFFFFFFFFFFFFFF001E69745600000000717A715600000000805FF2C70000B8C40028DD47FFFFFFFFFFFFFFFF0000040E7456000000000000000000000000000000000000000000000000000000000000D0FFFF43".ToBytes());
                }

                return stream.ToArray();
            }
        }