private void CastSingleR() { var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical); if (target == null) { return; } var vector1 = target.ServerPosition - Vector3.Normalize(target.ServerPosition - Player.ServerPosition) * 300; R2.UpdateSourcePosition(vector1, vector1); var pred = R2.GetPrediction(target, true); if (Player.Distance(target) < 400) { var midpoint = (Player.ServerPosition + pred.UnitPosition) / 2; vector1 = midpoint + Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 800; var vector2 = midpoint - Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 300; if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, vector2)) { CastR(vector1, vector2); } } else if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, pred.CastPosition)) { //wall check if (pred.Hitchance >= HitChance.Medium) { CastR(vector1, pred.CastPosition); } } }
private static void Fight(string mode) { if (GetValue <bool>(mode, "P") && HaveP && Orbwalk.GetBestHeroTarget != null && Orbwalk.CanAttack) { return; } if (GetValue <bool>(mode, "Q") && Q.IsReady()) { if (IsQOne) { var target = Q.GetTarget(); if (target != null) { var state = Q.Cast(target, PacketCast); if (state.IsCasted()) { return; } if (state == Spell.CastStates.Collision && GetValue <bool>(mode, "QCol") && Smite.IsReady()) { var pred = Q.GetPrediction(target); if ( pred.CollisionObjects.Count( i => i.IsValid <Obj_AI_Minion>() && IsSmiteable((Obj_AI_Minion)i)) == 1 && CastSmite(pred.CollisionObjects.First()) && Q.Cast(pred.CastPosition, PacketCast)) { return; } } } } else { var target = Q2.GetTarget(0, HeroManager.Enemies.Where(i => !HaveQ(i))); if (target != null && (QAgain(target) || ((target.HasBuffOfType(BuffType.Knockback) || target.HasBuffOfType(BuffType.Knockup)) && Player.Distance(target) > 300 && !R.IsReady() && Utils.TickCount - R.LastCastAttemptT < 1500) || Q.IsKillable(target, 1) || !Orbwalk.InAutoAttackRange(target, 100) || !HaveP) && Q2.Cast(PacketCast)) { return; } if (target == null) { var sub = Q2.GetTarget(); if (sub != null && ObjHaveQ.Any(i => i.Distance(sub) < Player.Distance(sub) && i.Distance(sub) < E.Range) && Q2.Cast(PacketCast)) { return; } } } } if (GetValue <bool>(mode, "Smite") && CurrentSmiteType == SmiteType.Red) { var target = TargetSelector.GetTarget(760, TargetSelector.DamageType.Physical); if (target != null) { CastSmite(target, false); } return; } if (GetValue <bool>(mode, "E") && E.IsReady()) { if (IsEOne) { if (E.GetTarget() != null && Player.Mana >= 70 && E.Cast(PacketCast)) { return; } } else if ( HeroManager.Enemies.Where(i => i.IsValidTarget(E2.Range) && HaveE(i)) .Any(i => EAgain(i) || !Orbwalk.InAutoAttackRange(i, 50) || !HaveP) && Player.Mana >= 50 && E2.Cast(PacketCast)) { return; } } if (GetValue <bool>(mode, "R") && R.IsReady()) { var target = R.GetTarget(0, HeroManager.Enemies.Where(i => !HaveQ(i))); if (GetValue <bool>(mode, "Q") && Q.IsReady() && !IsQOne && target != null) { if (CanKill(target, GetQ2Dmg(target, R.GetDamage(target))) && R.CastOnUnit(target, PacketCast)) { return; } } else { foreach (var enemy in HeroManager.Enemies.Where(i => i.IsValidTarget(R.Range) && !R.IsKillable(i))) { R2.UpdateSourcePosition(enemy.ServerPosition, enemy.ServerPosition); var enemyBehind = HeroManager.Enemies.Where( i => i.IsValidTarget(R2.Range) && i.NetworkId != enemy.NetworkId && R2.WillHit( i, enemy.ServerPosition.Extend(Player.ServerPosition, -R2.Range), (int)enemy.BoundingRadius)).ToList(); if (GetValue <bool>(mode, "RBehind") && enemyBehind.Any(i => R.IsKillable(i)) && R.CastOnUnit(enemy, PacketCast)) { break; } if (enemyBehind.Count >= GetValue <Slider>(mode, "RCount").Value&& R.CastOnUnit(enemy, PacketCast)) { break; } } } } if (GetValue <bool>(mode, "W") && W.IsReady() && Orbwalk.GetBestHeroTarget != null) { if (IsWOne) { if (Player.HealthPercent < GetValue <Slider>(mode, "WHpU").Value) { W.Cast(PacketCast); } } else if (!Player.HasBuff("BlindMonkSafeguard") && (Player.HealthPercent < GetValue <Slider>(mode, "WHpU").Value || !HaveP)) { W.Cast(PacketCast); } } }
protected override void Drawing_OnDraw(EventArgs args) { if (menu.Item("Draw_Disabled", true).GetValue <bool>()) { return; } if (menu.Item("Draw_Q", true).GetValue <bool>()) { if (Q.Level > 0) { Render.Circle.DrawCircle(Player.Position, Q.Range, Q.IsReady() ? Color.Green : Color.Red); } } if (menu.Item("Draw_W", true).GetValue <bool>()) { if (W.Level > 0) { Render.Circle.DrawCircle(Player.Position, W.Range - 2, W.IsReady() ? Color.Green : Color.Red); } } if (menu.Item("Draw_E", true).GetValue <bool>()) { if (E.Level > 0) { Render.Circle.DrawCircle(Player.Position, E.Range, E.IsReady() ? Color.Green : Color.Red); } } if (menu.Item("Draw_R", true).GetValue <bool>()) { if (R.Level > 0) { Render.Circle.DrawCircle(Player.Position, R.Range, R.IsReady() ? Color.Green : Color.Red); } } if (menu.Item("Draw_R_Pred", true).GetValue <bool>() && R.IsReady()) { if (countEnemiesNearPosition(Player.ServerPosition, R.Range + 500) < 2) { var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical); if (target == null) { return; } var vector1 = target.ServerPosition - Vector3.Normalize(target.ServerPosition - Player.ServerPosition) * 300; R2.UpdateSourcePosition(vector1, vector1); var pred = R2.GetPrediction(target, true); var midpoint = (Player.ServerPosition + pred.UnitPosition) / 2; var vector2 = midpoint - Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 300; if (Player.Distance(target) < 400) { vector1 = midpoint + Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 800; if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, vector2)) { Vector2 wts = Drawing.WorldToScreen(Player.Position); Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + 1); Vector2 wtsPlayer = Drawing.WorldToScreen(vector1); Vector2 wtsPred = Drawing.WorldToScreen(vector2); Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat); Render.Circle.DrawCircle(vector1, 50, Color.Aqua); Render.Circle.DrawCircle(vector2, 50, Color.Yellow); Render.Circle.DrawCircle(pred.UnitPosition, 50, Color.Red); } } else if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, pred.CastPosition)) { if (pred.Hitchance >= HitChance.Medium) { Vector2 wts = Drawing.WorldToScreen(Player.Position); Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + 1); Vector2 wtsPlayer = Drawing.WorldToScreen(vector1); Vector2 wtsPred = Drawing.WorldToScreen(pred.CastPosition); Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat); Render.Circle.DrawCircle(vector1, 50, Color.Aqua); Render.Circle.DrawCircle(pred.CastPosition, 50, Color.Yellow); } } return; } //-----------------------------------------------------------------Draw Ult Mec----------------------------------------------- int maxHit = 0; Vector3 start = Vector3.Zero; Vector3 end = Vector3.Zero; Vector3 mid = Vector3.Zero; //loop one foreach (var target in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsValidTarget(R.Range)).OrderByDescending(GetComboDamage)) { //loop 2 foreach ( var enemy in ObjectManager.Get <Obj_AI_Hero>() .Where( x => x.IsValidTarget(R.Range + 1000) && x.NetworkId != target.NetworkId && x.Distance(target) < 900) .OrderByDescending(x => x.Distance(target))) { int hit = 2; var targetPred = Prediction.GetPrediction(target, .25f); var enemyPred = Prediction.GetPrediction(enemy, .25f); var midpoint = (enemyPred.CastPosition + targetPred.CastPosition) / 2; var startpos = midpoint + Vector3.Normalize(enemyPred.CastPosition - targetPred.CastPosition) * 600; var endPos = midpoint - Vector3.Normalize(enemyPred.CastPosition - targetPred.CastPosition) * 600; if (!IsPassWall(midpoint, startpos) && !IsPassWall(midpoint, endPos) && countEnemiesNearPosition(Player.ServerPosition, R.Range + 1000) > 2) { //loop 3 foreach (var enemy2 in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsValidTarget(R.Range + 1000) && x.NetworkId != target.NetworkId && x.NetworkId != enemy.NetworkId && x.Distance(target) < 1000)) { var enemy2Pred = Prediction.GetPrediction(enemy2, .25f); Object[] obj = VectorPointProjectionOnLineSegment(startpos.To2D(), endPos.To2D(), enemy2Pred.CastPosition.To2D()); var isOnseg = (bool)obj[2]; var pointLine = (Vector2)obj[1]; if (pointLine.Distance(enemy2Pred.CastPosition.To2D()) < 100 + enemy2.BoundingRadius && isOnseg) { hit++; } } } if (hit > maxHit) { maxHit = hit; start = startpos; end = endPos; mid = midpoint; } } } if (maxHit >= 2) { Vector2 wts = Drawing.WorldToScreen(Player.Position); Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + maxHit); Vector2 wtsPlayer = Drawing.WorldToScreen(start); Vector2 wtsPred = Drawing.WorldToScreen(end); Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat); Render.Circle.DrawCircle(start, 50, Color.Aqua); Render.Circle.DrawCircle(end, 50, Color.Yellow); Render.Circle.DrawCircle(mid, 50, Color.Red); } //---------------------------------------------------End drawing Ult Mec--------------------------------------- } }