public static int GetClosestTarget(Memory.Memory.ObjectInfo[] Objects, String Faction, int IsAlive, int Range, int Type) { double MinRange = 10000; int ClosestTargetIndex = 0; for (int i = 0; i < Objects.Length; i++) { if (WowControl.CheckForBad(Objects[i].GUID) == false) { if ((Objects[i].Type == Type) & (Objects[i].Faction == Faction) & (Objects[i].Health >= IsAlive) & (Objects[i].Level > 1)) { if (CheckPoint(Objects[i].X, Objects[i].Y, Objects[i].Z, Objects[0].X, Objects[0].Y, Objects[0].Z) < MinRange) { ClosestTargetIndex = i; MinRange = CheckPoint(Objects[i].X, Objects[i].Y, Objects[i].Z, Objects[0].X, Objects[0].Y, Objects[0].Z); } } } } if ((ClosestTargetIndex != 0) & (MinRange < Range)) { return(ClosestTargetIndex); } else { return(0); } }
public static UInt64 CheckAbilityOptions(int AbilityIndex, Memory.Memory wow, String Type) { for (int Unit = 0; Unit < wow.Objects.Count; Unit++) { if (Type != "Bg") { if ((WowControl.CheckForBad(wow.Objects[Unit].GUID) == false) & (wow.Objects[Unit].Health > 1)) { switch (BindingsList[AbilityIndex].InCombat) { case 0: //Always if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; case 1: //In combat if (wow.Objects[0].IsInCombat != 1) { break; } if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; case 2: //Out of combat if (wow.Objects[0].IsInCombat != 0) { break; } if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; } } } else { if ((WowControl.CheckForBad(wow.Objects[Unit].GUID) == false) & (wow.Objects[Unit].Health > 1) & (wow.Objects[Unit].Type == 4)) { switch (BindingsList[AbilityIndex].InCombat) { case 0: //Always if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; case 1: //In combat if (wow.Objects[0].IsInCombat != 1) { break; } if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; case 2: //Out of combat if (wow.Objects[0].IsInCombat != 0) { break; } if ((SubCheckAbilityOptions(AbilityIndex, wow, Type, Unit) == true) & (Prioritets[AbilityIndex, Unit].Prioritet != 0)) { return(wow.Objects[Unit].GUID); } break; } } } } return(0); }