public Kalista() { CreateMenu(); LoadModules(); CustomDamageIndicator.Initialize(Helper.GetRendDamage); Prediction.Initialize(Menu); Game.OnUpdate += OnUpdate; Drawing.OnDraw += OnDraw; Obj_AI_Base.OnProcessSpellCast += OnProcessSpell; Spellbook.OnCastSpell += (sender, args) => { if (sender.Owner.IsMe && args.Slot == SpellSlot.Q && ObjectManager.Player.IsDashing()) { args.Process = false; } }; Orbwalker.RegisterCustomMode("com.ikalista.flee", "Flee", "V".ToCharArray()[0]); Orbwalking.OnNonKillableMinion += minion => { var killableMinion = minion as Obj_AI_Base; if (killableMinion == null || !SpellManager.Spell[SpellSlot.E].IsReady() || ObjectManager.Player.HasBuff("summonerexhaust") || !killableMinion.HasRendBuff()) { return; } if (Menu.Item("com.ikalista.laneclear.useEUnkillable").GetValue <bool>() && killableMinion.IsMobKillable()) { SpellManager.Spell[SpellSlot.E].Cast(); } }; Orbwalking.BeforeAttack += args => { if (!Menu.Item("com.ikalista.misc.forceW").GetValue <bool>()) { return; } var target = HeroManager.Enemies.FirstOrDefault( x => ObjectManager.Player.Distance(x) <= 600 && x.HasBuff("kalistacoopstrikemarkally")); if (target != null) { Orbwalker.ForceTarget(target); } }; }
private void GameOnGameLoad(EventArgs args) { if (Player.ChampionName != "Rumble") { return; } #region Spells && Items Q = new Spell(SpellSlot.Q, 600f); W = new Spell(SpellSlot.W); E = new Spell(SpellSlot.E, 850f); R = new Spell(SpellSlot.R, 1700f); Q.SetSkillshot(0.5f, 120f, 1300f, false, SkillshotType.SkillshotCone); E.SetSkillshot(0.5f, 50f, 2000f, true, SkillshotType.SkillshotLine); R.SetSkillshot(0.5f, 200f, 1500f, false, SkillshotType.SkillshotLine); GLP800 = new Items.Item(3030, 800f); Protobelt = new Items.Item(3152, 850f); #endregion #region Config Config = new Menu("SurvivorRumble", "SurvivorRumble", true).SetFontStyle(FontStyle.Bold, Color.Chartreuse); var OrbwalkerMenu = Config.AddSubMenu(new Menu(":: Orbwalker", "Orbwalker")); Orbwalker = new Orbwalking.Orbwalker(OrbwalkerMenu); var TargetSelectorMenu = Config.AddSubMenu(new Menu(":: Target Selector", "TargetSelector")); TargetSelector.AddToMenu(TargetSelectorMenu); #endregion #region Config Items var ComboMenu = Config.AddSubMenu(new Menu(":: Combo", "Combo")); ComboMenu.AddItem(new MenuItem("ComboUseQ", "Use Q").SetValue(true)); ComboMenu.AddItem(new MenuItem("ComboUseW", "Use W").SetValue(true)); ComboMenu.AddItem(new MenuItem("ComboUseE", "Use E").SetValue(true)); ComboMenu.AddItem(new MenuItem("ComboUseRSolo", "Use R on 1vs1").SetValue(true)); ComboMenu.AddItem(new MenuItem("ComboUseItems", "Use Items?").SetValue(true)); //ComboMenu.AddItem( // new MenuItem("UseSmartCastingADC", "Use R Only if it'll land first on ADC?").SetValue(false)); ComboMenu.AddItem(new MenuItem("ComboCastUltimate", "[Insta] Cast Ultimate Key")) .SetValue(new KeyBind('T', KeyBindType.Press)).Permashow(true, "[Insta Ult Active?]"); ComboMenu.AddItem( new MenuItem("SemiManualR", "Semi-Manual R Casting?").SetValue(true) .SetTooltip("True - Script will Auto R | False - You will R when you decide - preferably", Color.Chartreuse)); //ComboMenu.AddItem( // new MenuItem("ComboMinimumRTargets", "Minimum Enemies to hit before casting Ultimate?").SetValue( // new Slider(2, 1, HeroManager.Enemies.Count))); var LaneClearMenu = Config.AddSubMenu(new Menu(":: LaneClear", "LaneClear")); LaneClearMenu.AddItem(new MenuItem("LaneClearQ", "Use Q").SetValue(true)); LaneClearMenu.AddItem(new MenuItem("LaneClearE", "Use E").SetValue(false)); LaneClearMenu.AddItem( new MenuItem("LaneClearManaManager", "LaneClear Mana Manager").SetValue(new Slider(0, 0, 100))); LaneClearMenu.AddItem( new MenuItem("MinimumQMinions", "Minimum Minions Near You To Use Q?").SetValue(new Slider(2, 1, 10))); var JungleClearMenu = Config.AddSubMenu(new Menu(":: JungleClear", "JungleClear")); JungleClearMenu.AddItem(new MenuItem("JungleClearQ", "Use Q").SetValue(true)); JungleClearMenu.AddItem(new MenuItem("JungleClearE", "Use E").SetValue(true)); var LastHitMenu = Config.AddSubMenu(new Menu(":: LastHit", "LastHit")); LastHitMenu.AddItem(new MenuItem("LastHitE", "Use E").SetValue(true)); LastHitMenu.AddItem( new MenuItem("LastHitManaManager", "LastHit Mana Manager").SetValue(new Slider(0, 0, 100))); var HarassMenu = Config.AddSubMenu(new Menu(":: Harass", "Harass")); HarassMenu.AddItem(new MenuItem("HarassQ", "Use Q").SetValue(true)); HarassMenu.AddItem(new MenuItem("HarassE", "Use E").SetValue(true)); HarassMenu.AddItem(new MenuItem("HarassItems", "Use Items (GLP/Protobelt)").SetValue(true)); HarassMenu.AddItem( new MenuItem("HarassManaManager", "Harass Mana Manager").SetValue(new Slider(0, 0, 100))); var KillStealMenu = Config.AddSubMenu(new Menu(":: Killsteal", "Killsteal")); KillStealMenu.AddItem(new MenuItem("EnableKS", "Enable Killsteal?").SetValue(true)); KillStealMenu.AddItem(new MenuItem("KSQ", "KS with Q?").SetValue(true)); KillStealMenu.AddItem(new MenuItem("KSE", "KS with E?").SetValue(true)); //KillStealMenu.AddItem(new MenuItem("KSR", "KS with R?").SetValue(true)); // Later KillStealMenu.AddItem(new MenuItem("KSItems", "KS with Items?").SetValue(true)); var DrawingMenu = Config.AddSubMenu(new Menu(":: Drawings", "Drawings")); DrawingMenu.AddItem(new MenuItem("DrawQ", "Draw Q Range").SetValue(true)); DrawingMenu.AddItem(new MenuItem("DrawE", "Draw E Range").SetValue(true)); DrawingMenu.AddItem(new MenuItem("DrawR", "Draw R Range").SetValue(true)); DrawingMenu.AddItem(new MenuItem("DrawRCast", "Draw R Cast Location").SetValue(true)); DrawingMenu.AddItem(new MenuItem("drawKickPos", "Ultimate Cast Position")) .SetValue(new Circle(true, System.Drawing.Color.DeepPink)); DrawingMenu.AddItem(new MenuItem("drawKickLine", "Ultimate Line Direction")) .SetValue(new Circle(true, System.Drawing.Color.Chartreuse)); DrawingMenu.AddItem(new MenuItem("drawRTarget", "Desired Target")) .SetValue(new Circle(true, System.Drawing.Color.LimeGreen)); #region Skin Changer /*var SkinChangerMenu = * Config.AddSubMenu(new Menu(":: Skin Changer", "SkinChanger").SetFontStyle(FontStyle.Bold, * Color.Chartreuse)); * var SkinChanger = * SkinChangerMenu.AddItem( * new MenuItem("UseSkinChanger", ":: Use SkinChanger?").SetValue(true) * .SetFontStyle(FontStyle.Bold, Color.Crimson)); * var SkinID = * SkinChangerMenu.AddItem( * new MenuItem("SkinID", ":: Skin").SetValue(new StringList(new[] {"Classic", "Candy King Rumble"}, 0)) * .SetFontStyle(FontStyle.Bold, Color.Crimson)); * SkinID.ValueChanged += (sender, eventArgs) => * { * if (!SkinChanger.GetValue<bool>()) * return; * * //Player.SetSkin(Player.BaseSkinName, eventArgs.GetNewValue<StringList>().SelectedIndex); * };*/ #endregion var MiscMenu = Config.AddSubMenu(new Menu(":: Settings", "Settings")); MiscMenu.AddItem( new MenuItem("HitChance", "Hit Chance").SetValue(new StringList(new[] { "Medium", "High", "Very High" }, 1))); var PredictionVar = MiscMenu.AddItem( new MenuItem("Prediction", "Prediction:").SetValue(new StringList( new[] { "Common", "OKTW", "SPrediction" }, 1))); if (PredictionVar.GetValue <StringList>().SelectedIndex == 2) { if (!SPredictionLoaded) { Prediction.Initialize(MiscMenu, "SPrediction Settings"); var SPreditctionLoaded = MiscMenu.AddItem(new MenuItem("SPredictionLoaded", "SPrediction Loaded!")); SPredictionLoaded = true; } } PredictionVar.ValueChanged += (sender, eventArgs) => { if (eventArgs.GetNewValue <StringList>().SelectedIndex == 2) { if (!SPredictionLoaded) { Prediction.Initialize(MiscMenu, "SPrediction Settings"); var SPreditctionLoaded = MiscMenu.AddItem(new MenuItem("SPredictionLoaded", "SPrediction Loaded!")); Chat.Print( "<font color='#0993F9'>[SS Rumble Warning]</font> <font color='#FF8800'>Please exit the menu and click back on it again, to see the settings or Reload (F5)</font>"); SPredictionLoaded = true; } } }; MiscMenu.AddItem(new MenuItem("UseWNearbyEnemy", "[Auto] Use (W) Nearby Enemies").SetValue(false)); MiscMenu.AddItem(new MenuItem("EnableMouseScroll", "Enable Mouse Scroll to Store Heat?").SetValue(true)); MiscMenu.AddItem( new MenuItem("EnableStoreHeat", "Enable Storing Heat?").SetValue(false) .SetTooltip("You either change the value here by clicking or by Scrolling Down using the mouse")) .Permashow(true, "Storing Heat?"); #region DrawDamage var drawdamage = DrawingMenu.AddSubMenu(new Menu(":: Draw Damage", "drawdamage")); { var dmgAfterShave = drawdamage.AddItem( new MenuItem("SurvivorRumble.DrawComboDamage", "Draw Damage on Enemy's HP Bar").SetValue(true)); var drawFill = drawdamage.AddItem(new MenuItem("SurvivorRumble.DrawColour", "Fill Color", true).SetValue( new Circle(true, System.Drawing.Color.Chartreuse))); DrawDamage.DamageToUnit = CalculateDamage; DrawDamage.Enabled = dmgAfterShave.GetValue <bool>(); DrawDamage.Fill = drawFill.GetValue <Circle>().Active; DrawDamage.FillColor = drawFill.GetValue <Circle>().Color; dmgAfterShave.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { DrawDamage.Enabled = eventArgs.GetNewValue <bool>(); }; drawFill.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { DrawDamage.Fill = eventArgs.GetNewValue <Circle>().Active; DrawDamage.FillColor = eventArgs.GetNewValue <Circle>().Color; }; } #endregion // Add everything to the main config/menu/root. Config.AddToMainMenu(); #endregion #region Subscriptions Game.OnUpdate += GameOnUpdate; Drawing.OnDraw += DrawingOnOnDraw; Game.OnWndProc += OnWndProc; //Obj_AI_Base.OnProcessSpellCast += ObjAiHeroOnOnProcessSpellCast; Chat.Print("<font color='#800040'>[SurvivorSeries] Rumble</font> <font color='#ff6600'>Loaded.</font>"); #endregion }
/// <summary> /// Champion constructor /// </summary> /// <param name="szChampName">The champion name.</param> /// <param name="szMenuName">The menu name.</param> /// <param name="enableRangeDrawings">if <c>true</c>, enables the spell range drawings</param> /// <param name="enableEvader">if <c>true</c>, enables the spell evader if the champion is supported</param> public Champion(string szChampName, string szMenuName, bool enableRangeDrawings = true, bool enableEvader = true) { Text = new Font(Drawing.Direct3DDevice, new FontDescription { FaceName = "Malgun Gothic", Height = 15, OutputPrecision = FontPrecision.Default, Quality = FontQuality.ClearTypeNatural }); TargetSelector.Initialize(ConfigMenu); SetSpells(); if (enableEvader) { Menu evaderMenu = null; Evader evader; switch (szChampName.ToLower()) { case "ezreal": evader = new Evader(out evaderMenu, Database.EvadeMethods.Blink, Spells[E]); break; case "sivir": case "morgana": evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[E]); break; case "fizz": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]); break; case "lissandra": evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[R]); break; case "nocturne": evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[W]); break; case "vladimir": evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[W]); break; case "graves": case "gnar": case "lucian": case "riven": case "shen": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]); break; case "zed": case "leblanc": case "corki": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[W]); break; case "vayne": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[Q]); break; } } #region Events Game.OnUpdate += this.Game_OnUpdate; Drawing.OnDraw += this.Drawing_OnDraw; Orbwalker.OnPreAttack += this.OrbwalkingEvents_BeforeAttack; Orbwalker.OnPostAttack += this.OrbwalkingEvents_AfterAttack; AntiGapcloser.OnEnemyGapcloser += this.AntiGapcloser_OnEnemyGapcloser; Interrupter2.OnInterruptableTarget += this.Interrupter_OnPossibleToInterrupt; Obj_AI_Base.OnBuffGain += this.Obj_AI_Base_OnBuffAdd; Obj_AI_Base.OnProcessSpellCast += this.Obj_AI_Base_OnProcessSpellCast; CustomEvents.Unit.OnDash += this.Unit_OnDash; TargetedSpellDetector.OnDetected += this.TargetedSpellDetector_OnDetected; #endregion Prediction.Initialize(); }
/// <summary> /// Champion constructor /// </summary> /// <param name="szChampName">The champion name.</param> /// <param name="szMenuName">The menu name.</param> /// <param name="enableRangeDrawings">if <c>true</c>, enables the spell range drawings</param> /// <param name="enableEvader">if <c>true</c>, enables the spell evader if the champion is supported</param> public Champion(string szChampName, string szMenuName, bool enableRangeDrawings = true, bool enableEvader = true) { Text = new Font(Drawing.Direct3DDevice, new FontDescription { FaceName = "Malgun Gothic", Height = 15, OutputPrecision = FontPrecision.Default, Quality = FontQuality.ClearTypeNatural }); ConfigMenu = new Menu(szMenuName, String.Format("SAutoCarry.{0}.Root", szChampName), true); TargetSelector.Initialize(ConfigMenu); Orbwalker = new Orbwalking.Orbwalker(ConfigMenu); SetSpells(); DrawingMenu = new Menu("Drawings", "drawings"); if (enableRangeDrawings) { if (this.Spells[Q] != null && this.Spells[0].Range > 0 && this.Spells[Q].Range < 3000) { this.DrawingMenu.AddItem(new MenuItem("DDRAWQ", "Draw Q").SetValue(new Circle(true, Color.Red, this.Spells[Q].Range))); } if (this.Spells[W] != null && this.Spells[1].Range > 0 && this.Spells[W].Range < 3000) { this.DrawingMenu.AddItem(new MenuItem("DDRAWW", "Draw W").SetValue(new Circle(true, Color.Aqua, this.Spells[W].Range))); } if (this.Spells[E] != null && this.Spells[2].Range > 0 && this.Spells[E].Range < 3000) { this.DrawingMenu.AddItem(new MenuItem("DDRAWE", "Draw E").SetValue(new Circle(true, Color.Bisque, this.Spells[E].Range))); } if (this.Spells[R] != null && this.Spells[3].Range > 0 && this.Spells[R].Range < 3000) //global ult ? { this.DrawingMenu.AddItem(new MenuItem("DDRAWR", "Draw R").SetValue(new Circle(true, Color.Chartreuse, this.Spells[R].Range))); } } ConfigMenu.AddSubMenu(DrawingMenu); if (enableEvader) { Menu evaderMenu = null; Evader evader; switch (szChampName.ToLower()) { case "ezreal": evader = new Evader(out evaderMenu, Database.EvadeMethods.Blink, Spells[E]); break; case "sivir": case "morgana": evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[E]); break; case "fizz": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]); break; case "lissandra": evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[R]); break; case "nocturne": evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[W]); break; case "vladimir": evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[W]); break; case "graves": case "gnar": case "lucian": case "riven": case "shen": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]); break; case "zed": case "leblanc": case "corki": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[W]); break; case "vayne": evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[Q]); break; } if (evaderMenu != null) { ConfigMenu.AddSubMenu(evaderMenu); } } CreateConfigMenu(); Menu credits = new Menu("Credits", "SAutoCarry.Credits.Root"); credits.AddItem(new MenuItem("SAutoCarry.Credits.Root.Author", "SAutoCarry - Made By Synx")); credits.AddItem(new MenuItem("SAutoCarry.Credits.Root.Upvote", "Dont Forget to upvote in DB!")); Menu supportedChamps = new Menu("Supported Champions", "SAutoCarry.Credits.Supported"); Menu adc = new Menu("ADC (5)", "SAutoCarry.Credits.ADC"); adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported1", " ->Corki ")); adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported2", " ->Lucian ")); adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported3", " ->Miss Fortune ")); adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported4", " ->Twitch ")); adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported5", " ->Vayne ")); // supportedChamps.AddSubMenu(adc); // Menu mid = new Menu("Mid (6)", "SAutoCarry.Credits.Mid"); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported1", " ->Azir ")); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported2", " ->Cassiopeia ")); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported3", " ->Orianna ")); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported4", " ->Twisted Fate ")); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported5", " ->Veigar ")); mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported6", " ->Viktor ")); // supportedChamps.AddSubMenu(mid); // Menu top = new Menu("Top (5)", "SAutoCarry.Credits.Top"); top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported1", " ->Darius ")); top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported2", " ->Dr. Mundo ")); top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported3", " ->Pantheon ")); top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported4", " ->Rengar ")); top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported5", " ->Riven ")); // supportedChamps.AddSubMenu(top); // Menu jungle = new Menu("Jungle (3)", "SAutoCarry.Credits.Jungle"); jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported1", " ->Jax ")); jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported2", " ->Master Yi ")); jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported3", " ->Shyvana ")); // supportedChamps.AddSubMenu(jungle); // Menu support = new Menu("Support (1)", "SAutoCarry.Credits.Support"); support.AddItem(new MenuItem("SAutoCarry.Credits.Support.Support1", " ->Blitzcrank ")); // supportedChamps.AddSubMenu(support); // credits.AddSubMenu(supportedChamps); #region Events Game.OnUpdate += this.Game_OnUpdate; Drawing.OnDraw += this.Drawing_OnDraw; Orbwalking.Events.BeforeAttack += this.OrbwalkingEvents_BeforeAttack; Orbwalking.Events.AfterAttack += this.OrbwalkingEvents_AfterAttack; AntiGapcloser.OnEnemyGapcloser += this.AntiGapcloser_OnEnemyGapcloser; Interrupter2.OnInterruptableTarget += this.Interrupter_OnPossibleToInterrupt; Obj_AI_Base.OnBuffGain += this.Obj_AI_Base_OnBuffAdd; Obj_AI_Base.OnSpellCast += this.Obj_AI_Base_OnProcessSpellCast; CustomEvents.Unit.OnDash += this.Unit_OnDash; TargetedSpellDetector.OnDetected += this.TargetedSpellDetector_OnDetected; #endregion Prediction.Initialize(ConfigMenu); ConfigMenu.AddSubMenu(credits); }