public EvadeResult(EvadePlus evade, Vector2 evadePoint, Vector2 anchorPoint, int totalTimeAvailable, int timeAvailable, bool enoughTime) { Evade = evade; PlayerPos = Player.Instance.Position.To2D(); Time = Environment.TickCount; EvadePoint = evadePoint.Extend(PlayerPos, -70); //adjust evade range; AnchorPoint = anchorPoint; TotalTimeAvailable = totalTimeAvailable; TimeAvailable = timeAvailable; EnoughTime = enoughTime; // fix evade pos //if (evadePoint.IsInLineSegment(PlayerPos, anchorPoint, 40)) //{ // EvadePoint = anchorPoint; //} // extra evade range if (Evade.ExtraEvadeRange > 0) { var newPoint = EvadePoint.Extend(PlayerPos, -(Evade.RandomizeExtraEvadeRange ? Utils.Random.Next(Evade.ExtraEvadeRange / 3, Evade.ExtraEvadeRange) : Evade.ExtraEvadeRange)); if (Evade.IsPointSafe(newPoint)) { EvadePoint = newPoint; } } }
private static void Main(string[] args) { Loading.OnLoadingComplete += delegate { _skillshotDetector = new SkillshotDetector(); _evade = new EvadePlus(_skillshotDetector); EvadeMenu.CreateMenu(); }; }
private static void Main(string[] args) { Loading.OnLoadingComplete += delegate { Detector = new SkillshotDetector(DetectionTeam.EnemyTeam); Evade = new EvadePlus(Detector); EvadeMenu.CreateMenu(); }; }
private static void Main(string[] args) { Loading.OnLoadingComplete += delegate { _skillshotDetector = new SkillshotDetector(DeveloperMode ? DetectionTeam.AnyTeam : DetectionTeam.EnemyTeam); _evade = new EvadePlus(_skillshotDetector); EvadeMenu.CreateMenu(); }; }
public Main() { Chat.Print("MoonyDiana loaded!"); config.InitMenu(); var skillshotDetector = new SkillshotDetector(DetectionTeam.EnemyTeam); evadePlus = new EvadePlus.EvadePlus(skillshotDetector); me = ObjectManager.Player; Game.OnUpdate += GameOnUpdate; Drawing.OnDraw += DrawingOnDraw; Gapcloser.OnGapcloser += GapcloserOnOnGapcloser; Interrupter.OnInterruptableSpell += InterrupterOnOnInterruptableSpell; Player.OnSpellCast += PlayerOnOnSpellCast; Player.OnProcessSpellCast += PlayerOnOnProcessSpellCast; }
public static bool ProcessFlash(EvadePlus evade) { var dangerValue = evade.GetDangerValue(); var flashDangerValue = EvadeMenu.SpellMenu["flash"].Cast <Slider>().CurrentValue; if (flashDangerValue > 0 && flashDangerValue <= dangerValue) { var castPos = GetBlinkCastPos(evade, Player.Instance.ServerPosition.To2D(), 425); var slot = GetFlashSpellSlot(); if (!castPos.IsZero && slot != SpellSlot.Unknown && Player.CanUseSpell(slot) == SpellState.Ready) { //Player.IssueOrder(GameObjectOrder.Stop, Player.Instance.Position, true); Player.CastSpell(slot, castPos.To3DWorld()); return(true); } } return(false); }
public static bool ProcessFlash(EvadePlus evade) { var dangerValue = evade.GetDangerValue(); var flashDangerValue = EvadeMenu.SpellMenu["flash"].Cast<Slider>().CurrentValue; if (flashDangerValue > 0 && flashDangerValue <= dangerValue) { var castPos = GetBlinkCastPos(evade, Player.Instance.ServerPosition.To2D(), 425); var slot = GetFlashSpellSlot(); if (!castPos.IsZero && slot != SpellSlot.Unknown && Player.CanUseSpell(slot) == SpellState.Ready) { //Player.IssueOrder(GameObjectOrder.Stop, Player.Instance.Position, true); Player.CastSpell(slot, castPos.To3DWorld()); return true; } } return false; }
public EvadeResult(EvadePlus.EvadePlus evade, Vector2 evadePoint, Vector2 anchorPoint, int totalTimeAvailable, int timeAvailable, bool enoughTime) { Evade = evade; PlayerPos = Player.Instance.Position.To2D(); Time = Environment.TickCount; EvadePoint = evadePoint; AnchorPoint = anchorPoint; TotalTimeAvailable = totalTimeAvailable; TimeAvailable = timeAvailable; EnoughTime = enoughTime; // extra evade range if (Evade.ExtraEvadeRange > 0) { ExtraRange = (Evade.RandomizeExtraEvadeRange ? Utils.Random.Next(Evade.ExtraEvadeRange / 3, Evade.ExtraEvadeRange) : Evade.ExtraEvadeRange); } }
public EvadeResult(EvadePlus evade, Vector2 evadePoint, Vector2 anchorPoint, int totalTimeAvailable, int timeAvailable, bool enoughTime) { Evade = evade; PlayerPos = Player.Instance.Position.To2D(); Time = Environment.TickCount; EvadePoint = evadePoint; AnchorPoint = anchorPoint; TotalTimeAvailable = totalTimeAvailable; TimeAvailable = timeAvailable; EnoughTime = enoughTime; // extra evade range if (Evade.ExtraEvadeRange > 0) { ExtraRange = (Evade.RandomizeExtraEvadeRange ? Utils.Random.Next(Evade.ExtraEvadeRange / 3, Evade.ExtraEvadeRange) : Evade.ExtraEvadeRange); } }
public EvadeResult(EvadePlus evade, Vector2 evadePoint, Vector2 anchorPoint, int totalTimeAvailable, int timeAvailable, bool enoughTime) { Evade = evade; PlayerPos = Player.Instance.Position.To2D(); Time = Environment.TickCount; EvadePoint = evadePoint.Extend(PlayerPos, -70); //adjust evade range; AnchorPoint = anchorPoint; TotalTimeAvailable = totalTimeAvailable; TimeAvailable = timeAvailable; EnoughTime = enoughTime; // fix evade pos //if (evadePoint.IsInLineSegment(PlayerPos, anchorPoint, 40)) //{ // EvadePoint = anchorPoint; //} // extra evade range if (Evade.ExtraEvadeRange > 0) { var newPoint = EvadePoint.Extend(PlayerPos, -(Evade.RandomizeExtraEvadeRange ? Utils.Random.Next(Evade.ExtraEvadeRange/3, Evade.ExtraEvadeRange) : Evade.ExtraEvadeRange)); if (Evade.IsPointSafe(newPoint)) { EvadePoint = newPoint; } } }
public static Vector2 GetBlinkCastPos(EvadePlus evade, Vector2 center, float maxRange) { var polygons = evade.ClippedPolygons.Where(p => p.IsInside(center)).ToArray(); var segments = new List <Vector2[]>(); foreach (var pol in polygons) { for (var i = 0; i < pol.Points.Count; i++) { var start = pol.Points[i]; var end = i == pol.Points.Count - 1 ? pol.Points[0] : pol.Points[i + 1]; var intersections = Utils.GetLineCircleIntersectionPoints(center, maxRange, start, end) .Where(p => p.IsInLineSegment(start, end)) .ToList(); if (intersections.Count == 0) { if (start.Distance(center, true) < maxRange.Pow() && end.Distance(center, true) < maxRange.Pow()) { intersections = new[] { start, end }.ToList(); } else { continue; } } else if (intersections.Count == 1) { intersections.Add(center.Distance(start, true) > center.Distance(end, true) ? end : start); } segments.Add(intersections.ToArray()); } } if (!segments.Any()) { return(Vector2.Zero); } const int maxdist = 2000; const int division = 30; var points = new List <Vector2>(); foreach (var segment in segments) { var dist = segment[0].Distance(segment[1]); if (dist > maxdist) { segment[0] = segment[0].Extend(segment[1], dist / 2 - maxdist / 2); segment[1] = segment[1].Extend(segment[1], dist / 2 - maxdist / 2); dist = maxdist; } var step = maxdist / division; var count = dist / step; for (var i = 0; i < count; i++) { var point = segment[0].Extend(segment[1], i * step); if (!point.IsWall()) { points.Add(point); } } } if (!points.Any()) { return(Vector2.Zero); } var evadePoint = points.OrderByDescending(p => p.Distance(evade.LastIssueOrderPos) + p.Distance(center)).Last(); return(evadePoint); }
public PathFinding(EvadePlus evade) { Evade = evade; }
public Janna() { frostQueensClaim = new Item(ItemId.Frost_Queens_Claim); conf = MainMenu.AddMenu("MoonyJanna", "moonyJanna"); comboConf = conf.AddSubMenu("ComboMode", "moonyJannaComboConf"); comboConf.Add("qCombo", new CheckBox("Use Q")); comboConf.Add("itemCombo", new CheckBox("Use Frost Queen's Claim")); comboConf.Add("wCombo", new CheckBox("Use W")); fleeConf = conf.AddSubMenu("FleeMode", "moonyJannaFleeConf"); fleeConf.Add("qFlee", new CheckBox("Use Q")); fleeConf.Add("itemFlee", new CheckBox("Use Frost Queen's Claim")); fleeConf.Add("wFlee", new CheckBox("Use W")); miscConf = conf.AddSubMenu("Misc", "moonyJannaMiscConf"); miscConf.Add("qGeneral", new Slider("Use Q if hit at least X targets in general", 2, 0, 5)); miscConf.AddLabel("0 = disabled"); miscConf.Add("qInterrupt", new CheckBox("Use Q to interrupt")); miscConf.AddStringList("qInterruptDangerLvL", "Q Interruption danger lvl", new [] { "High", "Medium", "Low"}, 1); miscConf.Add("qAntiGap", new CheckBox("Use Q against gapclosers")); eConf = conf.AddSubMenu("Shielding", "moonyJannaEConf"); eConf.Add("eSkillShots", new CheckBox("E for skillshots")); eConf.Add("eDangerLvl", new Slider("If at dangerlevel", 2, 1, 5)); eConf.Add("eTargeted", new CheckBox("E for targeted spells")); eConf.Add("eDmgProc", new Slider("If % dmg", 15)); rConf = conf.AddSubMenu("Ultimate", "moonyJannaRConf"); rConf.Add("rInterrupt", new CheckBox("Use R to interrupt dangerous spells")); rConf.Add("rInsec", new KeyBind("Insec to ally", false, KeyBind.BindTypes.HoldActive)); rConf.AddLabel("Target has to be selected"); rConf.Add("flashRange", new Slider("Flash Range", 450, 425, 600)); rConf.Add("extraDist", new Slider("Extra Insec Dist", 150, 50, 300)); rConf.Add("maxOwnDistToEnemy", new Slider("Max own dist to enemy", 500, 100, 800)); prioConf = conf.AddSubMenu("AllyPriorities", "moonyJannaPrioConf"); foreach (AIHeroClient ally in EntityManager.Heroes.Allies) { prioConf.Add(ally.ChampionName, new Slider(ally.ChampionName, ally.IsMe ? 1 : TargetSelector.GetPriority(ally), 1, 5)); } skillShotConfig.InitMenu(ref conf); var skillshotDetector = new SkillshotDetector(DetectionTeam.EnemyTeam); evadePlus = new EvadePlus.EvadePlus(skillshotDetector); Game.OnUpdate += GameOnOnUpdate; Obj_AI_Base.OnProcessSpellCast += AiHeroClientOnOnProcessSpellCast; Interrupter.OnInterruptableSpell += InterrupterOnOnInterruptableSpell; Gapcloser.OnGapcloser += GapcloserOnOnGapcloser; Drawing.OnDraw += DrawingOnOnDraw; }
public EvadeResult(EvadePlus evade, Vector2 evadePoint, Vector2 anchorPoint, int totalTimeAvailable, int timeAvailable, bool enoughTime) { Evade = evade; PlayerPos = Player.Instance.Position.To2D(); Time = Environment.TickCount; EvadePoint = evadePoint.Extend(PlayerPos, -40); AnchorPoint = anchorPoint; TotalTimeAvailable = totalTimeAvailable; TimeAvailable = timeAvailable; EnoughTime = enoughTime; if (Evade.ExtraEvadeRange > 0) { var newPoint = EvadePoint.Extend(PlayerPos, -(Evade.RandomizeExtraEvadeRange ? Utils.Random.Next(Evade.ExtraEvadeRange/3, Evade.ExtraEvadeRange) : Evade.ExtraEvadeRange)); if (Evade.IsPointSafe(newPoint)) { EvadePoint = newPoint; } } }
public static Vector2 GetBlinkCastPos(EvadePlus evade, Vector2 center, float maxRange) { var polygons = evade.ClippedPolygons.Where(p => p.IsInside(center)).ToArray(); var segments = new List<Vector2[]>(); foreach (var pol in polygons) { for (var i = 0; i < pol.Points.Count; i++) { var start = pol.Points[i]; var end = i == pol.Points.Count - 1 ? pol.Points[0] : pol.Points[i + 1]; var intersections = Utils.GetLineCircleIntersectionPoints(center, maxRange, start, end) .Where(p => p.IsInLineSegment(start, end)) .ToList(); if (intersections.Count == 0) { if (start.Distance(center, true) < maxRange.Pow() && end.Distance(center, true) < maxRange.Pow()) { intersections = new[] {start, end}.ToList(); } else { continue; } } else if (intersections.Count == 1) { intersections.Add(center.Distance(start, true) > center.Distance(end, true) ? end : start); } segments.Add(intersections.ToArray()); } } if (!segments.Any()) { return Vector2.Zero; } const int maxdist = 2000; const int division = 30; var points = new List<Vector2>(); foreach (var segment in segments) { var dist = segment[0].Distance(segment[1]); if (dist > maxdist) { segment[0] = segment[0].Extend(segment[1], dist/2 - maxdist/2); segment[1] = segment[1].Extend(segment[1], dist/2 - maxdist/2); dist = maxdist; } var step = maxdist/division; var count = dist/step; for (var i = 0; i < count; i++) { var point = segment[0].Extend(segment[1], i*step); if (!point.IsWall()) { points.Add(point); } } } if (!points.Any()) { return Vector2.Zero; } var evadePoint = points.OrderByDescending(p => p.Distance(evade.LastIssueOrderPos) + p.Distance(center)).Last(); return evadePoint; }