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); } } }
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); } } } } }