Exemple #1
0
        public async Task Execute(IBotEngine instance)
        {
            CmdKill kill = new CmdKill {
                Monster = Monster
            };

            if (ItemType == ItemType.Items)
            {
                while (instance.IsRunning && Player.IsLoggedIn && Player.IsAlive &&
                       !Player.Inventory.ContainsItem(ItemName, Quantity))
                {
                    await kill.Execute(instance);

                    await Task.Delay(1000);
                }
            }
            else
            {
                while (instance.IsRunning && Player.IsLoggedIn && Player.IsAlive &&
                       !Player.TempInventory.ContainsItem(ItemName, Quantity))
                {
                    await kill.Execute(instance);

                    await Task.Delay(1000);
                }
            }
        }
Exemple #2
0
        public async Task Execute(IBotEngine instance)
        {
            CmdKill kill = new CmdKill {
                Monster = Monster, MonId = MonId
            };

            int id;

            if (int.TryParse(QuestId, out id))
            {
                while (!Player.Quests.IsInProgress(id))
                {
                    Player.Quests.Accept(id);
                    await Task.Delay(1000);
                }
                while (instance.IsRunning && Player.IsLoggedIn && Player.IsAlive && !Player.Quests.CanComplete(id))
                {
                    await kill.Execute(instance);

                    await Task.Delay(DelayAfterKill);
                }
            }
            else
            {
                List <string> removedList = new List <string>();
                config = instance.Configuration;

                string[] itemsName = ItemName.Split(new char[] { ',' });

                string[] quantities = Quantity.Split(new char[] { ',' });

                if (IsGetDrops)
                {
                    foreach (string _itemName in itemsName)
                    {
                        if (config.Drops.Any((string d) => d.Equals(_itemName, StringComparison.OrdinalIgnoreCase)))
                        {
                            config.Drops.Remove(_itemName);
                            removedList.Add(_itemName);
                        }
                    }
                }

                if (ItemType == ItemType.Items)
                {
                    int times = 0;
                    while (instance.IsRunning && Player.IsLoggedIn && Player.IsAlive &&
                           !Enumerable.Range(0, itemsName.Length).All(i => Player.Inventory.ContainsItem(itemsName[i], quantities[i])))
                    {
                        await kill.Execute(instance);

                        await Task.Delay(DelayAfterKill);

                        if (IsGetDrops && times >= AfterKills)
                        {
                            foreach (string _itemName in itemsName)
                            {
                                CmdGetDrop getDrop = new CmdGetDrop {
                                    ItemName = _itemName
                                };
                                await getDrop.Execute(instance);
                            }
                            times = 0;
                        }
                        times++;
                    }
                }
                else
                {
                    while (instance.IsRunning && Player.IsLoggedIn && Player.IsAlive &&
                           !Player.TempInventory.ContainsItem(ItemName, Quantity))
                    {
                        await kill.Execute(instance);

                        await Task.Delay(DelayAfterKill);
                    }
                }

                if (IsGetDrops)
                {
                    foreach (string _removed in removedList)
                    {
                        if (!config.Drops.Contains(_removed))
                        {
                            config.Drops.Add(_removed);
                        }
                    }
                }
            }
        }