It is possible to display command skeletons for all classes.
For example, in the bossfight with the thones necro boss killer, the other classes also see the circles of the Command Skeletons and not just the necro itself?
It is possible to display command skeletons for all classes.
For example, in the bossfight with the thones necro boss killer, the other classes also see the circles of the Command Skeletons and not just the necro itself?
These ads disappear when you log in.
473147, //No Rune
473428, //Enforcer Rune
473426, //Frenzy Rune
473420, //Dark Mending Rune
473417, //Freezing Grasps Rune
473418, //Kill Command Rune
instead of Hud.Game.Me it would be using Hud.Game.Actors that contain those ^
Last edited by iThinkiWin; 12-13-2018 at 02:04 AM.
should display all skellet on boss only.
Code:namespace Turbo.Plugins.User { using Turbo.Plugins.Default; using System.Linq; using System.Text; using System.Collections.Generic; public class NecromancerSkeletonIndicatorPlugin : BasePlugin, IInGameWorldPainter, IInGameTopPainter { public WorldDecoratorCollection CommandSkeletonDecorator, SkeletonMageDecorator; public TopLabelDecorator CommandSkeletonCountLabel, SkeletonMageCountLabel, CombinedSkeletonCountLabel; public string CommandSkeletonLabel, SkeletonMageLabel; public int CommandSkeletonCount, SkeletonMageCount; public float barW, barH, barX, barY, cmb_barW, cmb_barH, cmb_barX, cmb_barY; public bool CommandSkeletonEnabled, SkeletonMageEnabled, CombinedCountEnabled; private static uint CommandSkeletonSkillSNO = 453801; public HashSet<uint> CommandSkeletonActorSNOs = new HashSet<uint> { 473147, // CommandSkeleton - No Rune 473428, // CommandSkeleton - Enforcer 473426, // CommandSkeleton - Frenzy 473420, // CommandSkeleton - Dark Mending 473417, // CommandSkeleton - Freezing Grasp 473418 // CommandSkeleton - Kill Command }; private static uint SkeletonMageSkillSNO = 462089; public HashSet<uint> SkeletonMageActorSNOs = new HashSet<uint> { 472275, // Skeleton Mage - No Rune 472588, // Skeleton Mage - Gift of Death 472769, // Skeleton Mage - Contamination 472801, // Skeleton Mage - Archer 472606, // Skeleton Mage - Singularity 472715 // Skeleton Mage - Life Support }; public NecromancerSkeletonIndicatorPlugin() { Enabled = true; // Modify this to make the count combined CombinedCountEnabled = false; // Enable both indicator or disable the indicator a specific skill CommandSkeletonEnabled = true; SkeletonMageEnabled = true; // Inits variables CommandSkeletonCount = 0; SkeletonMageCount = 0; CommandSkeletonLabel = ""; SkeletonMageLabel = ""; } public override void Load(IController hud) { base.Load(hud); // Unlike the old XML system where it draws x,y,w,h in terms of percentage of screen size, the new plugin uses actual pixel coordinates // To convert x,y,w,h sizes from the XML system to the new plugin system, multiply the screensize with percentage. ie. XML size of 2 => 0.02f * screensize // Display coordinated for non-combined indicators barW = Hud.Window.Size.Width * 0.013f; barH = Hud.Window.Size.Height * 0.0177f; barX = Hud.Window.Size.Width * 0.475f; barY = Hud.Window.Size.Height * 0.36f; // Display coordinated for combined indicators cmb_barW = Hud.Window.Size.Width * 0.0175f; cmb_barH = Hud.Window.Size.Height * 0.0175f; cmb_barX = (Hud.Window.Size.Width * 0.5f) - (cmb_barW * 0.5f); cmb_barY = Hud.Window.Size.Height * 0.33f; // Decorator under each sekeleton melee CommandSkeletonDecorator = new WorldDecoratorCollection( new GroundCircleDecorator(Hud) { Brush = Hud.Render.CreateBrush(240, 50, 200, 0, 1), Radius = 0.5f, }, new GroundLabelDecorator(Hud) { BackgroundBrush = Hud.Render.CreateBrush(220, 200, 200, 0, 0), TextFont = Hud.Render.CreateFont("tahoma", 7, 255, 255, 255, 255, true, false, false) }, new MapShapeDecorator(Hud) { ShapePainter = new RotatingTriangleShapePainter(Hud), Brush = Hud.Render.CreateBrush(220, 200, 200, 0, 0), Radius = 0f, RadiusTransformator = new StandardPingRadiusTransformator(Hud, 250) } ); // Decorator under each sekeleton mages SkeletonMageDecorator = new WorldDecoratorCollection( new GroundCircleDecorator(Hud) { Brush = Hud.Render.CreateBrush(240, 200, 50, 0, 1), Radius = 0.5f, }, new GroundLabelDecorator(Hud) { BackgroundBrush = Hud.Render.CreateBrush(220, 200, 200, 0, 0), TextFont = Hud.Render.CreateFont("tahoma", 7, 255, 255, 255, 255, true, false, false) }, new MapShapeDecorator(Hud) { ShapePainter = new RotatingTriangleShapePainter(Hud), Brush = Hud.Render.CreateBrush(220, 200, 200, 0, 0), Radius = 0f, RadiusTransformator = new StandardPingRadiusTransformator(Hud, 250) } ); // Label Decorator for non-combined indicator CommandSkeletonCountLabel = new TopLabelDecorator(Hud) { TextFont = Hud.Render.CreateFont("tahoma", 8, 255, 255, 240, 0, false, false, false), BackgroundTexture1 = Hud.Texture.Button2TextureBrown, BackgroundTexture2 = Hud.Texture.BackgroundTextureOrange, BackgroundTextureOpacity2 = 0.25f }; SkeletonMageCountLabel = new TopLabelDecorator(Hud) { TextFont = Hud.Render.CreateFont("tahoma", 8, 255, 255, 240, 0, false, false, false), BackgroundTexture1 = Hud.Texture.Button2TextureBrown, BackgroundTexture2 = Hud.Texture.BackgroundTextureOrange, BackgroundTextureOpacity2 = 0.25f }; // Label Decorator for combined indicator CombinedSkeletonCountLabel = new TopLabelDecorator(Hud) { TextFont = Hud.Render.CreateFont("tahoma", 7, 255, 255, 240, 0, false, false, false), BackgroundTexture1 = Hud.Texture.Button2TextureBrown, BackgroundTexture2 = Hud.Texture.BackgroundTextureOrange, BackgroundTextureOpacity2 = 0.25f }; } public void PaintWorld(WorldLayer layer) { // Don't draw if not playing a Necromancer; don't draw if is in town //if (Hud.Game.Me.HeroClassDefinition.HeroClass != HeroClass.Necromancer || Hud.Game.IsInTown) return; var monsters = Hud.Game.AliveMonsters.Where(x => x.SnoMonster.Priority == MonsterPriority.boss); foreach (var monster in monsters) { // For Skeleton Melee, only when equipping the skill if (CommandSkeletonEnabled != null) { // Iterate all the game actors, find out and count which are skeleton melees summoned by player var CommandSkeletonActors = Hud.Game.Actors.Where(EachActor => CommandSkeletonActorSNOs.Contains(EachActor.SnoActor.Sno)); //&& // Find out which are skeleton melees actors //EachActor.SummonerAcdDynamicId == Hud.Game.Me.SummonerId); // Then find out if they are summoned by the player CommandSkeletonCount = CommandSkeletonActors.Count(); // And then count how many are found // Paint circle decorator under each skeleton melee foreach (var EachActor in CommandSkeletonActors) { var text = string.IsNullOrWhiteSpace(CommandSkeletonLabel) ? EachActor.SnoActor.NameLocalized : CommandSkeletonLabel; CommandSkeletonDecorator.Paint(layer, EachActor, EachActor.FloorCoordinate, text); } } else { CommandSkeletonCount = 0; } } foreach (var monster in monsters) { // For Skeleton Mages, only when equipping the skill if (SkeletonMageEnabled != null) { // Iterate all the game actors, find out and count which are skeleton mages summoned by player var SkeletonMageActors = Hud.Game.Actors.Where(EachActor => SkeletonMageActorSNOs.Contains(EachActor.SnoActor.Sno)); //&& // Find out which are skeleton mages actors //EachActor.SummonerAcdDynamicId == Hud.Game.Me.SummonerId); // Then find out if they are summoned by the player SkeletonMageCount = SkeletonMageActors.Count(); // And then count how many are found // Paint circle decorator under each skeleton melee foreach (var EachActor in SkeletonMageActors) { var text = string.IsNullOrWhiteSpace(SkeletonMageLabel) ? EachActor.SnoActor.NameLocalized : SkeletonMageLabel; SkeletonMageDecorator.Paint(layer, EachActor, EachActor.FloorCoordinate, text); } } else { SkeletonMageCount = 0; } } } public void PaintTopInGame(ClipState clipState) { // Don't draw if not playing a Necromancer; don't draw if is in town //if (Hud.Game.Me.HeroClassDefinition.HeroClass != HeroClass.Necromancer || Hud.Game.IsInTown) return; if (clipState != ClipState.BeforeClip) return; if (CombinedCountEnabled) { // Drawing for combined count indicator string CommandSkeletonCountText = (CommandSkeletonEnabled && CommandSkeletonCount != 0) ? CommandSkeletonCount.ToString() : ""; string SkeletonMageCountText = (SkeletonMageEnabled && SkeletonMageCount != 0) ? SkeletonMageCount.ToString() : ""; string ConcatText = (CommandSkeletonCountText != "" && SkeletonMageCountText != "") ? CommandSkeletonCountText + "+" + SkeletonMageCountText : CommandSkeletonCountText + SkeletonMageCountText; if (ConcatText != "") { CombinedSkeletonCountLabel.TextFunc = () => ConcatText.ToString(); CombinedSkeletonCountLabel.Paint(cmb_barX, cmb_barY, cmb_barW, cmb_barH, HorizontalAlign.Center); } } else { // Drawing for non-combined count indicator if (CommandSkeletonEnabled && CommandSkeletonCount != 0) { CommandSkeletonCountLabel.TextFunc = () => CommandSkeletonCount.ToString(); CommandSkeletonCountLabel.Paint(barX, barY, barW, barH, HorizontalAlign.Center); } if (SkeletonMageEnabled && SkeletonMageCount != 0) { SkeletonMageCountLabel.TextFunc = () => SkeletonMageCount.ToString(); SkeletonMageCountLabel.Paint(Hud.Window.Size.Width - barX - barW, barY, barW, barH, HorizontalAlign.Center); } } } } }