Пример #1
0
 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;
 }
Пример #2
0
		/// <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);
		}
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
 /// <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());
 }
Пример #8
0
		/// <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();
		}
Пример #9
0
		public BankTabPocket(string name, BankTabRace race, int width, int height)
			: base(Pocket.None, width, height)
		{
			this.Name = name;
			this.Race = race;
		}
Пример #10
0
 /// <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());
 }
Пример #11
0
 public BankTabPocket(string name, BankTabRace race, int width, int height)
     : base(Pocket.None, width, height)
 {
     this.Name = name;
     this.Race = race;
 }
Пример #12
0
        /// <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);
        }
Пример #13
0
		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;
		}