private static void WLogic() { #region W逻辑 foreach (var enemy in HeroManager.Enemies.Where(e => e.IsValid && !e.IsDead && e.Distance(Player) < W.Range).OrderByDescending(k => k.Distance(Player)).OrderByDescending(k => k.Health)) { if (Config.Item("标记W").GetValue <bool>() && Config.GetBool("WList" + enemy.NetworkId) && (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) && enemy.CountAlliesInRange(650) > 0 && enemy.HasWBuff()) { W.CastSpell(enemy); } if (Config.Item("硬控W").GetValue <bool>() && !OktwCommon.CanMove(enemy) && enemy.HasWBuff()) { W.CastSpell(enemy); } if (Config.Item("抢人头W").GetValue <bool>() && Config.GetBool("WList" + enemy.NetworkId) && Player.CountEnemiesInRange(Player.AttackRange + 100) == 0 && enemy.Health < OktwCommon.GetIncomingDamage(enemy) + W.GetDmg(enemy) && !Q.CanCast(enemy) && !(Orbwalking.CanAttack() && Orbwalking.InAutoAttackRange(enemy))) { W.CastSpell(enemy); } } #endregion }
public override void GameOnUpdate(EventArgs args) { if (!ComboActive) { var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical); if (!t.IsValidTarget() || !W.IsReady()) { return; } if (Program.Config.Item("UseWTH").GetValue <KeyBind>().Active) { if (ObjectManager.Player.HasBuff("Recall")) { return; } W.Cast(t); } if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Charm) || t.HasBuffOfType(BuffType.Fear) || t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") || t.HasBuff("Recall")) { W.Cast(t.Position); } } /* [ Combo ] */ if (ComboActive) { var useW = Config.Item("UseWC" + Id).GetValue <bool>(); var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical); if (Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>() && R.IsReady() && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 300) && AsheQ >= 2 && t.Health > R.GetDamage(t) + ObjectManager.Player.TotalAttackDamage * 4) { R.Cast(t); } if (Q.IsReady() && AsheQCastReady) { if (t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 90)) { Q.Cast(); } } if (useW && W.IsReady() && t.IsValidTarget()) { W.Cast(t); } var useR = Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>(); if (useR && R.IsReady()) { var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue <Slider>().Value; var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue <Slider>().Value; t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical); if (!t.IsValidTarget()) { return; } var aaDamage = Orbwalking.InAutoAttackRange(t) ? ObjectManager.Player.GetAutoAttackDamage(t, true) : 0; if (t.Health > aaDamage && t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) && ObjectManager.Player.Distance(t) >= minRRange) { R.Cast(t); } } } //Harass if (HarassActive) { var target = TargetSelector.GetTarget(1200, TargetSelector.DamageType.Physical); if (target == null) { return; } if (Config.Item("UseWH" + Id).GetValue <bool>() && W.IsReady()) { W.Cast(target); } } //Manual cast R if (Config.Item("RManualCast" + Id).GetValue <KeyBind>().Active) { var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical); R.Cast(rTarget); } }
private static bool InAttackRange(Obj_AI_Hero target) { if ((Config.GetStringIndex("伤害类型" + Player.ChampionName) == 1 || Config.GetStringIndex("伤害类型" + Player.ChampionName) == 3) && Orbwalking.InAutoAttackRange(target)) { return(true); } if (Config.GetStringIndex("伤害类型" + Player.ChampionName) == 2 && (Q.CanCast(target) || W.CanCast(target) || E.CanCast(target) || R.CanCast(target) || Orbwalking.InAutoAttackRange(target))) { return(true); } return(false); }
public override void GameOnUpdate(EventArgs args) { R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500; AIHeroClient t; if (GetValue <StringList>("AutoWI").SelectedIndex != 0 && W.IsReady()) { foreach ( var hero in HeroManager.Enemies.Where(h => h.IsValidTarget(W.Range) && h.HasBuffOfType(BuffType.Stun))) { CastW(hero.Position, false); } } if (W.IsReady() && (GetValue <StringList>("AutoWI").SelectedIndex == 1 || (GetValue <StringList>("AutoWI").SelectedIndex == 2 && ComboActive))) { t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical); if (t.IsValidTarget(W.Range)) { if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Taunt) || t.HasBuffOfType(BuffType.Knockup) || t.HasBuff("zhonyasringshield") || t.HasBuff("Recall")) { CastW(t.Position); } if (t.HasBuffOfType(BuffType.Slow) && t.IsValidTarget(E.Range - 200)) { //W.Cast(t.Position.Extend(ObjectManager.Player.Position, +200)); //W.Cast(t.Position.Extend(ObjectManager.Player.Position, -200)); var hit = t.IsFacing(ObjectManager.Player) ? t.Position.Extend(ObjectManager.Player.Position, +200) : t.Position.Extend(ObjectManager.Player.Position, -200); CastW(hit); } } } if (Q.IsReady() && (GetValue <StringList>("AutoQI").SelectedIndex == 1 || (GetValue <StringList>("AutoQI").SelectedIndex == 2 && ComboActive))) { t = TargetSelector.GetTarget(Q.Range - 30, TargetSelector.DamageType.Physical); if (t.IsValidTarget(Q.Range) && (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Taunt) || (t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) && !t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)))) { CastQ(t); } } if (GetValue <KeyBind>("UseQMC").Active) { t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical); CastQ(t); } //if (GetValue<KeyBind>("UseEMC").Active) //{ // t = TargetSelector.GetTarget(E.Range - 50, TargetSelector.DamageType.Physical); // E.Cast(t); //} if (GetValue <KeyBind>("UseRMC").Active&& R.IsReady()) { foreach ( var e in HeroManager.Enemies.Where( e => e.IsValidTarget(R.Range) && ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 65) <= 1).OrderBy(e => e.Health)) { //Utils.MPing.Ping(enemy.Position.To2D()); R.CastOnUnit(e); } } //for (int i = 1; i < HeroManager.Enemies.Count(e => e.Health < R.GetDamage(e)); i++) //{ // Common.CommonGeometry.DrawBox(new Vector2(Drawing.Width * 0.45f, Drawing.Height * 0.80f), 125, 18, Color.Transparent, 1, System.Drawing.Color.Black); // Common.CommonGeometry.DrawText(CommonGeometry.Text, HeroManager.Enemies[i].ChampionName + " Killable", Drawing.Width * 0.455f, Drawing.Height * (0.803f + i * 50), SharpDX.Color.Wheat); //} if (GetValue <KeyBind>("UseEQC").Active&& E.IsReady() && Q.IsReady()) { t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical); if (t.IsValidTarget(E.Range) && t.Health < ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) + ObjectManager.Player.GetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t)) { CastE(); //if (E.Cast(t) == Spell.CastStates.SuccessfullyCasted) // return; // E.Cast(t); CastQ(t); } } if ((!ComboActive && !HarassActive) || !Orbwalking.CanMove(100)) { return; } //var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H")); var useW = GetValue <bool>("UseWC"); var useE = GetValue <bool>("UseEC"); var useR = GetValue <bool>("UseRC"); //if (Q.IsReady() && useQ) //{ // t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical); // if (t != null) // { // CastQ(t); // } //} if (useE && E.IsReady()) { //var enemies = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range)); //var objAiHeroes = enemies as AIHeroClient[] ?? enemies.ToArray(); //IEnumerable<AIHeroClient> nResult = // (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e) // .Distinct(); //foreach (var n in nResult.Where(n => n.IsFacing(ObjectManager.Player))) //{ // if (n.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 - 300) && E.GetPrediction(n).CollisionObjects.Count == 0) // { // E.Cast(n.Position); // if (W.IsReady()) // W.Cast(n.Position); // } //} //if (GetValue<bool>("E.ProtectDistance")) //{ // foreach (var n in HeroManager.Enemies) // { // if (GetValue<bool>("E." + n.ChampionName + ".ProtectDistance") && // n.Distance(ObjectManager.Player) < E.Range - 100) // { // E.Cast(n.Position); // } // } //} foreach ( var enemy in HeroManager.Enemies.Where( e => e.IsValidTarget(E.Range) && e.Health >= ObjectManager.Player.TotalAttackDamage * 2 && e.IsFacing(ObjectManager.Player) && e.IsValidTarget(E.Range - 300) && E.GetPrediction(e).CollisionObjects.Count == 0)) { E.Cast(enemy.Position); var targetBehind = enemy.Position.To2D().Extend(ObjectManager.Player.Position.To2D(), -140); if (W.IsReady() && ObjectManager.Player.Distance(targetBehind) <= W.Range) { W.Cast(enemy.Position); } if (Q.IsReady()) { Q.Cast(enemy.Position); } } } if (useW && W.IsReady()) { var nResult = HeroManager.Enemies.Where(e => e.IsValidTarget(W.Range)); foreach (var n in nResult) { if (ObjectManager.Player.Distance(n) < 450 && n.IsFacing(ObjectManager.Player)) { CastW(CommonGeometry.CenterOfVectors(new[] { ObjectManager.Player.Position, n.Position })); } } } if (R.IsReady() && useR) { foreach ( var e in HeroManager.Enemies.Where( e => e.IsValidTarget(R.Range) && e.Health <= R.GetDamage(e) && ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 350) == 0 && !Orbwalking.InAutoAttackRange(e) && canCastR)) { R.CastOnUnit(e); } } }
public virtual bool InAutoAttackRange(AttackableUnit target) { return(Orbwalking.InAutoAttackRange(target)); }
private static void GameOnUpdate(EventArgs args) { //Update the combo and harass values. ChampionClass.ComboActive = ChampionClass.Config.Item("Orbwalk").GetValue <KeyBind>().Active; var vHarassManaPer = Config.Item("HarassMana").GetValue <Slider>().Value; ChampionClass.HarassActive = ChampionClass.Config.Item("Farm").GetValue <KeyBind>().Active&& ObjectManager.Player.ManaPercent >= vHarassManaPer; ChampionClass.ToggleActive = ObjectManager.Player.ManaPercent >= vHarassManaPer && ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo && !ObjectManager.Player.IsRecalling(); #region LaneClearActive ChampionClass.LaneClearActive = ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.None && ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo && Config.Item("Farm.Active").GetValue <KeyBind>().Active&& ObjectManager.Player.ManaPercent >= (Config.Item("Farm.Min.Mana.Control").GetValue <KeyBind>().Active ? Config.Item("Lane.Min.Mana").GetValue <Slider>().Value : 0); #endregion LaneClearActive #region JungleClearActive ChampionClass.JungleClearActive = ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Config.Item("Farm.Active").GetValue <KeyBind>().Active&& MinionManager.GetMinions(ObjectManager.Player.Position, LeagueSharp.Common.Orbwalking.GetRealAutoAttackRange(null) + 65, MinionTypes.All, MinionTeam.Neutral).Count > 0 && ObjectManager.Player.ManaPercent >= (Config.Item("Farm.Min.Mana.Control").GetValue <KeyBind>().Active ? Config.Item("Jungle.Min.Mana").GetValue <Slider>().Value : 0); #endregion JungleClearActive ChampionClass.LastHitActive = ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit; //ChampionClass.JungleClearActive = ChampionClass.Config.Item("LaneClear").GetValue<KeyBind>().Active && ObjectManager.Player.ManaPercent >= Config.Item("Jungle.Mana").GetValue<Slider>().Value; //ChampionClass.GameOnUpdate(args); UseSummoners(); var useItemModes = Config.Item("UseItemsMode").GetValue <StringList>().SelectedIndex; //Items if ( !((ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && (useItemModes == 2 || useItemModes == 3)) || (ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed && (useItemModes == 1 || useItemModes == 3)))) { return; } var botrk = Config.Item("BOTRK").GetValue <bool>(); var ghostblade = Config.Item("GHOSTBLADE").GetValue <bool>(); var sword = Config.Item("SWORD").GetValue <bool>(); var muramana = Config.Item("MURAMANA").GetValue <bool>(); var target = ChampionClass.Orbwalker.GetTarget() as Obj_AI_Base; var smiteReady = SmiteSlot != SpellSlot.Unknown && ObjectManager.Player.Spellbook.CanUseSpell(SmiteSlot) == SpellState.Ready; if (smiteReady && ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo) { Smiteontarget(target as AIHeroClient); } if (botrk) { if (target != null && target.Type == ObjectManager.Player.Type && target.ServerPosition.Distance(ObjectManager.Player.ServerPosition) < 550) { var hasCutGlass = Items.HasItem(3144); var hasBotrk = Items.HasItem(3153); if (hasBotrk || hasCutGlass) { var itemId = hasCutGlass ? 3144 : 3153; var damage = ObjectManager.Player.GetItemDamage(target, Damage.DamageItems.Botrk); if (hasCutGlass || ObjectManager.Player.Health + damage < ObjectManager.Player.MaxHealth) { Items.UseItem(itemId, target); } } } } if (ghostblade && target != null && target.Type == ObjectManager.Player.Type && !ObjectManager.Player.HasBuff("ItemSoTD") && /*if Sword of the divine is not active */ Orbwalking.InAutoAttackRange(target)) { Items.UseItem(3142); } if (sword && target != null && target.Type == ObjectManager.Player.Type && !ObjectManager.Player.HasBuff("spectralfury") && /*if ghostblade is not active*/ Orbwalking.InAutoAttackRange(target)) { Items.UseItem(3131); } if (muramana && Items.HasItem(3042)) { if (target != null && ChampionClass.ComboActive && target.Position.Distance(ObjectManager.Player.Position) < 1200) { if (!ObjectManager.Player.HasBuff("Muramana")) { Items.UseItem(3042); } } else { if (ObjectManager.Player.HasBuff("Muramana")) { Items.UseItem(3042); } } } }