private bool OnItemChangeAmountResponse(int entryId, string input) { if (ushort.TryParse(input, out ushort amount)) { if (amount <= 0) { return(false); } BuyEntry e = (BuyEntry)m_Items[entryId]; e.Amount = amount; m_SubList.BeginUpdate(); m_SubList.Items.Clear(); for (int i = 0; i < m_Items.Count; i++) { m_SubList.Items.Add(m_Items[i]); } m_SubList.EndUpdate(); return(true); } return(false); }
public void Add(BuyEntry entry) { m_Items?.Add(entry); m_SubList?.Items.Add(entry); World.Player?.SendMessage(MsgLevel.Force, LocString.ItemAdded); }
public override void OnButtonPress(int num) { switch (num) { case 1: World.Player.SendMessage(MsgLevel.Force, LocString.TargItemAdd); Targeting.OneTimeTarget(new Targeting.TargetResponseCallback(OnTarget)); break; case 2: if (m_SubList == null) { break; } if (m_SubList.SelectedIndex >= 0) { BuyEntry e = (BuyEntry)m_Items[m_SubList.SelectedIndex]; InputDialogGump inputGump = new InputDialogGump(OnItemChangeAmountResponse, m_SubList.SelectedIndex, Language.GetString(LocString.EnterAmount), e.Amount.ToString()); inputGump.SendGump(); } break; case 3: if (MessageBox.Show(Language.GetString(LocString.Confirm), Language.GetString(LocString.ClearList), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (m_SubList.SelectedIndex >= 0) { m_Items.RemoveAt(m_SubList.SelectedIndex); m_SubList.Items.RemoveAt(m_SubList.SelectedIndex); m_SubList.SelectedIndex = -1; } } break; case 4: if (MessageBox.Show(Language.GetString(LocString.Confirm), Language.GetString(LocString.ClearList), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { m_SubList.Items.Clear(); m_Items.Clear(); } break; case 5: m_Enabled = !m_Enabled; m_EnableBTN.Text = Language.GetString(m_Enabled ? LocString.PushDisable : LocString.PushEnable); break; } }
private bool OnItemChangeAmountResponse(int entryId, string input) { if (ushort.TryParse(input, out ushort amount)) { if (amount <= 0) { return(false); } BuyEntry e = (BuyEntry)Items[entryId]; e.Amount = amount; if (m_SubList != null) { m_SubList.BeginUpdate(); m_SubList.Items.Clear(); for (int i = 0; i < Items.Count; i++) { m_SubList.Items.Add(Items[i]); } m_SubList.EndUpdate(); } if (_fromGump) { _fromGump = false; AgentsGump agent = new AgentsGump(this); agent.SendGump(); } else { Engine.MainWindow.SafeAction(s => s.ShowMe()); } return(true); } if (_fromGump) { _fromGump = false; AgentsGump agent = new AgentsGump(this); agent.SendGump(); } else { Engine.MainWindow.SafeAction(s => s.ShowMe()); } return(false); }
public void RemoveItem(int itemId) { BuyEntry item = Items.FirstOrDefault(a => a.Id == itemId); if (item != null) { Items.Remove(item); m_SubList?.Items?.Remove(item); World.Player?.SendMessage(MsgLevel.Force, LocString.ItemRemoved); } }
public void SetItemAmount(int itemId, bool fromGump = false) { int itemIndex = Items.FindIndex(a => a.Id == itemId); BuyEntry item = Items[itemIndex]; if (item != null) { _fromGump = fromGump; InputDialogGump inputGump = new InputDialogGump(OnItemChangeAmountResponse, itemIndex, Language.GetString(LocString.EnterAmount), item.Amount.ToString()); inputGump.SendGump(); } }
private void OnTarget(bool location, Serial serial, Point3D loc, ushort gfx) { Engine.MainWindow.SafeAction(s => s.ShowMe()); if (!location && !serial.IsMobile) { if (InputBox.Show(Engine.MainWindow, Language.GetString(LocString.EnterAmount), Language.GetString(LocString.InputReq))) { ushort count = (ushort)InputBox.GetInt(0); if (count <= 0) { return; } BuyEntry be = new BuyEntry(gfx, count); m_Items.Add(be); if (m_SubList != null) { m_SubList.Items.Add(be); } } } }
private void OnTarget( bool location, Serial serial, Point3D loc, ushort gfx ) { Engine.MainWindow.ShowMe(); if ( !location && !serial.IsMobile ) { if ( InputBox.Show( Engine.MainWindow, Language.GetString( LocString.EnterAmount ), Language.GetString( LocString.InputReq ) ) ) { ushort count = (ushort)InputBox.GetInt( 0 ); if ( count <= 0 ) return; BuyEntry be = new BuyEntry( gfx, count ); m_Items.Add( be ); if ( m_SubList != null ) m_SubList.Items.Add( be ); } } }
private static void DisplayBuy(PacketReader p, PacketHandlerEventArgs args) { Serial serial = p.ReadUInt32(); ushort gump = p.ReadUInt16(); if (gump != 0x30 || !serial.IsMobile || !Client.Instance.AllowBit(FeatureBit.BuyAgent) || World.Player == null) { return; } Mobile vendor = World.FindMobile(serial); if (vendor == null) { return; } Item pack = vendor.GetItemOnLayer(Layer.ShopBuy); if (pack == null || pack.Contains == null || pack.Contains.Count <= 0) { return; } pack.Contains.Sort(ItemXYComparer.Instance); int total = 0; int cost = 0; List <VendorBuyItem> buyList = new List <VendorBuyItem>(); Dictionary <ushort, int> found = new Dictionary <ushort, int>(); bool lowGoldWarn = false; for (int i = 0; i < pack.Contains.Count; i++) { Item item = (Item)pack.Contains[i]; if (item == null) { continue; } foreach (BuyAgent ba in m_Instances) { if (ba == null || ba.m_Items == null || !ba.m_Enabled) { continue; } for (int a = 0; a < ba.m_Items.Count; a++) { BuyEntry b = (BuyEntry)ba.m_Items[a]; if (b == null) { continue; } bool dupe = false; foreach (VendorBuyItem vbi in buyList) { if (vbi.Serial == item.Serial) { dupe = true; } } if (dupe) { continue; } // f*****g osi and their blank scrolls if (b.Id == item.ItemID.Value || (b.Id == 0x0E34 && item.ItemID.Value == 0x0EF3) || (b.Id == 0x0EF3 && item.ItemID.Value == 0x0E34)) { int count = World.Player.Backpack.GetCount(b.Id); if (found.ContainsKey(b.Id)) { count += (int)found[b.Id]; } if (count < b.Amount && b.Amount > 0) { count = b.Amount - count; if (count >= item.Amount) { count = item.Amount; } else if (count <= 0) { continue; } if (!found.ContainsKey(b.Id)) { found.Add(b.Id, (int)count); } else { found[b.Id] = (int)found[b.Id] + (int)count; } buyList.Add(new VendorBuyItem(item.Serial, count, item.Price)); total += count; cost += item.Price * count; } } } } } if (!Config.GetBool("BuyAgentsIgnoreGold")) { if (cost > World.Player.Gold && cost < 2000 && buyList.Count > 0) { lowGoldWarn = true; do { VendorBuyItem vbi = (VendorBuyItem)buyList[0]; if (cost - vbi.TotalCost <= World.Player.Gold) { while (cost > World.Player.Gold && vbi.Amount > 0) { cost -= vbi.Price; --vbi.Amount; --total; } if (vbi.Amount <= 0) { buyList.RemoveAt(0); } } else { cost -= vbi.TotalCost; total -= vbi.Amount; buyList.RemoveAt(0); } } while (cost > World.Player.Gold && buyList.Count > 0); } } if (buyList.Count > 0) { args.Block = true; BuyLists[serial] = buyList; Client.Instance.SendToServer(new VendorBuyResponse(serial, buyList)); if (Config.GetBool("BuyAgentsIgnoreGold")) { World.Player.SendMessage(MsgLevel.Force, LocString.BuyAgentAttempt, total, cost); } else { World.Player.SendMessage(MsgLevel.Force, LocString.BuyTotals, total, cost); } } if (lowGoldWarn) { World.Player.SendMessage(MsgLevel.Force, LocString.BuyLowGold); } }
public override void OnButtonPress(int num) { switch (num) { case 1: World.Player.SendMessage(MsgLevel.Force, LocString.TargItemAdd); Targeting.OneTimeTarget(new Targeting.TargetResponseCallback(OnTarget)); break; case 2: if (m_SubList == null) { break; } if (m_SubList.SelectedIndex >= 0) { BuyEntry e = (BuyEntry)m_Items[m_SubList.SelectedIndex]; ushort amount = e.Amount; if (InputBox.Show(Engine.MainWindow, Language.GetString(LocString.EnterAmount), Language.GetString(LocString.InputReq), amount.ToString())) { e.Amount = (ushort)InputBox.GetInt(1); m_SubList.BeginUpdate(); m_SubList.Items.Clear(); for (int i = 0; i < m_Items.Count; i++) { m_SubList.Items.Add(m_Items[i]); } m_SubList.EndUpdate(); } } break; case 3: if (MessageBox.Show(Language.GetString(LocString.Confirm), Language.GetString(LocString.ClearList), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (m_SubList.SelectedIndex >= 0) { m_Items.RemoveAt(m_SubList.SelectedIndex); m_SubList.Items.RemoveAt(m_SubList.SelectedIndex); m_SubList.SelectedIndex = -1; } } break; case 4: if (MessageBox.Show(Language.GetString(LocString.Confirm), Language.GetString(LocString.ClearList), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { m_SubList.Items.Clear(); m_Items.Clear(); } break; case 5: m_Enabled = !m_Enabled; m_EnableBTN.Text = Language.GetString(m_Enabled ? LocString.PushDisable : LocString.PushEnable); break; } }