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]); } }
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()); } }
/// <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]; } }
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)); } } }
private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (sender.IsMe) { LXOrbwalker.ResetAutoAttackTimer(); } }
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); } } }
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); } }
/// <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); } }
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; } }
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); } } }
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(); } } }
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}"); } }
/// <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); } }
private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs Args) { if (sender.IsEnemy && sender.IsChampion()) { newPath.Remove(sender.NetworkId); newPath.Add(sender.NetworkId, GetNow()); } }
public static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (!sender.IsMe) { return; } Modes.PermaActive.CatchAxe(); }
private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (!sender.IsMe) { return; } start = TickCount; }
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); } }
/// <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(); }
/// <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; } }
private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (!sender.IsMe) { return; } PathPerSecCounter++; }
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; }
private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (sender.IsMe && !args.IsDash) { if (resetAaonNewPath) { resetAaonNewPath = false; DeathWalker.resetAutoAttackTimer(); } } }
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; }
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; } }
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())); }
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; } } }
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); }
/// <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; } }
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; } }
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)); } } }
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)); } } }
/// <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; } }
/// <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; } }
/// <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; } } }
/// <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; } }
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)); } } }
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; }
/// <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); } } }
private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { if (sender.IsMe) { _GameInfo.LastClick = args.Path.Last(); } }
/// <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); }
/// <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; } }
private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args) { lastPath = DateTime.Now.Millisecond; }
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); } } }
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()); }
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()); } }
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(); } } }
/// <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); }
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; } }