private void OnDrawingDraw(EventArgs args) { try { if (!Utils.ShouldDraw(true)) { return; } var x = Player.HPBarPosition.X + 45; var y = Player.HPBarPosition.Y - 25; if (E.Level > 0 && _eStacks != null && _eStacks.GetValue <bool>()) { var stacks = HasEBuff() ? 3 : Player.GetBuffCount("cardmasterstackholder") - 1; if (stacks > -1) { for (var i = 0; 3 > i; i++) { Drawing.DrawLine( x + (i * 20), y, x + (i * 20) + 10, y, 10, (i > stacks ? Color.DarkGray : Color.Orange)); } } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
public static void Draw() { try { if (Menu == null || _champion.Spells == null || !Utils.ShouldDraw()) { return; } var circleThickness = Menu.Item(Menu.Name + ".circle-thickness").GetValue <Slider>().Value; foreach ( var spell in _champion.Spells.Where(s => s != null && s.Range > 0 && s.Range < 5000 && s.Level > 0)) { if (spell.IsChargedSpell) { var min = Menu.Item(Menu.Name + "." + spell.Slot.ToString().ToLower() + "-min").GetValue <Circle>(); var max = Menu.Item(Menu.Name + "." + spell.Slot.ToString().ToLower() + "-max").GetValue <Circle>(); if (min.Active && ObjectManager.Player.Position.IsOnScreen(spell.ChargedMinRange)) { Render.Circle.DrawCircle( ObjectManager.Player.Position, spell.ChargedMinRange, min.Color, circleThickness); } if (max.Active && ObjectManager.Player.Position.IsOnScreen(spell.ChargedMaxRange)) { Render.Circle.DrawCircle( ObjectManager.Player.Position, spell.ChargedMaxRange, max.Color, circleThickness); } } else { var item = Menu.Item(Menu.Name + "." + spell.Slot.ToString().ToLower()).GetValue <Circle>(); if (item.Active && ObjectManager.Player.Position.IsOnScreen(spell.Range)) { Render.Circle.DrawCircle( ObjectManager.Player.Position, spell.Range, item.Color, circleThickness); } } } foreach (var custom in Customs) { var item = Menu.Item(Menu.Name + "." + custom.Key).GetValue <Circle>(); if (item.Active && ObjectManager.Player.Position.IsOnScreen(custom.Value)) { Render.Circle.DrawCircle( ObjectManager.Player.Position, custom.Value, item.Color, circleThickness); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void OnPostUpdate() { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit) { if (Cards.Has(CardColor.Red)) { var range = Player.AttackRange + Player.BoundingRadius * 1.5f; var minions = MinionManager.GetMinions(range, MinionTypes.All, MinionTeam.NotAlly); var pred = MinionManager.GetBestCircularFarmLocation( minions.Select(m => m.Position.To2D()).ToList(), 500, range); var target = minions.OrderBy(m => m.Distance(pred.Position)).FirstOrDefault(); if (target != null) { Orbwalker.ForceTarget(target); } } } if (!Cards.ShouldWait && Cards.Status != SelectStatus.Selecting && Cards.Status != SelectStatus.Selected) { Orbwalker.ForceTarget(null); } if (Cards.Status != SelectStatus.Selected) { if (Menu.Item(Menu.Name + ".manual.blue").GetValue <KeyBind>().Active) { Cards.Select(CardColor.Blue); } if (Menu.Item(Menu.Name + ".manual.red").GetValue <KeyBind>().Active) { Cards.Select(CardColor.Red); } if (Menu.Item(Menu.Name + ".manual.gold").GetValue <KeyBind>().Active) { Cards.Select(CardColor.Gold); } } if (HeroListManager.Enabled("q-immobile") && Q.IsReady()) { var target = GameObjects.EnemyHeroes.FirstOrDefault( t => t.IsValidTarget(Q.Range) && HeroListManager.Check("q-immobile", t) && BestTargetOnlyManager.Check("q-immobile", W, t) && Utils.IsImmobile(t)); if (target != null) { var best = BestQPosition( target, GameObjects.EnemyHeroes.Select(e => e as Obj_AI_Base).ToList(), HitChance.High); if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= 1) { Q.Cast(best.Item2); } } } }
private void OnDrawingEndScene(EventArgs args) { try { if (!Utils.ShouldDraw()) { return; } if (_rMinimap.GetValue <bool>() && R.Level > 0 && (R.Instance.CooldownExpires - Game.Time) < 3 && !Player.IsDead) { Utility.DrawCircle(Player.Position, R.Range, Color.White, 1, 30, true); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
private List <CardColor> GetBestCard(Obj_AI_Hero target, string mode) { var cards = new List <CardColor>(); if (target == null || !target.IsValid || target.IsDead) { return(cards); } try { if (IsWKillable(target, 2)) { cards.Add(CardColor.Gold); } if (IsWKillable(target)) { cards.Add(CardColor.Blue); } if (IsWKillable(target, 1)) { cards.Add(CardColor.Red); } if (cards.Any()) { return(cards); } var selectedCard = GetSelectedCardColor(Menu.Item(Menu.Name + ".harass.w-card").GetValue <StringList>().SelectedIndex); var burst = Menu.Item(Menu.Name + ".miscellaneous.mode").GetValue <StringList>().SelectedIndex == 0; var red = 0; var blue = 0; var gold = 0; var shouldBlue = Player.Mana <W.ManaCost + Q.ManaCost && Player.Mana + (25 + 25 * W.Level)> Q.ManaCost + W.ManaCost; if (!burst && (mode == "combo" || mode == "harass" && selectedCard == CardColor.None)) { if (Q.Level == 0) { return(new List <CardColor> { CardColor.Blue }); } gold++; if (target.Distance(Player) > W.Range * 0.8f) { gold++; } if (mode == "combo" && (Player.ManaPercent < 10 || shouldBlue) || mode == "harass" && !ResourceManager.Check("harass-blue")) { return(new List <CardColor> { CardColor.Blue }); } var minRed = Menu.Item(Menu.Name + ".combo.red-min").GetValue <Slider>().Value; var redHits = GetWHits(target, GameObjects.EnemyHeroes.Cast <Obj_AI_Base>().ToList(), CardColor.Red); red += redHits; if (red > blue && red > gold && redHits >= minRed) { cards.Add(CardColor.Red); if (red == blue) { cards.Add(CardColor.Blue); } if (red == gold) { cards.Add(CardColor.Gold); } } else if (gold > blue && gold > red) { cards.Add(CardColor.Gold); if (gold == blue) { cards.Add(CardColor.Blue); } if (gold == red && redHits >= minRed) { cards.Add(CardColor.Red); } } else if (blue > red && blue > gold) { cards.Add(CardColor.Blue); if (blue == red && redHits >= minRed) { cards.Add(CardColor.Red); } if (blue == gold) { cards.Add(CardColor.Gold); } } } if (mode == "combo" && !cards.Any()) { if (Q.Level == 0) { return(new List <CardColor> { CardColor.Blue }); } var distance = target.Distance(Player); var damage = ItemManager.CalculateComboDamage(target) - target.HPRegenRate * 2f - 10; if (HasEBuff()) { damage += E.GetDamage(target); } if (Q.IsReady() && (Utils.GetImmobileTime(target) > 0.5f || distance < Q.Range / 4f)) { damage += Q.GetDamage(target); } if (W.GetDamage(target, 2) + damage > target.Health) { cards.Add(CardColor.Gold); } if (distance < Orbwalking.GetRealAutoAttackRange(target) * 0.85f) { if (W.GetDamage(target) + damage > target.Health) { cards.Add(CardColor.Blue); } if (W.GetDamage(target, 1) + damage > target.Health) { cards.Add(CardColor.Red); } } if (!cards.Any()) { if (ObjectManager.Player.HealthPercent <= Menu.Item(Menu.Name + ".combo.gold-percent").GetValue <Slider>().Value) { cards.Add(CardColor.Gold); } else if (Player.ManaPercent < 10 || shouldBlue) { cards.Add(CardColor.Blue); } else { var redHits = GetWHits( target, GameObjects.EnemyHeroes.Cast <Obj_AI_Base>().ToList(), CardColor.Red); if (redHits >= Menu.Item(Menu.Name + ".combo.red-min").GetValue <Slider>().Value) { cards.Add(CardColor.Red); } } } if (!cards.Any()) { cards.Add(CardColor.Gold); } } else if (mode == "harass" && !cards.Any()) { if (selectedCard == CardColor.None && burst) { cards.Add(target.Distance(Player) > W.Range * 0.8f ? CardColor.Gold : CardColor.Blue); } else { var card = !ResourceManager.Check("harass-blue") ? CardColor.Blue : selectedCard; if (card != CardColor.None) { cards.Add(card); } } } else if (mode == "flee") { cards.Add( GetWHits(target, GameObjects.EnemyHeroes.Cast <Obj_AI_Base>().ToList(), CardColor.Red) >= 2 ? CardColor.Red : CardColor.Gold); } if (!cards.Any()) { cards.Add(CardColor.Gold); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(cards); }
protected override void Combo() { var q = Menu.Item(Menu.Name + ".combo.q").GetValue <bool>(); var w = Menu.Item(Menu.Name + ".combo.w").GetValue <bool>(); if (w && W.IsReady()) { var target = TargetSelector.GetTarget(W, false); if (target != null) { var best = GetBestCard(target, "combo"); if (best.Any()) { Cards.Select(best); } } } if (q && Q.IsReady()) { var target = TargetSelector.GetTarget(Q); var goldCardTarget = _wTarget != null && _wTarget.IsValidTarget(Q.Range) && _wTargetEndTime > Game.Time; if (goldCardTarget) { target = _wTarget; } if (target == null || target.Distance(Player) < Player.BoundingRadius && !Utils.IsImmobile(target)) { return; } if (!goldCardTarget && (Cards.Has() || HasEBuff()) && GameObjects.EnemyHeroes.Any(e => Orbwalking.InAutoAttackRange(e) && e.IsValidTarget()) || Cards.Has(CardColor.Gold)) { return; } if (goldCardTarget) { if (target.Distance(Player) > 250 && !Utils.IsImmobile(target)) { return; } var best = BestQPosition( target, GameObjects.EnemyHeroes.Select(e => e as Obj_AI_Base).ToList(), Q.GetHitChance("combo")); if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= 1) { Q.Cast(best.Item2); _wTarget = null; _wTargetEndTime = 0; } } else if (Utils.IsImmobile(target) || (W.Instance.CooldownExpires - Game.Time) >= 2 || W.Level == 0) { var best = BestQPosition( target, GameObjects.EnemyHeroes.Select(e => e as Obj_AI_Base).ToList(), Q.GetHitChance("combo")); if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= 1) { Q.Cast(best.Item2); } } } }
public static void UseFleeItems() { if (_menu == null || !_menu.Item(_menu.Name + ".enabled").GetValue <bool>()) { return; } try { foreach (var item in Items.Where( i => i.Flags.HasFlag(ItemFlags.Flee) && _menu.Item(_menu.Name + "." + i.Name + ".flee").GetValue <bool>() && i.Item.IsOwned() && i.Item.IsReady() && i.Item.IsOwned() && i.Item.IsReady() && ObjectManager.Player.CountEnemiesInRange(i.Range) >= _menu.Item(_menu.Name + "." + i.Name + ".min-enemies-range").GetValue <Slider>().Value&& ObjectManager.Player.HealthPercent <= _menu.Item(_menu.Name + "." + i.Name + ".player-health-below").GetValue <Slider>().Value&& ObjectManager.Player.HealthPercent >= _menu.Item(_menu.Name + "." + i.Name + ".player-health-above").GetValue <Slider>().Value)) { if (item.CastType != CastType.None) { var lItem = item; var localItem = item; foreach (var enemy in GameObjects.EnemyHeroes.Where( t => t.IsValidTarget() && !Invulnerable.Check(t) && t.HealthPercent <= _menu.Item(_menu.Name + "." + lItem.Name + ".target-health-below") .GetValue <Slider>() .Value&& t.HealthPercent >= _menu.Item(_menu.Name + "." + lItem.Name + ".target-health-above") .GetValue <Slider>() .Value) .OrderByDescending( t => t.Position.Distance(ObjectManager.Player.Position, true) < Math.Pow(localItem.Range, 2))) { if (!Utils.IsImmobile(enemy) && !Utils.IsSlowed(enemy)) { switch (localItem.CastType) { case CastType.Target: localItem.Item.Cast(enemy); break; case CastType.Self: localItem.Item.Cast(ObjectManager.Player); break; case CastType.Position: var prediction = Prediction.GetPrediction( enemy, localItem.Delay, localItem.Radius, localItem.Speed); if (prediction.Hitchance >= HitChance.Medium) { localItem.Item.Cast(prediction.CastPosition); } break; } } } } else { if (ObjectManager.Player.CountEnemiesInRange(item.Range) > _menu.Item(_menu.Name + "." + item.Name + ".min-enemies-range").GetValue <Slider>().Value) { item.Item.Cast(); } } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
public Menu AddToMenu(Menu menu) { try { _menu = menu; var ultimateMenu = menu.AddSubMenu(new Menu("Ultimate", menu.Name + ".ultimate")); if (Required) { var requiredMenu = ultimateMenu.AddSubMenu(new Menu("Required Targets", ultimateMenu.Name + ".required")); var modes = new List <UltimateModeType>(); if (Combo) { modes.Add(UltimateModeType.Combo); } if (Auto) { modes.Add(UltimateModeType.Auto); } if (Assisted) { modes.Add(UltimateModeType.Assisted); } requiredMenu.AddItem( new MenuItem(requiredMenu.Name + ".mode", "Mode").SetValue( new StringList(modes.Select(m => m.ToString()).ToArray()))).ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utils.UpdateVisibleTags(requiredMenu, eventArgs.GetNewValue <StringList>().SelectedIndex + 1); }; for (var i = 0; i < modes.Count; i++) { requiredMenu.AddItem( new MenuItem( requiredMenu.Name + "." + GetModeString(modes[i], true) + ".min", "Min. Required") .SetValue(new Slider(1, 1, 5))).SetTag(i + 1); HeroListManager.AddToMenu( requiredMenu, new HeroListManagerArgs("ultimate-required-" + GetModeString(modes[i], true)) { IsWhitelist = true, Allies = false, Enemies = true, DefaultValue = false, DontSave = true, Enabled = true, MenuTag = i + 1, EnabledButton = false }); } Utils.UpdateVisibleTags( requiredMenu, _menu.Item(requiredMenu.Name + ".mode").GetValue <StringList>().SelectedIndex + 1); } if (Force) { var uForceMenu = ultimateMenu.AddSubMenu(new Menu("Forced Targets", ultimateMenu.Name + ".force")); if (DamageCalculation != null) { uForceMenu.AddItem( new MenuItem(uForceMenu.Name + ".damage-check", "Damage Check").SetValue(ForceDamageCheck)); } uForceMenu.AddItem( new MenuItem(uForceMenu.Name + ".additional", "Additional Targets").SetValue( new Slider(0, 0, 4))); HeroListManager.AddToMenu( uForceMenu, new HeroListManagerArgs("ultimate-force") { IsWhitelist = true, Allies = false, Enemies = true, DefaultValue = false, DontSave = true, Enabled = true, EnabledButton = false }); } if (Combo) { var uComboMenu = ultimateMenu.AddSubMenu(new Menu("Combo", ultimateMenu.Name + ".combo")); uComboMenu.AddItem( new MenuItem(uComboMenu.Name + ".min", "Min. Hits").SetValue(new Slider(2, 1, 5))); if (DamageCalculation != null) { uComboMenu.AddItem( new MenuItem(uComboMenu.Name + ".damage-check", "Damage Check").SetValue(ComboDamageCheck)); } uComboMenu.AddItem(new MenuItem(uComboMenu.Name + ".enabled", "Enabled").SetValue(true)); } if (Auto) { var uAutoMenu = ultimateMenu.AddSubMenu(new Menu("Auto", ultimateMenu.Name + ".auto")); if (Interrupt) { var autoInterruptMenu = uAutoMenu.AddSubMenu(new Menu("Interrupt", uAutoMenu.Name + ".interrupt")); if (InterruptDelay) { DelayManager.AddToMenu( autoInterruptMenu, "ultimate-interrupt-delay", string.Empty, 0, 0, 500); } HeroListManager.AddToMenu( autoInterruptMenu, new HeroListManagerArgs("ultimate-interrupt") { IsWhitelist = false, Allies = false, Enemies = true, DefaultValue = false, DontSave = false, Enabled = true }); } if (Gapcloser) { var autoGapcloserMenu = uAutoMenu.AddSubMenu(new Menu("Gapcloser", uAutoMenu.Name + ".gapcloser")); if (GapcloserDelay) { DelayManager.AddToMenu( autoGapcloserMenu, "ultimate-gapcloser-delay", string.Empty, 0, 0, 500); } HeroListManager.AddToMenu( autoGapcloserMenu, new HeroListManagerArgs("ultimate-gapcloser") { IsWhitelist = false, Allies = false, Enemies = true, DefaultValue = false, DontSave = false, Enabled = false }); BestTargetOnlyManager.AddToMenu(autoGapcloserMenu, "r-gapcloser", true); } uAutoMenu.AddItem(new MenuItem(uAutoMenu.Name + ".min", "Min. Hits").SetValue(new Slider(3, 1, 5))); if (DamageCalculation != null) { uAutoMenu.AddItem( new MenuItem(uAutoMenu.Name + ".damage-check", "Damage Check").SetValue(AutoDamageCheck)); } uAutoMenu.AddItem(new MenuItem(uAutoMenu.Name + ".enabled", "Enabled").SetValue(true)); } if (Assisted) { var uAssistedMenu = ultimateMenu.AddSubMenu(new Menu("Assisted", ultimateMenu.Name + ".assisted")); if (Flash) { uAssistedMenu.AddItem( new MenuItem(ultimateMenu.Name + ".flash.min", "Flash Min. Hits").SetValue( new Slider(3, 1, 5))); } uAssistedMenu.AddItem( new MenuItem(uAssistedMenu.Name + ".min", "Min. Hits").SetValue(new Slider(1, 1, 5))); if (Flash) { uAssistedMenu.AddItem( new MenuItem(ultimateMenu.Name + ".flash.hotkey", "Flash").SetValue( new KeyBind('Y', KeyBindType.Press))); } uAssistedMenu.AddItem( new MenuItem(uAssistedMenu.Name + ".hotkey", "Hotkey").SetValue( new KeyBind('T', KeyBindType.Press))); uAssistedMenu.AddItem( new MenuItem(uAssistedMenu.Name + ".move-cursor", "Move to Cursor").SetValue(true)); if (DamageCalculation != null) { uAssistedMenu.AddItem( new MenuItem(uAssistedMenu.Name + ".damage-check", "Damage Check").SetValue( AssistedDamageCheck)); } uAssistedMenu.AddItem(new MenuItem(uAssistedMenu.Name + ".enabled", "Enabled").SetValue(true)); } var uSingleMenu = ultimateMenu.AddSubMenu(new Menu("Single Target", ultimateMenu.Name + ".single")); uSingleMenu.AddItem( new MenuItem(uSingleMenu.Name + ".min-health", "Min. Target Health %").SetValue(new Slider(15))); uSingleMenu.AddItem( new MenuItem(uSingleMenu.Name + ".max-add-allies", "Max. Additional Allies").SetValue( new Slider(3, 0, 4))); uSingleMenu.AddItem( new MenuItem(uSingleMenu.Name + ".max-add-enemies", "Max. Additional Enemies").SetValue( new Slider(0, 0, 4))); uSingleMenu.AddItem( new MenuItem(uSingleMenu.Name + ".range-allies", "Allies Range Check").SetValue( new Slider(1750, 500, 3000))); uSingleMenu.AddItem( new MenuItem(uSingleMenu.Name + ".range-enemies", "Enemies Range Check").SetValue( new Slider(1750, 500, 3000))); if (Combo) { uSingleMenu.AddItem(new MenuItem(uSingleMenu.Name + ".combo", "Combo").SetValue(true)); } if (Auto) { uSingleMenu.AddItem(new MenuItem(uSingleMenu.Name + ".auto", "Auto").SetValue(false)); } if (Assisted) { if (Flash) { uSingleMenu.AddItem(new MenuItem(uSingleMenu.Name + ".flash", "Flash").SetValue(false)); } uSingleMenu.AddItem(new MenuItem(uSingleMenu.Name + ".assisted", "Assisted").SetValue(false)); } if (DamageCalculation != null) { ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".damage-percent-single", "Single Damage Check %").SetValue( new Slider(SingleDamagePercent, 1, 200))); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".damage-percent", "Damage Check %").SetValue( new Slider(DamagePercent, 1, 200))); } return(ultimateMenu); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(null); }
private static void DrawingOnEndScene(EventArgs args) { try { if (Drawing.Direct3DDevice == null || Drawing.Direct3DDevice.IsDisposed || !Utils.ShouldDraw()) { return; } if (_line != null && !_line.IsDisposed) { if (_menu == null || !_menu.Item(_menu.Name + ".enabled").GetValue <bool>()) { return; } var color = _menu.Item(_menu.Name + ".color").GetValue <Color>(); var alpha = (byte)(_menu.Item(_menu.Name + ".opacity").GetValue <Slider>().Value * 255 / 100); var sharpColor = new ColorBGRA(color.R, color.G, color.B, alpha); foreach (var unit in GameObjects.EnemyHeroes.Where( u => u.IsHPBarRendered && u.Position.IsOnScreen() && u.IsValidTarget())) { var damage = CalculateDamage(unit); if (damage <= 0) { continue; } var damagePercentage = (unit.Health - damage > 0 ? unit.Health - damage : 0) / unit.MaxHealth; var currentHealthPercentage = unit.Health / unit.MaxHealth; var startPoint = new Vector2( (int)(unit.HPBarPosition.X + BarOffset.X + damagePercentage * BarWidth), (int)(unit.HPBarPosition.Y + BarOffset.Y) - 5); var endPoint = new Vector2( (int)(unit.HPBarPosition.X + BarOffset.X + currentHealthPercentage * BarWidth) + 1, (int)(unit.HPBarPosition.Y + BarOffset.Y) - 5); _line.Begin(); _line.Draw(new[] { startPoint, endPoint }, sharpColor); _line.End(); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }