Hlucy


SUBMITTED BY: Alerand

DATE: May 4, 2016, 9:24 a.m.

FORMAT: Text only

SIZE: 20.9 kB

HITS: 18427

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Security.Cryptography.X509Certificates;
  5. using System.Windows.Forms.VisualStyles;
  6. using LeagueSharp;
  7. using LeagueSharp.Common;
  8. using Color = System.Drawing.Color;
  9. using ItemData = LeagueSharp.Common.Data.ItemData;
  10. using SharpDX;
  11. namespace HoolaLucian
  12. {
  13. public class Program
  14. {
  15. private static Menu Menu;
  16. private static Orbwalking.Orbwalker Orbwalker;
  17. private static Obj_AI_Hero Player = ObjectManager.Player;
  18. private static HpBarIndicator Indicator = new HpBarIndicator();
  19. private static Spell Q, Q1, W, E, R;
  20. private static bool AAPassive;
  21. private static bool HEXQ => Menu.Item("HEXQ").GetValue<bool>();
  22. private static bool KillstealQ => Menu.Item("KillstealQ").GetValue<bool>();
  23. private static bool CQ => Menu.Item("CQ").GetValue<bool>();
  24. private static bool CW => Menu.Item("CW").GetValue<bool>();
  25. private static int CE => Menu.Item("CE").GetValue<StringList>().SelectedIndex;
  26. private static bool HQ => Menu.Item("HQ").GetValue<bool>();
  27. private static bool HW => Menu.Item("HW").GetValue<bool>();
  28. private static int HE => Menu.Item("HE").GetValue<StringList>().SelectedIndex;
  29. private static int HMinMana => Menu.Item("HMinMana").GetValue<Slider>().Value;
  30. private static bool JQ => Menu.Item("JQ").GetValue<bool>();
  31. private static bool JW => Menu.Item("JW").GetValue<bool>();
  32. private static bool JE => Menu.Item("JE").GetValue<bool>();
  33. private static bool LHQ => Menu.Item("LHQ").GetValue<bool>();
  34. private static int LQ => Menu.Item("LQ").GetValue<Slider>().Value;
  35. private static bool LW => Menu.Item("LW").GetValue<bool>();
  36. private static bool LE => Menu.Item("LE").GetValue<bool>();
  37. private static int LMinMana => Menu.Item("LMinMana").GetValue<Slider>().Value;
  38. private static bool Dind => Menu.Item("Dind").GetValue<bool>();
  39. private static bool DEQ => Menu.Item("DEQ").GetValue<bool>();
  40. private static bool DQ => Menu.Item("DQ").GetValue<bool>();
  41. private static bool DW => Menu.Item("DW").GetValue<bool>();
  42. private static bool DE => Menu.Item("DE").GetValue<bool>();
  43. static bool AutoQ => Menu.Item("AutoQ").GetValue<KeyBind>().Active;
  44. private static int MinMana => Menu.Item("MinMana").GetValue<Slider>().Value;
  45. private static int HHMinMana => Menu.Item("HHMinMana").GetValue<Slider>().Value;
  46. private static int Humanizer => Menu.Item("Humanizer").GetValue<Slider>().Value;
  47. static bool ForceR => Menu.Item("ForceR").GetValue<KeyBind>().Active;
  48. static bool LT => Menu.Item("LT").GetValue<KeyBind>().Active;
  49. static void Main()
  50. {
  51. CustomEvents.Game.OnGameLoad += OnGameLoad;
  52. }
  53. static void OnGameLoad(EventArgs args)
  54. {
  55. if (Player.ChampionName != "Lucian") return;
  56. Game.PrintChat("Hoola Lucian - Loaded Successfully, Good Luck! :)");
  57. Q = new Spell(SpellSlot.Q, 675);
  58. Q1 = new Spell(SpellSlot.Q, 1200);
  59. W = new Spell(SpellSlot.W, 1200, TargetSelector.DamageType.Magical);
  60. E = new Spell(SpellSlot.E, 475f);
  61. R = new Spell(SpellSlot.R, 1400);
  62. OnMenuLoad();
  63. Q.SetTargetted(0.25f, 1400f);
  64. Q1.SetSkillshot(0.5f, 50, float.MaxValue, false, SkillshotType.SkillshotLine);
  65. W.SetSkillshot(0.30f, 80f, 1600f, true, SkillshotType.SkillshotLine);
  66. R.SetSkillshot(0.2f, 110f, 2500, true, SkillshotType.SkillshotLine);
  67. Spellbook.OnCastSpell += Spellbook_OnCastSpell;
  68. Game.OnUpdate += Game_OnUpdate;
  69. Drawing.OnEndScene += Drawing_OnEndScene;
  70. Obj_AI_Base.OnDoCast += OnDoCast;
  71. Drawing.OnDraw += OnDraw;
  72. Obj_AI_Base.OnDoCast += OnDoCastLC;
  73. }
  74. private static void OnMenuLoad()
  75. {
  76. Menu = new Menu("Hoola Lucian", "hoolalucian", true);
  77. Menu.AddSubMenu(new Menu("Orbwalking", "Orbwalking"));
  78. Orbwalker = new Orbwalking.Orbwalker(Menu.SubMenu("Orbwalking"));
  79. var targetSelectorMenu = new Menu("Target Selector", "Target Selector");
  80. TargetSelector.AddToMenu(targetSelectorMenu);
  81. Menu.AddSubMenu(targetSelectorMenu);
  82. var Combo = new Menu("Combo", "Combo");
  83. Combo.AddItem(new MenuItem("CQ", "Use Q").SetValue(true));
  84. Combo.AddItem(new MenuItem("CW", "Use W").SetValue(true));
  85. Combo.AddItem(new MenuItem("CE", "Use E Mode").SetValue(new StringList(new[] { "Side", "Cursor", "Enemy", "Never" })));
  86. Combo.AddItem(new MenuItem("ForceR", "Force R On Target Selector").SetValue(new KeyBind('T', KeyBindType.Press)));
  87. Menu.AddSubMenu(Combo);
  88. var Misc = new Menu("Misc", "Misc");
  89. Misc.AddItem(new MenuItem("Humanizer", "Humanizer Delay").SetValue(new Slider(5,5,300)));
  90. Misc.AddItem(new MenuItem("Nocolision", "Nocolision W").SetValue(true));
  91. Menu.AddSubMenu(Misc);
  92. var Harass = new Menu("Harass", "Harass");
  93. Harass.AddItem(new MenuItem("HEXQ", "Use Extended Q").SetValue(true));
  94. Harass.AddItem(new MenuItem("HMinMana", "Extended Q Min Mana (%)").SetValue(new Slider(80)));
  95. Harass.AddItem(new MenuItem("HQ", "Use Q").SetValue(true));
  96. Harass.AddItem(new MenuItem("HW", "Use W").SetValue(true));
  97. Harass.AddItem(new MenuItem("HE", "Use E Mode").SetValue(new StringList(new [] {"Side","Cursor","Enemy","Never"})));
  98. Harass.AddItem(new MenuItem("HHMinMana", "Harass Min Mana (%)").SetValue(new Slider(80)));
  99. Menu.AddSubMenu(Harass);
  100. var LC = new Menu("LaneClear", "LaneClear");
  101. LC.AddItem(new MenuItem("LT", "Use Spell LaneClear (Toggle)").SetValue(new KeyBind('J', KeyBindType.Toggle)));
  102. LC.AddItem(new MenuItem("LHQ", "Use Extended Q For Harass").SetValue(true));
  103. LC.AddItem(new MenuItem("LQ", "Use Q (0 = Don't)").SetValue(new Slider(0,0,5)));
  104. LC.AddItem(new MenuItem("LW", "Use W").SetValue(true));
  105. LC.AddItem(new MenuItem("LE", "Use E").SetValue(true));
  106. LC.AddItem(new MenuItem("LMinMana", "Min Mana (%)").SetValue(new Slider(80)));
  107. Menu.AddSubMenu(LC);
  108. var JC = new Menu("JungleClear", "JungleClear");
  109. JC.AddItem(new MenuItem("JQ", "Use Q").SetValue(true));
  110. JC.AddItem(new MenuItem("JW", "Use W").SetValue(true));
  111. JC.AddItem(new MenuItem("JE", "Use E").SetValue(true));
  112. Menu.AddSubMenu(JC);
  113. var Auto = new Menu("Auto", "Auto");
  114. Auto.AddItem(new MenuItem("AutoQ", "Auto Extended Q (Toggle)").SetValue(new KeyBind('G', KeyBindType.Toggle)));
  115. Auto.AddItem(new MenuItem("MinMana", "Min Mana (%)").SetValue(new Slider(80)));
  116. Menu.AddSubMenu(Auto);
  117. var Draw = new Menu("Draw", "Draw");
  118. Draw.AddItem(new MenuItem("Dind", "Draw Damage Incidator").SetValue(true));
  119. Draw.AddItem(new MenuItem("DEQ", "Draw Extended Q").SetValue(false));
  120. Draw.AddItem(new MenuItem("DQ", "Draw Q").SetValue(false));
  121. Draw.AddItem(new MenuItem("DW", "Draw W").SetValue(false));
  122. Draw.AddItem(new MenuItem("DE", "Draw E").SetValue(false));
  123. Menu.AddSubMenu(Draw);
  124. var killsteal = new Menu("killsteal", "Killsteal");
  125. killsteal.AddItem(new MenuItem("KillstealQ", "Killsteal Q").SetValue(true));
  126. Menu.AddSubMenu(killsteal);
  127. Menu.AddToMainMenu();
  128. }
  129. private static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
  130. {
  131. var spellName = args.SData.Name;
  132. if (!sender.IsMe || !Orbwalking.IsAutoAttack(spellName)) return;
  133. if (args.Target is Obj_AI_Hero)
  134. {
  135. var target = (Obj_AI_Base)args.Target;
  136. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && target.IsValid)
  137. {
  138. Utility.DelayAction.Add(Humanizer, () => OnDoCastDelayed(args));
  139. }
  140. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed && target.IsValid)
  141. {
  142. Utility.DelayAction.Add(Humanizer, () => OnDoCastDelayed(args));
  143. }
  144. }
  145. if (args.Target is Obj_AI_Minion)
  146. {
  147. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && args.Target.IsValid)
  148. {
  149. Utility.DelayAction.Add(Humanizer, () => OnDoCastDelayed(args));
  150. }
  151. }
  152. }
  153. private static void OnDoCastLC(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
  154. {
  155. var spellName = args.SData.Name;
  156. if (!sender.IsMe || !Orbwalking.IsAutoAttack(spellName)) return;
  157. if (args.Target is Obj_AI_Minion)
  158. {
  159. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && args.Target.IsValid)
  160. {
  161. Utility.DelayAction.Add(Humanizer, () => OnDoCastDelayedLC(args));
  162. }
  163. }
  164. }
  165. static void killsteal()
  166. {
  167. if (KillstealQ && Q.IsReady())
  168. {
  169. var targets = HeroManager.Enemies.Where(x => x.IsValidTarget(Q.Range) && !x.IsZombie);
  170. foreach (var target in targets)
  171. {
  172. if (target.Health < Q.GetDamage(target) && (!target.HasBuff("kindrednodeathbuff") && !target.HasBuff("Undying Rage") && !target.HasBuff("JudicatorIntervention")))
  173. Q.Cast(target);
  174. }
  175. }
  176. }
  177. private static void OnDoCastDelayedLC(GameObjectProcessSpellCastEventArgs args)
  178. {
  179. AAPassive = false;
  180. if (args.Target is Obj_AI_Minion && args.Target.IsValid)
  181. {
  182. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Player.ManaPercent > LMinMana)
  183. {
  184. var Minions = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.Health);
  185. if (Minions[0].IsValid && Minions.Count != 0)
  186. {
  187. if (!LT) return;
  188. if (E.IsReady() && !AAPassive && LE) E.Cast(Player.Position.Extend(Game.CursorPos, 70));
  189. if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && !LE)) && LQ != 0 && !AAPassive)
  190. {
  191. var QMinions = MinionManager.GetMinions(Q.Range);
  192. var exminions = MinionManager.GetMinions(Q1.Range);
  193. foreach (var Minion in QMinions)
  194. {
  195. var QHit = new Geometry.Polygon.Rectangle(Player.Position,Player.Position.Extend(Minion.Position, Q1.Range),Q1.Width);
  196. if (exminions.Count(x => !QHit.IsOutside(x.Position.To2D())) >= LQ)
  197. {
  198. Q.Cast(Minion);
  199. break;
  200. }
  201. }
  202. }
  203. if ((!E.IsReady() || (E.IsReady() && !LE)) && (!Q.IsReady() || (Q.IsReady() && LQ == 0)) && LW && W.IsReady() && !AAPassive) W.Cast(Minions[0].Position);
  204. }
  205. }
  206. }
  207. }
  208. public static Vector2 Deviation(Vector2 point1, Vector2 point2, double angle)
  209. {
  210. angle *= Math.PI / 180.0;
  211. Vector2 temp = Vector2.Subtract(point2, point1);
  212. Vector2 result = new Vector2(0);
  213. result.X = (float)(temp.X * Math.Cos(angle) - temp.Y * Math.Sin(angle)) / 4;
  214. result.Y = (float)(temp.X * Math.Sin(angle) + temp.Y * Math.Cos(angle)) / 4;
  215. result = Vector2.Add(result, point1);
  216. return result;
  217. }
  218. private static void OnDoCastDelayed(GameObjectProcessSpellCastEventArgs args)
  219. {
  220. AAPassive = false;
  221. if (args.Target is Obj_AI_Hero)
  222. {
  223. var target = (Obj_AI_Base)args.Target;
  224. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && target.IsValid)
  225. {
  226. if (ItemData.Youmuus_Ghostblade.GetItem().IsReady()) ItemData.Youmuus_Ghostblade.GetItem().Cast();
  227. if (E.IsReady() && !AAPassive && CE == 0) E.Cast((Deviation(Player.Position.To2D(), target.Position.To2D(), 65).To3D()));
  228. if (E.IsReady() && !AAPassive && CE == 1) E.Cast(Game.CursorPos);
  229. if (E.IsReady() && !AAPassive && CE == 2) E.Cast(Player.Position.Extend(target.Position, 50));
  230. if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && CE == 3)) && CQ && !AAPassive) Q.Cast(target);
  231. if ((!E.IsReady() || (E.IsReady() && CE == 3)) && (!Q.IsReady() || (Q.IsReady() && !CQ)) && CW && W.IsReady() && !AAPassive) W.Cast(target.Position);
  232. }
  233. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed && target.IsValid)
  234. {
  235. if (Player.ManaPercent < HHMinMana) return;
  236. if (E.IsReady() && !AAPassive && HE == 0) E.Cast((Deviation(Player.Position.To2D(), target.Position.To2D(),65).To3D()));
  237. if (E.IsReady() && !AAPassive && HE == 1) E.Cast(Player.Position.Extend(Game.CursorPos, 50));
  238. if (E.IsReady() && !AAPassive && HE == 2) E.Cast(Player.Position.Extend(target.Position, 50));
  239. if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && HE == 3)) && HQ && !AAPassive) Q.Cast(target);
  240. if ((!E.IsReady() || (E.IsReady() && HE == 3)) && (!Q.IsReady() || (Q.IsReady() && !HQ)) && HW && W.IsReady() && !AAPassive) W.Cast(target.Position);
  241. }
  242. }
  243. if (args.Target is Obj_AI_Minion && args.Target.IsValid)
  244. {
  245. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
  246. {
  247. var Mobs = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
  248. if (Mobs[0].IsValid && Mobs.Count != 0)
  249. {
  250. if (E.IsReady() && !AAPassive && JE) E.Cast(Player.Position.Extend(Game.CursorPos, 70));
  251. if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && !JE)) && JQ && !AAPassive) Q.Cast(Mobs[0]);
  252. if ((!E.IsReady() || (E.IsReady() && !JE)) && (!Q.IsReady() || (Q.IsReady() && !JQ)) && JW && W.IsReady() && !AAPassive) W.Cast(Mobs[0].Position);
  253. }
  254. }
  255. }
  256. }
  257. private static void Harass()
  258. {
  259. if (Player.ManaPercent < HMinMana) return;
  260. if (Q.IsReady() && HEXQ)
  261. {
  262. var target = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);
  263. var Minions = MinionManager.GetMinions(Q.Range);
  264. foreach (var Minion in Minions)
  265. {
  266. var QHit = new Geometry.Polygon.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range),Q1.Width);
  267. var QPred = Q1.GetPrediction(target);
  268. if (!QHit.IsOutside(QPred.UnitPosition.To2D()) && QPred.Hitchance == HitChance.High)
  269. {
  270. Q.Cast(Minion);
  271. break;
  272. }
  273. }
  274. }
  275. }
  276. static void LaneClear()
  277. {
  278. if (Player.ManaPercent < LMinMana) return;
  279. if (Q.IsReady() && LHQ)
  280. {
  281. var extarget = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);
  282. var Minions = MinionManager.GetMinions(Q.Range);
  283. foreach (var Minion in Minions)
  284. {
  285. var QHit = new Geometry.Polygon.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range), Q1.Width);
  286. var QPred = Q1.GetPrediction(extarget);
  287. if (!QHit.IsOutside(QPred.UnitPosition.To2D()) && QPred.Hitchance == HitChance.High)
  288. {
  289. Q.Cast(Minion);
  290. break;
  291. }
  292. }
  293. }
  294. }
  295. static void AutoUseQ()
  296. {
  297. if (Q.IsReady() && AutoQ && Player.ManaPercent > MinMana)
  298. {
  299. var extarget = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);
  300. var Minions = MinionManager.GetMinions(Q.Range);
  301. foreach (var Minion in Minions)
  302. {
  303. var QHit = new Geometry.Polygon.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range), Q1.Width);
  304. var QPred = Q1.GetPrediction(extarget);
  305. if (!QHit.IsOutside(QPred.UnitPosition.To2D()) && QPred.Hitchance == HitChance.High)
  306. {
  307. Q.Cast(Minion);
  308. break;
  309. }
  310. }
  311. }
  312. }
  313. static void UseRTarget()
  314. {
  315. var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
  316. if (ForceR && R.IsReady() && target.IsValid && target is Obj_AI_Hero && !Player.HasBuff("LucianR")) R.Cast(target.Position);
  317. }
  318. static void Game_OnUpdate(EventArgs args)
  319. {
  320. W.Collision = Menu.Item("Nocolision").GetValue<bool>();
  321. AutoUseQ();
  322. if (ForceR) UseRTarget();
  323. killsteal();
  324. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) Harass();
  325. if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear) LaneClear();
  326. }
  327. static void Spellbook_OnCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args)
  328. {
  329. if (args.Slot == SpellSlot.Q || args.Slot == SpellSlot.W || args.Slot == SpellSlot.E) AAPassive = true;
  330. if (args.Slot == SpellSlot.E) Orbwalking.ResetAutoAttackTimer();
  331. if (args.Slot == SpellSlot.R) ItemData.Youmuus_Ghostblade.GetItem().Cast();
  332. }
  333. static float getComboDamage(Obj_AI_Base enemy)
  334. {
  335. if (enemy != null)
  336. {
  337. float damage = 0;
  338. if (E.IsReady()) damage = damage + (float)Player.GetAutoAttackDamage(enemy) * 2;
  339. if (W.IsReady()) damage = damage + W.GetDamage(enemy) + (float)Player.GetAutoAttackDamage(enemy);
  340. if (Q.IsReady())
  341. {
  342. damage = damage + Q.GetDamage(enemy) + (float)Player.GetAutoAttackDamage(enemy);
  343. }
  344. damage = damage + (float)Player.GetAutoAttackDamage(enemy);
  345. return damage;
  346. }
  347. return 0;
  348. }
  349. static void OnDraw(EventArgs args)
  350. {
  351. if (DEQ) Render.Circle.DrawCircle(Player.Position, Q1.Range, Q.IsReady() ? Color.LimeGreen : Color.IndianRed);
  352. if (DQ) Render.Circle.DrawCircle(Player.Position, Q.Range, Q.IsReady() ? Color.LimeGreen : Color.IndianRed);
  353. if (DW) Render.Circle.DrawCircle(Player.Position, W.Range, W.IsReady() ? Color.LimeGreen : Color.IndianRed);
  354. if (DE) Render.Circle.DrawCircle(Player.Position, E.Range, E.IsReady() ? Color.LimeGreen : Color.IndianRed);
  355. }
  356. static void Drawing_OnEndScene(EventArgs args)
  357. {
  358. if (Dind)
  359. {
  360. foreach (
  361. var enemy in
  362. ObjectManager.Get<Obj_AI_Hero>()
  363. .Where(ene => ene.IsValidTarget() && !ene.IsZombie))
  364. {
  365. Indicator.unit = enemy;
  366. Indicator.drawDmg(getComboDamage(enemy), new ColorBGRA(255, 204, 0, 160));
  367. }
  368. }
  369. }
  370. }
  371. }

comments powered by Disqus