public async void OnUpdate() { while (processing) { await Task.Delay(2000); foreach (var unit in ObjectManager.GetEntities <Unit>() .Where( x => !(x is Building) && x.IsValid && x.IsAlive && x.IsSpawned && (!x.IsIllusion || x.HasModifiers( new[] { "modifier_arc_warden_tempest_double", "modifier_vengefulspirit_hybrid_special", "modifier_morph_hybrid_special" }, false)))) { var abilities = new List <Ability>(); try { abilities.AddRange(unit.Spellbook.Spells.ToList()); if (unit.HasInventory) { abilities.AddRange( unit.Inventory.Items.Where(x => x.Purchaser.Hero?.Handle == unit.Handle)); } } catch { continue; } foreach (var ability in abilities.Where( x => x.IsValid && !addedAbilities.Contains(x.Handle) && x.Level > 0)) { if (unit.Equals(Hero)) { var abilityName = ability.Name; Func <Ability, UsableAbility> func; if (allyAbilitiesData.CounterAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Counter); UsableAbilities.Add(func.Invoke(ability)); } if (allyAbilitiesData.DisableAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Disable); UsableAbilities.Add(func.Invoke(ability)); } if (allyAbilitiesData.BlinkAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Blink); UsableAbilities.Add(func.Invoke(ability)); } } else if (unit.Team != HeroTeam || ability.Id == AbilityId.faceless_void_chronosphere) { Func <Ability, EvadableAbility> func; if (enemyAbilitiesData.EvadableAbilities.TryGetValue(ability.Name, out func)) { var evadableAbility = func.Invoke(ability); if (Menu.Debug.FastAbilityAdd) { Menu.EnemiesSettings.AddAbility(evadableAbility); } else { await Menu.EnemiesSettings.AddAbility(evadableAbility); } EvadableAbilities.Add(evadableAbility); } } addedAbilities.Add(ability.Handle); } } } }
public void OnUpdate(EventArgs args) { if (sleeper.Sleeping) { return; } foreach (var unit in ObjectManager.GetEntitiesParallel <Unit>() .Where( x => !(x is Building) && x.IsValid && x.IsAlive && x.IsSpawned && (!x.IsIllusion || x.HasModifiers( new[] { "modifier_arc_warden_tempest_double", "modifier_vengefulspirit_hybrid_special", "modifier_morph_hybrid_special" }, false)))) { var abilities = new List <Ability>(); try { abilities.AddRange(unit.Spellbook.Spells.ToList()); if (unit.HasInventory) { abilities.AddRange(unit.Inventory.Items); } } catch { continue; } foreach (var ability in abilities.Where( x => x.IsValid && !addedAbilities.Contains(x.Handle) && x.Level > 0)) { if (unit.Equals(Hero)) { var abilityName = ability.Name; Func <Ability, UsableAbility> func; if (allyAbilitiesData.CounterAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Counter); UsableAbilities.Add(func.Invoke(ability)); } if (allyAbilitiesData.DisableAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Disable); UsableAbilities.Add(func.Invoke(ability)); } if (allyAbilitiesData.BlinkAbilities.TryGetValue(abilityName, out func)) { Menu.UsableAbilities.AddAbility(abilityName, AbilityType.Blink); UsableAbilities.Add(func.Invoke(ability)); } } else if (unit.Team != HeroTeam || ability.ClassId == ClassId.CDOTA_Ability_FacelessVoid_Chronosphere) { Func <Ability, EvadableAbility> func; if (enemyAbilitiesData.EvadableAbilities.TryGetValue(ability.Name, out func)) { var evadableAbility = func.Invoke(ability); Menu.EnemiesSettings.AddAbility(evadableAbility); EvadableAbilities.Add(evadableAbility); } } addedAbilities.Add(ability.Handle); } } sleeper.Sleep(3000); }