Exemple #1
0
        private static void ObjAiHeroOnOnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.IsValid <Obj_AI_Hero>() && args.IsDash)
            {
                if (!DetectedDashes.ContainsKey(sender.NetworkId))
                {
                    DetectedDashes.Add(sender.NetworkId, new DashItem());
                }
                var path = new List <Vector2> {
                    sender.ServerPosition.To2D()
                };
                path.AddRange(args.Path.ToList().To2D());

                DetectedDashes[sender.NetworkId].StartTick = Utils.TickCountEx;
                DetectedDashes[sender.NetworkId].Speed     = GetDashSpeed(sender, args.Speed);
                DetectedDashes[sender.NetworkId].StartPos  = sender.ServerPosition.To2D();
                DetectedDashes[sender.NetworkId].Unit      = sender;
                DetectedDashes[sender.NetworkId].Path      = path;
                DetectedDashes[sender.NetworkId].EndPos    = DetectedDashes[sender.NetworkId].Path.Last();
                DetectedDashes[sender.NetworkId].EndTick   = DetectedDashes[sender.NetworkId].StartTick +
                                                             (int)
                                                             (1000 *
                                                              (DetectedDashes[sender.NetworkId].EndPos.Distance(
                                                                   DetectedDashes[sender.NetworkId].StartPos) / DetectedDashes[sender.NetworkId].Speed));
                DetectedDashes[sender.NetworkId].Duration = DetectedDashes[sender.NetworkId].EndTick - DetectedDashes[sender.NetworkId].StartTick;

                CustomEvents.Unit.TriggerOnDash(DetectedDashes[sender.NetworkId].Unit, DetectedDashes[sender.NetworkId]);
            }
        }
Exemple #2
0
            static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
            {
                if (sender.Type != GameObjectType.AIHeroClient)
                {
                    return;
                }

                var info = UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId);

                if (args.Path.Last() == args.Path.First())     // STOP MOVE DETECTION
                {
                    info.StopMoveTick = TickCount;
                }
                else     // SPAM CLICK LOGIC
                {
                    info.NewPathTick = TickCount;
                    info.PathBank.Add(new PathInfo()
                    {
                        Position = args.Path.Last().To2D(), Time = Game.Time
                    });
                }
                if (info.PathBank.Count > 3)
                {
                    info.PathBank.Remove(info.PathBank.First());
                }
            }
Exemple #3
0
 /// <summary>
 /// Gets Player New Path
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe)
     {
         Pet.NewPath = args.Path[0];
     }
 }
Exemple #4
0
        private static void ObjAiHeroOnOnNewPath(Obj_AI_Base unit, GameObjectNewPathEventArgs args)
        {
            if (unit.Type == GameObjectType.obj_AI_Hero)
            {
                if (testMenu.Item("TestSpellEndTime").GetValue <bool>())
                {
                    //ConsolePrinter.Print("Dash windup: " + (EvadeUtils.TickCount - EvadeSpell.lastSpellEvadeCommand.timestamp));
                }

                if (args.IsDash && testMenu.Item("ShowDashInfo").GetValue <bool>())
                {
                    var dist = args.Path.First().Distance(args.Path.Last());
                    ConsolePrinter.Print("Dash Speed: " + args.Speed + " Dash dist: " + dist);
                }

                if (unit.IsMe && testMenu.Item("EvadeTesterPing").GetValue <bool>() &&
                    args.Path.Count() > 1)
                {
                    //ConsolePrinter.Print("Received Path ClickTime: " + (EvadeUtils.TickCount - lastRightMouseClickTime));
                }

                if (unit.IsMe)
                {
                    //Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.Last().To2D(), 500));
                    //Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.First().To2D(), 500));
                }
            }
        }
Exemple #5
0
 private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe)
     {
         LXOrbwalker.ResetAutoAttackTimer();
     }
 }
Exemple #6
0
        private static void ObjAiHeroOnOnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.IsValid<AIHeroClient>())
            {
                if (!DetectedDashes.ContainsKey(sender.NetworkId))
                {
                    DetectedDashes.Add(sender.NetworkId, new DashItem());
                }

                if (args.IsDash)
                {
                    var path = new List<Vector2> { sender.ServerPosition.To2D2() };
                    path.AddRange(args.Path.ToList().To2D2());

                    DetectedDashes[sender.NetworkId].StartTick = Utils.TickCount;
                    DetectedDashes[sender.NetworkId].Speed = args.Speed;
                    DetectedDashes[sender.NetworkId].StartPos = sender.ServerPosition.To2D2();
                    DetectedDashes[sender.NetworkId].Unit = sender;
                    DetectedDashes[sender.NetworkId].Path = path;
                    DetectedDashes[sender.NetworkId].EndPos = DetectedDashes[sender.NetworkId].Path.Last();
                    DetectedDashes[sender.NetworkId].EndTick = DetectedDashes[sender.NetworkId].StartTick +
                                                           (int)
                                                               (1000 *
                                                                (DetectedDashes[sender.NetworkId].EndPos.Distance7(
                                                                    DetectedDashes[sender.NetworkId].StartPos) / DetectedDashes[sender.NetworkId].Speed));
                    DetectedDashes[sender.NetworkId].Duration = DetectedDashes[sender.NetworkId].EndTick - DetectedDashes[sender.NetworkId].StartTick;

                    CustomEvents.Unit.TriggerOnDash(DetectedDashes[sender.NetworkId].Unit, DetectedDashes[sender.NetworkId]);
                }
                else
                {
                    DetectedDashes[sender.NetworkId].EndTick = 0;
                }
            }
        }
        private void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!IsActive() || !sender.IsMe)
            {
                return;
            }

            for (int i = 0; i < args.Path.Length; i++)
            {
                var           point      = args.Path[i];
                Obj_AI_Turret baseTurret = ObjectManager.Get <Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 1425, true, point));
                if (baseTurret != null)
                {
                    Vector3 newPos;
                    if (i == 0)
                    {
                        Obj_AI_Turret baseAllyTurret = ObjectManager.Get <Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 999999999, false, ObjectManager.Player.ServerPosition));
                        newPos = baseTurret.ServerPosition.Extend(baseAllyTurret.ServerPosition, 1425);
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
                        return;
                    }
                    else
                    {
                        float dist =
                            args.Path[i - 1].Distance(
                                baseTurret.ServerPosition) - 1425f - 70f;
                        newPos = args.Path[i - 1].Extend(point, dist);
                    }
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
                }
            }
        }
Exemple #8
0
        private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!(sender is AIHeroClient))
            {
                return;
            }

            if (!DictData.ContainsKey(sender.NetworkId))
            {
                DictData.Add(sender.NetworkId, new UnitTrackerEntry());
            }

            if (args.Path.Length == 1)
            {
                DictData[sender.NetworkId].StopTick = Variables.TickCount;
            }

            DictData[sender.NetworkId].Path.Add(
                new StoredPath {
                Position = args.Path.Last().ToVector2(), Tick = Variables.TickCount
            });

            if (DictData[sender.NetworkId].Path.Count > 3)
            {
                DictData[sender.NetworkId].Path.RemoveAt(0);
            }
        }
Exemple #9
0
        /// <summary>
        /// Called when an object has a new path.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectNewPathEventArgs"/> instance containing the event data.</param>
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsValid <Obj_AI_Hero>() || !args.IsDash || !sender.IsValidTarget(Q.Range))
            {
                return;
            }

            //Game.PrintChat("DASH");

            if (E.IsReady() && E.IsInRange(sender) && Menu.Item("EDash").IsActive())
            {
                var endPosition = args.Path.Last();
                var isFleeing   = endPosition.Distance(Player.ServerPosition) > Player.Distance(sender);

                var prediction = E.GetPrediction(sender);

                if (prediction.Hitchance != HitChance.VeryHigh)
                {
                    return;
                }

                var x = Player.ServerPosition.X - endPosition.X;
                var y = Player.ServerPosition.Y - endPosition.Y;

                var vector = new Vector3(
                    Player.ServerPosition.X + x,
                    Player.ServerPosition.Y + y,
                    Player.ServerPosition.Z);

                E.Cast(
                    !isFleeing
                        ? prediction.CastPosition
                        : vector);
            }
        }
Exemple #10
0
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base kappa, GameObjectNewPathEventArgs args)
 {
     if (args.IsDash && kappa is AIHeroClient)
     {
         EloBuddy.SDK.Events.Dash.OnDash += Dash_OnDash;
     }
 }
Exemple #11
0
        private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!args.IsDash)
            {
                return;
            }

            var hero = sender as AIHeroClient;

            if (hero != null && hero.IsValid)
            {
                var key      = DashDictionary.Keys.FirstOrDefault(o => o.NetworkId == sender.NetworkId) ?? sender;
                var dashArgs = new DashEventArgs
                {
                    StartPos  = sender.ServerPosition,
                    EndPos    = args.Path.Last(),
                    Speed     = args.Speed,
                    StartTick = Core.GameTickCount - Game.Ping
                };
                dashArgs.EndTick  = dashArgs.StartTick + (int)(1000 * args.Path.Last().Distance(sender) / 2500);
                dashArgs.Duration = dashArgs.EndTick - dashArgs.StartTick;

                DashDictionary.Remove(key);
                DashDictionary.Add(key, dashArgs);

                if (OnDash != null)
                {
                    OnDash(sender, dashArgs);
                }
            }
        }
Exemple #12
0
        private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!Enable)
            {
                return;
            }
            if (Player.IsDashing())
            {
                return;
            }
            var enemies = HeroManager.Enemies.Select(x => x.NetworkId).ToList();

            if (enemies.Contains(sender.NetworkId) && sender.IsValidTarget())
            {
                if (IsCombo)
                {
                    Utility.DelayAction.Add(50, () => comboonnewpath());
                }
                if (IsHarass && Player.ManaPercent >= manaharass)
                {
                    Utility.DelayAction.Add(50, () => harassonnewpath());
                }
            }
            if (activeAssasin)
            {
                var target = TargetSelector.GetSelectedTarget();
                if (target.IsValidTarget() && target.NetworkId == sender.NetworkId)
                {
                    AssasinOnNewPath();
                }
            }
        }
Exemple #13
0
 private static void DebugOnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (args.IsDash && !sender.IsMe)
     {
         Console.WriteLine(
             $"{Utils.GameTimeTickCount} {sender.CharData.BaseSkinName} [{sender.Team}] => Speed: {args.Speed}");
     }
 }
Exemple #14
0
 /// <summary>
 ///     Called when a unit registers a new path.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="args">The <see cref="GameObjectNewPathEventArgs" /> instance containing the event data.</param>
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (GetValue <bool>("QOnDash") && args.IsDash && sender.IsValid <AIHeroClient>() &&
         sender.IsValidTarget(Q.Range))
     {
         Q.Cast(sender);
     }
 }
Exemple #15
0
 private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs Args)
 {
     if (sender.IsEnemy && sender.IsChampion())
     {
         newPath.Remove(sender.NetworkId);
         newPath.Add(sender.NetworkId, GetNow());
     }
 }
Exemple #16
0
        public static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            Modes.PermaActive.CatchAxe();
        }
Exemple #17
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            start = TickCount;
        }
Exemple #18
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsValid() || !args.IsDash || !sender.IsValidTarget(Q.Range) || sender.Type != Player.Type || !sender.IsEnemy)
            {
                return;
            }
            if (Q.IsReady() && !E.IsInRange(sender) && hookMenu["QDash"].Cast <CheckBox>().CurrentValue)
            {
                var endPosition = args.Path.Last();

                if (Prediction.Position.PredictLinearMissile(
                        sender,
                        Q.Range,
                        Q.Width,
                        Q.CastDelay,
                        Q.Speed,
                        int.MaxValue,
                        endPosition).HitChance < HitChance.High && Prediction.Position.PredictLinearMissile(
                        sender,
                        Q.Range,
                        Q.Width,
                        Q.CastDelay,
                        Q.Speed,
                        int.MaxValue).CollisionObjects.Any())
                {
                    return;
                }

                Q.Cast(endPosition);
            }

            else if (E.IsReady() && E.IsInRange(sender) && flayMenu["EDash"].Cast <CheckBox>().CurrentValue)
            {
                var endPosition = args.Path.Last();
                var isFleeing   = endPosition.Distance(Player.ServerPosition) > Player.Distance(sender);

                var prediction = E.GetPrediction(sender);

                if (prediction.HitChance < HitChance.High)
                {
                    return;
                }

                var x = Player.ServerPosition.X - endPosition.X;
                var y = Player.ServerPosition.Y - endPosition.Y;

                var vector = new Vector3(
                    Player.ServerPosition.X + x,
                    Player.ServerPosition.Y + y,
                    Player.ServerPosition.Z);

                E.Cast(
                    !isFleeing
                        ? prediction.CastPosition
                        : vector);
            }
        }
Exemple #19
0
        /// <summary>
        ///     Fired when the OnNewPath event is called.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectNewPathEventArgs" /> instance containing the event data.</param>
        private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            this.CatchAxe();
        }
Exemple #20
0
        public static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            Modes.PermaActive.CatchAxe();
        }
Exemple #21
0
 /// <summary>
 /// Gets Player New Path
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe)
     {
         var path         = Player.Instance.Position.Extend(args.Path[0], 1000);
         var extendedPath = new Vector3(path, NavMesh.GetHeightForPosition(path.X, path.Y));
         Pet.NewPath = extendedPath;
     }
 }
Exemple #22
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            PathPerSecCounter++;
        }
Exemple #23
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            int id = sender.NetworkId;

            if (!Timers.ContainsKey(id))
            {
                return;
            }
            Timers[id] = Game.Time;
        }
Exemple #24
0
 private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe && !args.IsDash)
     {
         if (resetAaonNewPath)
         {
             resetAaonNewPath = false;
             DeathWalker.resetAutoAttackTimer();
         }
     }
 }
Exemple #25
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            var path = args.Path.LastOrDefault();

            if (path.Distance(sender) <= 50)
            {
                return;
            }

            PathingDirection[sender.NetworkId]   = sender.ServerPosition.Extend(path, path.Distance(sender) + 100).To3D();
            LastPathDictionary[sender.NetworkId] = path;
        }
Exemple #26
0
 private static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault()!=lastEndpoint)
     {
         lastEndpoint = args.Path.LastOrDefault();
         if (!attacking)
             Hud.ShowClick(ClickType.Move, Game.CursorPos);
         else
             Hud.ShowClick(ClickType.Attack, Game.CursorPos);
         lastTime = Game.Time;
     }
 }
Exemple #27
0
        private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.Type != GameObjectType.AIHeroClient || !_mainMenu["enabled"].Cast<CheckBox>().CurrentValue) return;

            if (!_detectors.ContainsKey(sender.NetworkId))
            {
                var detectors = new List<IDetector> { new SacOrbwalkerDetector(), new LeaguesharpOrbwalkDetector() };
                detectors.ForEach(detector => detector.Initialize((AIHeroClient)sender));
                _detectors.Add(sender.NetworkId, detectors);
            }
            else
                _detectors[sender.NetworkId].ForEach(detector => detector.FeedData(args.Path.Last()));
        }
Exemple #28
0
        private static void Soul_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            var soulinfo = SoulList.FirstOrDefault(x => x.SoulMinion.NetworkId == sender.NetworkId);

            if (soulinfo != null && soulinfo.Destination == "Unknown")
            {
                var mapPosinfo = WCastPositionList.FirstOrDefault(x => x.Position.Distance(args.Path.Last()) < 500);
                if (mapPosinfo != null)
                {
                    soulinfo.Destination = mapPosinfo.PositionName;
                }
            }
        }
Exemple #29
0
        private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.Type != GameObjectType.obj_AI_Hero || !_mainMenu.Item("enabled").GetValue<bool>()) return;

            if (!_detectors.ContainsKey(sender.NetworkId))
            {
                var detectors = new List<IDetector> { new SacOrbwalkerDetector(), new LeaguesharpOrbwalkDetector() };
                detectors.ForEach(detector => detector.Initialize((Obj_AI_Hero)sender));
                _detectors.Add(sender.NetworkId, detectors);
            }
            else
                _detectors[sender.NetworkId].ForEach(detector => detector.FeedData(args.Path.Last()));
        }
        private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!StoredPaths.ContainsKey(sender.NetworkId))
            {
                StoredPaths.Add(sender.NetworkId, new List <StoredPath>());
            }

            var newPath = new StoredPath {
                Tick = Environment.TickCount, Path = args.Path.ToList().To2D()
            };

            StoredPaths[sender.NetworkId].Add(newPath);
        }
Exemple #31
0
        /// <summary>
        /// OnNewPath event for average reaction time calculations
        /// </summary>
        private static void AIHeroClient_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsEnemy || !sender.IsChampion() || args.IsDash)
            {
                return;
            }

            EnemyData enemy = EnemyInfo[sender.NetworkId];

            lock (enemy.m_lock)
            {
                if (args.Path.Length < 2)
                {
                    if (!enemy.IsStopped)
                    {
                        enemy.StopTick         = Environment.TickCount;
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped        = true;
                        enemy.Count            = 0;
                        enemy.AvgTick          = 0;
                        enemy.AvgPathLenght    = 0;
                    }
                }
                else
                {
                    List <Vector2> wp = args.Path.Select(p => p.To2D()).ToList();
                    if (!enemy.LastWaypoints.SequenceEqual(wp))
                    {
                        if (!enemy.IsStopped)
                        {
                            enemy.AvgTick       = (enemy.Count * enemy.AvgTick + (Environment.TickCount - enemy.LastWaypointTick)) / ++enemy.Count;
                            enemy.AvgPathLenght = ((enemy.Count - 1) * enemy.AvgPathLenght + wp.PathLength()) / enemy.Count;
                        }
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped        = false;
                        enemy.LastWaypoints    = wp;

                        if (!enemy.IsWindupChecked)
                        {
                            if (Environment.TickCount - enemy.LastAATick < 300)
                            {
                                enemy.AvgOrbwalkTime = (enemy.AvgOrbwalkTime * enemy.OrbwalkCount + (enemy.LastWaypointTick - enemy.LastWindupTick)) / ++enemy.OrbwalkCount;
                            }
                            enemy.IsWindupChecked = true;
                        }
                    }
                }

                EnemyInfo[sender.NetworkId] = enemy;
            }
        }
Exemple #32
0
        private static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.IsMe &&
                _lastTime + DeltaT < Game.Time && args.Path.LastOrDefault() != _lastWaypoint &&
                args.Path.LastOrDefault().Distance(_player.ServerPosition) >= 5f &&
                _mainMenu["enable"].Cast <CheckBox>().CurrentValue&&
                _mainMenu["clickMode"].Cast <ComboBox>().SelectedIndex == 1)
            {
                _lastWaypoint = args.Path.LastOrDefault();

                Hud.ShowClick(_attacking ? ClickType.Attack : ClickType.Move, Game.CursorPos);

                _lastTime = Game.Time;
            }
        }
        private static void Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (args.IsDash)
            {
                return;
            }

            var hero = sender as Obj_AI_Hero;

            if (hero != null && args.Path != null && args.Path.Count() > 0)
            {
                paths[hero.NetworkId]     = args.Path.ToList().To2D();
                startTick[hero.NetworkId] = HelperUtils.TickCount;
            }
        }
Exemple #34
0
 private void OnObjAiBaseNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (!sender.IsMe)
     {
         return;
     }
     if (args.Path.Any())
     {
         var first = args.Path.FirstOrDefault(p => p.Distance(_fountain.Position) < FountainRange);
         if (!first.Equals(default(Vector3)))
         {
             EloBuddy.Player.IssueOrder(
                 GameObjectOrder.MoveTo, _fountain.Position.Extend(first, FountainRange));
         }
     }
 }
Exemple #35
0
 private void OnObjAiBaseNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (!sender.IsMe)
     {
         return;
     }
     if (args.Path.Any())
     {
         var last = args.Path.Last();
         if (last.Distance(_fountain.Position) < FountainRange)
         {
             ObjectManager.Player.IssueOrder(
                 GameObjectOrder.MoveTo, _fountain.Position.Extend(last, FountainRange));
         }
     }
 }
Exemple #36
0
        /// <summary>
        /// OnNewPath event for average reaction time calculations
        /// </summary>
        private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsEnemy || !sender.IsChampion() || args.IsDash)
                return;

            EnemyData enemy = EnemyInfo[sender.NetworkId];

            lock (enemy.m_lock)
            {
                if (args.Path.Length < 2)
                {
                    if (!enemy.IsStopped)
                    {
                        enemy.StopTick = Environment.TickCount;
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped = true;
                        enemy.Count = 0;
                        enemy.AvgTick = 0;
                        enemy.AvgPathLenght = 0;
                    }
                }
                else
                {
                    List<Vector2> wp = args.Path.Select(p => p.To2D()).ToList();
                    if (!enemy.LastWaypoints.SequenceEqual(wp))
                    {
                        if (!enemy.IsStopped)
                        {
                            enemy.AvgTick = (enemy.Count * enemy.AvgTick + (Environment.TickCount - enemy.LastWaypointTick)) / ++enemy.Count;
                            enemy.AvgPathLenght = ((enemy.Count - 1) * enemy.AvgPathLenght + wp.PathLength()) / enemy.Count;
                        }
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped = false;
                        enemy.LastWaypoints = wp;

                        if (!enemy.IsWindupChecked)
                        {
                            if (Environment.TickCount - enemy.LastAATick < 300)
                                enemy.AvgOrbwalkTime = (enemy.AvgOrbwalkTime * enemy.OrbwalkCount + (enemy.LastWaypointTick - enemy.LastWindupTick)) / ++enemy.OrbwalkCount;
                            enemy.IsWindupChecked = true;
                        }
                    }
                }

                EnemyInfo[sender.NetworkId] = enemy;
            }
        }
Exemple #37
0
        /// <summary>
        ///     The on new path fake.
        ///     Currently used for the second style of fake clicks
        /// </summary>
        /// <param name="sender">
        ///     The sender.
        /// </param>
        /// <param name="args">
        ///     The args.
        /// </param>
        private static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault() != lastEndpoint &&
                args.Path.LastOrDefault().Distance(player.ServerPosition) >= 5f && root.Item("Enable").IsActive() &&
                root.Item("Click Mode").GetValue<StringList>().SelectedIndex == 1)
            {
                lastEndpoint = args.Path.LastOrDefault();
                if (!attacking)
                {
                    ShowClick(Game.CursorPos, ClickType.Move);
                }
                else
                {
                    ShowClick(Game.CursorPos, ClickType.Attack);
                }

                lastTime = Game.Time;
            }
        }
Exemple #38
0
        /// <summary>
        ///     New Path subscribed event function.
        /// </summary>
        /// <param name="sender"><see cref="Obj_AI_Base" /> sender</param>
        /// <param name="args">New Path event data</param>
        private static void EventDash(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            var hero = sender as Obj_AI_Hero;
            if (hero != null && hero.IsValid)
            {
                if (!DetectedDashes.ContainsKey(hero.NetworkId))
                {
                    DetectedDashes.Add(hero.NetworkId, new DashArgs());
                }

                if (args.IsDash)
                {
                    var path = new List<Vector2> { hero.ServerPosition.ToVector2() };
                    path.AddRange(args.Path.ToList().ToVector2());

                    DetectedDashes[hero.NetworkId] = new DashArgs
                                                         {
                                                             StartTick = Variables.TickCount - (Game.Ping / 2),
                                                             Speed = args.Speed,
                                                             StartPos = hero.ServerPosition.ToVector2(), Unit = sender,
                                                             Path = path, EndPos = path.Last(),
                                                             EndTick =
                                                                 DetectedDashes[hero.NetworkId].StartTick
                                                                 + (int)
                                                                   (1000
                                                                    * (DetectedDashes[hero.NetworkId].EndPos.Distance(
                                                                        DetectedDashes[hero.NetworkId].StartPos)
                                                                       / DetectedDashes[hero.NetworkId].Speed)),
                                                             Duration =
                                                                 DetectedDashes[hero.NetworkId].EndTick
                                                                 - DetectedDashes[hero.NetworkId].StartTick
                                                         };

                    OnDash?.Invoke(MethodBase.GetCurrentMethod().DeclaringType, DetectedDashes[hero.NetworkId]);
                }
                else
                {
                    DetectedDashes[hero.NetworkId].EndTick = 0;
                }
            }
        }
Exemple #39
0
        /// <summary>
        /// OnNewPath event for average reaction time calculations
        /// </summary>
        private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsEnemy || !sender.IsChampion() || args.IsDash)
                return;

            EnemyData enemy = EnemyInfo[sender.NetworkId];

            lock (enemy.m_lock)
            {
                if (args.Path.Length < 2)
                {
                    if (!enemy.IsStopped)
                    {
                        enemy.StopTick = Environment.TickCount;
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped = true;
                        enemy.Count = 0;
                        enemy.AvgTick = 0;
                        enemy.AvgPathLenght = 0;
                        enemy.LastAngleDiff = 360;
                    }
                }
                else
                {
                    List<Vector2> wp = args.Path.Select(p => p.To2D()).ToList();
                    List<Vector2> sample1 = new List<Vector2>();
                    wp.Insert(0, sender.ServerPosition.To2D());

                    for (int i = 0; i < wp.Count - 1; i++)
                    {
                        Vector2 direction = (wp[i + 1] - wp[i]).Normalized();
                        sample1.Add(direction);
                    }

                    List<Vector2> sample2 = new List<Vector2>();
                    for (int i = 0; i < enemy.LastWaypoints.Count - 1; i++)
                    {
                        Vector2 direction = (enemy.LastWaypoints[i + 1] - enemy.LastWaypoints[i]).Normalized();
                        sample2.Add(direction);
                    }

                    if (sample1.Count() > 0 && sample2.Count() > 0)
                    {
                        float sample1_avg = sample1.Average(p => p.AngleBetween(Vector2.Zero));
                        float sample2_avg = sample2.Average(p => p.AngleBetween(Vector2.Zero));
                        enemy.LastAngleDiff = Math.Abs(sample2_avg - sample1_avg);
                    }
                    if (!enemy.LastWaypoints.SequenceEqual(wp))
                    {
                        if (!enemy.IsStopped)
                        {
                            enemy.AvgTick = (enemy.Count * enemy.AvgTick + (Environment.TickCount - enemy.LastWaypointTick)) / ++enemy.Count;
                            enemy.AvgPathLenght = ((enemy.Count - 1) * enemy.AvgPathLenght + wp.PathLength()) / enemy.Count;
                        }
                        enemy.LastWaypointTick = Environment.TickCount;
                        enemy.IsStopped = false;
                        enemy.LastWaypoints = wp;

                        if (!enemy.IsWindupChecked)
                        {
                            if (Environment.TickCount - enemy.LastAATick < 300)
                                enemy.AvgOrbwalkTime = (enemy.AvgOrbwalkTime * enemy.OrbwalkCount + (enemy.LastWaypointTick - enemy.LastWindupTick)) / ++enemy.OrbwalkCount;
                            enemy.IsWindupChecked = true;
                        }
                    }
                }

                EnemyInfo[sender.NetworkId] = enemy;
            }
        }
Exemple #40
0
        private static void ObjAiHeroOnOnNewPath(Obj_AI_Base unit, GameObjectNewPathEventArgs args)
        {
            if (unit.Type == GameObjectType.obj_AI_Hero)
            {
                if (testMenu.Item("TestSpellEndTime").GetValue<bool>())
                {
                    //ConsolePrinter.Print("Dash windup: " + (EvadeUtils.TickCount - EvadeSpell.lastSpellEvadeCommand.timestamp));
                }

                if (args.IsDash && testMenu.Item("ShowDashInfo").GetValue<bool>())
                {
                    var dist = args.Path.First().Distance(args.Path.Last());
                    ConsolePrinter.Print("Dash Speed: " + args.Speed + " Dash dist: " + dist);
                }

                if (unit.IsMe && testMenu.Item("EvadeTesterPing").GetValue<bool>()
                    && args.Path.Count() > 1)
                {
                    //ConsolePrinter.Print("Received Path ClickTime: " + (EvadeUtils.TickCount - lastRightMouseClickTime));
                }

                if (unit.IsMe)
                {
                    //Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.Last().To2D(), 500));
                    //Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.First().To2D(), 500));
                }

            }
        }
        /// <summary>
        ///     Fired when the OnNewPath event is called.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectNewPathEventArgs" /> instance containing the event data.</param>
        private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            this.CatchAxe();
        }
        private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!(sender is Obj_AI_Hero))
            {
                return;
            }

            if (!StoredPaths.ContainsKey(sender.NetworkId))
            {
                StoredPaths.Add(sender.NetworkId, new List<StoredPath>());
            }

            var newPath = new StoredPath { Tick = Utils.TickCount, Path = args.Path.ToList().To2D() };
            StoredPaths[sender.NetworkId].Add(newPath);

            if (StoredPaths[sender.NetworkId].Count > 50)
            {
                StoredPaths[sender.NetworkId].RemoveRange(0, 40);
            }
        }
        private static void ObjAiHeroOnOnNewPath(Obj_AI_Base unit, GameObjectNewPathEventArgs args)
        {
            if (unit.Type == GameObjectType.obj_AI_Hero)
            {
                if (testMenu.Item("TestSpellEndTime").GetValue<bool>())
                {
                    Console.WriteLine("Dash windup: " + (EvadeUtils.TickCount - EvadeSpell.lastSpellEvadeCommand.timestamp));
                }

                if (args.IsDash && testMenu.Item("ShowDashInfo").GetValue<bool>())
                {
                    var dist = args.Path.First().Distance(args.Path.Last());
                    Console.WriteLine("Dash Speed: " + args.Speed + " Dash dist: " + dist);
                }

            }
        }
			private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) {
				if (sender.IsMinion || !(sender is Obj_AI_Hero)) return;

				var info = UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId);
				info.NewPathTick = Utils.TickCount;
				if (args.Path.Last() != sender.ServerPosition)
					info.PathBank.Add(new PathInfo() { Position = args.Path.Last().To2D(), Time = Game.Time });

				if (info.PathBank.Count > 3)
					info.PathBank.Remove(info.PathBank.First());
			}
 private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (!(sender is Obj_AI_Hero)) { return; }
     UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).NewPathTick = Utils.TickCount;
 }
Exemple #46
0
        /// <summary>
        /// Called when an object has a new path.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectNewPathEventArgs"/> instance containing the event data.</param>
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!sender.IsValid<Obj_AI_Hero>() || !args.IsDash || !sender.IsValidTarget(Q.Range))
            {
                return;
            }

            //Game.PrintChat("DASH");

            if (E.IsReady() && E.IsInRange(sender) && Menu.Item("EDash").IsActive())
            {
                var endPosition = args.Path.Last();
                var isFleeing = endPosition.Distance(Player.ServerPosition) > Player.Distance(sender);

                var prediction = E.GetPrediction(sender);

                if (prediction.Hitchance != HitChance.VeryHigh)
                {
                    return;
                }

                var x = Player.ServerPosition.X - endPosition.X;
                var y = Player.ServerPosition.Y - endPosition.Y;

                var vector = new Vector3(
                    Player.ServerPosition.X + x,
                    Player.ServerPosition.Y + y,
                    Player.ServerPosition.Z);

                E.Cast(
                    !isFleeing
                        ? prediction.CastPosition
                        : vector);
            }
        }
        void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if(!IsActive() || !sender.IsMe)
                return;

            for (int i = 0; i < args.Path.Length; i++)
            {
                var point = args.Path[i];
                Obj_AI_Turret baseTurret = ObjectManager.Get<Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 1425, true, point));
                if (baseTurret != null)
                {
                    float dist =
                        args.Path[i - 1].Distance(
                            baseTurret.ServerPosition) - 1425f - 20f;
                    Vector3 newPos = args.Path[i - 1].Extend(point, dist);
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
                }
            }
        }
Exemple #48
0
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe)
     {
         _GameInfo.LastClick = args.Path.Last();
     }
 }
Exemple #49
0
 /// <summary>
 /// OnNewPath event for the detect rengar leap
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (sender.IsMe && args.IsDash && sender.CharData.BaseSkinName == "Rengar")
     {
         Events.FireOnAttack(this, m_lastTarget);
         m_lastAATick = Utils.TickCount - Game.Ping / 2;
         m_lastWindUpTime = (int)(sender.AttackCastDelay * 1000);
         m_lastAttackCooldown = (int)(sender.AttackDelay * 1000);
         m_lastAttackCompletesAt = m_lastAATick + m_lastWindUpTime;
         m_lastAttackPos = ObjectManager.Player.ServerPosition.LSTo2D();
         m_attackInProgress = true;
         m_rengarAttack = true;
         if (m_baseAttackSpeed == 0.5f)
             SetOrbwalkValues();
     }
 }
        private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!StoredPaths.ContainsKey(sender.NetworkId))
            {
                StoredPaths.Add(sender.NetworkId, new List<StoredPath>());
            }

            var newPath = new StoredPath { Tick = Environment.TickCount, Path = args.Path.ToList().To2D() };
            StoredPaths[sender.NetworkId].Add(newPath);
        }
Exemple #51
0
        /// <summary>
        /// The on new path fake.
        /// Currently used for the second style of fake clicks
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="args">
        /// The args.
        /// </param>
        public static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault() != lastEndpoint
                && args.Path.LastOrDefault().Distance(player.ServerPosition) >= 5f
                && fakeclick["Enable"].Cast<CheckBox>().CurrentValue
                && fakeclick["clicktype2"].Cast<CheckBox>().CurrentValue)
            {
                lastEndpoint = args.Path.LastOrDefault();
                if (!attacking)
                {
                    Hud.ShowClick(ClickType.Move, Game.CursorPos);
                }
                else
                {
                    Hud.ShowClick(ClickType.Attack, Game.CursorPos);
                }

                lastTime = Game.Time;
            }
        }
Exemple #52
0
 private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     lastPath = DateTime.Now.Millisecond;
 }
Exemple #53
0
        private void Hero_OnNewPath(Obj_AI_Base hero, GameObjectNewPathEventArgs args)
        {
            return;

            if (!hero.IsMe)
            {
                return;
            }

            var path = args.Path;

            if (path.Length > 1 && !args.IsDash)
            {
                var movePos = path[path.Length - 1].To2D();

                if (lastEvadeCommand.order == EvadeOrderCommand.MoveTo &&
                    movePos.Distance(lastEvadeCommand.targetPosition) < 10)
                {
                    float moveTime = EvadeUtils.TickCount - lastEvadeCommand.timestamp - ObjectCache.gamePing;
                    Console.WriteLine("Extra Delay: " + moveTime);
                }
            }
        }
Exemple #54
0
            static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
            {
                if (sender.Type != GameObjectType.AIHeroClient) return;

                var info = UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId);

                if (args.Path.Last() == args.Path.First()) // STOP MOVE DETECTION
                    info.StopMoveTick = TickCount;
                else // SPAM CLICK LOGIC
                {
                    info.NewPathTick = TickCount;
                    info.PathBank.Add(new PathInfo() { Position = args.Path.Last().To2D(), Time = Game.Time });
                }
                if (info.PathBank.Count > 3)
                    info.PathBank.Remove(info.PathBank.First());
            }
Exemple #55
0
    private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
    {
        if (sender is AIHeroClient)
        {
            if (args.Path.Count() == 1) // STOP MOVE DETECTION
                UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).StopMoveTick = TickCount;
            else
            {
                UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).NewPathTick = TickCount;
                UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).PathBank.Add(new PathInfo() { Position = args.Path.Last().To2D(), Time = TickCount });

            }

            if (UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).PathBank.Count > 3)
                UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).PathBank.Remove(UnitTrackerInfoList.Find(x => x.NetworkId == sender.NetworkId).PathBank.First());
        }
    }
Exemple #56
0
 private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     if (!Enable)
         return;
     if (Player.IsDashing()) return;
     var enemies = HeroManager.Enemies.Select(x => x.NetworkId).ToList();
     if (enemies.Contains(sender.NetworkId) && sender.IsValidTarget())
     {
         if (IsCombo)
             Utility.DelayAction.Add(50, () => comboonnewpath());
         if (IsHarass && Player.ManaPercent >= manaharass)
             Utility.DelayAction.Add(50, () => harassonnewpath());
     }
     if (activeAssasin)
     {
         var target = TargetSelector.GetSelectedTarget();
         if (target.IsValidTarget() && target.NetworkId == sender.NetworkId)
         {
             AssasinOnNewPath();
         }
     }
 }
Exemple #57
0
 /// <summary>
 ///     On new path event.
 /// </summary>
 /// <param name="sender">
 ///     The sender.
 /// </param>
 /// <param name="args">
 ///     The args.
 /// </param>
 private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
 {
     //EventDash(sender, args);
 }
Exemple #58
0
        private void Hero_OnNewPath(Obj_AI_Base hero, GameObjectNewPathEventArgs args)
        {
            if (!Config.Properties.GetBool(ConfigValue.AutoSetPing))
            {
                return;
            }

            if (!hero.IsMe)
            {
                return;
            }

            var path = args.Path;

            if (path.Length > 1 && !args.IsDash)
            {
                var movePos = path.Last().To2D();

                if (_checkPing
                    && _lastIssueOrderArgs.Process == true
                    && _lastIssueOrderArgs.Order == GameObjectOrder.MoveTo
                    && _lastIssueOrderArgs.TargetPosition.To2D().Distance(movePos) < 3
                    && MyHero.Path.Count() == 1
                    && args.Path.Count() == 2
                    && MyHero.IsMoving)
                {
                    //Draw.RenderObjects.Add(new Draw.RenderPosition(myHero.Path.Last().To2D(), 1000));

                    RenderObjects.Add(new RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000));
                    RenderObjects.Add(new RenderLine(MyHero.Position.To2D(), MyHero.Path.Last().To2D(), 1000));

                    //Draw.RenderObjects.Add(new Draw.RenderCircle(lastMoveToServerPos, 1000, System.Drawing.Color.Red, 10));

                    var distanceTillEnd = MyHero.Path.Last().To2D().Distance(MyHero.Position.To2D());
                    float moveTimeTillEnd = 1000 * distanceTillEnd / MyHero.MoveSpeed;

                    if (moveTimeTillEnd < 500)
                    {
                        return;
                    }

                    var dir1 = (MyHero.Path.Last().To2D() - MyHero.Position.To2D()).Normalized();
                    var ray1 = new Ray(MyHero.Position.SetZ(0), new Vector3(dir1.X, dir1.Y, 0));

                    var dir2 = (args.Path.First().To2D() - args.Path.Last().To2D()).Normalized();
                    var pos2 = new Vector3(args.Path.First().X, args.Path.First().Y, 0);
                    var ray2 = new Ray(args.Path.First().SetZ(0), new Vector3(dir2.X, dir2.Y, 0));

                    Vector3 intersection3;
                    if (ray2.Intersects(ref ray1, out intersection3))
                    {
                        var intersection = intersection3.To2D();

                        var projection = intersection.ProjectOn(MyHero.Path.Last().To2D(), MyHero.Position.To2D());

                        if (projection.IsOnSegment && dir1.AngleBetween(dir2) > 20 && dir1.AngleBetween(dir2) < 160)
                        {
                            RenderObjects.Add(new RenderCircle(intersection, 1000, Color.Red, 10));

                            var distance = //args.Path.First().To2D().Distance(intersection);
                                _lastMoveToServerPos.Distance(intersection);
                            float moveTime = 1000 * distance / MyHero.MoveSpeed;

                            //ConsoleDebug.WriteLine("waa: " + distance);

                            if (moveTime < 1000)
                            {
                                if (_numExtraDelayTime > 0)
                                {
                                    _sumExtraDelayTime += moveTime;
                                    _avgExtraDelayTime = _sumExtraDelayTime / _numExtraDelayTime;

                                    _pingList.Add(moveTime);
                                }
                                _numExtraDelayTime += 1;

                                if (_maxExtraDelayTime == 0)
                                {
                                    _maxExtraDelayTime = Config.Properties.GetInt(ConfigValue.ExtraPingBuffer);
                                }

                                if (_numExtraDelayTime % 100 == 0)
                                {
                                    _pingList.Sort();

                                    var percentile = ConfigValue.AutoSetPingPercentile.GetInt();
                                    int percentIndex = (int)Math.Floor(_pingList.Count() * (percentile / 100f)) - 1;
                                    _maxExtraDelayTime = Math.Max(_pingList.ElementAt(percentIndex) - Game.Ping,0);
                                    _maxExtraDelayTime.SetTo(ConfigValue.ExtraPingBuffer);

                                    _pingList.Clear();

                                    ConsoleDebug.WriteLine("Max Extra Delay: " + _maxExtraDelayTime);
                                }

                                ConsoleDebug.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping,0));
                            }
                        }
                    }
                }

                _checkPing = false;
            }
        }
        private void Hero_OnNewPath(Obj_AI_Base hero, GameObjectNewPathEventArgs args)
        {
            if (ObjectCache.menuCache.cache["AutoSetPingOn"].GetValue<bool>() == false)
            {
                return;
            }

            if (!hero.IsMe)
            {
                return;
            }

            var path = args.Path;

            if (path.Length > 1 && !args.IsDash)
            {
                var movePos = path.Last().To2D();

                if (checkPing
                    && lastIssueOrderArgs.Process == true
                    && lastIssueOrderArgs.Order == GameObjectOrder.MoveTo
                    && lastIssueOrderArgs.TargetPosition.To2D().Distance(movePos) < 3
                    && myHero.Path.Count() == 1
                    && args.Path.Count() == 2
                    && myHero.IsMoving)
                {
                    //Draw.RenderObjects.Add(new Draw.RenderPosition(myHero.Path.Last().To2D(), 1000));

                    Draw.RenderObjects.Add(new Draw.RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000));
                    Draw.RenderObjects.Add(new Draw.RenderLine(myHero.Position.To2D(), myHero.Path.Last().To2D(), 1000));

                    //Draw.RenderObjects.Add(new Draw.RenderCircle(lastMoveToServerPos, 1000, System.Drawing.Color.Red, 10));

                    var distanceTillEnd = myHero.Path.Last().To2D().Distance(myHero.Position.To2D());
                    float moveTimeTillEnd = 1000 * distanceTillEnd / myHero.MoveSpeed;

                    if (moveTimeTillEnd < 500)
                    {
                        return;
                    }

                    var dir1 = (myHero.Path.Last().To2D() - myHero.Position.To2D()).Normalized();
                    var ray1 = new Ray(myHero.Position.SetZ(0), new Vector3(dir1.X, dir1.Y, 0));

                    var dir2 = (args.Path.First().To2D() - args.Path.Last().To2D()).Normalized();
                    var pos2 = new Vector3(args.Path.First().X, args.Path.First().Y, 0);
                    var ray2 = new Ray(args.Path.First().SetZ(0), new Vector3(dir2.X, dir2.Y, 0));

                    Vector3 intersection3;
                    if (ray2.Intersects(ref ray1, out intersection3))
                    {
                        var intersection = intersection3.To2D();

                        var projection = intersection.ProjectOn(myHero.Path.Last().To2D(), myHero.Position.To2D());

                        if (projection.IsOnSegment && dir1.AngleBetween(dir2) > 20 && dir1.AngleBetween(dir2) < 160)
                        {
                            Draw.RenderObjects.Add(new Draw.RenderCircle(intersection, 1000, System.Drawing.Color.Red, 10));

                            var distance = //args.Path.First().To2D().Distance(intersection);
                                lastMoveToServerPos.Distance(intersection);
                            float moveTime = 1000 * distance / myHero.MoveSpeed;

                            //Console.WriteLine("waa: " + distance);

                            if (moveTime < 1000)
                            {
                                if (numExtraDelayTime > 0)
                                {
                                    sumExtraDelayTime += moveTime;
                                    avgExtraDelayTime = sumExtraDelayTime / numExtraDelayTime;

                                    pingList.Add(moveTime);
                                }
                                numExtraDelayTime += 1;

                                if (maxExtraDelayTime == 0)
                                {
                                    maxExtraDelayTime = ObjectCache.menuCache.cache["ExtraPingBuffer"].GetValue<Slider>().Value;
                                }

                                if (numExtraDelayTime % 100 == 0)
                                {
                                    pingList.Sort();

                                    var percentile = ObjectCache.menuCache.cache["AutoSetPercentile"].GetValue<Slider>().Value;
                                    int percentIndex = (int)Math.Floor(pingList.Count() * (percentile / 100f)) - 1;
                                    maxExtraDelayTime = Math.Max(pingList.ElementAt(percentIndex) - Game.Ping,0);
                                    ObjectCache.menuCache.cache["ExtraPingBuffer"].SetValue(new Slider((int)maxExtraDelayTime, 0, 200));

                                    pingList.Clear();

                                    Console.WriteLine("Max Extra Delay: " + maxExtraDelayTime);
                                }

                                Console.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping,0));
                            }
                        }
                    }
                }

                checkPing = false;
            }
        }
Exemple #60
0
        private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!(sender is AIHeroClient))
            {
                return;
            }

            if (!DictData.ContainsKey(sender.NetworkId))
            {
                DictData.Add(sender.NetworkId, new UnitTrackerEntry());
            }

            if (args.Path.Length == 1)
            {
                DictData[sender.NetworkId].StopTick = Variables.TickCount;
            }

            DictData[sender.NetworkId].Path.Add(
                new StoredPath { Position = args.Path.Last().ToVector2(), Tick = Variables.TickCount });

            if (DictData[sender.NetworkId].Path.Count > 3)
            {
                DictData[sender.NetworkId].Path.RemoveAt(0);
            }
        }