public BankTabPocket(string name, long creatureId, BankTabRace race, int width, int height) : base(Pocket.None, width, height) { this.Name = name; this.CreatureId = creatureId; this.Race = race; }
/// <summary> /// Adds bank tab pocket. /// </summary> /// <param name="name">Name of the tab (character)</param> /// <param name="race">Race filter id (1|2|3)</param> /// <param name="width">Width of the tab pocket</param> /// <param name="height">Height of the tab pocket</param> public void AddTab(string name, BankTabRace race, int width, int height) { if (this.Tabs.ContainsKey(name)) throw new InvalidOperationException("Bank tab " + name + " already exists."); this.Tabs[name] = new BankTabPocket(name, race, width, height); }
/// <summary> /// Adds bank tab pocket. /// </summary> /// <param name="name">Name of the tab (character)</param> /// <param name="race">Race filter id (1|2|3)</param> /// <param name="width">Width of the tab pocket</param> /// <param name="height">Height of the tab pocket</param> public void AddTab(string name, BankTabRace race, int width, int height) { if (this.Tabs.ContainsKey(name)) { throw new InvalidOperationException("Bank tab " + name + " already exists."); } this.Tabs[name] = new BankTabPocket(name, race, width, height); }
/// <summary> /// Adds bank tab pocket. /// </summary> /// <param name="name">Name of the tab (character)</param> /// <param name="creatureId">The id of the character</param> /// <param name="race">Race filter id (1|2|3)</param> /// <param name="width">Width of the tab pocket</param> /// <param name="height">Height of the tab pocket</param> public void AddTab(PlayerCreature creature, BankTabRace race, int width, int height) { string tabName = string.Format("{0}@{1}", creature.Name, creature.Server); if (this.Tabs.ContainsKey(tabName)) { throw new InvalidOperationException("Bank tab " + tabName + " already exists."); } this.Tabs[tabName] = new BankTabPocket(creature.Name, creature.CreatureId, race, width, height); }
/// <summary> /// Sends OpenBank to creature's client. /// </summary> /// <param name="creature"></param> /// <param name="bank"></param> /// <param name="race"></param> public static void OpenBank(Creature creature, BankInventory bank, BankTabRace race, string bankId, string bankTitle) { var packet = new Packet(Op.OpenBank, creature.EntityId); packet.PutByte(1); packet.PutByte((byte)race); packet.PutLong(DateTime.Now); packet.PutByte(0); packet.PutString(creature.Client.Account.Id); packet.PutString(bankId); packet.PutString(bankTitle); packet.PutInt(bank.Gold); var server = creature.Client.Account.Characters.FirstOrDefault(c => c.EntityId == packet.Id).Server; var tabList = bank.GetTabList(server, race); packet.PutInt(tabList.Count); foreach (var tab in tabList) { packet.PutString(tab.Name); packet.PutByte((byte)tab.Race); // [190200, NA204 (2015-05-19)] ? // Haven't opened a bank in a while, could've been // added earlier. -- exec { packet.PutInt(0); } packet.PutInt(tab.Width); packet.PutInt(tab.Height); var itemList = tab.GetItemList(); packet.PutInt(itemList.Count); foreach (var item in itemList) { packet.PutString(item.Bank); packet.PutLong(item.BankTransferRemaining); packet.PutLong(item.BankTransferStart); packet.AddItemInfo(item, ItemPacketType.Private); } } creature.Client.Send(packet); }
/// <summary> /// Sends OpenBank to creature's client. /// </summary> /// <param name="creature"></param> /// <param name="bank"></param> /// <param name="race"></param> public static void OpenBank(Creature creature, BankInventory bank, BankTabRace race) { var packet = new Packet(Op.OpenBank, creature.EntityId); packet.PutByte(1); packet.PutByte((byte)race); packet.PutLong(DateTime.Now); packet.PutByte(0); packet.PutString(creature.Client.Account.Id); packet.PutString("Global"); // Current bank id packet.PutString("Bank"); // Current bank title packet.PutInt(bank.Gold); var tabList = bank.GetTabList(race); packet.PutInt(tabList.Count); foreach (var tab in tabList) { packet.PutString(tab.Name); packet.PutByte((byte)tab.Race); // [190200, NA204 (2015-05-19)] ? // Haven't opened a bank in a while, could've been // added earlier. -- exec { packet.PutInt(0); } packet.PutInt(tab.Width); packet.PutInt(tab.Height); var itemList = tab.GetItemList(); packet.PutInt(itemList.Count); foreach (var item in itemList) { packet.PutString("Global"); // Bank id packet.PutULong(18446744017659355058); packet.PutULong(0); packet.AddItemInfo(item, ItemPacketType.Private); } } creature.Client.Send(packet); }
/// <summary> /// Returns thread-safe list of tabs. /// </summary> /// <param name="race"></param> /// <returns></returns> public IList <BankTabPocket> GetTabList(string server, BankTabRace race) { lock (this.Tabs) return(this.Tabs.Where(t => t.Key.Split('@')[1] == server).Select(kv => kv.Value).Where(a => a.Race == race).ToList()); }
/// <summary> /// Returns thread-safe list of tabs. /// </summary> /// <param name="race"></param> /// <returns></returns> public IList<BankTabPocket> GetTabList(BankTabRace race) { lock (this.Tabs) return this.Tabs.Values.Where(a => a.Race == race).ToList(); }
public BankTabPocket(string name, BankTabRace race, int width, int height) : base(Pocket.None, width, height) { this.Name = name; this.Race = race; }
/// <summary> /// Returns thread-safe list of tabs. /// </summary> /// <param name="race"></param> /// <returns></returns> public IList <BankTabPocket> GetTabList(BankTabRace race) { lock (this.Tabs) return(this.Tabs.Values.Where(a => a.Race == race).ToList()); }
/// <summary> /// Sends OpenBank to creature's client. /// </summary> /// <param name="creature"></param> /// <param name="bank"></param> /// <param name="race"></param> public static void OpenBank(Creature creature, BankInventory bank, BankTabRace race, string bankId, string bankTitle) { var packet = new Packet(Op.OpenBank, creature.EntityId); packet.PutByte(1); packet.PutByte((byte)race); packet.PutLong(DateTime.Now); packet.PutByte(0); packet.PutString(creature.Client.Account.Id); packet.PutString(bankId); packet.PutString(bankTitle); packet.PutInt(bank.Gold); var tabList = bank.GetTabList(race); packet.PutInt(tabList.Count); foreach (var tab in tabList) { packet.PutString(tab.Name); packet.PutByte((byte)tab.Race); // [190200, NA204 (2015-05-19)] ? // Haven't opened a bank in a while, could've been // added earlier. -- exec { packet.PutInt(0); } packet.PutInt(tab.Width); packet.PutInt(tab.Height); var itemList = tab.GetItemList(); packet.PutInt(itemList.Count); foreach (var item in itemList) { packet.PutString(item.Bank); packet.PutLong(item.BankTransferRemaining); packet.PutLong(item.BankTransferStart); packet.AddItemInfo(item, ItemPacketType.Private); } } creature.Client.Send(packet); }