public override bool AddToWorld()
        {
            int color = Util.Random(0, 86);
            GameNpcInventoryTemplate template = new GameNpcInventoryTemplate();

            template.AddNPCEquipment(eInventorySlot.TorsoArmor, 746, color, 0, 3);
            template.AddNPCEquipment(eInventorySlot.FeetArmor, 750, color, 0, 3);
            template.AddNPCEquipment(eInventorySlot.HandsArmor, 749, color, 0, 3);
            template.AddNPCEquipment(eInventorySlot.LegsArmor, 747, color);
            template.AddNPCEquipment(eInventorySlot.ArmsArmor, 748, color);
            template.AddNPCEquipment(eInventorySlot.HeadArmor, 1290);
            template.AddNPCEquipment(eInventorySlot.RightHandWeapon, 2684);
            Inventory       = template.CloseTemplate();
            Name            = "Mystic Legendaries";
            GuildName       = "Matter Weapons";
            Model           = 1642;
            Size            = 50;
            Level           = 50;
            RespawnInterval = 2000;
            MaxSpeedBase    = 0;
            Realm           = 0;
            Flags          |= eFlags.PEACE;
            TradeItems      = new MerchantTradeItems("LegendaryMatterWeapons");

            return(base.AddToWorld());
        }
        public override bool AddToWorld()
        {
            int color = Util.Random(0, 86);
            GameNpcInventoryTemplate template = new GameNpcInventoryTemplate();

            template.AddNPCEquipment(eInventorySlot.Cloak, 3800);
            template.AddNPCEquipment(eInventorySlot.TorsoArmor, 2928);
            template.AddNPCEquipment(eInventorySlot.LegsArmor, 2929);
            template.AddNPCEquipment(eInventorySlot.ArmsArmor, 2930);
            template.AddNPCEquipment(eInventorySlot.HandsArmor, 2931);
            template.AddNPCEquipment(eInventorySlot.FeetArmor, 2932);

            Inventory       = template.CloseTemplate();
            Level           = 60;
            Name            = "Labyrinth Weapons";
            GuildName       = "Alb Merchant";
            Model           = 33;
            Size            = 54;
            RespawnInterval = 2000;
            MaxSpeedBase    = 0;
            Realm           = 0;
            TradeItems      = new MerchantTradeItems("AlbLabWeaps");

            return(base.AddToWorld());
        }
Beispiel #3
0
        public override bool AddToWorld()
        {
            Level = 60;
            Name = "Dragon Merchant";
            GuildName = "";
            Model = 1903;

            MaxSpeedBase = 0;
            Realm = 0;

            TradeItems = new MerchantTradeItems("dragon_merchant");

            return base.AddToWorld();
        }
        public override bool AddToWorld()
        {
            Level     = 60;
            Name      = "Dragon Merchant";
            GuildName = "";
            Model     = 1903;

            MaxSpeedBase = 0;
            Realm        = 0;

            TradeItems = new MerchantTradeItems("dragon_merchant");

            return(base.AddToWorld());
        }
        private static void LoadItemLists()
        {
            AlbionLotMarkerItems = new MerchantTradeItems("housing_alb_lotmarker");
            MidgardLotMarkerItems = new MerchantTradeItems("housing_mid_lotmarker");
            HiberniaLotMarkerItems = new MerchantTradeItems("housing_hib_lotmarker");
            CustomLotMarkerItems = new MerchantTradeItems("housing_custom_lotmarker");

            IndoorMenuItems = new MerchantTradeItems("housing_indoor_menu");
            IndoorShopItems = new MerchantTradeItems("housing_indoor_shop");
            OutdoorMenuItems = new MerchantTradeItems("housing_outdoor_menu");
            OutdoorShopItems = new MerchantTradeItems("housing_outdoor_shop");

            IndoorNPCShopItems = new MerchantTradeItems("housing_indoor_npc");
            IndoorVaultShopItems = new MerchantTradeItems("housing_indoor_vault");
            IndoorCraftShopItems = new MerchantTradeItems("housing_indoor_craft");
            IndoorBindstoneShopItems = new MerchantTradeItems("housing_indoor_bindstone");
        }
        public override bool AddToWorld()
        {
            int color = Util.Random(0, 86);
            GameNpcInventoryTemplate template = new GameNpcInventoryTemplate();

            template.AddNPCEquipment(eInventorySlot.Cloak, 3802);
            template.AddNPCEquipment(eInventorySlot.TorsoArmor, 3390);
            template.AddNPCEquipment(eInventorySlot.LegsArmor, 3391);
            template.AddNPCEquipment(eInventorySlot.ArmsArmor, 3392);
            template.AddNPCEquipment(eInventorySlot.HandsArmor, 3393);
            template.AddNPCEquipment(eInventorySlot.FeetArmor, 3394);
            Inventory       = template.CloseTemplate();
            RespawnInterval = 2000;
            MaxSpeedBase    = 0;
            Flags          |= eFlags.PEACE;
            TradeItems      = new MerchantTradeItems("HiberniaDragonItems");

            return(base.AddToWorld());
        }
        public override bool AddToWorld()
        {
            int color = Util.Random(0, 86);
            GameNpcInventoryTemplate template = new GameNpcInventoryTemplate();
            template.AddNPCEquipment(eInventorySlot.Cloak, 3800);
            template.AddNPCEquipment(eInventorySlot.TorsoArmor, 2928);
            template.AddNPCEquipment(eInventorySlot.LegsArmor, 2929);
            template.AddNPCEquipment(eInventorySlot.ArmsArmor, 2930);
            template.AddNPCEquipment(eInventorySlot.HandsArmor, 2931);
            template.AddNPCEquipment(eInventorySlot.FeetArmor, 2932);

            Inventory = template.CloseTemplate();
            Level = 60;
            Name = "Labyrinth Weapons";
            GuildName = "Alb Merchant";
            Model = 33;
            Size = 54;
            RespawnInterval = 2000;
            MaxSpeedBase = 0;
            Realm = 0;
            TradeItems = new MerchantTradeItems("AlbLabWeaps");

            return base.AddToWorld();
        }
Beispiel #8
0
        /// <summary>
        /// 1125d+ Merchant window
        /// </summary>
        public override void SendMerchantWindow(MerchantTradeItems tradeItemsList, eMerchantWindowType windowType)
        {
            if (tradeItemsList != null)
            {
                for (byte page = 0; page < MerchantTradeItems.MAX_PAGES_IN_TRADEWINDOWS; page++)
                {
                    IDictionary itemsInPage = tradeItemsList.GetItemsInPage((int)page);
                    if (itemsInPage == null || itemsInPage.Count == 0)
                    {
                        continue;
                    }

                    using (GSTCPPacketOut pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.MerchantWindow)))
                    {
                        pak.WriteByte((byte)itemsInPage.Count);            //Item count on this page
                        pak.WriteByte((byte)windowType);
                        pak.WriteByte((byte)page);                         //Page number
                        //pak.WriteByte(0x00); //Unused // testing

                        for (ushort i = 0; i < MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS; i++)
                        {
                            if (!itemsInPage.Contains((int)i))
                            {
                                continue;
                            }

                            var item = (ItemTemplate)itemsInPage[(int)i];
                            if (item != null)
                            {
                                pak.WriteByte((byte)i);                                 //Item index on page
                                pak.WriteByte((byte)item.Level);
                                // some objects use this for count
                                int value1;
                                int value2;
                                switch (item.Object_Type)
                                {
                                case (int)eObjectType.Arrow:
                                case (int)eObjectType.Bolt:
                                case (int)eObjectType.Poison:
                                case (int)eObjectType.GenericItem:
                                {
                                    value1 = item.PackSize;
                                    value2 = value1 * item.Weight;
                                    break;
                                }

                                case (int)eObjectType.Thrown:
                                {
                                    value1 = item.DPS_AF;
                                    value2 = item.PackSize;
                                    break;
                                }

                                case (int)eObjectType.Shield:
                                {
                                    value1 = item.Type_Damage;
                                    value2 = item.Weight;
                                    break;
                                }

                                case (int)eObjectType.GardenObject:
                                {
                                    value1 = 0;
                                    value2 = item.Weight;
                                    break;
                                }

                                default:
                                {
                                    value1 = item.DPS_AF;
                                    value2 = item.Weight;
                                    break;
                                }
                                }
                                pak.WriteByte((byte)value1);
                                pak.WriteByte((byte)item.SPD_ABS);
                                if (item.Object_Type == (int)eObjectType.GardenObject)
                                {
                                    pak.WriteByte((byte)(item.DPS_AF));
                                }
                                else
                                {
                                    pak.WriteByte((byte)(item.Hand << 6));
                                }

                                pak.WriteByte((byte)((item.Type_Damage << 6) | item.Object_Type));
                                //1 if item cannot be used by your class (greyed out)
                                if (m_gameClient.Player != null && m_gameClient.Player.HasAbilityToUseItem(item))
                                {
                                    pak.WriteByte(0x01);                                     // these maybe switched in 1125 earlier revs
                                }
                                else
                                {
                                    pak.WriteByte(0x00);                                     // these maybe switched in 1125 earlier revs
                                }

                                pak.WriteShortLowEndian((ushort)value2);
                                pak.WriteIntLowEndian((uint)item.Price);
                                pak.WriteShortLowEndian((ushort)item.Model);
                                pak.WritePascalStringIntLE(item.Name);
                            }
                            else
                            {
                                if (log.IsErrorEnabled)
                                {
                                    log.Error("Merchant item template '" +
                                              ((MerchantItem)itemsInPage[page * MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS + i]).ItemTemplateID +
                                              "' not found, abort!!!");
                                }

                                return;
                            }
                        }
                        SendTCP(pak);
                    }
                }
            }
            else
            {
                using (GSTCPPacketOut pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.MerchantWindow)))
                {
                    pak.WriteByte(0);                     //Item count on this page
                    pak.WriteByte((byte)windowType);      //Unknown 0x00
                    pak.WriteByte(0);                     //Page number
                    pak.WriteByte(0x00);                  //Unused
                    SendTCP(pak);
                }
            }
        }
Beispiel #9
0
 public void SendMerchantWindow(MerchantTradeItems itemlist, eMerchantWindowType windowType)
 {
 }
 public override bool Interact(GamePlayer player)
 {
     TradeItems = new MerchantTradeItems("dragon_merchant");
     player.Out.SendMerchantWindow(TradeItems, eMerchantWindowType.Normal);
     return(true);
 }
		public virtual void SendMerchantWindow(MerchantTradeItems tradeItemsList, eMerchantWindowType windowType)
		{
			GSTCPPacketOut pak;

			if (tradeItemsList != null)
			{
				for (int page = 0; page < MerchantTradeItems.MAX_PAGES_IN_TRADEWINDOWS; page++)
				{
					IDictionary itemsInPage = tradeItemsList.GetItemsInPage(page);
					if (itemsInPage == null || itemsInPage.Count == 0)
						continue;

					using (pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.MerchantWindow)))
					{
						pak.WriteByte((byte) itemsInPage.Count); //Item count on this page
						pak.WriteByte((byte) windowType);
						pak.WriteByte((byte) page); //Page number
						pak.WriteByte(0x00); //Unused

						for (int i = 0; i < MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS; i++)
						{
							if (!itemsInPage.Contains(i))
								continue;

							var item = (ItemTemplate) itemsInPage[i];
							if (item != null)
							{
								pak.WriteByte((byte) i); //Item index on page
								pak.WriteByte((byte) item.Level);
								// some objects use this for count
								int value1;
								int value2;
								switch (item.Object_Type)
								{
									case (int) eObjectType.Arrow:
									case (int) eObjectType.Bolt:
									case (int) eObjectType.Poison:
									case (int) eObjectType.GenericItem:
										{
											value1 = item.PackSize;
											value2 = value1*item.Weight;
											break;
										}
									case (int) eObjectType.Thrown:
										{
											value1 = item.DPS_AF;
											value2 = item.PackSize;
											break;
										}
									case (int) eObjectType.Shield:
										{
											value1 = item.Type_Damage;
											value2 = item.Weight;
											break;
										}
									case (int) eObjectType.GardenObject:
										{
											value1 = 0;
											value2 = item.Weight;
											break;
										}
									default:
										{
											value1 = item.DPS_AF;
											value2 = item.Weight;
											break;
										}
								}
								pak.WriteByte((byte) value1);
								pak.WriteByte((byte) item.SPD_ABS);
								if (item.Object_Type == (int) eObjectType.GardenObject)
									pak.WriteByte((byte) (item.DPS_AF));
								else
									pak.WriteByte((byte) (item.Hand << 6));
								pak.WriteByte((byte) ((item.Type_Damage << 6) | item.Object_Type));
								//1 if item cannot be used by your class (greyed out)
								if (m_gameClient.Player != null && m_gameClient.Player.HasAbilityToUseItem(item))
									pak.WriteByte(0x00);
								else
									pak.WriteByte(0x01);
								pak.WriteShort((ushort) value2);
								//Item Price
								pak.WriteInt((uint) item.Price);
								pak.WriteShort((ushort) item.Model);
								pak.WritePascalString(item.Name);
							}
							else
							{
								if (log.IsErrorEnabled)
									log.Error("Merchant item template '" +
									          ((MerchantItem) itemsInPage[page*MerchantTradeItems.MAX_ITEM_IN_TRADEWINDOWS + i]).ItemTemplateID +
									          "' not found, abort!!!");
								return;
							}
						}
						SendTCP(pak);
					}
				}
			}
			else
			{
				using (pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.MerchantWindow)))
				{
					pak.WriteByte(0); //Item count on this page
					pak.WriteByte((byte) windowType); //Unknown 0x00
					pak.WriteByte(0); //Page number
					pak.WriteByte(0x00); //Unused
					SendTCP(pak);
				}
			}
		}
Beispiel #12
0
 public override bool Interact(GamePlayer player)
 {
     TradeItems = new MerchantTradeItems("dragon_merchant");
     player.Out.SendMerchantWindow(TradeItems, eMerchantWindowType.Normal);
     return true;
 }