public static void W(Obj_AI_Base unit, Vector2 unitPosition,bool packetcast, int minTargets = 0) { var points = new List<Vector2>(); var hitBoxes = new List<int>(); var startPoint = ObjectManager.Player.ServerPosition.To2D(); var originalDirection = Spell[SpellSlot.W].Range * (unitPosition - startPoint).Normalized(); foreach (var enemy in ObjectManager.Get<Obj_AI_Hero>()) { if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId) { var pos = Spell[SpellSlot.W].GetPrediction(enemy); if (pos.Hitchance >= HitChance.Medium) { points.Add(pos.UnitPosition.To2D()); hitBoxes.Add((int)enemy.BoundingRadius); } } } var posiblePositions = new List<Vector2>(); for (var i = 0; i < 3; i++) { if (i == 0) posiblePositions.Add(unitPosition + originalDirection.Rotated(0)); if (i == 1) posiblePositions.Add(startPoint + originalDirection.Rotated(Spells.Wangle)); if (i == 2) posiblePositions.Add(startPoint + originalDirection.Rotated(-Spells.Wangle)); } if (startPoint.Distance(unitPosition) < 900) { for (var i = 0; i < 3; i++) { var pos = posiblePositions[i]; var direction = (pos - startPoint).Normalized().Perpendicular(); var k = (2f / 3 * (unit.BoundingRadius + Spell[SpellSlot.W].Width)); posiblePositions.Add(startPoint - k * direction); posiblePositions.Add(startPoint + k * direction); } } var bestPosition = new Vector2(); var bestHit = -1; foreach (var position in posiblePositions) { var hits = CountHits(position, points, hitBoxes); if (hits > bestHit) { bestPosition = position; bestHit = hits; } } if (bestHit + 1 <= minTargets) return; Spell[SpellSlot.W].Cast(bestPosition.To3D(), packetcast); }
//fluxy public static bool WallBangable(this AIHeroClient hero, Vector2 pos = new Vector2()) { if (hero.HasBuffOfType(BuffType.SpellImmunity) || hero.HasBuffOfType(BuffType.SpellShield)) return false; var qprediction = SpellManager.Q.GetPrediction(hero); var qpredlist = pos.IsValid() ? new List<Vector3> { pos.To3D() } : new List<Vector3> { hero.ServerPosition, hero.Position, qprediction.CastPosition, qprediction.UnitPosition }; var bangableWalls = 0; _points = new List<Vector2>(); foreach (var position in qpredlist) { for (var i = 0; i < Config.Modes.Combo.QBindDistance; i += (int)hero.BoundingRadius) { var cPos = BardPitt.Position.Extend(position, BardPitt.Distance(position) + i).To3D(); _points.Add(cPos.To2D()); if (NavMesh.GetCollisionFlags(cPos).HasFlag(CollisionFlags.Wall) || NavMesh.GetCollisionFlags(cPos).HasFlag(CollisionFlags.Building)) { bangableWalls++; break; } } } if (bangableWalls / qpredlist.Count >= Config.Modes.Combo.QAccuracyPercent / 100f) { return true; } return false; }
public static void AddDrawLine(this Vector2 v, Vector2?from = null, int time = 10000) { var wtc = Drawing.WorldToScreen(v.To3D()); var wtcFrom = Drawing.WorldToScreen(from?.To3D() ?? Player.Instance.Position); var tuple = new Tuple <Vector2, Vector2>(wtcFrom, wtc); if (!DrawLineList.Contains(tuple)) { DrawLineList.Add(tuple); } if (time != short.MaxValue) { Core.DelayAction(() => DrawLineList.Remove(tuple), time); } }
public static void MoveTo(Vector2 movePos) { if (!Situation.ShouldDodge()) { return; } Evade.lastEvadeCommand = new EvadeCommand { order = EvadeOrderCommand.MoveTo, targetPosition = movePos, timestamp = EvadeUtils.TickCount, isProcessed = false }; Evade.lastMoveToPosition = movePos; Evade.lastMoveToServerPos = myHero.ServerPosition.To2D(); Player.IssueOrder(GameObjectOrder.MoveTo, movePos.To3D(), false); }
public static void MoveTo(Vector2 movePos) { if (!Situation.ShouldDodge()) { return; } AdEvade.LastEvadeCommand = new EvadeCommand { Order = EvadeOrderCommand.MoveTo, TargetPosition = movePos, Timestamp = EvadeUtils.TickCount, IsProcessed = false }; AdEvade.LastMoveToPosition = movePos; AdEvade.LastMoveToServerPos = MyHero.ServerPosition.To2D(); ConsoleDebug.WriteLine("MoveTo: " + movePos); Player.IssueOrder(GameObjectOrder.MoveTo, movePos.To3D(), false); }
public static Vector3 Offset(this Vector3 vector, Vector2 offset) { return vector.Offset(offset.To3D()); }
public float DistanceTo(Vector2 vPosition) { return Unit.Position.Distance(vPosition.To3D()); }
private static void TryToEvade(List <Skillshot> HitBy, Vector2 Pos) { var dangerLevel = 0; foreach (var skillshot in HitBy) { dangerLevel = Math.Max(dangerLevel, skillshot.GetValue <Slider>("DangerLevel").Value); } foreach (var evadeSpell in EvadeSpellDatabase.Spells) { if (evadeSpell.Enabled && evadeSpell.DangerLevel <= dangerLevel) { if (evadeSpell.IsReady()) { switch (evadeSpell.Slot) { case SpellSlot.W: var skillShotList = HitBy.Where( x => x.SpellData.CollisionObjects.Contains(CollisionObjectTypes.YasuoWall)); if (skillShotList.Any()) { var willHitList = skillShotList.Where( x => x.IsAboutToHit( 150 + evadeSpell.Delay, ObjectManager.Player)); if (willHitList.Any()) { if ( willHitList.OrderByDescending( x => dangerLevel) .Any( x => Logic.W.Cast( ObjectManager.Player.ServerPosition.Extend(x.Start.To3D(), 300)))) { return; } } } break; case SpellSlot.E: var dodgeList = GetEvadeTargets(evadeSpell) .Where( x => IsSafe(Logic.PosAfterE(x).To2D()).IsSafe&& (!Logic.UnderTower(Logic.PosAfterE(x)) || Menu.Item("ETower", true).GetValue <bool>())); if (dodgeList.Any()) { var dodgeTarget = dodgeList.Where(x => !x.HasBuff("YasuoDashWrapper")) .MinOrDefault(i => Logic.PosAfterE(i).Distance(Pos.To3D())); if (dodgeTarget != null && dodgeTarget.DistanceToPlayer() <= Logic.E.Range && SpellManager.CanCastE(dodgeTarget)) { Logic.E.CastOnUnit(dodgeTarget, true); } } break; } } } } }
/// <summary> /// Checks if this position is a wall using NavMesh /// </summary> public static bool IsWall(this Vector2 position) { return(position.To3D().IsWall()); }
public static bool IsOnScreen(this Vector2 position, float radius) { return(position.To3D().IsOnScreen(radius)); }
public static void moveTo(Vector2 Pos) { Player.IssueOrder(GameObjectOrder.MoveTo, Pos.To3D()); }
public static void CastSpell(EvadeSpellData spellData, Vector2 movePos) { EvadeSpell.lastSpellEvadeCommand = new EvadeCommand { order = EvadeOrderCommand.CastSpell, targetPosition = movePos, evadeSpellData = spellData, timestamp = EvadeUtils.TickCount, isProcessed = false }; myHero.Spellbook.CastSpell(spellData.spellKey, movePos.To3D(), false); }
public static PredictionOutput GetPrediction(PredictionInput input) { var mainTargetPrediction = Prediction.GetPrediction(input, false, true); var posibleTargets = new List <PossibleTarget> { new PossibleTarget { Position = mainTargetPrediction.UnitPosition.To2D(), Unit = input.Unit } }; if (mainTargetPrediction.Hitchance >= HitChance.Medium) { //Add the posible targets in range: posibleTargets.AddRange(GetPossibleTargets(input)); } if (posibleTargets.Count > 1) { var candidates = new List <Vector2>(); foreach (var target in posibleTargets) { target.Position = target.Position - input.From.To2D(); } for (var i = 0; i < posibleTargets.Count; i++) { for (var j = 0; j < posibleTargets.Count; j++) { if (i != j) { var p = (posibleTargets[i].Position + posibleTargets[j].Position) * 0.5f; if (!candidates.Contains(p)) { candidates.Add(p); } } } } var bestCandidateHits = -1; var bestCandidate = new Vector2(); var positionsList = posibleTargets.Select(t => t.Position).ToList(); foreach (var candidate in candidates) { var hits = GetHits(candidate, input.Range, input.Radius, positionsList); if (hits > bestCandidateHits) { bestCandidate = candidate; bestCandidateHits = hits; } } if (bestCandidateHits > 1 && input.From.To2D().Distance(bestCandidate, true) > 50 * 50) { return(new PredictionOutput { Hitchance = mainTargetPrediction.Hitchance, _aoeTargetsHitCount = bestCandidateHits, UnitPosition = mainTargetPrediction.UnitPosition, CastPosition = bestCandidate.To3D(), Input = input }); } } return(mainTargetPrediction); }
private static void CastQ(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0) { var points = new List <Vector2>(); var hitBoxes = new List <int>(); var startPoint = ObjectManager.Player.ServerPosition.To2D(); var originalDirection = Q.Range * (unitPosition - startPoint).Normalized(); foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>()) { if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId) { var pos = Q.GetPrediction(enemy); if (pos.Hitchance >= HitChance.Medium) { points.Add(pos.UnitPosition.To2D()); hitBoxes.Add((int)enemy.BoundingRadius); } } } var posiblePositions = new List <Vector2>(); for (var i = 0; i < 3; i++) { if (i == 0) { posiblePositions.Add(unitPosition + originalDirection.Rotated(0)); } if (i == 1) { posiblePositions.Add(startPoint + originalDirection.Rotated(Qangle)); } if (i == 2) { posiblePositions.Add(startPoint + originalDirection.Rotated(-Qangle)); } } if (startPoint.Distance(unitPosition) < 900) { for (var i = 0; i < 3; i++) { var pos = posiblePositions[i]; var direction = (pos - startPoint).Normalized().Perpendicular(); var k = (2 / 3 * (unit.BoundingRadius + Q.Width)); posiblePositions.Add(startPoint - k * direction); posiblePositions.Add(startPoint + k * direction); } } var bestPosition = new Vector2(); var bestHit = -1; foreach (var position in posiblePositions) { var hits = CountHits(position, points, hitBoxes); if (hits > bestHit) { bestPosition = position; bestHit = hits; } } if (bestHit + 1 <= minTargets) { return; } Q.Cast(bestPosition.To3D(), true); }
private static bool CheckPoint(Vector2 pos) { var paths = ObjectManager.Player.GetPath(pos.To3D()); return(paths.Length > 0 && pos.Distance(paths[paths.Length - 1]) > 5); }
public static SafePath IsPathSafe(this Vector2 pos, int time, int speed = -1, int delay = 0) { return(ObjectManager.Player.GetPath(pos.To3D()).ToList().To2D().IsPathSafe(time, speed, delay)); }
public static PredictionOutput GetBadaoStandarPrediction(this Spell spell, Obj_AI_Base target, List <Vector2> path, float speed = -1) { // check the unit speed input speed = (Math.Abs(speed - (-1)) < float.Epsilon) ? target.MoveSpeed : speed; // set standar output Vector2 castpos = target.ServerPosition.To2D(); Vector2 unitpos = target.ServerPosition.To2D(); HitChance hitchance = HitChance.Impossible; // target standing like a statue (performing an attack, casting spell, afk, aimbush.....) if (path.Count <= 1) { // set standar position castpos = target.ServerPosition.To2D(); unitpos = target.ServerPosition.To2D(); // target in range if (spell.RangeCheckFrom.To2D().Distance(castpos) <= spell.Range) { hitchance = HitChance.High; } // target out of range else { // skill shot circle if (spell.Type == SkillshotType.SkillshotCircle) { // check for extra radius if (spell.RangeCheckFrom.To2D().Distance(castpos) <= spell.Range + spell.Width + target.BoundingRadius - 40) { castpos = spell.RangeCheckFrom.To2D().Extend(castpos, spell.Range); hitchance = HitChance.Medium; } else { castpos = spell.RangeCheckFrom.To2D().Extend(castpos, spell.Range); hitchance = HitChance.OutOfRange; } } else { hitchance = HitChance.OutOfRange; } } return(new PredictionOutput() { UnitPosition = unitpos.To3D(), CastPosition = castpos.To3D(), Hitchance = hitchance }); } //Skillshots with only a delay if (Math.Abs(spell.Speed - float.MaxValue) < float.Epsilon && path.Count >= 2) { var a = path[0]; var b = path[1]; var distance = a.Distance(b); // skillshot circle if (spell.Type == SkillshotType.SkillshotCircle) { //standar distance var x = speed * (spell.Delay + Game.Ping / 2000f + 0.06f); // position 1 properties var distance01 = x - (target.BoundingRadius + spell.Width) / 2; var pos01 = a.Extend(b, distance01); // position 2 properties var distance02 = x; var pos02 = a.Extend(b, distance02); // position 3 properties var distance03 = x + (target.BoundingRadius + spell.Width) / 2; var pos03 = pos02.Extend(spell.From.To2D(), distance03); // lines length var length01 = pos01.Distance(pos02); var length02 = pos02.Distance(pos03); // set standar position unitpos = pos02; castpos = pos02; // list cast poses List <Vector2> poses = new List <Vector2>(); for (int i = 0; i <= 10; i++) { poses.Add(i <= 5 ? pos01.Extend(pos02, i * length01 / 6) : pos02.Extend(pos03, (i - 5) * length02 / 5)); } // check cast pos for (int i = 0; i <= 10; i++) { if (poses[i].Distance(spell.RangeCheckFrom.To2D()) <= spell.Range && poses[i].Distance(a) <= distance) { if (i <= 3) { hitchance = HitChance.VeryHigh; } else if (i <= 6) { hitchance = HitChance.High; } else { hitchance = HitChance.Medium; } return(new PredictionOutput { UnitPosition = unitpos.To3D(), CastPosition = poses[i].To3D(), Hitchance = hitchance }); } } // hitchance out of range return(new PredictionOutput { UnitPosition = unitpos.To3D(), CastPosition = castpos.To3D(), Hitchance = HitChance.OutOfRange }); } // skill shot line and cone else { //standar distance var x = speed * (spell.Delay + Game.Ping / 2000f + 0.06f); // position properties var distance01 = x; var pos01 = a.Extend(b, distance01); var range01 = spell.RangeCheckFrom.To2D().Distance(pos01); // set standar position unitpos = pos01; castpos = pos01; // hitchance high if (distance01 < distance && range01 <= spell.Range) { castpos = pos01; hitchance = HitChance.High; return(new PredictionOutput { UnitPosition = unitpos.To3D(), CastPosition = castpos.To3D(), Hitchance = hitchance }); } // hitchance out of range return(new PredictionOutput { UnitPosition = unitpos.To3D(), CastPosition = castpos.To3D(), Hitchance = HitChance.OutOfRange }); } } // skill shot with a delay and speed if (Math.Abs(spell.Speed - float.MaxValue) > float.Epsilon) { var a = path[0]; var b = path[1]; var distance = a.Distance(b); // standar prediction float dis = spell.From.To2D().Distance(a); float rad = 0; double time = math.t(speed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f, 0, spell.From.To2D(), a, b); var unitpos02 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed) : new Vector2(); var castpos02 = unitpos02; // very high prediction rad = (target.BoundingRadius + spell.Width) / 2; time = math.t(target.MoveSpeed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f, rad, spell.From.To2D(), a, b); var unitpos01 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed - rad) : new Vector2(); var castpos01 = unitpos01; // medium prediction time = math.t(target.MoveSpeed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f - rad / spell.Speed, 0, spell.From.To2D(), a, b); var unitpos03 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed) : new Vector2(); var castpos03 = unitpos03.IsValid() ? spell.From.To2D().Extend(unitpos03, spell.From.To2D().Distance(unitpos03) - rad) : new Vector2(); if (castpos01.IsValid() && castpos02.IsValid() && castpos03.IsValid()) { var length01 = castpos01.Distance(castpos02); var length02 = castpos02.Distance(castpos03); var Acosb = Math.Acos( Math.Abs(float.IsNaN(math.CosB(spell.From.To2D(), a, b)) ? 0.99f : Math.Abs(math.CosB(spell.From.To2D(), a, b)))) * (180 / Math.PI); // skillshot circle + line if (spell.Type == SkillshotType.SkillshotCircle || (spell.Type == SkillshotType.SkillshotLine && Acosb <= 110 && Acosb >= 70)) { List <Vector2> poses = new List <Vector2>(); for (int i = 0; i <= 10; i++) { poses.Add(i <= 5 ? castpos01.Extend(castpos02, i * length01 / 6) : castpos02.Extend(castpos03, (i - 5) * length02 / 5)); } // check cast pos for (int i = 0; i <= 10; i++) { if (poses[i].Distance(spell.RangeCheckFrom.To2D()) <= spell.Range && poses[i].Distance(a) <= distance) { if (i <= 3) { hitchance = HitChance.VeryHigh; } else if (i <= 6) { hitchance = HitChance.High; } else { hitchance = HitChance.Medium; } return(new PredictionOutput { UnitPosition = unitpos02.To3D(), CastPosition = poses[i].To3D(), Hitchance = hitchance }); } } // hitchance out of range return(new PredictionOutput { UnitPosition = unitpos02.To3D(), CastPosition = castpos02.To3D(), Hitchance = HitChance.OutOfRange }); } // skillshot line + cone else { var distance02 = a.Distance(castpos02); var range01 = spell.RangeCheckFrom.To2D().Distance(castpos02); // hitchance high if (distance02 < distance && range01 <= spell.Range) { return(new PredictionOutput { UnitPosition = unitpos02.To3D(), CastPosition = castpos02.To3D(), Hitchance = HitChance.High }); } // hitchance out of range return(new PredictionOutput { UnitPosition = unitpos02.To3D(), CastPosition = castpos02.To3D(), Hitchance = HitChance.OutOfRange }); } } } return(new PredictionOutput { UnitPosition = unitpos.To3D(), CastPosition = castpos.To3D(), Hitchance = hitchance }); }
public static void Insec(Obj_AI_Hero target) { Rpos = Player.Position.To2D().Extend(target.Position.To2D(), Player.Distance(target) + 250); if (Rpos.Distance(Player.Position) <= R.Range) { if (Player.Distance(Rpos.Extend(target.Position.To2D(), 700 - target.Distance(Rpos))) < E.Range && !IsWall(Rpos.To3D()) && target.IsFacing(Player)) { R.Cast(Rpos); } } }
private static void WardJump( Vector3 pos, bool m2M = true, bool maxRange = false, bool reqinMaxRange = false, bool minions = true, bool champions = true) { if (WStage != WCastStage.First) { return; } var basePos = Player.Position.To2D(); var newPos = (pos.To2D() - Player.Position.To2D()); if (JumpPos == new Vector2()) { if (reqinMaxRange) { JumpPos = pos.To2D(); } else if (maxRange || Player.Distance(pos) > 590) { JumpPos = basePos + (newPos.Normalized() * (590)); } else { JumpPos = basePos + (newPos.Normalized() * (Player.Distance(pos))); } } if (JumpPos != new Vector2() && reCheckWard) { reCheckWard = false; Utility.DelayAction.Add( 20, () => { if (JumpPos != new Vector2()) { JumpPos = new Vector2(); reCheckWard = true; } }); } if (m2M) { Orbwalk(pos); } if (!spells[Spells.W].IsReady() || spells[Spells.W].Instance.Name == "blindmonkwtwo" || reqinMaxRange && Player.Distance(pos) > spells[Spells.W].Range) { return; } if (minions || champions) { if (champions) { var champs = (from champ in ObjectManager.Get <Obj_AI_Hero>() where champ.IsAlly && champ.Distance(Player) < spells[Spells.W].Range && champ.Distance(pos) < 200 && !champ.IsMe select champ).ToList(); if (champs.Count > 0 && WStage == WCastStage.First) { if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First) { return; } CastW(champs[0]); return; } } if (minions) { var minion2 = (from minion in ObjectManager.Get <Obj_AI_Minion>() where minion.IsAlly && minion.Distance(Player) < spells[Spells.W].Range && minion.Distance(pos) < 200 && !minion.Name.ToLower().Contains("ward") select minion).ToList(); if (minion2.Count > 0 && WStage == WCastStage.First) { if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First) { return; } CastW(minion2[0]); return; } } } var isWard = false; foreach (var ward in ObjectManager.Get <Obj_AI_Base>()) { if (ward.IsAlly && ward.Name.ToLower().Contains("ward") && ward.Distance(JumpPos) < 200) { isWard = true; if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First) //credits to JackisBack { return; } CastW(ward); wcasttime = Environment.TickCount; } } if (!isWard && castWardAgain) { var ward = FindBestWardItem(); if (ward == null || WStage != WCastStage.First) { return; } Player.Spellbook.CastSpell(ward.SpellSlot, JumpPos.To3D()); lastWardPos = JumpPos.To3D(); LastWard = Environment.TickCount; } }
/// <summary> /// Casts the spell to the position. /// </summary> public void Cast(Vector2 position, bool packetCast = false) { Cast(position.To3D(), packetCast); }
public static bool Cast(this SummonerSpell spell, Vector2 position) { return(IsReady(spell) && (ObjectManager.Player.Distance(position, true) < spell.Range * spell.Range) && ObjectManager.Player.Spellbook.CastSpell(spell.Slot, position.To3D())); }
/// <summary> /// Casts the spell to the position. /// </summary> public bool Cast(Vector2 position, bool packetCast = false) { return(Cast(position.To3D(), packetCast)); }
private static void CastWE(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0) { var usePacket = Config.Item("usePackets").GetValue <bool>(); var points = new List <Vector2>(); var hitBoxes = new List <int>(); Vector2 startPoint = ObjectManager.Player.ServerPosition.To2D(); Vector2 originalDirection = W.Range * (unitPosition - startPoint).Normalized(); foreach (Obj_AI_Hero enemy in HeroList) { if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId) { PredictionOutput pos = W.GetPrediction(enemy); if (pos.Hitchance >= HitChance.Medium) { points.Add(pos.UnitPosition.To2D()); hitBoxes.Add((int)enemy.BoundingRadius); } } } var posiblePositions = new List <Vector2>(); for (int i = 0; i < 3; i++) { if (i == 0) { posiblePositions.Add(unitPosition + originalDirection.Rotated(0)); } if (i == 1) { posiblePositions.Add(startPoint + originalDirection.Rotated(Wangle)); } if (i == 2) { posiblePositions.Add(startPoint + originalDirection.Rotated(-Wangle)); } } if (startPoint.Distance(unitPosition) < 900) { for (int i = 0; i < 3; i++) { Vector2 pos = posiblePositions[i]; Vector2 direction = (pos - startPoint).Normalized().Perpendicular(); float k = (2 / 3 * (unit.BoundingRadius + Q.Width)); posiblePositions.Add(startPoint - k * direction); posiblePositions.Add(startPoint + k * direction); } } var bestPosition = new Vector2(); int bestHit = -1; foreach (Vector2 position in posiblePositions) { int hits = CountHits(position, points, hitBoxes); if (hits > bestHit) { bestPosition = position; bestHit = hits; } } if (bestHit + 1 <= minTargets) { return; } W.Cast(bestPosition.To3D(), usePacket); }
public static Obj_AI_Minion GetNearestMinionByNames(this Vector2 position, string[] names) { return(GetNearestMinionByNames(position.To3D(), names)); }
private static void onDraw(EventArgs args) { if (Config.Item("disDraw").GetValue <bool>()) { return; } foreach (Obj_AI_Base jun in MinionManager.GetMinions(Yasuo.Player.ServerPosition, 700, MinionTypes.All, MinionTeam.Neutral)) { Drawing.DrawCircle(jun.Position, 70, Color.Green); Vector2 posAfterE = Yasuo.Player.ServerPosition.To2D() + (Vector2.Normalize(jun.ServerPosition.To2D() - Yasuo.Player.ServerPosition.To2D()) * 475); // Vector2 posAfterE = Yasuo.Player.Position.To2D().Extend(jun.Position.To2D(), 475);//jun.ServerPosition.To2D().Extend() + (Vector2.Normalize(Yasuo.Player.Position.To2D() - jun.ServerPosition.To2D()) * 475); Drawing.DrawCircle(posAfterE.To3D(), 50, Color.Violet); Vector3 posAfterDash = Yasuo.Player.GetPath(posAfterE.To3D()).Last(); Drawing.DrawCircle(posAfterDash, 50, Color.DarkRed); } if (Config.Item("drawQ").GetValue <bool>()) { Utility.DrawCircle(Yasuo.Player.Position, 475, (Yasuo.isDashigPro) ? Color.Red : Color.Blue, 10, 10); } if (Config.Item("drawR").GetValue <bool>()) { Utility.DrawCircle(Yasuo.Player.Position, 1200, Color.Blue); } if (Config.Item("flee").GetValue <KeyBind>().Active&& Config.Item("drawWJ").GetValue <bool>()) { Utility.DrawCircle(Game.CursorPos, 350, Color.Cyan); Utility.DrawCircle(Yasuo.lastDash.from, 60, Color.BlueViolet); Utility.DrawCircle(Yasuo.lastDash.to, 60, Color.BlueViolet); foreach (Yasuo.YasDash dash in Yasuo.dashes) { if (dash.from.Distance(Game.CursorPos) < 1200) { var SA = Drawing.WorldToScreen(dash.from); var SB = Drawing.WorldToScreen(dash.to); Drawing.DrawLine(SA.X, SA.Y, SB.X, SB.Y, 3, Color.Green); } } } /* if ((int)NavMesh.GetCollisionFlags(Game.CursorPos) == 2 || (int)NavMesh.GetCollisionFlags(Game.CursorPos) == 64) * Drawing.DrawCircle(Game.CursorPos, 70, Color.Green); * if (map.isWall(Game.CursorPos.To2D())) * Drawing.DrawCircle(Game.CursorPos, 100, Color.Red); * * foreach (Polygon pol in map.poligs) * { * pol.Draw(Color.BlueViolet, 3); * } * * foreach(Obj_AI_Base jun in MinionManager.GetMinions(Yasuo.Player.ServerPosition,700,MinionTypes.All,MinionTeam.Neutral)) * { * Drawing.DrawCircle(jun.Position, 70, Color.Green); * SharpDX.Vector2 proj = map.getClosestPolygonProj(jun.ServerPosition.To2D()); * SharpDX.Vector2 posAfterE = jun.ServerPosition.To2D() + (SharpDX.Vector2.Normalize(proj - jun.ServerPosition.To2D() ) * 475); * Drawing.DrawCircle(posAfterE.To3D(), 50, Color.Violet); * } * * foreach (Obj_SpellMissile mis in skillShots) * { * Drawing.DrawCircle(mis.Position, 47, Color.Orange); * Drawing.DrawCircle(mis.EndPosition, 100, Color.BlueViolet); * Drawing.DrawCircle(mis.SpellCaster.Position, Yasuo.Player.BoundingRadius + mis.SData.LineWidth, Color.DarkSalmon); * Drawing.DrawCircle(mis.StartPosition, 70, Color.Green); * }*/ }
/// <summary> /// Checks if the unit position is on screen /// </summary> public static bool IsOnScreen(this Vector2 position) { return(position.To3D().IsOnScreen()); }
public static void WallDash() { if (Variables._Player.Distance(spotA) <= 600) { MoveToLimited(spotA.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotA.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_Blue" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotB) <= 600) { MoveToLimited(spotB.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotB.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini4.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotC) <= 600) { MoveToLimited(spotC.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotC.To3D()) == 0 && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotD) <= 600) { MoveToLimited(spotD.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotD.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Razorbreak" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini3.1.2" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini3.1.4" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotE) <= 600) { MoveToLimited(spotE.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotE.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_KrugMini" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotF) <= 400) { MoveToLimited(spotF.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotF.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Blue" && jungleMobs.BaseSkinName != "SRU_BlueMini1.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotG) <= 600) { MoveToLimited(spotG.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotG.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini2.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotH) <= 600) { MoveToLimited(spotH.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotH.To3D()) == 0 && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotI) <= 120) { MoveToLimited(spotI.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotI.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini8.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotJ) <= 120) { MoveToLimited(spotJ.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotJ.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini8.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotL) <= 600) { MoveToLimited(spotL.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotL.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_KrugMini" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotM) <= 200) { MoveToLimited(spotM.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotM.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini10.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotN) <= 600) { MoveToLimited(spotN.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotN.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_RazorbreakMini9.1.2" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini9.1.4" && jungleMobs.BaseSkinName != "SRU_Razorbreak" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } if (Variables._Player.Distance(spotO) <= 200) { MoveToLimited(spotO.To3D()); var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true); foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange))) { if (jungleMobs == null) { return; } if (Variables._Player.Distance(spotO.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini10.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs)) { Yasuo.E.Cast(jungleMobs); } } } }
/// <summary> /// Randomizes the position with the supplied min/max /// </summary> public static Vector2 Randomize(this Vector2 position, int min, int max) { return(position.To3D().Randomize(min, max).To2D()); }
public override void Drawing_OnDraw(EventArgs args) { var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical); if (t.IsValidTarget()) { Render.Circle.DrawCircle(t.Position, 105f, Color.GreenYellow); var wcCenter = ObjectManager.Player.Position.Extend(t.Position, ObjectManager.Player.Distance(t.Position) / 2); Vector2 wcLeft = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()) .Rotated(ObjectManager.Player.Distance(t.Position) < 300 ? 45 : 37 * (float)Math.PI / 180) * ObjectManager.Player.Distance(t.Position) / 2; Vector2 wcRight = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()) .Rotated(ObjectManager.Player.Distance(t.Position) < 300 ? -45 : -37 * (float)Math.PI / 180) * ObjectManager.Player.Distance(t.Position) / 2; Render.Circle.DrawCircle(wcCenter, 50f, Color.Red); Render.Circle.DrawCircle(wcLeft.To3D(), 50f, Color.Green); Render.Circle.DrawCircle(wcRight.To3D(), 50f, Color.Yellow); } //var bx = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range * 3)); //foreach (var n in bx) //{ // if (n.IsValidTarget(800) && ObjectManager.Player.Distance(n) < 450) // { // Vector3[] x = new[] { ObjectManager.Player.Position, n.Position }; // Vector2 aX = // Drawing.WorldToScreen(new Vector3(CommonGeometry.CenterOfVectors(x).X, // CommonGeometry.CenterOfVectors(x).Y, CommonGeometry.CenterOfVectors(x).Z)); // Render.Circle.DrawCircle(CommonGeometry.CenterOfVectors(x), 85f, Color.White ); // Drawing.DrawText(aX.X - 15, aX.Y - 15, Color.GreenYellow, n.ChampionName); // } //} //var enemies = HeroManager.Enemies.Where(e => e.IsValidTarget(1500)); //var objAiHeroes = enemies as Obj_AI_Hero[] ?? enemies.ToArray(); //IEnumerable<Obj_AI_Hero> nResult = // (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e) // .Distinct(); //foreach (var n in nResult) //{ // var x = E.GetPrediction(n).CollisionObjects.Count; // Render.Circle.DrawCircle(n.Position, (Orbwalking.GetRealAutoAttackRange(null) + 65) - 300, Color.GreenYellow); //} var nResult = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range - 200)); foreach (var n in nResult.Where(n => n.IsFacing(ObjectManager.Player))) { if (n.IsValidTarget()) { Render.Circle.DrawCircle(n.Position, E.Range - 200, Color.GreenYellow, 1); } } Spell[] spellList = { Q, W, E, R }; foreach (var spell in spellList) { var menuItem = GetValue <Circle>("Draw" + spell.Slot); if (menuItem.Active) { Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color); } } }
public static void SendMovePacket(this Obj_AI_Base v, Vector2 point) { EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, point.To3D(), false); }
private static void GetJumpPosition() { foreach (var t in HeroManager.Enemies.Where(e => e.LSIsValidTarget(2500))) { var toPolygon = new CommonGeometry.Rectangle(ObjectManager.Player.Position.LSTo2D(), ObjectManager.Player.Position.LSTo2D().LSExtend(t.Position.LSTo2D(), t.LSDistance(ObjectManager.Player.Position)), E.Range).ToPolygon(); toPolygon.Draw(System.Drawing.Color.Red, 1); //Console.WriteLine(hero.ChampionName); for (int j = 20; j < 361; j += 20) { Vector2 wcPositive = ObjectManager.Player.Position.LSTo2D() + Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()).LSRotated(j * (float)Math.PI / 180) * E.Range; if (!wcPositive.LSIsWall() && t.LSDistance(wcPositive) > E.Range) { Render.Circle.DrawCircle(wcPositive.To3D(), 105f, Color.GreenYellow); } //if (!wcPositive.LSIsWall()) //{ // ListWJumpPositions.Add(wcPositive); //} //Vector2 wcNegative = ObjectManager.Player.Position.LSTo2D() + // Vector2.Normalize(hero.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()) // .LSRotated(-j * (float)Math.PI / 180) * E.Range; //Render.Circle.DrawCircle(wcNegative.To3D(), 105f, Color.White); //if (!wcNegative.LSIsWall()) //{ // ListWJumpPositions.Add(wcNegative); //} } } //Vector2 location = ObjectManager.Player.Position.LSTo2D() + // Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()) * W.Range; //Vector2 wCastPosition = location; ////Render.Circle.DrawCircle(wCastPosition.To3D(), 105f, System.Drawing.Color.Red); //if (!wCastPosition.LSIsWall()) //{ // xList.Add(wCastPosition); //} //if (!wCastPosition.LSIsWall()) //{ // ExistingJumpPositions.Add(new ListJumpPositions // { // Position = wCastPosition, // Name = name // }); // ListWJumpPositions.Add(wCastPosition); //} //if (wCastPosition.LSIsWall()) //{ // for (int j = 20; j < 80; j += 20) // { // Vector2 wcPositive = ObjectManager.Player.Position.LSTo2D() + // Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()) // .LSRotated(j * (float)Math.PI / 180) * W.Range; // if (!wcPositive.LSIsWall()) // { // ListWJumpPositions.Add(wcPositive); // } // Vector2 wcNegative = ObjectManager.Player.Position.LSTo2D() + // Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()) // .LSRotated(-j * (float)Math.PI / 180) * W.Range; // if (!wcNegative.LSIsWall()) // { // ListWJumpPositions.Add(wcNegative); // } // } // float xDiff = ObjectManager.Player.Position.X - t.Position.X; // float yDiff = ObjectManager.Player.Position.Y - t.Position.Y; // int angle = (int)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI); //} ////foreach (var aa in ListWJumpPositions) ////{ //// Render.Circle.DrawCircle(aa.To3D2(), 105f, System.Drawing.Color.White); ////} //var al1 = xList.OrderBy(al => al.LSDistance(t.Position)).First(); //var color = System.Drawing.Color.DarkRed; //var width = 4; //var startpos = ObjectManager.Player.Position; //var endpos = al1.To3D(); //if (startpos.LSDistance(endpos) > 100) //{ // var endpos1 = al1.To3D() + // (startpos - endpos).LSTo2D().Normalized().LSRotated(25 * (float)Math.PI / 180).To3D() * 75; // var endpos2 = al1.To3D() + // (startpos - endpos).LSTo2D().Normalized().LSRotated(-25 * (float)Math.PI / 180).To3D() * 75; // //var x1 = new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos); // //x1.Draw(color, width - 2); // new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos).Draw(color, width - 2); // var y1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos1); // y1.Draw(color, width - 2); // var z1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos2); // z1.Draw(color, width - 2); //} ////foreach (var al in ListWJumpPositions.OrderBy(al => al.LSDistance(t.Position))) ////{ //// Render.Circle.DrawCircle(al.To3D(), 105f, System.Drawing.Color.White); ////} //// Render.Circle.DrawCircle(al1.To3D(), 85, System.Drawing.Color.White); //return al1; }
/// <summary> /// Casts the item on a Vector2 position. /// </summary> public static void UseItem(int id, Vector2 position) { foreach (var slot in ObjectManager.Player.InventoryItems.Where(slot => slot.Id == (ItemId)id) .Where(slot => position != Vector2.Zero)) { ObjectManager.Player.Spellbook.CastSpell(slot.SpellSlot, position.To3D()); } }
/// <summary> /// Casts the item on a Vector2 position. /// </summary> /// <param name="id">The identifier.</param> /// <param name="position">The position.</param> /// <returns></returns> public static bool UseItem(int id, Vector2 position) { return UseItem(id, position.To3D()); }
internal void CastWE(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0, HitChance hc = HitChance.Medium) { var points = new List <Vector2>(); var hitBoxes = new List <int>(); Vector2 startPoint = Khazix.ServerPosition.To2D(); Vector2 originalDirection = W.Range * (unitPosition - startPoint).Normalized(); foreach (AIHeroClient enemy in HeroManager.Enemies) { if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId) { PredictionOutput pos = WE.GetPrediction(enemy); if (pos.Hitchance >= hc) { points.Add(pos.UnitPosition.To2D()); hitBoxes.Add((int)enemy.BoundingRadius + 275); } } } var posiblePositions = new List <Vector2>(); for (int i = 0; i < 3; i++) { if (i == 0) { posiblePositions.Add(unitPosition + originalDirection.Rotated(0)); } if (i == 1) { posiblePositions.Add(startPoint + originalDirection.Rotated(Wangle)); } if (i == 2) { posiblePositions.Add(startPoint + originalDirection.Rotated(-Wangle)); } } if (startPoint.LSDistance(unitPosition) < 900) { for (int i = 0; i < 3; i++) { Vector2 pos = posiblePositions[i]; Vector2 direction = (pos - startPoint).Normalized().Perpendicular(); float k = (2 / 3 * (unit.BoundingRadius + W.Width)); posiblePositions.Add(startPoint - k * direction); posiblePositions.Add(startPoint + k * direction); } } var bestPosition = new Vector2(); int bestHit = -1; foreach (Vector2 position in posiblePositions) { int hits = CountHits(position, points, hitBoxes); if (hits > bestHit) { bestPosition = position; bestHit = hits; } } if (bestHit + 1 <= minTargets) { return; } W.Cast(bestPosition.To3D(), false); }
/// <summary> /// Casts the item on a Vector2 position. /// </summary> public static void UseItem(int id, Vector2 position) { foreach ( var slot in ObjectManager.Player.InventoryItems.Where(slot => slot.Id == (ItemId) id) .Where(slot => position != null)) { slot.UseItem(position.To3D()); } }
/// <summary> /// Casts the item on a Vector2 position. /// </summary> /// <param name="id">The identifier.</param> /// <param name="position">The position.</param> /// <returns></returns> public static bool UseItem(int id, Vector2 position) { return(UseItem(id, position.To3D())); }
/*Combo*/ /*Q Split GetCollision*/ private static List <Obj_AI_Base> GetCollision(Vector2 from, IEnumerable <Vector2> to, float width, float speed, float delay, float delayOverride = -1) { return(Pradiction.Collision.GetCollision(to.Select(h => h.To3D()).ToList(), new Pradiction.PredictionInput { From = from.To3D(), Type = Pradiction.SkillshotType.SkillshotLine, Radius = width, Delay = delayOverride > 0 ? delayOverride : delay, Speed = speed })); }
public static void CastSpell(EvadeSpellData spellData, Vector2 movePos) { EvadeSpell.LastSpellEvadeCommand = new EvadeCommand { Order = EvadeOrderCommand.CastSpell, TargetPosition = movePos, EvadeSpellData = spellData, Timestamp = EvadeUtils.TickCount, IsProcessed = false }; ConsoleDebug.WriteLine("CastSpell: " + movePos); MyHero.Spellbook.CastSpell(spellData.SpellKey, movePos.To3D(), false); }
/// <summary> /// Determines whether the specified vector is in range of the item. /// </summary> /// <param name="target">The target.</param> /// <returns></returns> public bool IsInRange(Vector2 target) { return(this.IsInRange(target.To3D())); }
/// <summary> /// Determines whether the specified vector is in range of the item. /// </summary> /// <param name="target">The target.</param> /// <returns></returns> public bool IsInRange(Vector2 target) { return IsInRange(target.To3D()); }
public static float DistanceToMouse(this Vector2 position) { return(Game.CursorPosition.Distance(position.To3D())); }
public void Cast(Vector2 position) { if (ObjectManager.Player.Distance(position) < Range) { UseItem(Id, position.To3D()); } }
public bool Cast(Vector2 fromPosition, Vector2 toPosition) { return(Cast(fromPosition.To3D(), toPosition.To3D())); }