public CityVendorDismiss(CityPlayerVendor vend, DateTime expire) : base(TimeSpan.Zero, TimeSpan.FromSeconds(1.5)) { m_vendor = vend; m_Expire = expire; //m_Expire = DateTime.Now + TimeSpan.FromSeconds( 10.0 ); Left in for Testing purposes. m_owner = vend.Owner; }
public override void OnResponse(Mobile from, string text) { text = text.Trim(); if (text.Length > 40) { text = text.Substring(0, 40); } if (text.Length > 0) { try { int amount = Convert.ToInt32(text); if (amount <= -1) { from.SendMessage("Income Tax can only range from 0 - 100"); } else if (amount <= 100) { from.SendMessage("You have set the cities income tax to {0}.", amount); m_Stone.IncomeTax = amount; if (m_Stone.Vendors.Count > 0) { foreach (Mobile mob in m_Stone.Vendors) { CityPlayerVendor vend = (CityPlayerVendor)mob; vend.TaxRate = amount; } } foreach (Mobile m in m_Stone.Citizens) { m.SendMessage(53, "The cities income tax has changed to {0}.", amount); } } else { from.SendMessage("Taxes can only range from 0 - 100"); } } catch { from.SendMessage("You must enter a number amount."); } } m_From.CloseGump(typeof(CityManagementGump)); m_From.SendGump(new CityManagementGump(m_Stone, m_From)); }
public override void OnResponse(NetState state, RelayInfo info) { Mobile from = state.Mobile; if (!m_Vendor.CanInteractWith(from, false)) { return; } if (m_Vendor.IsOwner(from)) { m_Vendor.SayTo(from, 503212); // You own this shop, just take what you want. return; } if (info.ButtonID == 1) { m_Vendor.Say(from.Name); if (!m_VI.Valid || !m_VI.Item.IsChildOf(m_Vendor.Backpack)) { m_Vendor.SayTo(from, 503216); // You can't buy that. return; } int totalGold = 0; if (from.Backpack != null) { totalGold += from.Backpack.GetAmount(typeof(Gold)); } totalGold += Banker.GetBalance(from); if (totalGold < m_VI.Price) { m_Vendor.SayTo(from, 503205); // You cannot afford this item. } else if (!from.PlaceInBackpack(m_VI.Item)) { m_Vendor.SayTo(from, 503204); // You do not have room in your backpack for this. } else { int leftPrice = m_VI.Price; if (from.Backpack != null) { leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice); } if (leftPrice > 0) { Banker.Withdraw(from, leftPrice); } if (m_Vendor is CityPlayerVendor) { CityPlayerVendor vend = (CityPlayerVendor)m_Vendor; double rate = Convert.ToDouble(vend.TaxRate) / 100.0; double tax = Convert.ToDouble(m_VI.Price) * rate; int taxx = Convert.ToInt32(tax); vend.IncomeTax += taxx; vend.HoldGold += (m_VI.Price - taxx); } else { m_Vendor.HoldGold += m_VI.Price; } from.SendLocalizedMessage(503201); // You take the item. } } else { from.SendLocalizedMessage(503207); // Cancelled purchase. } }
public override void OnResponse(NetState sender, RelayInfo info) { Mobile from = sender.Mobile; if (info.ButtonID == 1 || info.ButtonID == 2) // See goods or Customize { m_Vendor.CheckTeleport(from); } if (!m_Vendor.CanInteractWith(from, true)) { return; } switch (info.ButtonID) { case 1: // See goods { m_Vendor.OpenBackpack(from); break; } case 2: // Customize { from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor)); break; } case 3: // Rename Shop { m_Vendor.RenameShop(from); break; } case 4: // Rename Vendor { m_Vendor.Rename(from); break; } case 5: // Open Paperdoll { m_Vendor.DisplayPaperdollTo(from); break; } case 6: // Collect Gold { m_Vendor.CollectGold(from); break; } case 7: // Dismiss Vendor { if (m_Vendor is CityPlayerVendor) { CityPlayerVendor vend = (CityPlayerVendor)m_Vendor; vend.Dismiss(from); } else { m_Vendor.Dismiss(from); } break; } } }
public NewPlayerVendorOwnerGump(PlayerVendor vendor) : base(50, 200) { m_Vendor = vendor; int perRealWorldDay = vendor.ChargePerRealWorldDay; int goldHeld = vendor.HoldGold; AddBackground(25, 10, 530, 180, 0x13BE); AddImageTiled(35, 20, 510, 160, 0xA40); AddAlphaRegion(35, 20, 510, 160); AddImage(10, 0, 0x28DC); AddImage(537, 175, 0x28DC); AddImage(10, 175, 0x28DC); AddImage(537, 0, 0x28DC); if (vendor is CityPlayerVendor) { CityPlayerVendor vend = (CityPlayerVendor)vendor; AddHtmlLocalized(40, 108, 260, 20, 1062509, 0x7FFF, false, false); // Shop Name: AddLabel(140, 106, 0x66D, vendor.ShopName); AddLabel(40, 58, 0x480, "Income Tax Rate:"); AddLabel(300, 58, 0x480, vend.TaxRate.ToString()); AddLabel(320, 58, 0x480, "%"); } else { if (goldHeld < perRealWorldDay) { int goldNeeded = perRealWorldDay - goldHeld; AddHtmlLocalized(40, 35, 260, 20, 1038320, 0x7FFF, false, false); // Gold needed for 1 day of vendor salary: AddLabel(300, 35, 0x1F, goldNeeded.ToString()); } else { int days = goldHeld / perRealWorldDay; AddHtmlLocalized(40, 35, 260, 20, 1038318, 0x7FFF, false, false); // # of days Vendor salary is paid for: AddLabel(300, 35, 0x480, days.ToString()); } AddHtmlLocalized(40, 58, 260, 20, 1038324, 0x7FFF, false, false); // My charge per real world day is: AddLabel(300, 58, 0x480, perRealWorldDay.ToString()); } AddHtmlLocalized(40, 82, 260, 20, 1038322, 0x7FFF, false, false); // Gold held in my account: AddLabel(300, 82, 0x480, goldHeld.ToString()); AddHtmlLocalized(40, 108, 260, 20, 1062509, 0x7FFF, false, false); // Shop Name: AddLabel(140, 106, 0x66D, vendor.ShopName); if (vendor is RentedVendor) { int days, hours; ((RentedVendor)vendor).ComputeRentalExpireDelay(out days, out hours); AddLabel(38, 132, 0x480, String.Format("Location rental will expire in {0} day{1} and {2} hour{3}.", days, days != 1 ? "s" : "", hours, hours != 1 ? "s" : "")); } AddButton(390, 24, 0x15E1, 0x15E5, 1, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 21, 120, 20, 1019068, 0x7FFF, false, false); // See goods AddButton(390, 44, 0x15E1, 0x15E5, 2, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 41, 120, 20, 1019069, 0x7FFF, false, false); // Customize AddButton(390, 64, 0x15E1, 0x15E5, 3, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 61, 120, 20, 1062434, 0x7FFF, false, false); // Rename Shop AddButton(390, 84, 0x15E1, 0x15E5, 4, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 81, 120, 20, 3006217, 0x7FFF, false, false); // Rename Vendor AddButton(390, 104, 0x15E1, 0x15E5, 5, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 101, 120, 20, 3006123, 0x7FFF, false, false); // Open Paperdoll AddButton(390, 124, 0x15E1, 0x15E5, 6, GumpButtonType.Reply, 0); AddLabel(408, 121, 0x480, "Collect Gold"); AddButton(390, 144, 0x15E1, 0x15E5, 7, GumpButtonType.Reply, 0); AddLabel(408, 141, 0x480, "Dismiss Vendor"); AddButton(390, 162, 0x15E1, 0x15E5, 0, GumpButtonType.Reply, 0); AddHtmlLocalized(408, 161, 120, 20, 1011012, 0x7FFF, false, false); // CANCEL }
public override void OnDoubleClick(Mobile from) { if (!IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else { PlayerMobile pm = (PlayerMobile)from; CityManagementStone stone = (CityManagementStone)pm.City; if (stone == null) { from.SendMessage("You must be a citizen of a city to use this!"); } else { Region r = stone.PCRegion; if (PlayerGovernmentSystem.CheckIfHouseInCity(from, r)) { ; } { if (from.Region is HouseRegion) { BaseHouse house = BaseHouse.FindHouseAt(from); if (house.Owner != from) { from.SendMessage("You may not place vendors in a house you do not own!"); } else { Mobile v = new CityPlayerVendor(from, stone); stone.Vendors.Add(v); CityPlayerVendor vend = (CityPlayerVendor)v; vend.TaxRate = stone.IncomeTax; vend.OriginalStone = stone; v.Direction = from.Direction & Direction.Mask; v.MoveToWorld(from.Location, from.Map); v.SayTo(from, 503246); // Ah! it feels good to be working again. this.Delete(); } } else { bool market = false; if (from.Region is CityMarketRegion) { CityMarketRegion cr = (CityMarketRegion)from.Region; if (cr.Stone == stone) { market = true; } } if (PlayerGovernmentSystem.IsAtCity(from) || market) { Mobile v = new CityPlayerVendor(from, stone); stone.Vendors.Add(v); CityPlayerVendor vend = (CityPlayerVendor)v; vend.OriginalStone = stone; vend.TaxRate = stone.IncomeTax; v.Direction = from.Direction & Direction.Mask; v.MoveToWorld(from.Location, from.Map); v.SayTo(from, 503246); // Ah! it feels good to be working again. this.Delete(); } else { from.SendMessage("You may only do this in a city you are a member of!"); } } } } } }