コード例 #1
0
        public void AuctionSellItem(Character chr, NPC auctioneer, EntityId itemId, uint bid, uint buyout, uint time, uint stackSize)
        {
            if (!DoAuctioneerInteraction(chr, auctioneer))
            {
                return;
            }

            var item = chr.Inventory.GetItem(itemId, false);

            var msg = AuctionCheatChecks(auctioneer, item, bid, time);

            if (msg == AuctionError.Ok)
            {
                // Check that character has enough money to cover the deposit
                var houseFaction = auctioneer.AuctioneerEntry.LinkedHouseFaction;
                var deposit      = GetAuctionDeposit(item, houseFaction, time);
                if (chr.Money < deposit)
                {
                    AuctionHandler.SendAuctionCommandResult(chr.Client, null, AuctionAction.SellItem, AuctionError.NotEnoughMoney);
                    return;
                }

                if (item.Amount > stackSize)
                {
                    item = item.Split((int)stackSize);
                }

                if (item == null)
                {
                    AuctionHandler.SendAuctionCommandResult(chr.Client, null, AuctionAction.SellItem, AuctionError.ItemNotFound);
                    return;
                }


                // Charge the deposit to the character
                chr.Money -= deposit;


                // Create the new Auction and add it to the list.

                var newAuction = new Auction
                {
                    BidderLowId    = 0,
                    BuyoutPrice    = buyout,
                    CurrentBid     = bid,
                    Deposit        = deposit,
                    HouseFaction   = houseFaction,
                    ItemLowId      = item.EntityId.Low,
                    ItemTemplateId = item.Template.Id,
                    OwnerLowId     = chr.EntityId.Low,
                    TimeEnds       = DateTime.Now.AddMinutes(time),
                    IsNew          = true
                };



                //save new auction to database and add item to items container
                RealmServer.IOQueue.AddMessage(new Util.Threading.Message(() =>
                {
                    ItemRecord record  = item.Record;
                    record.IsAuctioned = true;
                    record.Save();
                    auctioneer.AuctioneerEntry.Auctions.AddAuction(
                        newAuction);
                    AuctionItems.Add(newAuction.ItemLowId, record);
                    item.Remove(false);
                    AuctionListOwnerItems(chr, auctioneer);
                }));

                // Send the all-good message
                AuctionHandler.SendAuctionCommandResult(chr.Client, newAuction, AuctionAction.SellItem, AuctionError.Ok);
            }
            else
            {
                AuctionHandler.SendAuctionCommandResult(chr.Client, null, AuctionAction.SellItem, msg);
            }
        }
コード例 #2
0
        private void getListings(string sSort, int iCategory)
        {
            AuctionItems auctionItems = new AuctionItems();

            using (SqlConnection conn = new SqlConnection(Common.ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand("spListings", conn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    if (iCategory.Equals(0))
                    {
                        cmd.Parameters.Add(new SqlParameter("@cat_id", DBNull.Value));
                    }
                    else
                    {
                        cmd.Parameters.Add(new SqlParameter("@cat_id", iCategory));
                    }

                    conn.Open();
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            AuctionItem item = new AuctionItem();

                            item.Id          = dr["item_id"].ToString();
                            item.Name        = dr["item_name"].ToString();
                            item.Description = dr["item_description"].ToString();
                            item.DateOpen    = DateTime.Parse(dr["item_date_open"].ToString());
                            item.DateClose   = DateTime.Parse(dr["item_date_close"].ToString());
                            item.Seller      = dr["item_seller"].ToString();
                            item.Location    = dr["item_location"].ToString();
                            if (dr["item_amount"].ToString().Equals(string.Empty))
                            {
                                item.BidAmount = 0;
                            }
                            else
                            {
                                item.BidAmount = decimal.Parse(dr["item_amount"].ToString());
                            }
                            item.Buyer     = dr["item_bidder"].ToString();
                            item.BidNumber = int.Parse(dr["item_bids"].ToString());
                            //item.Category = dr["cat_name"].ToString();
                            auctionItems.Add(item);
                        }
                    }
                }
            }

            if (auctionItems.Count == 0)
            {
                AuctionItem item = new AuctionItem();
                item.Description = "No items listed.";
                auctionItems.Add(item);
                //Response.Write("No items listed.");
            }
            //else
            //{
            //Sort
            if (sSort.Equals("DateClose") ||
                sSort.Equals("Name") ||
                sSort.Equals("Buyer") ||
                sSort.Equals("BidAmount") ||
                sSort.Equals("Category"))
            {
                auctionItems.Sort(sSort, SortOrderEnum.Ascending);
            }
            else
            {
                auctionItems.Sort(sSort, SortOrderEnum.Descending);
            }

            dlListings.DataSource = auctionItems;
            dlListings.DataBind();
            //}
        }