示例#1
0
        private static void Game_OnTick(EventArgs args)
        {
            if (!Flags.HasFlag(ChampionTrackerFlags.VisibilityTracker))
            {
                return;
            }

            if (Game.Time * 1000 - _lastTick < 25)
            {
                return;
            }

            foreach (var visibilityTracker in ChampionVisibility.Where(x => Game.Time * 1000 - x.LastVisibleGameTime * 1000 < 1000))
            {
                foreach (var unit in StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero,
                                                                      x => (x.Hero == visibilityTracker.Hero.Hero) && !visibilityTracker.Hero.IsDead && !visibilityTracker.Hero.IsZombie && !visibilityTracker.Hero.IsHPBarRendered))
                {
                    if ((unit.Hero == Champion.KogMaw) && unit.Buffs.Any(x => x.Name.ToLowerInvariant() == "kogmawicathiansurprise"))
                    {
                        return;
                    }

                    OnLoseVisibility?.Invoke(null,
                                             new OnLoseVisibilityEventArgs(unit, visibilityTracker.LastVisibleGameTime,
                                                                           visibilityTracker.LastPosition, GetVisibilityTrackerData(unit)));
                }
            }

            foreach (var aiHeroClient in StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero, x => !x.IsDead && x.IsHPBarRendered))
            {
                var hero = ChampionVisibility.FirstOrDefault(x => x.Hero.NetworkId == aiHeroClient.NetworkId);

                if (hero == null)
                {
                    continue;
                }

                hero.LastPosition        = aiHeroClient.Position;
                hero.LastVisibleGameTime = Game.Time;
                hero.LastPath            = aiHeroClient.Path.Last();
                hero.LastHealth          = aiHeroClient.Health;
                hero.LastHealthPercent   = aiHeroClient.HealthPercent;
                hero.LastBuffs           = aiHeroClient.Buffs;
            }
            _lastTick = Game.Time * 1000;
        }
示例#2
0
        private static void Game_OnTick(EventArgs args)
        {
            if (!Flags.HasFlag(ChampionTrackerFlags.VisibilityTracker))
            {
                return;
            }

            if (Game.Time * 1000 - _lastTick < 25)
            {
                return;
            }

            foreach (var visibilityTracker in ChampionVisibility.Where(x => Game.Time * 1000 - x.LastVisibleGameTime * 1000 < 1000))
            {
                foreach (var unit in EntityManager.Heroes.Enemies.Where(
                             x => x.Hero == visibilityTracker.Hero.Hero && !visibilityTracker.Hero.IsDead && !visibilityTracker.Hero.IsHPBarRendered))
                {
                    OnLoseVisibility?.Invoke(null, new OnLoseVisibilityEventArgs(unit, visibilityTracker.LastVisibleGameTime, visibilityTracker.LastPosition));
                }
            }

            foreach (var aiHeroClient in EntityManager.Heroes.Enemies.Where(x => !x.IsDead && x.IsHPBarRendered))
            {
                var hero = ChampionVisibility.FirstOrDefault(x => x.Hero.NetworkId == aiHeroClient.NetworkId);

                if (hero != null)
                {
                    hero.LastPosition        = aiHeroClient.Position;
                    hero.LastVisibleGameTime = Game.Time;
                    hero.LastPath            = aiHeroClient.Path.Last();
                    hero.LastHealth          = aiHeroClient.Health;
                    hero.LastHealthPercent   = aiHeroClient.HealthPercent;
                }
            }
            _lastTick = Game.Time * 1000;
        }