예제 #1
0
        protected internal override void Use(L2Player admin, string alias)
        {
            int id    = int.Parse(alias.Split(' ')[1]);
            int count = 1;

            try
            {
                count = int.Parse(alias.Split(' ')[2]);
            }
            catch (Exception e)
            {
                _log.Error($"AdminSpawnItem: {e.Message}");
            }

            admin.AddItem(id, count);
        }
예제 #2
0
파일: Capsule.cs 프로젝트: LFBRxD/L2dotNET
        public static void Process(L2Character character, L2Item item)
        {
            if (!(character is L2Player) || !Items.ContainsKey(item.Template.ItemId))
            {
                return;
            }

            CapsuleItem caps   = Items[item.Template.ItemId];
            L2Player    player = (L2Player)character;

            player.DestroyItem(item, 1);
            foreach (CapsuleItemReward rew in caps.Rewards.Where(rew => RandomThreadSafe.Instance.Next(100) <= rew.Rate))
            {
                player.AddItem(rew.Id, RandomThreadSafe.Instance.Next(rew.Min, rew.Max));
            }
        }
예제 #3
0
        protected internal override void Use(L2Player admin, string alias)
        {
            //summon [id | name] [количество] -- призывает предмет\нпц [id] . Если количество не задано , призывает 1

            int id    = int.Parse(alias.Split(' ')[1]);
            int count = 1;

            try
            {
                count = int.Parse(alias.Split(' ')[2]);
            }
            catch (Exception e)
            {
                _log.Error($"AdminSpawnItem: {e.Message}");
            }

            admin.AddItem(id, count);
        }
예제 #4
0
        protected internal override async Task UseAsync(L2Player admin, string alias)
        {
            await Task.Run(() =>
            {
                int id    = int.Parse(alias.Split(' ')[1]);
                int count = 1;

                try
                {
                    count = int.Parse(alias.Split(' ')[2]);
                }
                catch (Exception e)
                {
                    Log.Error($"AdminSpawnItem: {e.Message}");
                }

                admin.AddItem(id, count);
            });
        }
예제 #5
0
        public override void UsePlayer(L2Player player, L2Item item)
        {
            if (!Player)
            {
                base.UsePlayer(player, item);
                return;
            }

            if (Destroy)
            {
                player.DestroyItem(item, 1);
            }

            CalcSkill(player);
            CalcEffect(player);

            if (_exchangeItems != null)
            {
                foreach (int val in _exchangeItems.Keys)
                {
                    player.AddItem(val, _exchangeItems[val]);
                }
            }

            if (PetId != -1)
            {
                player.PetSummon(item, PetId);
            }

            if (SummonId != -1)
            {
                player.PetSummon(item, SummonId, false);
            }

            if (SummonStaticId != -1)
            {
                //NpcTable.Instance.SpawnNpc(SummonStaticID, player.X, player.Y, player.Z, player.Heading);
            }
        }
예제 #6
0
        public override void UsePlayer(L2Player player, L2Item item)
        {
            // TODO: Debug this code
            if (!Player)
            {
                base.UsePlayer(player, item);
                return;
            }

            if (Destroy)
            {
                player.DestroyItem(item, 1);
            }

            if (_exchangeItems != null)
            {
                foreach (int val in _exchangeItems.Keys)
                {
                    player.AddItem(val, _exchangeItems[val]);
                }
            }

            if (PetId.HasValue)
            {
                player.PetSummon(item, PetId.Value);
            }

            if (SummonId.HasValue)
            {
                player.PetSummon(item, SummonId.Value, false);
            }

            if (SummonStaticId.HasValue)
            {
                //NpcTable.Instance.SpawnNpc(SummonStaticID.Value, player.X, player.Y, player.Z, player.Heading);
            }
        }
예제 #7
0
        public override void RunImpl()
        {
            L2Player player = _client.CurrentPlayer;

            if (_count <= 0)
            {
                player.SendActionFailed();
                return;
            }

            L2Npc trader = player.FolkNpc;

            if (trader == null)
            {
                player.SendSystemMessage(SystemMessage.SystemMessageId.TradeAttemptFailed);
                player.SendActionFailed();
                return;
            }

            NDShop shop = NpcData.Instance.Shops[trader.Template.NpcId];

            if (shop == null)
            {
                player.SendSystemMessage(SystemMessage.SystemMessageId.TradeAttemptFailed);
                player.SendActionFailed();
                return;
            }

            NdShopList list = shop.Lists[(short)_listId];

            if (list == null)
            {
                player.SendSystemMessage(SystemMessage.SystemMessageId.TradeAttemptFailed);
                player.SendActionFailed();
                return;
            }

            int adena  = 0;
            int slots  = 0,
                weight = 0;

            for (int i = 0; i < _count; i++)
            {
                int itemId = _items[i * 2];

                bool notfound = true;
                foreach (NDShopItem item in list.Items.Where(item => item.Item.ItemId == itemId))
                {
                    adena += item.Item.ReferencePrice * _items[(i * 2) + 1];

                    if (!item.Item.Stackable)
                    {
                        slots++;
                    }
                    //else
                    //{
                    //    if (!player.HasItem(item.item.ItemID))
                    //        slots++;
                    //}

                    weight += item.Item.Weight * _items[(i * 2) + 1];

                    notfound = false;
                    break;
                }

                if (!notfound)
                {
                    continue;
                }

                player.SendSystemMessage(SystemMessage.SystemMessageId.TradeAttemptFailed);
                player.SendActionFailed();
                return;
            }

            if (adena > player.GetAdena())
            {
                player.SendSystemMessage(SystemMessage.SystemMessageId.YouNotEnoughAdena);
                return;
            }

            player.ReduceAdena(adena);

            for (int i = 0; i < _count; i++)
            {
                int itemId = _items[i * 2];
                int count  = _items[(i * 2) + 1];

                player.AddItem(itemId, count);
            }

            player.SendPacket(new ExBuySellListClose());
        }