/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q range drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the Q path drawing. /// </summary> if (MenuClass.Drawings["qpath"].As <MenuBool>().Enabled) { foreach (var axe in Axes) { var drawAxePos = axe.Value.FixHeight(); var axeRectangle = new Vector3Geometry.Rectangle(UtilityClass.Player.Position, drawAxePos, UtilityClass.Player.BoundingRadius); axeRectangle.Draw(Color.Yellow); Render.Circle(drawAxePos, UtilityClass.Player.BoundingRadius, 5, Color.OrangeRed); } } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } }
/// <summary> /// Initializes the AttackRange Tracker. /// </summary> public static void Initialize() { foreach (var hero in ObjectCache.AllHeroes.Where(h => !h.IsMe() && !h.IsDead && h.IsVisible)) { if (hero.IsEnemy() && !MenuClass.AttackRangeTracker["enemies"].Enabled) { continue; } if (hero.IsAlly() && !MenuClass.AttackRangeTracker["allies"].Enabled) { continue; } var attackRange = hero.GetAutoAttackRange() + hero.BoundingRadius; CircleRendering.Render(UtilityClass.Player.Distance(hero) < attackRange ? Colors.GetRealColor(Color.Red) : Colors.GetRealColor(Color.Yellow), attackRange, hero); } }
protected override void OnRender(EntropyEventArgs args) { base.OnRender(args); if (Q.IsCharging && DrawingMenu.QTriangles.Enabled) { var target = TargetSelector.GetBestTarget(Q.ChargedMaxRange); if (target != null) { if (Game.ClockTime > QDrawing.Create) { QDrawing.Create = Game.ClockTime + 0.07f; var r1 = rnd.NextFloat(0, 1); var r2 = rnd.NextFloat(0, 1); var r3 = rnd.NextFloat(0, 1); var speed = Math.Max(1500f, r1 * 5000f); var angle = r2 * (Math.PI * 2); var range = Math.Max(333f, r3 * 444f); var missile = new QDrawing(target, speed, new Vector2((float)(target.Position.X + range * Math.Cos(angle)), (float)(target.Position.Z + range * Math.Sin(angle))), target.Position.Y + 122f, Game.ClockTime + 1f, Colors[rnd.Next(0, 2)]); QDrawing.Missile.Add(missile); } var Timer = Game.ClockTime - QDrawing.LastDraw; for (var i = 0; i < QDrawing.Missile.Count; i++) { var missile = QDrawing.Missile[i]; var p = new Vector2(missile.Object.Position.X, missile.Object.Position.Z); if (p.Distance(missile.Position) < 50 || Game.ClockTime > missile.Time) { QDrawing.Missile.Remove(missile); } missile.Y = Math.Max(missile.Object.Position.Y, missile.Y - Timer * 777f); missile.Position = missile.Position.Extend(p, Timer * 100f * missile.Speed / missile.Position.Distance(p)); new Triangle(new Vector3(missile.Position.X + 25, missile.Y, missile.Position.Y), new Vector3(missile.Position.X, missile.Y - 15, missile.Position.Y), new Vector3(missile.Position.X, missile.Y, missile.Position.Y + 25)). Render(missile.Color, 2); } QDrawing.LastDraw = Game.ClockTime; } } if (Definitions.IsChannellingR && RSettings.FocusMouse.Enabled) { CircleRendering.Render(Color.White, RSettings.MouseRange.Value, Hud.CursorPositionUnclipped, 2); } }
/// <summary> /// Initializes the drawings. /// </summary> public void OnRender(EntropyEventArgs args) { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.Q.Range, Color.LightGreen); } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.W.Range, Color.Yellow); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.E.Range, Color.Cyan); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.R.Range, Color.Red); } /// <summary> /// Loads the WorkedGrounds drawing. /// </summary> if (MenuClass.Drawings["grounds"].Enabled) { foreach (var ground in WorkedGrounds) { CircleRendering.Render(Color.Brown, WorkedGroundWidth, ground.Key); } } /// <summary> /// Loads the MineFields drawing. /// </summary> if (MenuClass.Drawings["boulders"].Enabled) { foreach (var boulder in MineField) { CircleRendering.Render(Color.Brown, BouldersWidth, boulder.Key); } } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } /// <summary> /// Loads the Q width drawing. /// </summary> if (FlashFrost != null && MenuClass.Drawings["flashfrost"].As <MenuBool>().Enabled) { Render.Circle(FlashFrost.Position, SpellClass.Q.Width, 30, Color.Blue); } /// <summary> /// Loads the R width drawing. /// </summary> if (GlacialStorm != null && MenuClass.Drawings["glacialstorm"].As <MenuBool>().Enabled) { Render.Circle(GlacialStorm.Position, SpellClass.R.Width, 30, Color.Blue); } }
protected static void DrawCircle(Vector3 worldPosition, float radius, Color color) { if (Components.DrawingMenu.SharpDXMode.Enabled) { CircleRendering.Render(color, radius, 1f, false, worldPosition); } else { Renderer.DrawCircularRangeIndicator(worldPosition, radius, color); } }
protected static void DrawCircle(AIBaseClient obj, float radius, Color color) { if (Components.DrawingMenu.SharpDXMode.Enabled) { CircleRendering.Render(color, radius, obj, Components.DrawingMenu.CircleThickness.Value); } else { Renderer.DrawCircularRangeIndicator(LocalPlayer.Instance.Position, radius, color); } }
internal static void DrawCircle(Vector3 worldPosition, float radius, Color color) { if (BaseMenu.Root["drawing"]["mode"].Value == 0) { Renderer.DrawCircularRangeIndicator(worldPosition, radius, color); } else { CircleRendering.Render(color, radius, 4f, false, worldPosition); } }
/// <summary> /// Initializes the drawings. /// </summary> public void OnRender(EntropyEventArgs args) { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.Q.Range, Color.LightGreen); } /// <summary> /// Loads the Feather linking drawing. /// </summary> if (!UtilityClass.Player.Spellbook.GetSpellState(SpellSlot.E).HasFlag(SpellState.Cooldown) && MenuClass.Drawings["feathers"].As <MenuBool>().Enabled) { foreach (var feather in Feathers) { var drawFeatherPos = feather.Value.FixHeight(); var realFeatherHitbox = new Entropy.SDK.Geometry.Rectangle(UtilityClass.Player.Position, drawFeatherPos, SpellClass.E.Width); realFeatherHitbox.Render( ObjectCache.EnemyHeroes.Any(h => h.IsValidTarget() && realFeatherHitbox.IsInsidePolygon((Vector2)h.Position)) ? Color.Blue : Color.Yellow); CircleRendering.Render(Color.OrangeRed, SpellClass.E.Width, 5, (Vector2)drawFeatherPos); } } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.R.Range, Color.Red); } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { Render.Circle(UtilityClass.Player.Position, HasPackage() ? SpellClass.W2.Range : SpellClass.W.Range, 30, Color.Yellow); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } }
/// <summary> /// Initializes the TowerRange Tracker. /// </summary> public static void Initialize() { foreach (var tower in ObjectCache.AllTurrets.Where(t => !t.IsDead && t.IsVisible)) { if (tower.IsEnemy() && !MenuClass.TowerRangeTracker["enemies"].Enabled) { continue; } if (tower.IsAlly() && !MenuClass.TowerRangeTracker["allies"].Enabled) { continue; } var towerAutoAttackRange = 775f + tower.BoundingRadius + UtilityClass.Player.BoundingRadius - 10f; CircleRendering.Render(tower.IsEnemy() && UtilityClass.Player.Distance(tower) <= towerAutoAttackRange ? Colors.GetRealColor(Color.Red) : Colors.GetRealColor(Color.LightGreen), towerAutoAttackRange, tower); } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready) { if (MenuClass.Drawings["qmin"].As <MenuBool>().Enabled) { Render.Circle(UtilityClass.Player.Position, SpellClass.Q.ChargedMinRange, 30, Color.LightGreen); } if (MenuClass.Drawings["qmax"].As <MenuBool>().Enabled) { Render.Circle(UtilityClass.Player.Position, SpellClass.Q.ChargedMaxRange, 30, Color.Yellow); } } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E damage to healthbar. /// </summary> if (MenuClass.Drawings["edmg"].As <MenuBool>().Enabled) { foreach (var unit in ObjectManager.Get <AIBaseClient>().Where(h => IsPerfectChargeTarget(h) && (h is AIHeroClient || UtilityClass.JungleList.Contains(h.CharName)) && h.InfoBarPosition.OnScreen())) { var heroUnit = unit as AIHeroClient; var jungleList = UtilityClass.JungleList; var mobOffset = DrawingClass.JungleHpBarOffsetList.FirstOrDefault(x => x.CharName.Equals(unit.CharName)); int width; if (jungleList.Contains(unit.CharName)) { width = mobOffset?.Width ?? DrawingClass.SWidth; } else { width = DrawingClass.SWidth; } int height; if (jungleList.Contains(unit.CharName)) { height = mobOffset?.Height ?? DrawingClass.SHeight; } else { height = DrawingClass.SHeight; } int xOffset; if (jungleList.Contains(unit.CharName)) { xOffset = mobOffset?.XOffset ?? DrawingClass.SxOffset(heroUnit); } else { xOffset = DrawingClass.SxOffset(heroUnit); } int yOffset; if (jungleList.Contains(unit.CharName)) { yOffset = mobOffset?.YOffset ?? DrawingClass.SyOffset(heroUnit); } else { yOffset = DrawingClass.SyOffset(heroUnit); } var barPos = unit.InfoBarPosition; barPos.X += xOffset; barPos.Y += yOffset; var unitHealth = unit.GetRealHealth(); var totalDamage = GetTotalExplosionDamage(unit); var barLength = 0; if (unitHealth > totalDamage) { barLength = (int)(width * ((unitHealth - totalDamage) / unit.MaxHP * 100 / 100)); } var drawEndXPos = barPos.X + width * (unit.HPPercent() / 100); var drawStartXPos = barPos.X + barLength; Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange); Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime); } } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready) { /// <summary> /// Loads the Q drawing. /// </summary> if (MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the Extended Q drawing. /// </summary> if (MenuClass.Drawings["qcone"].As <MenuBool>().Enabled) { foreach (var target in Extensions.GetBestSortedTargetsInRange(SpellClass.Q2.Range)) { var unitsToIterate = Extensions.GetAllGenericUnitTargetsInRange(SpellClass.Q.Range) .Where(m => !m.IsMoving && QCone(m).IsInside((Vector2)target.Position)) .OrderBy(m => m.HP) .ToList(); foreach (var minion in unitsToIterate) { DrawQCone(minion).Draw(QCone(minion).IsInside((Vector2)target.Position) && MenuClass.Spells["q2"]["whitelist"][target.CharName.ToLower()].Enabled ? Color.Green : Color.Red); } } } } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } /// <summary> /// Loads the Passive drawing. /// </summary> if (MenuClass.Drawings["passivetarget"].As <MenuBool>().Enabled) { var target = ObjectManager.Get <AIBaseClient>().FirstOrDefault(u => u.NetworkID == LoveTapTargetNetworkId); if (target != null) { Render.Circle(target.Position, target.BoundingRadius, 30, Color.Black); } } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q duration drawing. /// </summary> if (!UtilityClass.Player.Spellbook.GetSpell(SpellSlot.Q).State.HasFlag(SpellState.NotLearned) && MenuClass.Drawings["qduration"].As <MenuBool>().Enabled) { var buff = UtilityClass.Player.GetBuff("TwitchHideInShadows"); if (buff != null) { Render.Circle(UtilityClass.Player.Position, (buff.EndTime - Game.ClockTime) * UtilityClass.Player.MoveSpeed, 30, Color.Green); } else { var qDuration = new[] { 10, 11, 12, 13, 14 }[UtilityClass.Player.Spellbook.GetSpell(SpellSlot.Q).Level - 1]; Render.Circle(UtilityClass.Player.Position, qDuration * UtilityClass.Player.MoveSpeed, 30, Color.Green); Vector2Geometry.DrawCircleOnMinimap(UtilityClass.Player.Position, qDuration * UtilityClass.Player.MoveSpeed, Color.White); } } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready) { if (MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the E damage to healthbar. /// </summary> if (MenuClass.Drawings["edmg"].As <MenuBool>().Enabled) { foreach (var unit in ObjectManager.Get <AIBaseClient>().Where(h => IsPerfectExpungeTarget(h) && (h is AIHeroClient || UtilityClass.JungleList.Contains(h.CharName)) && h.InfoBarPosition.OnScreen())) { var heroUnit = unit as AIHeroClient; var jungleList = UtilityClass.JungleList; var mobOffset = DrawingClass.JungleHpBarOffsetList.FirstOrDefault(x => x.CharName.Equals(unit.CharName)); int width; if (jungleList.Contains(unit.CharName)) { width = mobOffset?.Width ?? DrawingClass.SWidth; } else { width = DrawingClass.SWidth; } int height; if (jungleList.Contains(unit.CharName)) { height = mobOffset?.Height ?? DrawingClass.SHeight; } else { height = DrawingClass.SHeight; } int xOffset; if (jungleList.Contains(unit.CharName)) { xOffset = mobOffset?.XOffset ?? DrawingClass.SxOffset(heroUnit); } else { xOffset = DrawingClass.SxOffset(heroUnit); } int yOffset; if (jungleList.Contains(unit.CharName)) { yOffset = mobOffset?.YOffset ?? DrawingClass.SyOffset(heroUnit); } else { yOffset = DrawingClass.SyOffset(heroUnit); } var barPos = unit.InfoBarPosition; barPos.X += xOffset; barPos.Y += yOffset; var unitHealth = unit.GetRealHealth(); var totalDamage = GetTotalExpungeDamage(unit); var barLength = 0; if (unitHealth > totalDamage) { barLength = (int)(width * ((unitHealth - totalDamage) / unit.MaxHP * 100 / 100)); } var drawEndXPos = barPos.X + width * (unit.HPPercent() / 100); var drawStartXPos = barPos.X + barLength; Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange); Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime); } } } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready && MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready) { if (MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } /// <summary> /// Loads the R damage to healthbar. /// </summary> if (MenuClass.Drawings["rdmg"].As <MenuBool>().Enabled) { foreach (var hero in Extensions.GetEnemyHeroesTargetsInRange(SpellClass.R.Range).Where(h => !Invulnerable.Check(h, DamageType.Magical, false) && h.InfoBarPosition.OnScreen())) { var width = DrawingClass.SWidth; var height = DrawingClass.SHeight; var xOffset = DrawingClass.SxOffset(hero); var yOffset = DrawingClass.SyOffset(hero); var barPos = hero.InfoBarPosition; barPos.X += xOffset; barPos.Y += yOffset; var unitHealth = hero.GetRealHealth(); var totalDamage = GetTotalUnleashedPowerDamage(hero); var barLength = 0; if (unitHealth > totalDamage) { barLength = (int)(width * ((unitHealth - totalDamage) / hero.MaxHP * 100 / 100)); } var drawEndXPos = barPos.X + width * (hero.HPPercent() / 100); var drawStartXPos = barPos.X + barLength; Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange); Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime); } } } if (DarkSpheres.Any()) { foreach (var sphere in DarkSpheres) { /// <summary> /// Loads the DarkSpheres drawing. /// </summary> if (MenuClass.Drawings["spheres"].As <MenuBool>().Enabled) { Render.Circle(sphere.Value, SpellClass.Q.Width, 30, Color.Blue); } /// <summary> /// Loads the Sphere scatter drawing. /// </summary> if (UtilityClass.Player.Distance(sphere.Value) < SpellClass.E.Range && MenuClass.Drawings["scatter"].As <MenuBool>().Enabled&& !UtilityClass.Player.Spellbook.GetSpell(SpellSlot.E).State.HasFlag(SpellState.Cooldown)) { var hitbox = DarkSphereScatterRectangle(sphere); hitbox.Draw( GameObjects.EnemyHeroes.Any(h => h.IsValidTarget() && hitbox.IsInside((Vector2)h.Position)) ? Color.Blue : Color.OrangeRed); } } } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (IsHateSpikeSkillshot()) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } else { Render.Circle(UtilityClass.Player.Position, SpellClass.Q2.Range, 30, Color.LightGreen); } } /// <summary> /// Loads the W drawing. /// </summary> if (SpellClass.W.Ready && MenuClass.Drawings["w"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawings. /// </summary> if (SpellClass.R.Ready) { /// <summary> /// Loads the R range. /// </summary> if (MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } /// <summary> /// Loads the R safe position check drawing. /// </summary> if (UtilityClass.Player.Path.Length > 1 && MenuClass.Drawings["rsafepos"].As <MenuBool>().Enabled) { Render.Circle(UtilityClass.Player.Position.Extend(UtilityClass.Player.Path[1], -LastCaressPushBackDistance()), UtilityClass.Player.BoundingRadius, 30, Color.Red); Render.Circle(UtilityClass.Player.Position.Extend(UtilityClass.Player.Path[1], -LastCaressPushBackDistance()), MenuClass.Spells["r"]["customization"]["safetyrange"].As <MenuSlider>().Value, 30, Color.Red); } } }
private static void OnRenderer(int fps, EventArgs args) { if (!gameProcessExists) { return; //process is dead, don't bother drawing } if ((!isGameOnTop) && (!isOverlayOnTop)) { return; //if game and overlay are not on top, don't draw } if (!Components.MainAssemblyToggle.Enabled) { return; //main menu boolean to toggle the cheat on or off } if (oRenderer != IntPtr.Zero) { var rendBase = Memory.ReadPointer(processHandle, oRenderer, isWow64Process); if (rendBase != IntPtr.Zero) { var matStruct = SDKUtil.ReadStructure <RendererStruct>(processHandle, rendBase); var finalMatrix = matStruct.oView * matStruct.oProjection; var localPlayer = Memory.ReadPointer(processHandle, oLocalPlayer, isWow64Process); if (localPlayer != IntPtr.Zero) { gameTime = Memory.ReadFloat(processHandle, oGameTime); var lPdata = SDKUtil.ReadStructureEx <GameObjectStruct>(processHandle, localPlayer, isWow64Process); var heroManager = Memory.ReadPointer(processHandle, oHeroManager, isWow64Process); if (heroManager != IntPtr.Zero) { for (uint i = 0; i <= 12; i++) { var heroPtr = Memory.ReadPointer(processHandle, (IntPtr)(heroManager.ToInt64() + i * 4), isWow64Process); if (heroPtr != IntPtr.Zero) { var heroData = SDKUtil.ReadStructureEx <GameObjectStruct>(processHandle, heroPtr, isWow64Process); if ((heroData.oObjVisibility == 1) /* && (heroData.oObjTeam == 100 || heroData.oObjTeam == 200)*/ && (heroData.oObjHealth > 0.1) && (heroData.oObjHealth < 10000) && (heroData.oObjMaxHealth > 99) && (heroData.oObjArmor > 0) && (heroData.oObjArmor < 1000) && (heroData.oObjPos.Y != 0.0f) && (heroData.oObjPos.X != 0.0f) && (heroData.oObjPos.Z != 0.0f)) //ghetto validity check { var QData = heroData.GetSpellData(spellSlot._Q); var WData = heroData.GetSpellData(spellSlot._W); var EData = heroData.GetSpellData(spellSlot._E); var RData = heroData.GetSpellData(spellSlot._R); var DData = heroData.GetSpellData(spellSlot.SUMMONER_1); var FData = heroData.GetSpellData(spellSlot.SUMMONER_2); Console.WriteLine("Check #1"); Vector2 pos2D; if (Renderer.WorldToScreen(heroData.oObjPos, out pos2D, finalMatrix, wndMargins, wndSize, W2SType.TypeOGL)) { Console.WriteLine("Check #2"); if (Components.VisualsComponent.DrawSpellTracker.Enabled) { Console.WriteLine("Check #3"); Renderer.DrawFilledRect(pos2D.X - XposX - 5 - 1, pos2D.Y + YposY + 3 + 12 - 1, 118 + 2, 12 + 2, new Color(00, 00, 00, 0x7A)); //whole bar Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 0, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); //spell bars Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 1, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 2, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 3, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); Renderer.DrawFilledRect(pos2D.X - XposX - 5 + 121 - 1, pos2D.Y + YposY + 3 + 12 - 1, 60 + 2, 12 + 2, new Color(00, 00, 0x5A, 0x7A)); //whole bar Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); //spell bars D Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA)); //spell bars F if (QData.level > 0) { for (uint j = 1; j <= QData.level; j++) { Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._Q + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF)); } if (QData.ammoCurrentCd > 0) { if (QData.ammo > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.ammoCurrentCd / QData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.ammoCurrentCd / QData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } } else { if (QData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.currentCd / QData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } } } if (WData.level > 0) { for (uint j = 1; j <= WData.level; j++) { Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._W + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF)); } if (WData.ammoCurrentCd > 0) { if (WData.ammo > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.ammoCurrentCd / WData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.ammoCurrentCd / WData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } } else { if (WData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.currentCd / WData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } } } if (EData.level > 0) { for (uint j = 1; j <= EData.level; j++) { Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._E + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF)); } if (EData.ammoCurrentCd > 0) { if (EData.ammo > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.ammoCurrentCd / EData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.ammoCurrentCd / EData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } } else { if (EData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.currentCd / EData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } } } if (RData.level > 0) { for (uint j = 1; j <= RData.level; j++) { Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._R + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF)); } if (RData.ammoCurrentCd > 0) { if (RData.ammo > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.ammoCurrentCd / RData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.ammoCurrentCd / RData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } } else { if (RData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.currentCd / RData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } } } if (DData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23 - ((DData.currentCd / DData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } if (FData.currentCd > 0) { Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23 - ((FData.currentCd / FData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF)); } else { Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF)); } } if (heroData.oObjTeam != lPdata.oObjTeam) { if (Components.VisualsComponent.DrawInformationAlly.Enabled) { Renderer.DrawText("Vida: " + (int)heroData.oObjHealth + " / " + (int)heroData.oObjMaxHealth, pos2D.X, pos2D.Y - 40, new Color(0xFF, 00, 00, 0xff)); Renderer.DrawText("Mana: " + (int)heroData.oObjMana + " / " + (int)heroData.oObjMaxMana, pos2D.X, pos2D.Y - 20, new Color(0, 255, 255, 0xff)); } if (Components.VisualsComponent.DrawRangeCircleEmy.Enabled) { CircleRendering.Render(finalMatrix, Components.VisualsComponent.RangeCircleColorNmy.Color, heroData.oObjAtkRange + 55.0f, heroData.oObjPos); } } if (heroData.oObjTeam == lPdata.oObjTeam) { if (Components.VisualsComponent.DrawInformationAlly.Enabled) { Renderer.DrawText("Vida: " + (int)heroData.oObjHealth + " / " + (int)heroData.oObjMaxHealth, pos2D.X, pos2D.Y - 40, new Color(0xFF, 00, 00, 0xff)); Renderer.DrawText("Mana: " + (int)heroData.oObjMana + " / " + (int)heroData.oObjMaxMana, pos2D.X, pos2D.Y - 20, new Color(0, 255, 255, 0xff)); } if (Components.VisualsComponent.DrawRangeCircleAlly.Enabled) { CircleRendering.Render(finalMatrix, Components.VisualsComponent.RangeCircleColorAlly.Color, heroData.oObjAtkRange + 55.0f, heroData.oObjPos); } } } } } } } } } } }
/// <summary> /// Initializes the drawings. /// </summary> public void Drawings() { /// <summary> /// Loads the Q drawing. /// </summary> if (SpellClass.Q.Ready && MenuClass.Drawings["q"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player); } /// <summary> /// Loads the E drawing. /// </summary> if (SpellClass.E.Ready && MenuClass.Drawings["e"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player); } /// <summary> /// Loads the R drawing. /// </summary> if (SpellClass.R.Ready) { if (MenuClass.Drawings["r"].As <MenuBool>().Enabled) { CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player); } /// <summary> /// Loads the R damage to healthbar. /// </summary> if (MenuClass.Drawings["rdmg"].As <MenuBool>().Enabled) { foreach (var hero in Extensions.GetEnemyHeroesTargetsInRange(SpellClass.R.Range).Where(h => !Invulnerable.Check(h) && h.InfoBarPosition.OnScreen())) { var width = DrawingClass.SWidth; var height = DrawingClass.SHeight; var xOffset = DrawingClass.SxOffset(hero); var yOffset = DrawingClass.SyOffset(hero); var barPos = hero.InfoBarPosition; barPos.X += xOffset; barPos.Y += yOffset; var unitHealth = hero.GetRealHealth(); var totalDamage = GetTotalNoxianGuillotineDamage(hero); var barLength = 0; if (unitHealth > totalDamage) { barLength = (int)(width * ((unitHealth - totalDamage) / hero.MaxHP * 100 / 100)); } var drawEndXPos = barPos.X + width * (hero.HPPercent() / 100); var drawStartXPos = barPos.X + barLength; Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange); Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime); } } } }