Esempio n. 1
0
        public static void SendFaceOrHairChangedResponse(IRealmClient client, bool isHair, bool success = false,
                                                         Asda2Item usedItem = null)
        {
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.FaceOrHairChanged))
            {
                packet.WriteByte(success ? 1 : 0);
                packet.WriteByte(isHair ? 1 : 2);
                packet.WriteByte(client.ActiveCharacter.HairStyle);
                packet.WriteByte(client.ActiveCharacter.HairColor);
                packet.WriteByte(client.ActiveCharacter.Record.Face);
                packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight);
                packet.WriteInt32(client.ActiveCharacter.Money);
                Asda2InventoryHandler.WriteItemInfoToPacket(packet, usedItem, false);
                client.Send(packet, true);
                if (!success)
                {
                    return;
                }
                AchievementProgressRecord progressRecord =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(9U);
                switch (++progressRecord.Counter)
                {
                case 50:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Beautiful47);
                    break;

                case 100:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Beautiful47);
                    break;
                }

                progressRecord.SaveAndFlush();
            }
        }
Esempio n. 2
0
        public static void SendItemBuyedFromPrivateShopResponse(Character chr, PrivateShopBuyResult status,
                                                                List <Asda2Item> buyedItems)
        {
            Asda2Item[] asda2ItemArray = new Asda2Item[6];
            if (buyedItems != null)
            {
                for (int index = 0; index < buyedItems.Count; ++index)
                {
                    asda2ItemArray[index] = buyedItems[index];
                }
            }

            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemBuyedFromPrivateShop))
            {
                packet.WriteByte((byte)status);
                if (status == PrivateShopBuyResult.Ok)
                {
                    packet.WriteInt16(chr.Asda2Inventory.Weight);
                    packet.WriteInt32(chr.Money);
                    packet.WriteByte(buyedItems.Count <Asda2Item>((Func <Asda2Item, bool>)(i => i != null)));
                    for (int index = 0; index < 6; ++index)
                    {
                        Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2ItemArray[index], false);
                    }
                }

                chr.Send(packet, false);
            }
        }
 public static void SendFactionResetedResponse(IRealmClient client, bool ok, Asda2Item item)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.FactionReseted))
     {
         packet.WriteByte(ok ? 1 : 0);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, true);
         client.Send(packet, false);
     }
 }
 public static void SendFactionResetedResponse(IRealmClient client, bool ok, Asda2Item item)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.FactionReseted)) //6705
     {
         packet.WriteByte(ok ? 1 : 0);                                         //{status}default value : 1 Len : 1
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, true);
         client.Send(packet);
     }
 }
Esempio n. 5
0
 public static void SendMailItemTakedResponse(IRealmClient client, Asda2MailItemTakedStatus status, Asda2Item item)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.MailItemTaked)) //6625
     {
         packet.WriteByte((byte)status);                                      //{status}default value : 1 Len : 1
         packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);     //{weight}default value : 10565 Len : 2
         packet.WriteInt32(client.ActiveCharacter.Money);                     //{money}default value : 5538958 Len : 4
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
         client.Send(packet, addEnd: true);
     }
 }
Esempio n. 6
0
 public static void SendMailItemTakedResponse(IRealmClient client, Asda2MailItemTakedStatus status,
                                              Asda2Item item)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.MailItemTaked))
     {
         packet.WriteByte((byte)status);
         packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
         packet.WriteInt32(client.ActiveCharacter.Money);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
         client.Send(packet, true);
     }
 }
Esempio n. 7
0
 public static void SendPetNameChangedResponse(IRealmClient client, Asda2PetNamehangeResult status, Asda2PetRecord pet, Asda2Item changeNameItem)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.PetNameChanged)) //6119
     {
         packet.WriteByte((byte)status);                                       //{status}default value : 1 Len : 1
         packet.WriteInt32(client.ActiveCharacter.AccId);                      //{accId}default value : 355335 Len : 4
         packet.WriteInt32(pet == null ? 0 : pet.Guid);                        //{petId}default value : 54857 Len : 4
         packet.WriteFixedAsciiString(pet == null ? "" : pet.Name, 16);        //{petName}default value :  Len : 21
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, changeNameItem, false);
         client.Send(packet, addEnd: true);
     }
 }
Esempio n. 8
0
 public static void SendMailMessageInfoResponse(IRealmClient client, ShowMailMessageStatus status, Asda2MailMessage msg)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.MailMessageInfo)) //6623
     {
         packet.WriteByte((byte)status);                                        //{status}default value : 1 Len : 1
         packet.WriteInt32((int)(msg == null?0:msg.Guid));                      //{msgGuid}default value : 379808 Len : 4
         packet.WriteInt32(msg == null ? 0 : msg.Gold);                         //{goldAmount}default value : 5600 Len : 4
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, msg == null ? null:msg.Item, true);
         packet.WriteFixedAsciiString(msg == null ?"":msg.Body, 128);           //{message}default value :  Len : 128
         client.Send(packet, addEnd: true);
     }
 }
Esempio n. 9
0
        public static void SendInventoryInfoResponse(IRealmClient client)
        {
            var inventory      = client.ActiveCharacter.Asda2Inventory;
            var inventoryPacks = new List <List <Asda2Item> >();
            var itemIndex      = 0;
            var allItems       = inventory.RegularItems.Where(it => it != null).ToArray();

            while (itemIndex < allItems.Length)
            {
                inventoryPacks.Add(new List <Asda2Item>(allItems.Skip(itemIndex).Take(9)));
                itemIndex += 9;
            }
            foreach (var inventoryPack in inventoryPacks)
            {
                using (var packet = new RealmPacketOut(RealmServerOpCode.RegularInventoryInfo))//4048
                {
                    for (int i = 0; i < inventoryPack.Count; i += 1)
                    {
                        var item = inventoryPack[i];
                        if (item != null)
                        {
                            Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
                        }
                        //WriteItemDataToPacket(item, packet, 2);
                    }
                    client.Send(packet, addEnd: false);
                }
            }
            inventoryPacks.Clear();
            itemIndex = 0;
            allItems  = inventory.ShopItems.Where(it => it != null).ToArray();
            while (itemIndex < allItems.Length)
            {
                inventoryPacks.Add(new List <Asda2Item>(allItems.Skip(itemIndex).Take(9)));
                itemIndex += 9;
            }
            foreach (var inventoryPack in inventoryPacks)
            {
                using (var packet = new RealmPacketOut(RealmServerOpCode.ShopInventoryInfo))//4045
                {
                    for (int i = 0; i < inventoryPack.Count; i += 1)
                    {
                        var item = inventoryPack[i];
                        if (item != null)
                        {
                            Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
                        }
                        //WriteItemDataToPacket(item, packet, 1);
                    }
                    client.Send(packet, addEnd: false);
                }
            }
        }
Esempio n. 10
0
 public static void SendVeicheRegisteredResponse(Character chr, Asda2Item veicheItem, RegisterMountStatus status,
                                                 int veicheId = -1)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.VeicheRegistered)) //6769
     {
         packet.WriteByte((byte)status);                                         //{status}default value : 1 Len : 1
         packet.WriteInt32(chr.AccId);                                           //{accId}default value : 361343 Len : 4
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, veicheItem);
         packet.WriteInt16(chr.Asda2Inventory.Weight);                           //{invWeight}default value : 11847 Len : 2
         packet.WriteInt32(veicheId);                                            //value name : unk4 default value : 56Len : 4
         chr.Send(packet);
     }
 }
Esempio n. 11
0
 public static void SendMailMessageInfoResponse(IRealmClient client, ShowMailMessageStatus status,
                                                Asda2MailMessage msg)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.MailMessageInfo))
     {
         packet.WriteByte((byte)status);
         packet.WriteInt32(msg == null ? 0 : (int)msg.Guid);
         packet.WriteInt32(msg == null ? 0U : msg.Gold);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, msg == null ? (Asda2Item)null : msg.Item, true);
         packet.WriteFixedAsciiString(msg == null ? "" : msg.Body, 128, Locale.Start);
         client.Send(packet, true);
     }
 }
Esempio n. 12
0
 public static void SendUpdateShopItemInfoResponse(IRealmClient client, UseFunctionalItemError status, Asda2Item funcItem = null)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.UpdateShopItemInfo))                                                                   //5451
     {
         packet.WriteByte((byte)status);                                                                                                             //{status}default value : 1 Len : 1
         packet.WriteInt16(client.ActiveCharacter.SessionId);                                                                                        //{sessId}default value : 57 Len : 2
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, funcItem, false);
         packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);                                                                            //{invWeight}default value : 10364 Len : 2
         packet.WriteInt32((int)(funcItem == null ? 0 : funcItem.Record == null ? -1 : (funcItem.Record.AuctionEndTime - DateTime.Now).TotalHours)); //value name : unk4 default value : 0Len : 4
         packet.WriteInt16(15000);
         client.Send(packet, addEnd: true);
     }
 }
Esempio n. 13
0
 public static void SendPetNameChangedResponse(IRealmClient client, Asda2PetNamehangeResult status,
                                               Asda2PetRecord pet, Asda2Item changeNameItem)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.PetNameChanged))
     {
         packet.WriteByte((byte)status);
         packet.WriteInt32(client.ActiveCharacter.AccId);
         packet.WriteInt32(pet == null ? 0 : pet.Guid);
         packet.WriteFixedAsciiString(pet == null ? "" : pet.Name, 16, Locale.Start);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, changeNameItem, false);
         client.Send(packet, true);
     }
 }
Esempio n. 14
0
 public static void SendVeicheRegisteredResponse(Character chr, Asda2Item veicheItem,
                                                 Asda2MountHandler.RegisterMountStatus status, int veicheId = -1)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.VeicheRegistered))
     {
         packet.WriteByte((byte)status);
         packet.WriteInt32(chr.AccId);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, veicheItem, false);
         packet.WriteInt16(chr.Asda2Inventory.Weight);
         packet.WriteInt32(veicheId);
         chr.Send(packet, false);
     }
 }
Esempio n. 15
0
        public static void SendCharacterRegularEquipmentInfoResponse(IRealmClient client, Character target)
        {
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterRegularEquipmentInfo))
            {
                packet.WriteInt32(target.AccId);
                for (int index = 0; index < 11; ++index)
                {
                    Asda2Item asda2Item = target.Asda2Inventory.Equipment[index];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                }

                client.Send(packet, true);
            }
        }
Esempio n. 16
0
 public static void SendDigEndedResponse(IRealmClient client, bool success, Asda2Item item = null)
 {
     if (client == null || client.ActiveCharacter == null)
     {
         return;
     }
     using (var packet = new RealmPacketOut(RealmServerOpCode.DigEnded)) //5431
     {
         packet.WriteByte(success ? 1 : 0);                              //{status}default value : 1 Len : 1
         packet.WriteInt16(client.ActiveCharacter.SessionId);            //{sessId}default value : 32 Len : 2
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
         client.ActiveCharacter.SendPacketToArea(packet);
     }
 }
Esempio n. 17
0
 public static void SendFaceOrHairChangedResponse(IRealmClient client, bool isHair, bool success = false, Asda2Item usedItem = null)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.FaceOrHairChanged)) //5471
     {
         packet.WriteByte(success?1:0);                                           //{status}default value : 1 Len : 1
         packet.WriteByte(isHair?1:2);                                            //{hair1face2}default value : 2 Len : 1
         packet.WriteByte(client.ActiveCharacter.HairStyle);                      //{hairId}default value : 3 Len : 1
         packet.WriteByte(client.ActiveCharacter.HairColor);                      //{hairColor}default value : 3 Len : 1
         packet.WriteByte(client.ActiveCharacter.Record.Face);                    //{faceId}default value : 105 Len : 1
         packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight);         //{invWeight}default value : 10202 Len : 4
         packet.WriteInt32(client.ActiveCharacter.Money);                         //{money}default value : 41512584 Len : 4
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, usedItem, false);
         client.Send(packet, addEnd: true);
     }
 }
Esempio n. 18
0
 public static void SendUpdateShopItemInfoResponse(IRealmClient client, UseFunctionalItemError status,
                                                   Asda2Item funcItem = null)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.UpdateShopItemInfo))
     {
         packet.WriteByte((byte)status);
         packet.WriteInt16(client.ActiveCharacter.SessionId);
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, funcItem, false);
         packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
         packet.WriteInt32(funcItem == null
             ? 0
             : (funcItem.Record == null
                 ? -1
                 : (int)(funcItem.Record.AuctionEndTime - DateTime.Now).TotalHours));
         packet.WriteInt16(15000);
         client.Send(packet, true);
         client.ActiveCharacter.SendPacketToArea(packet, true, true, Locale.Any, new float?());
     }
 }
        public static void DismissPlayerFromWarRequest(IRealmClient client, RealmPacketIn packet)
        {
            short num = packet.ReadInt16();

            if (!client.ActiveCharacter.IsAsda2BattlegroundInProgress)
            {
                client.ActiveCharacter.YouAreFuckingCheater("Trying to dissmis someone while not on war.", 50);
            }
            else
            {
                Character character =
                    client.ActiveCharacter.CurrentBattleGround.GetCharacter(client.ActiveCharacter.Asda2FactionId,
                                                                            (byte)num);
                if (character == null)
                {
                    client.ActiveCharacter.SendWarMsg("Target character not found.");
                }
                using (RealmPacketOut packet1 = new RealmPacketOut(RealmServerOpCode.DismissPlayerFromWarRequestResult))
                {
                    if (character == null ||
                        !client.ActiveCharacter.CurrentBattleGround.TryStartDissmisProgress(client.ActiveCharacter,
                                                                                            character) || client.ActiveCharacter.Money < 10000U)
                    {
                        packet1.WriteByte(0);
                        packet1.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
                        Asda2InventoryHandler.WriteItemInfoToPacket(packet1, (Asda2Item)null, false);
                    }
                    else
                    {
                        packet1.WriteByte(1);
                        packet1.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
                        Asda2InventoryHandler.WriteItemInfoToPacket(packet1,
                                                                    client.ActiveCharacter.Asda2Inventory.GetRegularItem((short)0), false);
                        client.ActiveCharacter.SubtractMoney(10000U);
                    }

                    client.Send(packet1, true);
                }
            }
        }
Esempio n. 20
0
        public static void SendWarEndedOneResponse(IRealmClient client, IEnumerable <Asda2Item> prizeItems)
        {
            var items = new Asda2Item[4];
            var ind   = 0;

            foreach (var asda2Item in prizeItems)
            {
                items[ind++] = asda2Item;
            }
            using (var packet = new RealmPacketOut(RealmServerOpCode.WarEndedOne)) //6733
            {
                packet.WriteByte(1);                                               //value name : unk5 default value : 1Len : 1
                packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);   //{weight}default value : 10945 Len : 2
                packet.WriteInt32(client.ActiveCharacter.Money);                   //{money}default value : 5514558 Len : 4
                for (int i = 0; i < 4; i += 1)
                {
                    var item = items[i];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
                }
                client.Send(packet, addEnd: true);
            }
        }
        public static void SendWarEndedOneResponse(IRealmClient client, IEnumerable <Asda2Item> prizeItems)
        {
            Asda2Item[] asda2ItemArray = new Asda2Item[4];
            int         num            = 0;

            foreach (Asda2Item prizeItem in prizeItems)
            {
                asda2ItemArray[num++] = prizeItem;
            }
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarEndedOne))
            {
                packet.WriteByte(1);
                packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
                packet.WriteInt32(client.ActiveCharacter.Money);
                for (int index = 0; index < 4; ++index)
                {
                    Asda2Item asda2Item = asda2ItemArray[index];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                }

                client.Send(packet, true);
            }
        }
Esempio n. 22
0
 public static void SendItemDisplayedResponse(Character displayer, Asda2Item item, Character reciever)
 {
     if (reciever == null)
     {
         using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemDisplayed))
         {
             packet.WriteInt32(displayer.AccId);
             packet.WriteFixedAsciiString(displayer.Name, 20, Locale.Start);
             Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
             displayer.SendPacketToArea(packet, true, true, Locale.Any, new float?());
         }
     }
     else
     {
         using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemDisplayed))
         {
             packet.WriteInt32(displayer.AccId);
             packet.WriteFixedAsciiString(displayer.Name, 20, Locale.Start);
             Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
             reciever.Send(packet, false);
         }
     }
 }
Esempio n. 23
0
        public static void SendCharacterFullInfoResponse(IRealmClient client, Character target)
        {
            AchievementProgressRecord progressRecord =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(8U);

            switch (++progressRecord.Counter)
            {
            case 500:
                client.ActiveCharacter.Map.CallDelayed(500,
                                                       () => client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Curious46));
                break;

            case 1000:
                client.ActiveCharacter.Map.CallDelayed(500,
                                                       () => client.ActiveCharacter.GetTitle(Asda2TitleId.Curious46));
                break;
            }

            progressRecord.SaveAndFlush();
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterFullInfo))
            {
                packet.WriteByte(target.Level);
                packet.WriteByte(target.ProfessionLevel);
                packet.WriteByte((byte)target.Archetype.ClassId);
                packet.WriteFixedAsciiString(target.Guild == null ? "" : target.Guild.Name, 17, Locale.Start);
                packet.WriteSkip(unk9);
                packet.WriteInt32(target.AccId);
                packet.WriteByte(3);
                for (int index = 0; index < 9; ++index)
                {
                    Asda2Item asda2Item = target.Asda2Inventory.Equipment[index + 11];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                }

                client.Send(packet, true);
            }
        }
Esempio n. 24
0
 public static void SendCraftedResponse(IRealmClient client, bool sucess, byte craftTimes, Asda2Item craftedItem, List <Asda2Item> craftMaterials)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.Crafted))       //6603
     {
         packet.WriteByte(sucess ? 1 : 0);                                    //{status}default value : 1 Len : 1
         packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);     //{weight}default value : 11558 Len : 2
         packet.WriteByte(client.ActiveCharacter.Record.CraftingLevel);       //{lvl}default value : 1 Len : 1
         packet.WriteInt32(0);                                                //value name : unk4 default value : 0Len : 4
         packet.WriteInt16((short)client.ActiveCharacter.Record.CraftingExp); //{expPrc}default value : 0 Len : 2
         packet.WriteInt16(craftTimes);                                       //{craftTimes}default value : 1 Len : 2
         Asda2InventoryHandler.WriteItemInfoToPacket(packet, craftedItem, false);
         for (int i = 0; i < craftMaterials.Count; i++)
         {
             var item = craftMaterials.Count <= i ? null : craftMaterials[i];
             Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
         }
         //  for (int i = 0; i < 7; i += 1)
         //{
         //  var item = craftMaterials.Count <= i ? null : craftMaterials[i];
         // Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
         //}
         client.Send(packet);
     }
 }
Esempio n. 25
0
        [PacketHandler(RealmServerOpCode.DismissPlayerFromWar)]//6186
        public static void DismissPlayerFromWarRequest(IRealmClient client, RealmPacketIn packet)
        {
            var warID = packet.ReadInt16();//default : 6Len : 2

            //  var charACCiD = packet.ReadInt32();//default : 357812Len : 4

            if (!client.ActiveCharacter.IsAsda2BattlegroundInProgress)
            {
                client.ActiveCharacter.YouAreFuckingCheater("Trying to dissmis someone while not on war.", 50);
                return;
            }
            var target = client.ActiveCharacter.CurrentBattleGround.GetCharacter(client.ActiveCharacter.Asda2FactionId,
                                                                                 (byte)warID);

            if (target == null)
            {
                client.ActiveCharacter.SendWarMsg("Target character not found.");
            }
            using (var p = new RealmPacketOut(RealmServerOpCode.DismissPlayerFromWarRequestResult))//6187
            {
                if (target == null || !client.ActiveCharacter.CurrentBattleGround.TryStartDissmisProgress(client.ActiveCharacter, target) || client.ActiveCharacter.Money < 10000)
                {
                    p.WriteByte(0);                                             //{status}default value : 1 Len : 1
                    p.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10665 Len : 2
                    Asda2InventoryHandler.WriteItemInfoToPacket(p, null, false);
                }
                else
                {
                    p.WriteByte(1);                                             //{status}default value : 1 Len : 1
                    p.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10665 Len : 2
                    Asda2InventoryHandler.WriteItemInfoToPacket(p, client.ActiveCharacter.Asda2Inventory.GetRegularItem(0), false);
                    client.ActiveCharacter.SubtractMoney(10000);
                }
                client.Send(p, addEnd: true);
            }
        }
Esempio n. 26
0
        public static void SendDigEndedResponse(IRealmClient client, bool success, Asda2Item item = null)
        {
            if (client == null || client.ActiveCharacter == null)
            {
                return;
            }
            AchievementProgressRecord progressRecord1 =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(116U);

            switch (++progressRecord1.Counter)
            {
            case 50:
                client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Shovel285);
                break;

            case 100:
                client.ActiveCharacter.GetTitle(Asda2TitleId.Shovel285);
                break;

            case 2500:
                client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Excavator286);
                break;

            case 5000:
                client.ActiveCharacter.GetTitle(Asda2TitleId.Excavator286);
                break;
            }

            progressRecord1.SaveAndFlush();
            Map     nonInstancedMap1 = World.GetNonInstancedMap(MapId.Alpia);
            Map     nonInstancedMap2 = World.GetNonInstancedMap(MapId.Silaris);
            Map     nonInstancedMap3 = World.GetNonInstancedMap(MapId.SunnyCoast);
            Map     nonInstancedMap4 = World.GetNonInstancedMap(MapId.Flabis);
            Vector3 point1           = new Vector3(131f + nonInstancedMap1.Offset, 265f + nonInstancedMap1.Offset, 0.0f);
            Vector3 point2           = new Vector3(110f + nonInstancedMap2.Offset, 144f + nonInstancedMap2.Offset, 0.0f);
            Vector3 point3           = new Vector3(226f + nonInstancedMap3.Offset, 353f + nonInstancedMap3.Offset, 0.0f);
            Vector3 point4           = new Vector3(270f + nonInstancedMap4.Offset, 263f + nonInstancedMap4.Offset, 0.0f);

            if (client.ActiveCharacter.Position.GetDistance(point1) < 10.0)
            {
                AchievementProgressRecord progressRecord2 =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(117U);
                switch (++progressRecord2.Counter)
                {
                case 500:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Burial287);
                    break;

                case 1000:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Burial287);
                    break;
                }

                progressRecord2.SaveAndFlush();
            }

            if (client.ActiveCharacter.Position.GetDistance(point2) < 50.0)
            {
                AchievementProgressRecord progressRecord2 =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(118U);
                switch (++progressRecord2.Counter)
                {
                case 500:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Archaeologist288);
                    break;

                case 1000:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Archaeologist288);
                    break;
                }

                progressRecord2.SaveAndFlush();
            }

            if (client.ActiveCharacter.Position.GetDistance(point3) < 25.0)
            {
                AchievementProgressRecord progressRecord2 =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(119U);
                switch (++progressRecord2.Counter)
                {
                case 500:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Shipwreck289);
                    break;

                case 1000:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Shipwreck289);
                    break;
                }

                progressRecord2.SaveAndFlush();
            }

            if (client.ActiveCharacter.Position.GetDistance(point4) < 50.0)
            {
                AchievementProgressRecord progressRecord2 =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(120U);
                switch (++progressRecord2.Counter)
                {
                case 500:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Oasis290);
                    break;

                case 1000:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Oasis290);
                    break;
                }

                progressRecord2.SaveAndFlush();
            }

            AchievementProgressRecord progressRecord3 =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(121U);
            AchievementProgressRecord progressRecord4 =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(122U);
            AchievementProgressRecord progressRecord5 =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(123U);
            AchievementProgressRecord progressRecord6 =
                client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(124U);

            switch (client.ActiveCharacter.MapId)
            {
            case MapId.Silaris:
                ++progressRecord4.Counter;
                progressRecord4.SaveAndFlush();
                break;

            case MapId.Alpia:
                ++progressRecord3.Counter;
                progressRecord3.SaveAndFlush();
                break;

            case MapId.Aquaton:
                ++progressRecord6.Counter;
                progressRecord6.SaveAndFlush();
                break;

            case MapId.Flamio:
                ++progressRecord5.Counter;
                progressRecord5.SaveAndFlush();
                break;
            }

            if (progressRecord3.Counter >= 1000U && progressRecord4.Counter >= 1000U &&
                (progressRecord5.Counter >= 1000U && progressRecord6.Counter >= 1000U))
            {
                client.ActiveCharacter.GetTitle(Asda2TitleId.Explorer291);
            }
            if (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Shovel285) &&
                client.ActiveCharacter.isTitleGetted(Asda2TitleId.Excavator286) &&
                (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Burial287) &&
                 client.ActiveCharacter.isTitleGetted(Asda2TitleId.Archaeologist288)) &&
                (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Shipwreck289) &&
                 client.ActiveCharacter.isTitleGetted(Asda2TitleId.Oasis290) &&
                 (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Explorer291) &&
                  client.ActiveCharacter.isTitleGetted(Asda2TitleId.Astrological292))) &&
                client.ActiveCharacter.isTitleGetted(Asda2TitleId.Treasure293))
            {
                client.ActiveCharacter.GetTitle(Asda2TitleId.Geologist294);
            }
            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.DigEnded))
            {
                packet.WriteByte(success ? 1 : 0);
                packet.WriteInt16(client.ActiveCharacter.SessionId);
                Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false);
                client.ActiveCharacter.SendPacketToArea(packet, true, true, Locale.Any, new float?());
            }
        }
Esempio n. 27
0
        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);
            }
        }
Esempio n. 28
0
        public static void SendInventoryInfoResponse(IRealmClient client)
        {
            Asda2PlayerInventory     asda2Inventory    = client.ActiveCharacter.Asda2Inventory;
            List <List <Asda2Item> > asda2ItemListList = new List <List <Asda2Item> >();
            int count1 = 0;

            Asda2Item[] array1 = asda2Inventory.RegularItems
                                 .Where(it => it != null).ToArray();
            while (count1 < array1.Length)
            {
                asda2ItemListList.Add(new List <Asda2Item>(array1.Skip(count1)
                                                           .Take(9)));
                count1 += 9;
            }

            foreach (List <Asda2Item> asda2ItemList in asda2ItemListList)
            {
                using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.RegularInventoryInfo))
                {
                    for (int index = 0; index < asda2ItemList.Count; ++index)
                    {
                        Asda2Item asda2Item = asda2ItemList[index];
                        if (asda2Item != null)
                        {
                            Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                        }
                    }

                    client.Send(packet, false);
                }
            }

            asda2ItemListList.Clear();
            int count2 = 0;

            Asda2Item[] array2 = asda2Inventory.ShopItems
                                 .Where(it => it != null).ToArray();
            while (count2 < array2.Length)
            {
                asda2ItemListList.Add(new List <Asda2Item>(array2.Skip(count2)
                                                           .Take(9)));
                count2 += 9;
            }

            foreach (List <Asda2Item> asda2ItemList in asda2ItemListList)
            {
                using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ShopInventoryInfo))
                {
                    for (int index = 0; index < asda2ItemList.Count; ++index)
                    {
                        Asda2Item asda2Item = asda2ItemList[index];
                        if (asda2Item != null)
                        {
                            Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                        }
                    }

                    client.Send(packet, false);
                }
            }
        }
Esempio n. 29
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);
            }
        }
Esempio n. 30
0
        public static void SendCraftedResponse(IRealmClient client, bool sucess, byte craftTimes, Asda2Item craftedItem,
                                               List <Asda2Item> craftMaterials)
        {
            if (craftedItem != null)
            {
                AchievementProgressRecord progressRecord1 =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(108U);
                switch (++progressRecord1.Counter)
                {
                case 500:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Crafty267);
                    break;

                case 1000:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Crafty267);
                    break;
                }

                progressRecord1.SaveAndFlush();
                if (craftedItem.Template.Quality == Asda2ItemQuality.Purple)
                {
                    AchievementProgressRecord progressRecord2 =
                        client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(111U);
                    switch (++progressRecord2.Counter)
                    {
                    case 5:
                        client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Rare270);
                        break;

                    case 10:
                        client.ActiveCharacter.GetTitle(Asda2TitleId.Rare270);
                        break;
                    }

                    progressRecord2.SaveAndFlush();
                }

                if (craftedItem.Template.Quality == Asda2ItemQuality.Green)
                {
                    AchievementProgressRecord progressRecord2 =
                        client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(112U);
                    switch (++progressRecord2.Counter)
                    {
                    case 1:
                        client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Hero271);
                        break;

                    case 3:
                        client.ActiveCharacter.GetTitle(Asda2TitleId.Hero271);
                        break;
                    }

                    progressRecord2.SaveAndFlush();
                }

                if (craftedItem.IsWeapon)
                {
                    AchievementProgressRecord progressRecord2 =
                        client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(113U);
                    switch (++progressRecord2.Counter)
                    {
                    case 25:
                        client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Weapon272);
                        break;

                    case 50:
                        client.ActiveCharacter.GetTitle(Asda2TitleId.Weapon272);
                        break;
                    }

                    progressRecord2.SaveAndFlush();
                }

                if (craftedItem.IsArmor)
                {
                    AchievementProgressRecord progressRecord2 =
                        client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(114U);
                    switch (++progressRecord2.Counter)
                    {
                    case 25:
                        client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Armor273);
                        break;

                    case 50:
                        client.ActiveCharacter.GetTitle(Asda2TitleId.Armor273);
                        break;
                    }

                    progressRecord2.SaveAndFlush();
                }

                if (craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.LeftRing ||
                    craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.RightRing ||
                    craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.Nackles)
                {
                    AchievementProgressRecord progressRecord2 =
                        client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(115U);
                    switch (++progressRecord2.Counter)
                    {
                    case 25:
                        client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Jewel274);
                        break;

                    case 50:
                        client.ActiveCharacter.GetTitle(Asda2TitleId.Jewel274);
                        break;
                    }

                    progressRecord2.SaveAndFlush();
                }
            }

            using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.Crafted))
            {
                packet.WriteByte(sucess ? 1 : 0);
                packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight);
                packet.WriteByte(client.ActiveCharacter.Record.CraftingLevel);
                packet.WriteInt32(0);
                packet.WriteInt16((short)client.ActiveCharacter.Record.CraftingExp);
                packet.WriteInt16(craftTimes);
                Asda2InventoryHandler.WriteItemInfoToPacket(packet, craftedItem, false);
                for (int index = 0; index < 7; ++index)
                {
                    Asda2Item asda2Item = craftMaterials.Count <= index ? (Asda2Item)null : craftMaterials[index];
                    Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false);
                }

                client.Send(packet, false);
            }
        }