private void OnCombo() { bool useQ = Menu["combo"]["useq"].Enabled; if (useQ) { var QHuman = GetBestEnemyHeroTargetInRange(QH.Range); var QCougar = GetBestEnemyHeroTargetInRange(QC.Range); switch (Menu["combo"]["qo"].As <MenuList>().Value) { case 0: if (QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && QHuman.IsValidTarget(QH.Range)) { QH.Cast(QHuman); } else if (QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && QCougar.IsValidTarget(QC.Range)) { QC.Cast(); } break; case 1: if (QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && QHuman.IsValidTarget(QH.Range)) { QH.Cast(QHuman); } break; case 2: if (QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && QCougar.IsValidTarget(QC.Range)) { QC.Cast(); } break; } } bool useW = Menu["combo"]["usew"].Enabled; if (useW) { var WHuman = GetBestEnemyHeroTargetInRange(WH.Range); var WCougar = GetBestEnemyHeroTargetInRange(WC.Range); switch (Menu["combo"]["wo"].As <MenuList>().Value) { case 0: if (WH.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Bushwhack" && WHuman.IsValidTarget(WH.Range)) { WH.Cast(WHuman); } else if (WC.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && WCougar.IsValidTarget(WC.Range)) { WC.Cast(WCougar); } break; case 1: if (WH.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Bushwhack" && WHuman.IsValidTarget(WH.Range)) { WH.Cast(WHuman); } break; case 2: if (WC.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && WCougar.IsValidTarget(WC.Range)) { WC.Cast(WCougar); } else if (WCL.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && WCougar.IsValidTarget(WCL.Range) && WCougar.HasBuff("NidaleePassiveHunted")) { WCL.Cast(WCougar); } break; } } bool useE = Menu["combo"]["usee"].Enabled; float hpe = Menu["combo"]["useeh"].As <MenuSlider>().Value; float manae = Menu["combo"]["useehm"].As <MenuSlider>().Value; if (useE) { var ECougar = GetBestEnemyHeroTargetInRange(EC.Range); switch (Menu["combo"]["eo"].As <MenuList>().Value) { case 0: if (EH.Ready && Player.SpellBook.GetSpell(SpellSlot.E).Name == "PrimalSurge" && Player.ManaPercent() >= manae && Player.HealthPercent() <= hpe) { EH.Cast(Player); } else if (EC.Ready && Player.SpellBook.GetSpell(SpellSlot.E).Name == "Swipe" && ECougar.IsValidTarget(EC.Range)) { EC.Cast(ECougar); } break; case 1: if (EH.Ready && Player.SpellBook.GetSpell(SpellSlot.E).Name == "PrimalSurge" && Player.ManaPercent() >= manae && Player.HealthPercent() <= hpe) { EH.Cast(Player); } break; case 2: if (EC.Ready && Player.SpellBook.GetSpell(SpellSlot.E).Name == "Swipe" && ECougar.IsValidTarget(EC.Range)) { EC.Cast(ECougar); } break; } } bool useR = Menu["combo"]["user"].Enabled; float rangeR = Menu["combo"]["userr"].As <MenuSlider>().Value; if (useR) { var RTarget = GetBestEnemyHeroTargetInRange(rangeR); switch (Menu["combo"]["ro"].As <MenuList>().Value) { case 0: if (R.Ready && !QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && RTarget.IsValidTarget(WC.Range)) { R.Cast(); } else if (R.Ready && !QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && RTarget.IsValidTarget(QH.Range)) { R.Cast(); } else if (R.Ready && !RTarget.IsValidTarget(WCL.Range) && Player.SpellBook.GetSpell(SpellSlot.Q).Name != "JavelinToss") { R.Cast(); } break; } } }
private void Jungle() { foreach (var jungle in GameObjects.Jungle.Where(m => m.IsValidTarget(QH.Range)).ToList()) { if (!jungle.IsValidTarget() || !jungle.IsValidSpellTarget()) { return; } float manapercent = Menu["jungleclear"]["manaj"].As <MenuSlider>().Value; if (Player.ManaPercent() >= manapercent) { bool useQ = Menu["jungleclear"]["usejq"].Enabled; if (useQ) { switch (Menu["jungleclear"]["qo"].As <MenuList>().Value) { case 0: if (QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && jungle.IsValidTarget(QH.Range)) { QH.Cast(jungle); } else if (QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && jungle.IsValidTarget(QC.Range)) { QC.Cast(); } break; case 1: if (QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && jungle.IsValidTarget(QH.Range)) { QH.Cast(jungle); } break; case 2: if (QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && jungle.IsValidTarget(QC.Range)) { QC.Cast(); } break; } } bool useW = Menu["jungleclear"]["usejw"].Enabled; if (useW) { switch (Menu["jungleclear"]["wo"].As <MenuList>().Value) { case 0: if (WH.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Bushwhack" && jungle.IsValidTarget(WH.Range)) { WH.Cast(jungle); } else if (WC.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && jungle.IsValidTarget(WC.Range)) { WC.Cast(jungle); } break; case 1: if (WH.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Bushwhack" && jungle.IsValidTarget(WH.Range)) { WH.Cast(jungle); } break; case 2: if (WC.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && jungle.IsValidTarget(WC.Range)) { WC.Cast(jungle); } else if (WCL.Ready && Player.SpellBook.GetSpell(SpellSlot.W).Name == "Pounce" && jungle.IsValidTarget(WCL.Range) && jungle.HasBuff("NidaleePassiveHunted")) { WCL.Cast(jungle); } break; } } bool useE = Menu["jungleclear"]["usejce"].Enabled; if (useE && Player.SpellBook.GetSpell(SpellSlot.E).Name == "Swipe" && EC.Ready && jungle.IsValidTarget(EC.Range)) { EC.Cast(jungle); } bool useR = Menu["jungleclear"]["usejr"].Enabled; if (useR) { switch (Menu["combo"]["ro"].As <MenuList>().Value) { case 0: if (R.Ready && !QH.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "JavelinToss" && jungle.IsValidTarget(QC.Range)) { R.Cast(); } else if (R.Ready && !QC.Ready && Player.SpellBook.GetSpell(SpellSlot.Q).Name == "Takedown" && jungle.IsValidTarget(QH.Range)) { R.Cast(); } else if (R.Ready && !jungle.IsValidTarget(WCL.Range) && Player.SpellBook.GetSpell(SpellSlot.Q).Name != "JavelinToss" || jungle == null) { R.Cast(); } break; } } } } }
/// <summary> /// Executes the algorithms on the data /// Results are written to a log /// </summary> /// <param name="Set">DataSet containing the RSS data</param> /// <param name="numberAnchors">The number of anchors that the dataset should contain</param> private void ExecuteAlgorithms(DataSet Set, int numberAnchors) { Console.WriteLine("Executing each algorithm on the data"); foreach (DataRow row in Set.Tables[0].Rows) { currentID = row["node"].ToString(); Node CurrentNode; //Positioning.Point pos = new Positioning.Point(0, 0); Point pos = new Point(0, 0); if (currentID == "11") { CurrentNode = BlindNodes.Find(BN => BN.WsnIdProperty == currentID); CurrentNode.UpdateAnchors(row["ANode"].ToString(), Convert.ToDouble(row["RSSI"].ToString()), 1, DateTime.Now); if (CurrentNode.Anchors.Count == numberAnchors) { logger.Write(row["idlocalization"].ToString() + ","); logger.Write(row["time"].ToString() + ","); logger.Write(currentID + ","); logger.Write(CurrentNode.Anchors.Count + ","); //centroid localization //logger.Write("CL,"); pos = CentroidLocalization.CalculatePosition(CurrentNode); LogPosition(pos, CurrentNode, logger); //wcl //logger.Write("WCL - NoFilter,"); pos = WCL.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter); LogPosition(pos, CurrentNode, logger); //min-max //logger.Write("Min-Max - NoFilter - Ranging,"); pos = MinMaxExtended.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.Ranging, false); LogPosition(pos, CurrentNode, logger); //logger.Write("Min-Max - NoFilter - DefaultRanging,"); pos = MinMaxExtended.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.DefaultRanging, false); LogPosition(pos, CurrentNode, logger); //trilateration //logger.Write("TriLat - NoFilter - Ranging,"); pos = ExtendedTrilateration.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.Ranging, false); LogPosition(pos, CurrentNode, logger); //logger.Write("TriLat - NoFilter - DefaultRanging,"); pos = ExtendedTrilateration.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.DefaultRanging, false); LogPosition(pos, CurrentNode, logger); //lstrilateration //logger.Write("LSTriLat - NoFilter - Ranging,"); pos = LSTrilateration.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.Ranging, false); LogPosition(pos, CurrentNode, logger); //logger.Write("LSTriLat - NoFilter - DefaultRanging,"); pos = LSTrilateration.CalculatePosition(CurrentNode, RangeBasedPositioning.NoFilter, RangeBasedPositioning.DefaultRanging, false); LogPosition(pos, CurrentNode, logger); } else if (CurrentNode.Anchors.Count > numberAnchors) { logger.WriteLine("Too many nodes for idlocalization:" + row["idlocalization"].ToString()); } logger.WriteLine(""); logger.Flush(); } //Performs calibratino else { if (!AnchorNodes.Exists(AN => AN.WsnIdProperty == currentID)) { AnchorNodes.Add(new Node(row["node"].ToString(), MyDb)); } CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); CurrentNode.UpdateAnchors(row["ANode"].ToString(), Convert.ToDouble(row["RSSI"].ToString()), 1, DateTime.Now); //CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); RangeBasedPositioning.CalibratePathlossLS(AnchorNodes, RangeBasedPositioning.NoFilter); } } }