示例#1
0
        private void OnParticleAdded(ParticleAddedEventArgs args)
        {
            try
            {
                var particleName = args.Particle.Name;

                if (!this.addedParticles.TryGetValue(particleName, out var abilityId))
                {
                    return;
                }

                if (!(this.evadableAbilities.Find(x => x.Ability.Id == abilityId) is IParticle ability))
                {
                    return;
                }

                var allyAbility = EntityManager9.Heroes.Any(
                    x => x.IsAlly(this.owner.Team) && (x.Id == HeroId.npc_dota_hero_rubick || x.Id == HeroId.npc_dota_hero_morphling) &&
                    x.IsAlive && x.Abilities.Any(z => z.Id == abilityId && z.TimeSinceCasted < 0.5f));

                if (allyAbility)
                {
                    return;
                }

                ability.AddParticle(args.Particle, particleName);
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
示例#2
0
 private void OnParticleAdded(ParticleAddedEventArgs e)
 {
     if (e.Particle.Name == "particles/units/heroes/hero_disruptor/disruptor_glimpse_targetend.vpcf")
     {
         this.glimpseParticle = e.Particle;
     }
 }
示例#3
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            try
            {
                var particle = e.Particle;
                if (particle.Owner?.Handle != this.playerHandle)
                {
                    return;
                }

                switch (e.Particle.Name)
                {
                case "particles/units/heroes/hero_kunkka/kunkka_spell_x_spot.vpcf":
                case "particles/econ/items/kunkka/divine_anchor/hero_kunkka_dafx_skills/kunkka_spell_x_spot_fxset.vpcf":
                {
                    UpdateManager.BeginInvoke(() => this.xMark.Position = particle.GetControlPoint(0));
                    break;
                }

                case "particles/units/heroes/hero_kunkka/kunkka_ghostship_marker.vpcf":
                {
                    var time = GameManager.RawGameTime - (GameManager.Ping / 2000);
                    UpdateManager.BeginInvoke(() => this.ship.CalculateTimings(particle.GetControlPoint(0), time));
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
示例#4
0
        private static void ParticleSpecific(ParticleAddedEventArgs e)
        {
            var particle = e.Particle;

            if (particle.Owner == General.localHero)
            {
                return;
            }


            Hero hero = null;

            if (particle.Owner is Hero == false)
            {
                return;
            }
            hero = particle.Owner as Hero;
            if (!hero.IsEnemy(General.localHero))
            {
                return;
            }

            if (particle.Name == "particles/units/heroes/hero_earthshaker/earthshaker_echoslam_start.vpcf")
            {
                AddSpecific(hero, AbilityId.earthshaker_echo_slam);
                return;
            }

            if (particle.Name == "particles/units/heroes/hero_void_spirit/aether_remnant/void_spirit_aether_remnant_pre.vpcf")
            {
                AddSpecific(hero, AbilityId.void_spirit_aether_remnant);
                return;
            }

            if (particle.Name == "particles/units/heroes/hero_shredder/shredder_whirling_death.vpcf")
            {
                AddSpecific(hero, AbilityId.shredder_whirling_death);
                return;
            }
            if (particle.Name == "particles/units/heroes/hero_pangolier/pangolier_swashbuckler_dash.vpcf")
            {
                AddSpecific(hero, AbilityId.pangolier_swashbuckle);
                return;
            }
            if (particle.Name == "particles/units/heroes/hero_pangolier/pangolier_tailthump_cast.vpcf")
            {
                AddSpecific(hero, AbilityId.pangolier_shield_crash);
                return;
            }
            if (particle.Name == "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot_cast.vpcf")
            {
                AddSpecific(hero, AbilityId.skywrath_mage_concussive_shot);
                return;
            }
            if (particle.Name == "particles/units/heroes/hero_pudge/pudge_rot.vpcf")
            {
                AddSpecific(hero, AbilityId.pudge_rot);
                return;
            }
        }
示例#5
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            var particle = e.Particle;

            switch (particle.Name)
            {
            case "particles/items2_fx/teleport_start.vpcf":
            case "particles/econ/items/tinker/boots_of_travel/teleport_start_bots.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_start_ti10.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_start_ti10_lvl2.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_start_ti10_lvl3.vpcf":
                UpdateManager.BeginInvoke(100, () => this.CheckTeleport(particle, true));
                break;

            case "particles/items2_fx/teleport_end.vpcf":
            case "particles/econ/items/tinker/boots_of_travel/teleport_end_bots.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_end_ti10.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_end_ti10_lvl2.vpcf":
            case "particles/econ/events/ti10/teleport/teleport_end_ti10_lvl3.vpcf":
                UpdateManager.BeginInvoke(() => this.CheckTeleport(particle, false));
                break;
                //default:
                //{
                //    var name = args.Particle.Name;
                //    if ((name.Contains("teleport_start") || name.Contains("teleport_end")) && !name.Contains("furion"))
                //    {
                //        Logger.Error("TP Particle", name);
                //    }
                //    break;
                //}
            }
        }
示例#6
0
        private void ParticleManager_ParticleAdded(ParticleAddedEventArgs e)
        {
            if (e.IsCollection)
            {
                return;
            }

            Console.WriteLine(e.Particle.Handle + "  " + e.Particle.Index);
        }
示例#7
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            try
            {
                if (!this.abilityData.Particles.TryGetValue(e.Particle.Name, out var data))
                {
                    return;
                }

                /*if (data.ParticleReleaseData)
                 * {
                 *  return;
                 * }*/

                UpdateManager.BeginInvoke(
                    () =>
                {
                    try
                    {
                        var particle = e.Particle;
                        if (!particle.IsValid)
                        {
                            return;
                        }

                        data.AddDrawableAbility(
                            this.drawableAbilities,
                            particle,
                            this.allyTeam,
                            this.notificationsEnabled ? this.notificator : null);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
示例#8
0
        private async void EntityOnParticleEffectAdded(ParticleAddedEventArgs e)
        {
            if (e.IsCollection)
            {
                return;
            }

            var particle = e.Particle;

            if (!this.IsValid(particle))
            {
                return;
            }

            var item = new LogItem(LogType.Particle, Color.LightGreen, "Particle added");

            item.AddLine("Name: " + particle.Name, particle.Name);

            await Task.Delay(1);

            if (this.IsValid(particle))
            {
                item.AddLine("Highest control point: " + particle.HighestControlPoint, particle.HighestControlPoint);

                if (this.showCpValues)
                {
                    for (var i = 0; i <= particle.HighestControlPoint; i++)
                    {
                        var point = particle.GetControlPoint(i);
                        if (this.ignoreZeroCp && point.IsZero)
                        {
                            continue;
                        }

                        item.AddLine("CP " + i + ": " + point, point);
                    }
                }
            }

            this.log.Display(item);
        }
示例#9
0
        private void OnParticleEffectAdded(ParticleAddedEventArgs e)
        {
            try
            {
                var particle = e.Particle;
                if (!particle.IsValid)
                {
                    return;
                }

                if (this.ignoredParticles.Contains(particle.Name))
                {
                    return;
                }

                UpdateManager.BeginInvoke(
                    () =>
                {
                    try
                    {
                        if (!particle.IsValid)
                        {
                            return;
                        }


                        this.ParticleAdded?.Invoke(new Particle9(particle, particle.Name, particle.Owner, false));
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
示例#10
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            try
            {
                var owner = e.Particle.Owner;
                if (owner == null || owner.Handle != this.Handle || e.Particle.Name != "particles/items_fx/immunity_sphere.vpcf")
                {
                    return;
                }

                if (this.linkensSphereTalent?.IsValid != true || this.linkensSphereTalent.Level <= 0)
                {
                    return;
                }

                this.talentSleeper.Sleep(this.linkensSphereTalent.SpellBlockCooldown);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
示例#11
0
        private void OnParticleAddedTemp(Entity sender, ParticleAddedEventArgs args)
        {
            //todo delete

            try
            {
                var name = args.Particle.Name;

                foreach (var key in this.particles.Keys)
                {
                    if (!name.Contains(key) || this.knownParticles.Contains(name))
                    {
                        continue;
                    }

                    Logger.Error("Particle", name);
                    break;
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
示例#12
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            var particle = e.Particle;

            switch (particle.Name)
            {
            case "particles/units/heroes/hero_sandking/sandking_sandstorm.vpcf":
            {
                UpdateManager.BeginInvoke(async() =>
                    {
                        try
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var position  = particle.GetControlPoint(0);
                            var sandStorm = EntityManager9.Abilities.FirstOrDefault(x => x.Id == AbilityId.sandking_sand_storm && x.Owner.Distance(position) < 500);

                            if (sandStorm == null || sandStorm.Owner.Team == this.Owner.Team)
                            {
                                return;
                            }

                            while (particle.IsValid)
                            {
                                if (this.ForceUse(sandStorm.Owner, position, 0.5f))
                                {
                                    break;
                                }

                                await Task.Delay(300);
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.Error(ex);
                        }
                    });
            }
            break;

            case "particles/units/heroes/hero_nyx_assassin/nyx_assassin_vendetta_start.vpcf":
            {
                UpdateManager.BeginInvoke(() =>
                    {
                        try
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var position = particle.GetControlPoint(0);
                            var vendetta = EntityManager9.Abilities.FirstOrDefault(x => x.Id == AbilityId.nyx_assassin_vendetta && x.Owner.Distance(position) < 500);

                            if (vendetta == null || vendetta.Owner.Team == this.Owner.Team)
                            {
                                return;
                            }

                            this.ForceUse(vendetta.Owner, position);
                        }
                        catch (Exception ex)
                        {
                            Logger.Error(ex);
                        }
                    });
            }
            break;
            }
        }
示例#13
0
        private void OnParticleAdded(ParticleAddedEventArgs e)
        {
            try
            {
                var particle = e.Particle;
                if (!particle.IsValid)
                {
                    return;
                }

                var name   = particle.Name;
                var entity = particle.Owner;

                if (ParticleCorrection.IgnoreParticles.Any(x => name.Contains(x)))
                {
                    return;
                }

                if (name.Contains("generic_hit_blood"))
                {
                    var isRoshan = entity.NetworkName == "CDOTA_Unit_Roshan";
                    if (!isRoshan && entity.NetworkName != "CDOTA_BaseNPC_Creep_Neutral")
                    {
                        return;
                    }

                    UpdateManager.BeginInvoke(() =>
                    {
                        if (!particle.IsValid)
                        {
                            return;
                        }

                        JungleScan(entity, isRoshan, particle.GetControlPoint(0));
                    });
                }

                if (AncientApparitionIceBlast.Particle(particle, name))
                {
                    return;
                }

                if (InvokerEMP.Particle(particle, name))
                {
                    return;
                }

                if (PudgeHook.Particle(particle, name))
                {
                    return;
                }

                if (WindrunnerPowershot.Particle(particle, name))
                {
                    return;
                }

                if (MiranaArrow.Particle(particle, name))
                {
                    return;
                }

                if (PartialMapHackMenu.SpellsItem)
                {
                    var spellsCP0 = ParticleDictionaries.CP0.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(spellsCP0.Key))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Spells(spellsCP0.Value, name, particle.GetControlPoint(0));
                        });

                        return;
                    }

                    var spellsCP1 = ParticleDictionaries.CP1.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(spellsCP1.Key))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Spells(spellsCP1.Value, name, particle.GetControlPoint(1));
                        });

                        return;
                    }

                    var spellsCP2 = ParticleDictionaries.CP2.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(spellsCP2.Key))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Spells(spellsCP2.Value, name, particle.GetControlPoint(2));
                        });

                        return;
                    }

                    var spellsCP5 = ParticleDictionaries.CP5.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(spellsCP5.Key))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Spells(spellsCP5.Value, name, particle.GetControlPoint(5));
                        });

                        return;
                    }

                    var spellsCP1Plus = ParticleDictionaries.CP1Plus.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(spellsCP1Plus.Key))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var position = particle.GetControlPoint(1);
                            if (position.ToVector2() == particle.GetControlPoint(0).ToVector2())
                            {
                                return;
                            }

                            Spells(spellsCP1Plus.Value, name, position);
                        });

                        return;
                    }
                }

                if (PartialMapHackMenu.ItemsItem)
                {
                    var itemsCP1 = ParticleDictionaries.ItemsCP1.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(itemsCP1.Key))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Items(entity as Hero, itemsCP1.Value, name, particle.GetControlPoint(1));
                        });

                        return;
                    }

                    if (name.Contains("blink_dagger_end"))
                    {
                        blinkHeroEnd = entity as Hero;
                        return;
                    }

                    if (name.Contains("blink_dagger_start"))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Items(blinkHeroEnd, AbilityId.item_blink, name, particle.GetControlPoint(0));
                        });

                        return;
                    }

                    if (name.Contains("refresher"))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Items(entity as Hero, AbilityId.item_refresher, name, particle.GetControlPoint(0));
                        });

                        return;
                    }

                    if (name.Contains("battlefury_cleave"))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var position = particle.GetControlPoint(1);
                            if (position.ToVector2() == particle.GetControlPoint(0).ToVector2())
                            {
                                return;
                            }

                            Items(entity as Hero, AbilityId.item_bfury, name, position);
                        });

                        return;
                    }

                    var itemsSemiNullCP0 = ParticleDictionaries.ItemsSemiNullCP0.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(itemsSemiNullCP0.Key))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var abilityId = itemsSemiNullCP0.Value;
                            Items(FindHeroWithItems(abilityId), abilityId, name, particle.GetControlPoint(0));
                        });

                        return;
                    }

                    var itemsSemiNullCP1 = ParticleDictionaries.ItemsSemiNullCP1.FirstOrDefault(x => name.Contains(x.Key));
                    if (!string.IsNullOrEmpty(itemsSemiNullCP1.Key))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var abilityId = itemsSemiNullCP1.Value;
                            Items(FindHeroWithItems(abilityId), abilityId, name, particle.GetControlPoint(1));
                        });

                        return;
                    }

                    if (name.Contains("dagon.vpcf"))
                    {
                        UpdateManager.BeginInvoke(1, () =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var abilityId = ParticleCorrection.DagonId;
                            Items(FindHeroWithItems(abilityId), abilityId.First(), name, particle.GetControlPoint(1));
                        });

                        return;
                    }
                }

                if (PartialMapHackMenu.TeleportItem)
                {
                    if (name.Contains("/teleport_start") || name.Contains("/teleport_end"))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (!particle.IsValid)
                            {
                                return;
                            }

                            var particleColor = particle.GetControlPoint(2);
                            var position      = particle.GetControlPoint(0);
                            if (particleColor.IsZero || position.IsZero)
                            {
                                return;
                            }

                            Teleport(AbilityId.item_tpscroll, name, position, particleColor);
                        });
                    }
                }

                if (PartialMapHackMenu.SmokeItem)
                {
                    if (name.Contains("smoke_of_deceit.vpcf"))
                    {
                        UpdateManager.BeginInvoke(() =>
                        {
                            if (EntityManager.GetEntities <Hero>().Any(x => x.IsAlly(LocalHero) && x.HasModifier("modifier_smoke_of_deceit")))
                            {
                                return;
                            }

                            if (!particle.IsValid)
                            {
                                return;
                            }

                            Items(null, AbilityId.item_smoke_of_deceit, name, particle.GetControlPoint(0));
                        });

                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
        }