public static void OnCalc(EventArgs args) { if (_rangeEfeectMaster == null) { _rangeEfeectMaster = new LineHelpers(); } if (_debugLines == null) { _debugLines = new DebugLines(); } var tempTarget = TargetSelector.ClosestToMouse(Members.MyHero); if ((tempTarget == null && Target != null) || (tempTarget != null && Target != null && !tempTarget.Equals(Target))) { if (Target != null) { var i = 0; while (_debugLines.Dispose(Target)) { Printer.Print($"[Dispose]# {++i}"); } } if (_targetRange != null) { _targetRange.Dispose(); _targetRange = null; } } Target = tempTarget; if (Target == null) { return; } if (_targetRange == null) { if (DrawRange) { _targetRange = Target.AddParticleEffect("materials/ensage_ui/particles/range_display_mod.vpcf"); _targetRange.SetControlPoint(1, new Vector3(575, 255, 0)); _targetRange.SetControlPoint(2, new Vector3(75, 75, 75)); } } var trees = ObjectManager.GetEntities <Entity>() .Where(x => x.Name == "ent_dota_tree" && x.IsAlive && x.IsValid && x.Distance2D(Target.Position) < 575 && x.IsAlive).ToList(); var units = ObjectManager.GetEntities <Unit>() .Where( x => !Target.Equals(x) && x.Distance2D(Target.Position) < 575 && x.IsAlive && x.Team == Members.MyHero.GetEnemyTeam() && x.IsVisible).ToList(); //trees.AddRange(units); var list = new List <Vector3>(); foreach (var entity in trees) { var angle = (float)Math.Max( Math.Abs(Members.MyHero.FindAngleBetween(entity.Position, true) - Members.MyHero.FindAngleBetween(Target.Position, true)) - .21, 0); _rangeEfeectMaster.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); _debugLines.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); var ang = Target.FindAngleBetween(entity.Position, true); for (var i = 1; i < 16; i++) { var tempPos = Target.Position - new Vector3((float)(i * 50 * Math.Cos(ang)), (float)(i * 50 * Math.Sin(ang)), 0); if (NavMesh.GetCellFlags(tempPos) == NavMeshCellFlags.Walkable) { list.Add(tempPos); } } } foreach (var entity in units) { var angle = (float)Math.Max( Math.Abs(Members.MyHero.FindAngleBetween(entity.Position, true) - Members.MyHero.FindAngleBetween(Target.Position, true)) - .21, 0); _rangeEfeectMaster.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); _debugLines.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); var ang = Target.FindAngleBetween(entity.Position, true); for (var i = 1; i < 16; i++) { var tempPos = Target.Position - new Vector3((float)(i * 50 * Math.Cos(ang)), (float)(i * 50 * Math.Sin(ang)), 0); if (NavMesh.GetCellFlags(tempPos) == NavMeshCellFlags.Walkable) { list.Add(tempPos); } } } Members.BestPoinits = list; }
public static void OnCalc(EventArgs args) { if (_rangeEfeectMaster == null) _rangeEfeectMaster = new LineHelpers(); if (_debugLines == null) _debugLines = new DebugLines(); var tempTarget = TargetSelector.ClosestToMouse(Members.MyHero); if ((tempTarget == null && Target != null) || (tempTarget!=null && Target!=null && !tempTarget.Equals(Target))) { if (Target != null) { var i = 0; while (_debugLines.Dispose(Target)) { Printer.Print($"[Dispose]# {++i}"); } } if (_targetRange != null) { _targetRange.Dispose(); _targetRange = null; } } Target = tempTarget; if (Target==null) return; if (_targetRange == null) { if (DrawRange) { _targetRange = Target.AddParticleEffect("materials/ensage_ui/particles/range_display_mod.vpcf"); _targetRange.SetControlPoint(1, new Vector3(575, 255, 0)); _targetRange.SetControlPoint(2, new Vector3(75, 75, 75)); } } var trees = ObjectManager.GetEntities<Entity>() .Where(x => x.Name == "ent_dota_tree" && x.IsAlive && x.IsValid && x.Distance2D(Target.Position) < 575 && x.IsAlive).ToList(); var units = ObjectManager.GetEntities<Unit>() .Where( x => !Target.Equals(x) && x.Distance2D(Target.Position) < 575 && x.IsAlive && x.Team == Members.MyHero.GetEnemyTeam() && x.IsVisible).ToList(); //trees.AddRange(units); var list=new List<Vector3>(); foreach (var entity in trees) { var angle = (float)Math.Max( Math.Abs(Members.MyHero.FindAngleBetween(entity.Position, true) - Members.MyHero.FindAngleBetween(Target.Position, true)) - .21, 0); _rangeEfeectMaster.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); _debugLines.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); var ang = Target.FindAngleBetween(entity.Position, true); for (var i = 1; i < 16; i++) { var tempPos = Target.Position - new Vector3((float)(i * 50 * Math.Cos(ang)), (float)(i * 50 * Math.Sin(ang)), 0); if (NavMesh.GetCellFlags(tempPos) == NavMeshCellFlags.Walkable) list.Add(tempPos); } } foreach (var entity in units) { var angle = (float)Math.Max( Math.Abs(Members.MyHero.FindAngleBetween(entity.Position, true) - Members.MyHero.FindAngleBetween(Target.Position, true)) - .21, 0); _rangeEfeectMaster.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); _debugLines.DrawEffect(entity, "materials/ensage_ui/particles/line.vpcf", angle == 0); var ang = Target.FindAngleBetween(entity.Position, true); for (var i = 1; i < 16; i++) { var tempPos = Target.Position - new Vector3((float)(i * 50 * Math.Cos(ang)), (float)(i * 50 * Math.Sin(ang)), 0); if (NavMesh.GetCellFlags(tempPos) == NavMeshCellFlags.Walkable) list.Add(tempPos); } } Members.BestPoinits = list; }