Exemple #1
0
 public static void SendRegisterItemToAukCancelWindowResponse(IRealmClient client, List <Asda2ItemTradeRef> items = null)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.RegisterItemToAukCancelWindow))//9902
     {
         if (items != null)
         {
             foreach (var item in items)
             {
                 packet.WriteByte(0);                                             //{status}default value : 0 Len : 1
                 packet.WriteInt32(item.Item.ItemId);                             //{itemId}default value : 31855 Len : 4
                 packet.WriteByte((byte)item.Item.InventoryType);                 //{invNum}default value : 2 Len : 1
                 packet.WriteInt16(item.Item.Slot);                               //{cell}default value : 5 Len : 2
                 packet.WriteSkip(stab15);                                        //value name : stab15 default value : stab15Len : 12
                 packet.WriteInt32(item.Amount);                                  //{registeredAmount}default value : 250 Len : 4
                 packet.WriteInt32(item.Item.Amount);                             //{beforeAmount}default value : 250 Len : 4
                 packet.WriteInt16(item.Item.Weight);                             //{weight}default value : 0 Len : 2
                 packet.WriteSkip(stab37);                                        //value name : stab37 default value : stab37Len : 21
                 packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 315 Len : 4
                 packet.WriteInt32(client.ActiveCharacter.Money);                 //{money}default value : 8503216 Len : 4
                 packet.WriteInt64(-1);                                           //value name : unk8 default value : -1Len : 8
             }
         }
         client.Send(packet);
     }
 }
Exemple #2
0
        public static void SendRegisterItemToAukCancelWindowResponse(IRealmClient client,
                                                                     List <Asda2ItemTradeRef> items = null)
        {
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.RegisterItemToAukCancelWindow))
            {
                if (items != null)
                {
                    foreach (Asda2ItemTradeRef asda2ItemTradeRef in items)
                    {
                        packet.WriteByte(0);
                        packet.WriteInt32(asda2ItemTradeRef.Item.ItemId);
                        packet.WriteByte((byte)asda2ItemTradeRef.Item.InventoryType);
                        packet.WriteInt16(asda2ItemTradeRef.Item.Slot);
                        packet.WriteSkip(Asda2AuctionHandler.stab15);
                        packet.WriteInt32(asda2ItemTradeRef.Amount);
                        packet.WriteInt32(asda2ItemTradeRef.Item.Amount);
                        packet.WriteInt16(asda2ItemTradeRef.Item.Weight);
                        packet.WriteSkip(Asda2AuctionHandler.stab37);
                        packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight);
                        packet.WriteInt32(client.ActiveCharacter.Money);
                        packet.WriteInt64(-1L);
                    }
                }

                client.Send(packet, false);
            }
        }
        public static void SendConfimTradeFromOponentResponse(IRealmClient client, Asda2ItemTradeRef[] items)
        {
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ConfimTradeFromOponent))
            {
                packet.WriteInt32(1);
                packet.WriteByte(1);
                packet.WriteByte(1);
                for (int index = 0; index < 5; ++index)
                {
                    Asda2ItemTradeRef asda2ItemTradeRef = items[index];
                    packet.WriteInt32(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.ItemId);
                    packet.WriteByte(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Durability);
                    packet.WriteInt16(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Weight);
                    packet.WriteInt32(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Amount);
                    packet.WriteByte(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Enchant);
                    packet.WriteInt64(0L);
                    packet.WriteInt16(0);
                    packet.WriteInt16(asda2ItemTradeRef == null
            ? -1
            : (short)asda2ItemTradeRef.Item.Parametr1Type);
                    packet.WriteInt16(asda2ItemTradeRef == null ? -1 : asda2ItemTradeRef.Item.Parametr1Value);
                    packet.WriteInt16(asda2ItemTradeRef == null
            ? -1
            : (short)asda2ItemTradeRef.Item.Parametr2Type);
                    packet.WriteInt16(asda2ItemTradeRef == null ? -1 : asda2ItemTradeRef.Item.Parametr2Value);
                    packet.WriteInt16(asda2ItemTradeRef == null
            ? -1
            : (short)asda2ItemTradeRef.Item.Parametr3Type);
                    packet.WriteInt16(asda2ItemTradeRef == null ? -1 : asda2ItemTradeRef.Item.Parametr3Value);
                    packet.WriteInt16(asda2ItemTradeRef == null
            ? -1
            : (short)asda2ItemTradeRef.Item.Parametr4Type);
                    packet.WriteInt16(asda2ItemTradeRef == null ? -1 : asda2ItemTradeRef.Item.Parametr4Value);
                    packet.WriteInt16(asda2ItemTradeRef == null
            ? -1
            : (short)asda2ItemTradeRef.Item.Parametr5Type);
                    packet.WriteInt16(asda2ItemTradeRef == null ? -1 : asda2ItemTradeRef.Item.Parametr5Value);
                    packet.WriteByte(0);
                    packet.WriteInt16(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Soul1Id);
                    packet.WriteInt16(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Soul2Id);
                    packet.WriteInt16(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Soul3Id);
                    packet.WriteInt16(asda2ItemTradeRef == null ? 0 : asda2ItemTradeRef.Item.Soul4Id);
                }

                client.Send(packet, false);
            }
        }
 public static void SendWarEndedResponse(IRealmClient client, byte winingFaction, int winingFactionPoints,
                                         int losserFactionPoints, int honorPoints, short honorCoin, long expReward, string mvpName)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarEnded))
     {
         packet.WriteInt16(winingFaction);
         packet.WriteSkip(Asda2BattlegroundHandler.stab9);
         packet.WriteInt32(winingFactionPoints);
         packet.WriteInt32(losserFactionPoints);
         packet.WriteInt32(honorPoints);
         packet.WriteInt16(honorCoin);
         packet.WriteSkip(Asda2BattlegroundHandler.stab35);
         packet.WriteInt64(expReward);
         packet.WriteSkip(Asda2BattlegroundHandler.stab46);
         packet.WriteFixedAsciiString(mvpName, 20, Locale.Start);
         client.Send(packet, true);
     }
 }
Exemple #5
0
 public static void SendWarEndedResponse(IRealmClient client, byte winingFaction, int winingFactionPoints,
                                         int losserFactionPoints, int honorPoints, short honorCoin,
                                         long expReward, string mvpName)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.WarEnded)) //6732
     {
         packet.WriteInt16(winingFaction);                               //{winingFaction}default value : 1 Len : 2
         packet.WriteSkip(stab9);                                        //value name : stab9 default value : stab9Len : 12
         packet.WriteInt32(winingFactionPoints);                         //{winingFactionPoints}default value : 911 Len : 4
         packet.WriteInt32(losserFactionPoints);                         //{losserFactionPoints}default value : 120 Len : 4
         packet.WriteInt32(honorPoints);                                 //{HonorPoints}default value : 353 Len : 4
         packet.WriteInt16(honorCoin);                                   //{honorCoin}default value : 17 Len : 2
         packet.WriteSkip(stab35);                                       //value name : stab35 default value : stab35Len : 3
         packet.WriteInt64(expReward);                                   //{expReward}default value : 10000 Len : 8
         packet.WriteSkip(stab46);                                       //value name : stab46 default value : stab46Len : 16
         packet.WriteFixedAsciiString(mvpName, 20);                      //{mvpName}default value :  Len : 20
         client.Send(packet, addEnd: true);
     }
 }
        public static void SendAuthChallengeSuccessReply(IRealmClient client)
        {
            client.AuthAccount.OnLogin(client);
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.AuthorizeResponse))
            {
                packet.Write((short)1);
                packet.WriteInt32(client.AuthAccount.AccountId);
                packet.WriteByte(1);
                client.Send(packet, false);
            }

            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ChanelInfoResponse))
            {
                packet.WriteByte(244);
                packet.WriteInt16(2049);
                packet.WriteInt16(100);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt16(-1);
                client.Send(packet, false);
            }

            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ChanelInfoResponse))
            {
                packet.WriteByte(244);
                packet.WriteInt16(2049);
                packet.WriteInt16(100);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt16(-1);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt64(-1L);
                packet.WriteInt16(-1);
                client.Send(packet, false);
            }
        }
        public static void SendAuthChallengeSuccessReply(IRealmClient client)
        {
            client.AuthAccount.OnLogin(client);

            using (var packet = new RealmPacketOut(RealmServerOpCode.AuthorizeResponse))
            {
                packet.Write((Int16)AccountStatus.Success);      //status
                packet.WriteInt32(client.AuthAccount.AccountId); //unknown
                packet.WriteByte(1);                             //avalible
                client.Send(packet, addEnd: false);
            }
            using (var packet = new RealmPacketOut(RealmServerOpCode.ChanelInfoResponse)) //1013
            {
                packet.WriteByte(0xF4);                                                   // unknown
                packet.WriteInt16(2049);                                                  //unknown
                packet.WriteInt16(100);                                                   //chanel1
                packet.WriteInt16(-1);                                                    //chanel2
                packet.WriteInt16(-1);                                                    //chanel3
                packet.WriteInt16(-1);                                                    //chanel4
                packet.WriteInt16(-1);                                                    //chanel5
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt16(-1);                                                    //unknown
                client.Send(packet, addEnd: false);
            }
            using (var packet = new RealmPacketOut(RealmServerOpCode.ChanelInfoResponse)) //1013
            {
                packet.WriteByte(0xF4);                                                   // unknown
                packet.WriteInt16(2049);                                                  //unknown
                packet.WriteInt16(100);                                                   //chanel1
                packet.WriteInt16(-1);                                                    //chanel2
                packet.WriteInt16(-1);                                                    //chanel3
                packet.WriteInt16(-1);                                                    //chanel4
                packet.WriteInt16(-1);                                                    //chanel5
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt64(-1);                                                    //unknown
                packet.WriteInt16(-1);                                                    //unknown
                client.Send(packet, addEnd: false);
            }
        }
 public static void SendConfimTradeFromOponentResponse(IRealmClient client, Asda2ItemTradeRef[] items)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.ConfimTradeFromOponent)) //5292
     {
         packet.WriteInt32(1);                                                         //{itemsCount}default value : 1 Len : 4
         packet.WriteByte(1);                                                          //value name : unk1 default value : 1Len : 1
         packet.WriteByte(1);                                                          //value name : unk1 default value : 1Len : 1
         for (int i = 0; i < 5; i += 1)
         {
             var item = items[i];
             packet.WriteInt32(item == null ? 0 : item.Item.ItemId);                //{itemId%}default value : 0 Len : 4
             packet.WriteByte(item == null ? 0 : item.Item.Durability);             //{durability%}default value : 0 Len : 1
             packet.WriteInt16(item == null ? 0 : item.Item.Weight);                //{weight%}default value : 0 Len : 2
             packet.WriteInt32(item == null ? 0 : item.Amount);                     //{quantity}default value : 0 Len : 4
             packet.WriteByte(item == null ? 0 : item.Item.Enchant);                //{enchant%}default value : 0 Len : 1
             packet.WriteInt64(0);                                                  //value name : unk8 default value : 0Len : 8
             packet.WriteInt16(0);                                                  //value name : unk2 default value : 0Len : 2
             packet.WriteInt16(item == null ? -1 : (short)item.Item.Parametr1Type); //{parametr1Type%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : item.Item.Parametr1Value);       //{paramtetr1Value%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : (short)item.Item.Parametr2Type); //{parametr1Type%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : item.Item.Parametr2Value);       //{paramtetr1Value%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : (short)item.Item.Parametr3Type); //{parametr1Type%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : item.Item.Parametr3Value);       //{paramtetr1Value%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : (short)item.Item.Parametr4Type); //{parametr1Type%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : item.Item.Parametr4Value);       //{paramtetr1Value%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : (short)item.Item.Parametr5Type); //{parametr1Type%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? -1 : item.Item.Parametr5Value);       //{paramtetr1Value%}default value : -1 Len : 2
             packet.WriteByte(0);                                                   //value name : unk1 default value : 0Len : 1
             packet.WriteInt16(item == null ? 0 : item.Item.Soul1Id);               //{soul1Id%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? 0 : item.Item.Soul2Id);               //{soul1Id%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? 0 : item.Item.Soul3Id);               //{soul1Id%}default value : -1 Len : 2
             packet.WriteInt16(item == null ? 0 : item.Item.Soul4Id);               //{soul1Id%}default value : -1 Len : 2
         }
         client.Send(packet, addEnd: false);
     }
 }
 public static void SendCharacterNamesResponse(IRealmClient client)
 {
     SendCharacterInfoLSResponse(client);
     using (var packet = new RealmPacketOut(RealmServerOpCode.CharacterNames))//1006
     {
         byte hair1   = 0;
         byte hair2   = 0;
         byte hair3   = 0;
         byte color1  = 0;
         byte color2  = 0;
         byte color3  = 0;
         byte zodiac1 = 0;
         byte zodiac2 = 0;
         byte zodiac3 = 0;
         byte face1   = 0;
         byte face2   = 0;
         byte face3   = 0;
         packet.WriteInt32(0);//unknown
         foreach (var character in client.AuthAccount.Characters)
         {
             if (character.CharNum == 10)
             {
                 hair1   = character.HairStyle;
                 color1  = character.HairColor;
                 face1   = character.Face;
                 zodiac1 = character.Zodiac;
             }
             if (character.CharNum == 11)
             {
                 hair2   = character.HairStyle;
                 color2  = character.HairColor;
                 face2   = character.Face;
                 zodiac2 = character.Zodiac;
             }
             if (character.CharNum == 12)
             {
                 hair3   = character.HairStyle;
                 color3  = character.HairColor;
                 face3   = character.Face;
                 zodiac3 = character.Zodiac;
             }
             packet.WriteByte(character.CharNum);         //default value : 0
             packet.WriteAsdaString(character.Name, 21);  //default value : "",21
             packet.WriteByte((byte)character.Gender);    //default value : 1
             packet.WriteByte(character.ProfessionLevel); //value name : _
             packet.WriteByte((byte)character.Class);     //value name : _
             packet.WriteByte(character.Level);           //default value : 0
             packet.WriteInt64(0);                        //value name : _
             packet.WriteInt32(character.Health);         //default value : 0
             packet.WriteInt16(character.Power);          //default value : 0
             packet.WriteInt32(character.Health);         //default value : 265
             packet.WriteInt16(character.Power);          //default value : 100
             packet.WriteInt16(character.BaseStrength);   //default value : 1
             packet.WriteInt16(character.BaseAgility);    //default value : 2
             packet.WriteInt16(character.BaseStamina);    //default value : 3
             packet.WriteInt16(character.BaseSpirit);     //default value : 4
             packet.WriteInt16(character.BaseIntellect);  //default value : 5
             packet.WriteInt16(10);                       //default value : 6
             packet.WriteByte(0);                         //value name : _
         }
         for (int i = 0; i < 3 - client.AuthAccount.Characters.Count; i++)
         {
             packet.WriteByte(0);            //default value : 0
             packet.WriteAsdaString("", 21); //default value : "",21
             packet.WriteByte(0);            //default value : 1
             packet.WriteByte(0);            //value name : _
             packet.WriteByte(0);            //value name : _
             packet.WriteByte(0);            //default value : 0
             packet.WriteInt64(0);           //value name : _
             packet.WriteInt32(0);           //default value : 0
             packet.WriteInt16(0);           //default value : 0
             packet.WriteInt32(0);           //default value : 265
             packet.WriteInt16(0);           //default value : 100
             packet.WriteInt16(0);           //default value : 1
             packet.WriteInt16(0);           //default value : 2
             packet.WriteInt16(0);           //default value : 3
             packet.WriteInt16(0);           //default value : 4
             packet.WriteInt16(0);           //default value : 5
             packet.WriteInt16(0);           //default value : 6
             packet.WriteByte(0);            //value name : _
         }
         packet.WriteByte(hair1);            //default value : 1
         packet.WriteByte(color1);           //default value : 1
         packet.WriteByte(face1);            //default value : 1
         packet.WriteByte(hair2);            //default value : 1
         packet.WriteByte(color2);           //default value : 1
         packet.WriteByte(face2);            //default value : 1
         packet.WriteByte(hair3);            //default value : 1
         packet.WriteByte(color3);           //default value : 1
         packet.WriteByte(face3);            //default value : 1
         packet.WriteByte(zodiac1);          //default value : 1
         packet.WriteByte(zodiac2);          //default value : 1
         packet.WriteByte(zodiac3);          //default value : 1
         for (int i = 0; i < 16; i++)
         {
             packet.WriteByte(1);
         }
         packet.WriteInt32(63);
         client.Send(packet, addEnd: false);
     }
     SendShowCharactersViewResponse(client);
 }
Exemple #10
0
        public static void SendEnterGameResposeResponse(IRealmClient client)
        {
            if (client.Account == null)
            {
                return;
            }
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.EnterGameRespose))
            {
                RealmAccount account         = client.Account;
                Character    activeCharacter = account.ActiveCharacter;
                if (activeCharacter == null)
                {
                    return;
                }
                packet.WriteInt32(account.AccountId);
                packet.WriteFixedAsciiString(activeCharacter.Name, 20, Locale.Start);
                packet.WriteInt16(activeCharacter.Record.CharNum);
                packet.WriteByte(activeCharacter.Record.Zodiac);
                packet.WriteByte((byte)activeCharacter.Gender);
                packet.WriteByte(activeCharacter.ProfessionLevel);
                packet.WriteByte((byte)activeCharacter.Archetype.ClassId);
                packet.WriteByte(activeCharacter.Level);
                packet.WriteUInt32(activeCharacter.Experience);
                packet.WriteInt32(0);
                packet.WriteInt16(activeCharacter.Spells.AvalibleSkillPoints);
                packet.WriteInt16(0);
                packet.WriteByte(0);
                packet.WriteInt16(15000);
                packet.WriteInt16(1000);
                packet.WriteInt64(0L);
                packet.WriteByte(0);
                packet.WriteByte(3);
                packet.WriteInt16((client.ActiveCharacter.Record.PremiumWarehouseBagsCount + 1) * 30);
                packet.WriteInt16(
                    client.ActiveCharacter.Asda2Inventory.WarehouseItems.Count(
                        i => i != null));
                packet.WriteInt16((client.ActiveCharacter.Record.PremiumAvatarWarehouseBagsCount + 1) * 30);
                packet.WriteInt16(
                    client.ActiveCharacter.Asda2Inventory.AvatarWarehouseItems
                    .Count(i => i != null));
                packet.WriteByte(0);
                packet.WriteByte(1);
                packet.WriteInt16(-1);
                packet.WriteInt16(0);
                packet.WriteByte(activeCharacter.Record.Zodiac);
                packet.WriteByte(activeCharacter.HairStyle);
                packet.WriteByte(activeCharacter.HairColor);
                packet.WriteByte(activeCharacter.Facial);
                packet.WriteInt32(activeCharacter.Health);
                packet.WriteInt16(activeCharacter.Power);
                packet.WriteInt32(activeCharacter.MaxHealth);
                packet.WriteInt16(activeCharacter.MaxPower);
                packet.WriteInt16((short)activeCharacter.MinDamage);
                packet.WriteInt16((short)activeCharacter.MaxDamage);
                packet.WriteInt16((short)activeCharacter.RangedAttackPower);
                packet.WriteInt16((short)activeCharacter.RangedAttackPower);
                packet.WriteInt16(activeCharacter.ArcaneResist);
                packet.WriteInt16(activeCharacter.Defense);
                packet.WriteInt16(activeCharacter.Defense);
                packet.WriteInt32(activeCharacter.BlockValue);
                packet.WriteInt32(activeCharacter.BlockValue);
                packet.WriteInt16(15);
                packet.WriteInt16(7);
                packet.WriteInt16(4);
                packet.WriteSkip(unk51);
                packet.WriteSkip(activeCharacter.SettingsFlags);
                packet.WriteInt32(activeCharacter.AvatarMask);
                for (int index = 11; index < 20; ++index)
                {
                    Asda2Item asda2Item = client.ActiveCharacter.Asda2Inventory.Equipment[index];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                }

                client.Send(packet, false);
            }
        }
        public static void SendCharacterNamesResponse(IRealmClient client)
        {
            AuthenticationHandler.SendCharacterInfoLSResponse(client);
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterNames))
            {
                byte val1  = 0;
                byte val2  = 0;
                byte val3  = 0;
                byte val4  = 0;
                byte val5  = 0;
                byte val6  = 0;
                byte val7  = 0;
                byte val8  = 0;
                byte val9  = 0;
                byte val10 = 0;
                byte val11 = 0;
                byte val12 = 0;
                packet.WriteInt32(0);
                foreach (CharacterRecord character in client.AuthAccount.Characters)
                {
                    if (character.CharNum == (byte)10)
                    {
                        val1  = character.HairStyle;
                        val4  = character.HairColor;
                        val10 = character.Face;
                        val7  = character.Zodiac;
                    }

                    if (character.CharNum == (byte)11)
                    {
                        val2  = character.HairStyle;
                        val5  = character.HairColor;
                        val11 = character.Face;
                        val8  = character.Zodiac;
                    }

                    if (character.CharNum == (byte)12)
                    {
                        val3  = character.HairStyle;
                        val6  = character.HairColor;
                        val12 = character.Face;
                        val9  = character.Zodiac;
                    }

                    packet.WriteByte(character.CharNum);
                    packet.WriteAsdaString(character.Name, 21, Locale.Start);
                    packet.WriteByte((byte)character.Gender);
                    packet.WriteByte(character.ProfessionLevel);
                    packet.WriteByte((byte)character.Class);
                    packet.WriteByte(character.Level);
                    packet.WriteInt64(0L);
                    packet.WriteInt32(character.Health);
                    packet.WriteInt16(character.Power);
                    packet.WriteInt32(character.Health);
                    packet.WriteInt16(character.Power);
                    packet.WriteInt16(character.BaseStrength);
                    packet.WriteInt16(character.BaseAgility);
                    packet.WriteInt16(character.BaseStamina);
                    packet.WriteInt16(character.BaseSpirit);
                    packet.WriteInt16(character.BaseIntellect);
                    packet.WriteInt16(10);
                    packet.WriteByte(0);
                }

                for (int index = 0; index < 3 - client.AuthAccount.Characters.Count; ++index)
                {
                    packet.WriteByte(0);
                    packet.WriteAsdaString("", 21, Locale.Start);
                    packet.WriteByte(0);
                    packet.WriteByte(0);
                    packet.WriteByte(0);
                    packet.WriteByte(0);
                    packet.WriteInt64(0L);
                    packet.WriteInt32(0);
                    packet.WriteInt16(0);
                    packet.WriteInt32(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteInt16(0);
                    packet.WriteByte(0);
                }

                packet.WriteByte(val1);
                packet.WriteByte(val4);
                packet.WriteByte(val10);
                packet.WriteByte(val2);
                packet.WriteByte(val5);
                packet.WriteByte(val11);
                packet.WriteByte(val3);
                packet.WriteByte(val6);
                packet.WriteByte(val12);
                packet.WriteByte(val7);
                packet.WriteByte(val8);
                packet.WriteByte(val9);
                for (int index = 0; index < 16; ++index)
                {
                    packet.WriteByte(1);
                }
                packet.WriteInt32(63);
                client.Send(packet, false);
            }

            AuthenticationHandler.SendShowCharactersViewResponse(client);
        }
        public static void SendEnterGameResposeResponse(IRealmClient client)
        {
            if (client.Account == null)
            {
                return;
            }
            using (var packet = new RealmPacketOut(RealmServerOpCode.EnterGameRespose))//1017
            {
                var acc = client.Account;
                var ch  = acc.ActiveCharacter;
                if (ch == null)
                {
                    return;
                }
                packet.WriteInt32(acc.AccountId);                                                                    //{accId}default value : 6256236
                packet.WriteFixedAsciiString(ch.Name, 20);                                                           //{name}default value :
                packet.WriteInt16(ch.Record.CharNum);                                                                //{charNum}default value : 11
                packet.WriteByte(ch.Record.Zodiac);                                                                  //{zodiac}default value : 0
                packet.WriteByte((byte)ch.Gender);                                                                   //{gender}default value : 1
                packet.WriteByte(ch.ProfessionLevel);                                                                //value name : unk9 default value : 0
                packet.WriteByte((byte)ch.Archetype.ClassId);                                                        //value name : unk10 default value : 0
                packet.WriteByte(ch.Level);                                                                          //{level}default value : 1
                packet.WriteUInt32(ch.Experience);                                                                   //{expCount}default value : 0
                packet.WriteInt32(0);                                                                                //value name : unk13 default value : 0
                packet.WriteInt16(ch.Spells.AvalibleSkillPoints);                                                    //value name : unk14 default value : 0
                packet.WriteInt16(0);                                                                                //value name : unk15 default value : 0
                packet.WriteByte(0);                                                                                 //value name : unk16 default value : 0
                packet.WriteInt16(15000);                                                                            //{weightMax}default value : 15000
                packet.WriteInt16(1000);                                                                             //{weightMin}default value : 2011
                packet.WriteInt64(0);                                                                                //value name : unk19 default value : 0Len : 8
                packet.WriteByte(0);                                                                                 //value name : unk20 default value : 0Len : 1
                packet.WriteByte(3);                                                                                 //value name : unk21 default value : 3Len : 1
                packet.WriteInt16((client.ActiveCharacter.Record.PremiumWarehouseBagsCount + 1) * 30);               //value name : unk22 default value : 30Len : 1
                packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.WarehouseItems.Count(i => i != null));       //value name : wh zanyato default value : 4Len : 2
                packet.WriteInt16((client.ActiveCharacter.Record.PremiumAvatarWarehouseBagsCount + 1) * 30);         //value name : unk26 default value : 30Len : 1
                packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.AvatarWarehouseItems.Count(i => i != null)); //value name : wh zanyato default value : 4Len : 2
                packet.WriteByte(0);                                                                                 //value name : unk240 default value : 1Len : 1
                packet.WriteByte(1);                                                                                 //value name : unk240 default value : 1Len : 1
                packet.WriteInt16(-1);                                                                               //value name : unk250 default value : -1Len : 2
                packet.WriteInt16(0);                                                                                //value name : unk260 default value : 0Len : 2
                packet.WriteByte(ch.Record.Zodiac);                                                                  //{zodiac0}default value : 11
                packet.WriteByte(ch.HairStyle);                                                                      //{hairStyle}default value : 4
                packet.WriteByte(ch.HairColor);                                                                      //{hairColor}default value : 5
                packet.WriteByte(ch.Facial);                                                                         //{face0}default value : 27
                packet.WriteInt32(ch.Health);                                                                        //{maxHp}default value : 100
                packet.WriteInt16(ch.Power);                                                                         //{maxMp}default value : 100
                packet.WriteInt32(ch.MaxHealth);                                                                     //{curHp}default value : 100
                packet.WriteInt16(ch.MaxPower);                                                                      //{curMp}default value : 100
                packet.WriteInt16((short)ch.MinDamage);                                                              //{minAtk}default value : 4
                packet.WriteInt16((short)ch.MaxDamage);                                                              //{maxAtk}default value : 5
                packet.WriteInt16((short)ch.RangedAttackPower);                                                      //{minMAtk}default value : 1
                packet.WriteInt16((short)ch.RangedAttackPower);                                                      //{maxMAtk}default value : 1
                packet.WriteInt16(ch.ArcaneResist);                                                                  //{mDef}default value : 0
                packet.WriteInt16(ch.Defense);                                                                       //{minDef}default value : 17
                packet.WriteInt16(ch.Defense);                                                                       //{maxDef}default value : 28
                packet.WriteInt32(ch.BlockValue);                                                                    //{minBlock}default value : 0
                packet.WriteInt32(ch.BlockValue);                                                                    //{maxBlock}default value : 0
                packet.WriteInt16(15);                                                                               //value name : unk44 default value : 15Len : 2
                packet.WriteInt16(7);                                                                                //value name : unk45 default value : 7Len : 2
                packet.WriteInt16(4);                                                                                //value name : unk46 default value : 4Len : 2
                packet.WriteSkip(unk51);                                                                             //value name : unk51 default value : unk51Len : 28
                packet.WriteSkip(ch.SettingsFlags);                                                                  //{settingsBytes}default value : settingsBytes Len : 16
                packet.WriteInt32(ch.AvatarMask);                                                                    //{avatarMask}default value : 47 Len : 4
                for (int i = 11; i < 20; i += 1)
                {
                    var item = client.ActiveCharacter.Asda2Inventory.Equipment[i];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);

                    /*packet.WriteInt32(item == null ? 0 : item.ItemId);//{itemId}default value : 0
                     * packet.WriteByte(item == null ? 0 : 3);//{invNum}default value : 0
                     * packet.WriteInt32(item == null ? -1 : i);//{cellNum}default value : -1
                     * packet.WriteInt32(0);//value name : unk51 default value : 0
                     * packet.WriteInt16(0);//{weight}default value : 0
                     * packet.WriteSkip(Stab180);//value name : stab180 default value : stab180
                     * packet.WriteInt16(item == null ? -1 : 0);//{eqiped}default value : -1
                     * packet.WriteSkip(Stab198);//value name : stab198 default value : stab198
                     * packet.WriteInt16(item == null ? -1 : 0);//{equiped}default value : -1
                     * packet.WriteSkip(Stab202);//value name : stab202 default value : stab202
                     * packet.WriteByte(item == null ? 0 : 2);//{eq}default value : 0 if not, 2 if yes
                     * packet.WriteInt32(0);//value name : unk59 default value : 0
                     * packet.WriteInt16(0);//value name : _ default value : 0*/
                }
                client.Send(packet, addEnd: false);
            }
        }