Esempio n. 1
0
        public static void RegisterItemToAukRequest(IRealmClient client, RealmPacketIn packet)
        {
            Character            activeCharacter = client.ActiveCharacter;
            Asda2PlayerInventory asda2Inventory  = activeCharacter.Asda2Inventory;

            packet.Position += 15;
            int num1 = 0;
            List <Asda2ItemTradeRef> items = new List <Asda2ItemTradeRef>();

            for (int index = 0; index < 5 && packet.RemainingLength >= 50; ++index)
            {
                packet.Position += 4;
                byte  num2 = packet.ReadByte();
                short num3 = packet.ReadInt16();
                packet.Position += 12;
                int num4 = packet.ReadInt32();
                packet.Position += 34;
                int num5 = packet.ReadInt32();
                packet.Position += 41;
                if (num5 < 0 || num5 > 100000000)
                {
                    client.ActiveCharacter.YouAreFuckingCheater(
                        "Tried to use wrong price while registering auk items : " + (object)num3, 1);
                    Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                  (List <Asda2ItemTradeRef>)null);
                    return;
                }

                if (num3 < (short)0 || num3 > (short)70)
                {
                    client.ActiveCharacter.YouAreFuckingCheater(
                        "Tried to use wrong cell while registering auk items : " + (object)num3, 1);
                    Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                  (List <Asda2ItemTradeRef>)null);
                    return;
                }

                Asda2Item asda2Item;
                switch (num2)
                {
                case 1:
                    asda2Item = asda2Inventory.ShopItems[(int)num3];
                    break;

                case 2:
                    asda2Item = asda2Inventory.RegularItems[(int)num3];
                    break;

                default:
                    client.ActiveCharacter.YouAreFuckingCheater(
                        "Tried to use wrong inventory while registering auk items : " + (object)num2, 1);
                    Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                  (List <Asda2ItemTradeRef>)null);
                    return;
                }

                items.Add(new Asda2ItemTradeRef()
                {
                    Item   = asda2Item,
                    Amount = num4,
                    Price  = num5
                });
                num1 += num5;
            }

            if ((double)client.ActiveCharacter.Money <=
                (double)num1 * (double)CharacterFormulas.AuctionPushComission)
            {
                client.ActiveCharacter.SendAuctionMsg("Not enought money to register items.");
                Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client, (List <Asda2ItemTradeRef>)null);
            }
            else
            {
                Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client, items);
                foreach (Asda2ItemTradeRef itemRef in items)
                {
                    if (itemRef.Item == null)
                    {
                        activeCharacter.SendAuctionMsg("Failed to register item cause not founded.");
                        Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                      (List <Asda2ItemTradeRef>)null);
                        return;
                    }

                    if (itemRef.Amount < 0 || itemRef.Amount > itemRef.Item.Amount)
                    {
                        client.ActiveCharacter.YouAreFuckingCheater(
                            "Tried to use wrong item amount while registering auk items : " + (object)itemRef.Amount,
                            1);
                        Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                      (List <Asda2ItemTradeRef>)null);
                        return;
                    }

                    if (itemRef.Item.IsSoulbound)
                    {
                        client.ActiveCharacter.YouAreFuckingCheater(
                            "Tried to use soulbounded item while registering auk items : " + (object)itemRef.Amount,
                            1);
                        Asda2AuctionHandler.SendRegisterItemToAukCancelWindowResponse(client,
                                                                                      (List <Asda2ItemTradeRef>)null);
                        return;
                    }

                    asda2Inventory.AuctionItem(itemRef);
                }

                AchievementProgressRecord progressRecord =
                    client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(10U);
                switch (++progressRecord.Counter)
                {
                case 100:
                    client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Merchant48);
                    break;

                case 200:
                    client.ActiveCharacter.GetTitle(Asda2TitleId.Merchant48);
                    break;
                }

                progressRecord.SaveAndFlush();
                activeCharacter.SendAuctionMsg("You have success with registering auction items.");
                activeCharacter.SendMoneyUpdate();
            }
        }