cedced30 1 Posted September 4, 2018 Share Posted September 4, 2018 Hi, i tried to get the distance between my target and the mobs around it to check if any of them is too close to charge in, the problem is, the bool always returns true and if i try to return the distance between my target and the mob close, it returns 0. Can anyone help pls? i got this so far: public int TotalMobsCloseToMyTarget; private bool IsRangedPullBetter() { List<WoWUnit> mobsAroundMe = ObjectManager.GetWoWUnitHostile(); foreach (WoWUnit unit in mobsAroundMe) { // nombre de mobs proches de ma target if (unit != null && (unit.Position.DistanceTo(ObjectManager.Me.TargetObject.Position) <= 7.0F && !unit.IsDead)) { DistanceEnemisProches = unit.Position.DistanceTo(ObjectManager.Me.TargetObject.Position); TotalMobsCloseToMyTarget++; return true; } } return false; } Link to comment https://wrobot.eu/forums/topic/10051-number-of-mobs-around-my-target-at-a-given-distance/ Share on other sites More sharing options...
Apexx 60 Posted September 15, 2018 Share Posted September 15, 2018 I am not sure if this works, as I have not tested it, but try and play around with this: private bool IsRangedPullBetter() { // Create a list var mobsAroundMe = new List<WoWUnit>(); // Check my target's surroundings for mobs that are valid, alive, attackable, and within // 7 yards of target and sort them in the list from closest to furthest from player's position if (ObjectManager.Me.HasTarget) { mobsAroundMe.AddRange(ObjectManager.GetObjectWoWUnit().Where(u => u != null && u.IsValid && u.IsAlive && u.IsAttackable && u.Position.DistanceTo(ObjectManager.Target.Position) <= 7.0f).OrderBy(n => ObjectManager.Me.Position.DistanceTo(n.Position))); } // Number of mobs within 7 yards of my target = mobsAroundMe.Count(); // I may want to use a pull spell if there are more than 2 mobs near my target if (mobsAroundMe.Count() > 2) { return true; } return false; } Link to comment https://wrobot.eu/forums/topic/10051-number-of-mobs-around-my-target-at-a-given-distance/#findComment-47461 Share on other sites More sharing options...
cedced30 1 Posted September 15, 2018 Author Share Posted September 15, 2018 thanks man :) I found my errors and corrected them in the meantime, here's the working version, i'm using it on my warrior class 1 -, it checks if you have a ranged weapon equiped and if the target is at good distance, if not, returns false. 2 -, If there is only 1 hostile (your target) : -if there is a neutral lvl1+ (not a critter) around your target, it checks if the neutral is closest to you or your target, if the neutral is closest to you, it returns false (no need for ranged pull), if the neutral is closest to your target, it returns true (you can ranged pulll your target). - If there are only critters around your target, it returns false, you can charge in, no danger. 3 if there are more than 1 hostile in a 25m radius, it will return true (ranged pull) I wrote this because my character would do stupid shit like spam cooldowns for 1 or 2 critters or even attack an hostile, then aoe and get aggro from nearby neutral mobs and get killed over and over (fellwood south is horrible for that matter).. private static bool IsRangedPullBetter() { if (ObjectManager.Me.GetEquipedItemBySlot(InventorySlot.INVSLOT_RANGED) == 0 && (ObjectManager.Target.GetDistance < 8 || ObjectManager.Target.GetDistance > 25)) return false; var mobsAroundMyTarget = ObjectManager.GetWoWUnitAttackables().Where(u => u.Position.DistanceTo(ObjectManager.Target.Position) <= 25 && u.IsAttackable); var hostilesAroundMyTarget = ObjectManager.GetWoWUnitHostile().Count(u => u.Position.DistanceTo(ObjectManager.Target.Position) <= 25 && u.IsAttackable); var neutralsAroundMyTarget = ObjectManager.GetWoWUnitAttackables().Count(u => u.Position.DistanceTo(ObjectManager.Target.Position) <= 15 && u.IsAttackable && IsNeutral(u) && u.Level >= 10); var crittersAroundMyTarget = ObjectManager.GetWoWUnitAttackables().Count(u => u.Position.DistanceTo(ObjectManager.Target.Position) <= 10 && u.IsAttackable && IsNeutral(u) && u.Level < 2); if (hostilesAroundMyTarget > 1) { return hostilesAroundMyTarget > 1; } if (crittersAroundMyTarget != 0 && neutralsAroundMyTarget == 0) { return false; } return neutralsAroundMyTarget >= 1 && mobsAroundMyTarget.All(unit => !(unit.Position.DistanceTo(ObjectManager.Me.Position) < ObjectManager.Target.Position.DistanceTo(unit.Position))); } Link to comment https://wrobot.eu/forums/topic/10051-number-of-mobs-around-my-target-at-a-given-distance/#findComment-47477 Share on other sites More sharing options...
Apexx 60 Posted September 15, 2018 Share Posted September 15, 2018 Nice job @cedced30! I am glad you were able to fix your problem! Glad to help! Great added feature as well. Link to comment https://wrobot.eu/forums/topic/10051-number-of-mobs-around-my-target-at-a-given-distance/#findComment-47483 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now