Пример #1
0
        public void OnRemoveEntity(EntityEventArgs args)
        {
            var handle = args.Entity.Handle;

            var disposable = UsableAbilities.FirstOrDefault(x => x.Handle == handle) as IDisposable;

            disposable?.Dispose();

            EvadableAbilities.RemoveAll(x => x.Handle == handle || x.OwnerHandle == handle);
            UsableAbilities.RemoveAll(x => x.Handle == handle);
        }
Пример #2
0
        //public async void OnUpdate(EventArgs args)
        //{
        //    if (processing || sleeper.Sleeping || !Game.IsInGame)
        //    {
        //        return;
        //    }

        //    processing = true;

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

        //                    if (Menu.Debug.FastAbilityAdd)
        //                    {
        //                        Menu.EnemiesSettings.AddAbility(evadableAbility);
        //                    }
        //                    else
        //                    {
        //                        await Menu.EnemiesSettings.AddAbility(evadableAbility);
        //                    }

        //                    EvadableAbilities.Add(evadableAbility);
        //                }
        //            }

        //            addedAbilities.Add(ability.Handle);
        //        }
        //    }

        //    sleeper.Sleep(3000);
        //    processing = false;
        //}

        private void EntityOnOnInt64PropertyChange(Entity sender, Int64PropertyChangeEventArgs args)
        {
            if (args.OldValue != 0 || args.NewValue != 1 || args.PropertyName != "m_iIsControllableByPlayer64")
            {
                return;
            }

            if (sender.Team == HeroTeam && sender is Creep)
            {
                EvadableAbilities.RemoveAll(x => x.OwnerHandle == sender.Handle);
            }
        }
Пример #3
0
        private void EntityOnOnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue == args.OldValue || args.NewValue > 0 || args.PropertyName != "m_iHealth")
            {
                return;
            }

            var creep = sender as Creep;

            if (creep == null || !creep.IsValid)
            {
                return;
            }

            EvadableAbilities.RemoveAll(x => x.OwnerHandle == creep.Handle);
        }
Пример #4
0
        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);
                    }
                }
            }
        }
Пример #5
0
        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);
        }