Exemplo n.º 1
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            if (!m_Buttons.Contains(info.ButtonID))
            {
                Console.WriteLine(@"The auction system located a potential exploit. 
					Player {0} (Acc. {1}) tried to press an unregistered button in a gump of type: {2}"                    ,
                                  sender.Mobile != null ? sender.Mobile.ToString() : "Unkown",
                                  sender.Mobile != null && sender.Mobile.Account != null ? (sender.Mobile.Account as Server.Accounting.Account).Username : "******",
                                  this.GetType().Name);

                return;
            }

            switch (info.ButtonID)
            {
            case 0:                     // Exit
                break;

            case 1:                     // Owner Props

                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction.Owner));
                break;

            case 2:                     // Owner Account

                m_User.SendGump(this);
                m_User.SendGump(new AdminGump(m_User, AdminGumpPage.AccountDetails_Information, 0, null, "Request from the auction system", m_Auction.Account));
                break;

            case 3:                     // Owner Client

                m_User.SendGump(this);

                if (m_Auction.Owner.NetState != null)
                {
                    m_User.SendGump(new ClientGump(m_User, m_Auction.Owner.NetState));
                }
                break;

            case 4:                     // Item Props

                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction.Item));
                break;

            case 5:                     // Get Item

                m_User.SendGump(this);

                if (m_Auction.Creature && m_Auction.Pet != null)
                {
                    m_Auction.Pet.MoveToWorld(m_User.Location, m_User.Map);
                }
                else
                {
                    m_User.Backpack.AddItem(m_Auction.Item);
                }

                AuctionLog.WriteViewItem(m_Auction, m_User);

                break;

            case 6:                     // Return Item

                if (m_Auction.Creature)
                {
                    m_Auction.Pet.SetControlMaster(null);
                    m_Auction.Pet.ControlOrder = Server.Mobiles.OrderType.Stay;
                    m_Auction.Pet.Internalize();
                }
                else
                {
                    Item item = m_Auction.Item;

                    if (item != null)
                    {
                        if (item.Parent is Mobile)
                        {
                            ((Mobile)item.Parent).RemoveItem(item);
                        }
                        else if (item.Parent is Item)
                        {
                            ((Item)item.Parent).RemoveItem(item);
                        }
                    }

                    AuctionSystem.ControlStone.Items.Add(m_Auction.Item);
                    m_Auction.Item.Parent = AuctionSystem.ControlStone;
                }

                AuctionLog.WriteReturnItem(m_Auction, m_User);

                m_User.SendGump(this);

                break;

            case 7:                     // Auction Props

                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction));
                break;

            case 8:                     // End Auction

                m_Auction.End(m_User);
                goto case 0;

            case 9:                     // End and Return

                m_Auction.StaffDelete(m_User, ItemFate.ReturnToOwner);
                goto case 0;

            case 10:                     // End and Get

                m_Auction.StaffDelete(m_User, ItemFate.ReturnToStaff);
                goto case 0;

            case 11:                     // End and Delete

                m_Auction.StaffDelete(m_User, ItemFate.Delete);
                goto case 0;
            }
        }
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            switch (info.ButtonID)
            {
            case 0:                     // Exit
                break;

            case 1:                     // Owner Props
                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction.Owner));
                break;

            case 2:                     // Owner Account
                m_User.SendGump(this);
                m_User.SendGump(new AdminGump(m_User, AdminGumpPage.AccountDetails_Information, 0, null, "Request from the auction system", m_Auction.Account));
                break;

            case 3:                     // Owner Client
                m_User.SendGump(this);

                if (m_Auction.Owner.NetState != null)
                {
                    m_User.SendGump(new ClientGump(m_User, m_Auction.Owner.NetState));
                }
                break;

            case 4:                     // Item Props
                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction.Item));
                break;

            case 5:                     // Get Item
                m_User.SendGump(this);

                if (m_Auction.Creature && m_Auction.Pet != null)
                {
                    m_User.SendMessage("That cannot be used on pets");
                }
                else
                {
                    m_User.Backpack.AddItem(m_Auction.Item);
                }
                AuctionLog.WriteViewItem(m_Auction, m_User);
                break;

            case 6:                     // Return Item
                if (m_Auction.Creature)
                {
                    m_Auction.Pet.SetControlMaster(null);
                    m_Auction.Pet.ControlOrder = Server.Mobiles.OrderType.Stay;
                    m_Auction.Pet.Internalize();
                }
                else
                {
                    Item item = m_Auction.Item;

                    if (item != null)
                    {
                        if (item.Parent is Mobile)
                        {
                            ((Mobile)item.Parent).RemoveItem(item);
                        }
                        else if (item.Parent is Item)
                        {
                            ((Item)item.Parent).RemoveItem(item);
                        }
                    }

                    AuctionSystem.ControlStone.AddItem(m_Auction.Item);
                    m_Auction.Item.Parent = AuctionSystem.ControlStone;
                }
                AuctionLog.WriteReturnItem(m_Auction, m_User);
                m_User.SendGump(this);
                break;

            case 7:                     // Auction Props
                m_User.SendGump(this);
                m_User.SendGump(new PropertiesGump(m_User, m_Auction));
                break;

            case 8:                     // End Auction
                m_Auction.End(m_User);
                goto case 0;

            case 9:                     // End and Return
                m_Auction.StaffDelete(m_User, ItemFate.ReturnToOwner);
                goto case 0;

            case 10:                     // End and Get
                m_Auction.StaffDelete(m_User, ItemFate.ReturnToStaff);
                goto case 0;

            case 11:                     // End and Delete
                m_Auction.StaffDelete(m_User, ItemFate.Delete);
                goto case 0;
            }
        }
Exemplo n.º 3
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            if (!AuctionSystem.Running)
            {
                sender.Mobile.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[15]);
                return;
            }

            if (!AuctionSystem.Auctions.Contains(m_Auction))
            {
                sender.Mobile.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[207]);

                if (m_Callback != null)
                {
                    try { m_Callback.DynamicInvoke(new object[] { m_User }); }
                    catch { }
                }

                return;
            }
            int buttonid = info.ButtonID;

            if (buttonid < 0 || buttonid > 9)
            {
                sender.Mobile.SendMessage("Invalid option.  Please try again.");
                return;
            }

            switch (info.ButtonID)
            {
            case 0:                     // Close

                if (m_Callback != null)
                {
                    try { m_Callback.DynamicInvoke(new object[] { m_User }); }
                    catch {}
                }
                break;

            case 1:                     // Prev item

                m_User.SendGump(new AuctionViewGump(m_User, m_Auction, m_Callback, m_Page - 1));
                break;

            case 2:                     // Next item

                m_User.SendGump(new AuctionViewGump(m_User, m_Auction, m_Callback, m_Page + 1));
                break;

            case 3:                     // Web link

                m_User.SendGump(new AuctionViewGump(m_User, m_Auction, m_Callback, m_Page));
                m_Auction.SendLinkTo(m_User);
                break;

            case 4:                     // Bid

                uint bid = 0;

                try { bid = uint.Parse(info.TextEntries[0].Text, NumberStyles.AllowThousands); }
                catch {}

                if (m_Auction.Expired)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[84]);
                }
                else if (bid == 0)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[85]);
                }
                else
                {
                    if (m_Auction.AllowBuyNow && bid >= m_Auction.BuyNow)
                    {
                        // Do buy now instead
                        goto case 8;
                    }
                    else
                    {
                        m_Auction.PlaceBid(m_User, (int)bid);
                    }
                }
                m_User.SendGump(new AuctionViewGump(m_User, m_Auction, m_Callback, m_Page));
                break;

            case 5:                     // View bids

                m_User.SendGump(new BidViewGump(m_User, m_Auction.Bids, new AuctionGumpCallback(BidViewCallback)));
                break;

            case 6:                     // Staff Panel

                m_User.SendGump(new AuctionControlGump(m_User, m_Auction, this));
                break;

            case 7:     // Owner Cancel Auction
                m_Auction.End(m_User);
                // m_Auction.StaffDelete(m_User, ItemFate.ReturnToOwner);
                break;

            case 8:                     // Buy Now

                if (m_Auction.DoBuyNow(sender.Mobile))
                {
                    goto case 0;                             // Close the gump
                }
                else
                {
                    sender.Mobile.SendGump(new AuctionViewGump(sender.Mobile, m_Auction, m_Callback, m_Page));
                }
                break;

            case 9:     // Quick Bid

                // Minimum bid amount for quick bids
                int quickbid = m_Auction.MinBid;
                if (m_Auction.HasBids)
                {
                    quickbid = m_Auction.HighestBid.Amount + m_Auction.BidIncrement;
                }
                if (m_Auction.Expired)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[84]);
                }
                else if (quickbid == 0)
                {
                    m_User.SendMessage(AuctionConfig.MessageHue, AuctionSystem.ST[85]);
                }
                else
                {
                    if (m_Auction.AllowBuyNow && quickbid >= m_Auction.BuyNow)
                    {
                        // Do buy now instead
                        goto case 8;
                    }
                    else
                    {
                        m_Auction.PlaceBid(m_User, (int)quickbid);
                    }
                }
                m_User.SendGump(new AuctionViewGump(m_User, m_Auction, m_Callback, m_Page));
                break;
            }
        }