Exemple #1
0
        public override void fromValueMap(Dictionary <string, string> vals)
        {
            int evaderCount  = Int32.Parse(vals[GameParamsValueNames.EVADERS_COUNT.key]);
            int pursuerCount = Int32.Parse(vals[GameParamsValueNames.PURSUERS_COUNT.key]);

            r_p = Int32.Parse(vals[GameParamsValueNames.PURSUERS_VELOCITY.key]);
            r_e = Int32.Parse(vals[GameParamsValueNames.EVADERS_TRANSMISSION_RANGE.key]);
            r_s = Int32.Parse(vals[GameParamsValueNames.EVADERS_SENSING_RANGE.key]);

            p_d = double.Parse(
                GameParamsValueNames.PURSUERS_DETECTION_PROB.tryRead(vals));


            canEvadersReceiveMultipleBroadcasts = (vals[GameParamsValueNames.EVADERS_CAN_RECEIVE_SIMULTENOUS_BROADCASTS.key] == "1");
            canSinksSensePursuers = (vals[GameParamsValueNames.SINKS_SENSE_PURSUERS.key] == "1");
            areSinksSafe          = (vals[GameParamsValueNames.SINKS_SAFE_POINTS.key] == "1");

            EvaderCircumferenceEntranceKillProb = float.Parse(GameParamsValueNames.EVADERS_CIRCUMFERENCE_ENTRY_KILL_PROB.tryRead(vals));

            R = ReflectionUtils.constructEmptyCtorType <ARewardFunction>(vals[GameParamsValueNames.REWARD_FUNCTION_NAME.key]);
            R.setArgs(vals[GameParamsValueNames.REWARD_FUNCTION_ARGS.key]);

            A_E = Evader.getAgents(evaderCount);
            A_P = Pursuer.getAgents(pursuerCount);
        }
Exemple #2
0
        public override void fromValueMap(Dictionary <string, string> vals)
        {
            // FIXME: instead of having multiple functions reading/writing into a value map, automate this


            int evaderCount  = Int32.Parse(vals[GameParamsValueNames.EVADERS_COUNT.key]);
            int pursuerCount = Int32.Parse(vals[GameParamsValueNames.PURSUERS_COUNT.key]);

            r_p = Int32.Parse(vals[GameParamsValueNames.PURSUERS_VELOCITY.key]);

            p_d = double.Parse(
                GameParamsValueNames.PURSUERS_DETECTION_PROB.tryRead(vals));

            canEliminate         = (1 == int.Parse(AdvRoutingGameParamsValueNames.CAN_PURSUERS_ELIMINATE.tryRead(vals)));
            sinkAlwaysDetectable = (1 == int.Parse(AdvRoutingGameParamsValueNames.SINK_ALWAYS_DETECTED.tryRead(vals)));
            accurateInterception = (1 == int.Parse(AdvRoutingGameParamsValueNames.CAN_SENSE_ACCURATE_LOCATION.tryRead(vals)));

            string rewardFuncName = GameParamsValueNames.REWARD_FUNCTION_NAME.tryRead(vals);

            R = ReflectionUtils.constructEmptyCtorType <ARewardFunction>(rewardFuncName);
            R.setArgs(GameParamsValueNames.REWARD_FUNCTION_ARGS.tryRead(vals));

            A_E = Evader.getAgents(evaderCount);
            A_P = Pursuer.getAgents(pursuerCount);

            singleSourceRouter          = "1" == AdvRoutingGameParamsValueNames.SINGLE_SOURCE.tryRead(vals);
            forceContinuousTransmission = "1" == AdvRoutingGameParamsValueNames.CONTINUOUS_ROUTERS.tryRead(vals);
        }
Exemple #3
0
 private static void Farm()
 {
     if (MainMenu["Farm"]["Q"] && Q.IsReady() && !Player.IsDashing() && (!HaveQ3 || MainMenu["Farm"]["Q3"]))
     {
         var minion =
             GameObjects.EnemyMinions.Where(
                 i =>
                 i.IsValidTarget((!HaveQ3 ? Q : Q2).Range - 25) && (!HaveQ3 ? Q : Q2).GetHealthPrediction(i) > 0 &&
                 (!HaveQ3 ? Q : Q2).GetHealthPrediction(i) <= GetQDmg(i)).MaxOrDefault(i => i.MaxHealth);
         if (minion != null && Common.Cast(!HaveQ3 ? Q : Q2, minion, true) == CastStates.SuccessfullyCasted)
         {
             return;
         }
     }
     if (MainMenu["Farm"]["E"] && E.IsReady())
     {
         var minion =
             GameObjects.EnemyMinions.Where(
                 i =>
                 i.IsValidTarget(E.Range) && CanCastE(i) && Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe &&
                 (!UnderTower(PosAfterE(i)) || MainMenu["Farm"]["ETower"]) && E.GetHealthPrediction(i) > 0 &&
                 E.GetHealthPrediction(i) <= GetEDmg(i)).MaxOrDefault(i => i.MaxHealth);
         if (minion != null)
         {
             E.CastOnUnit(minion);
         }
     }
 }
Exemple #4
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo", "Combo");
            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(true));


            harass = new Menu("Harass", "Harass");
            harass.AddItem(new MenuItem("HUSEQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("HUSEW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            laneclear = new Menu("LaneClear", "LaneClear");
            laneclear.AddItem(new MenuItem("LUSEW", "Use W").SetValue(true));
            laneclear.AddItem(new MenuItem("LMINW", "Min. Minions To W In Range").SetValue(new Slider(5, 2, 12)));
            laneclear.AddItem(new MenuItem("LMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            misc = new Menu("Misc", "Misc");
            misc.AddItem(new MenuItem("MAUTOQIMMO", "Auto Q Immobile Target").SetValue(true));
            misc.AddItem(new MenuItem("MANTIGAPR", "Anti Gap Closer With R").SetValue(false));

            m_evader         = new Evader(out evade, EvadeMethods.SpellShield);
            m_targetedEvader = new TargetedSpellEvader(TargetedSpell_Evade, misc);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(laneclear);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(misc);
            Config.AddToMainMenu();

            OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Combo]     += Combo;
            OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Mixed]     += Harass;
            OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LaneClear] += LaneClear;
        }
Exemple #5
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo", "Combo");
            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(false));
            combo.AddItem(new MenuItem("CUSERHIT", "Use R If Enemies >=").SetValue(new Slider(2, 2, 5)));

            harass = new Menu("Harass", "Harass");
            harass.AddItem(new MenuItem("HUSEQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("HUSEW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            misc = new Menu("Misc", "Misc");
            misc.AddItem(new MenuItem("MAUTOQ", "Auto Harass Q").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOQIMMO", "Auto Q Immobile Target").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOWIMMO", "Auto W Immobile Target").SetValue(true));

            m_evader = new Evader(out evade, EvadeMethods.SpellShield);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(misc);
            Config.AddToMainMenu();

            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Combo] += Combo;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Mixed] += Harass;
            base.BeforeOrbWalking += BeforeOrbwalk;
        }
Exemple #6
0
        public override void SetSpells()
        {
            Spells[Q] = new Spell(SpellSlot.Q, 260f);
            Spells[W] = new Spell(SpellSlot.W, 250f);
            Spells[E] = new Spell(SpellSlot.E, 270f);
            Spells[R] = new Spell(SpellSlot.R, 900f);
            Spells[R].SetSkillshot(0.25f, 225f, 1600f, false, SkillshotType.SkillshotCone);

            m_evader = new Evader(out evade, EvadeMethods.RivenE, Spells[E]);
            Config.AddSubMenu(evade);
        }
Exemple #7
0
        private static void TryToEvade(List <Skillshot> hitBy, Vector2 to)
        {
            var dangerLevel =
                hitBy.Select(
                    i =>
                    MainMenu["Evade"][i.SpellData.ChampionName.ToLowerInvariant()][i.SpellData.SpellName]["DangerLevel"]
                    .GetValue <MenuSlider>().Value).Concat(new[] { 0 }).Max();

            foreach (var evadeSpell in
                     EvadeSpellDatabase.Spells.Where(i => i.Enabled && i.DangerLevel <= dangerLevel && i.IsReady)
                     .OrderBy(i => i.DangerLevel))
            {
                if (evadeSpell.EvadeType == EvadeTypes.Dash && evadeSpell.CastType == CastTypes.Target)
                {
                    var targets =
                        Evader.GetEvadeTargets(evadeSpell)
                        .Where(
                            i =>
                            Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe &&
                            (!UnderTower(PosAfterE(i)) ||
                             MainMenu["Evade"]["Spells"][evadeSpell.Name]["ETower"].GetValue <MenuBool>().Value))
                        .ToList();
                    if (targets.Count > 0)
                    {
                        var closestTarget = targets.MinOrDefault(i => to.Distance(PosAfterE(i)));
                        Player.Spellbook.CastSpell(evadeSpell.Slot, closestTarget);
                        return;
                    }
                }
                if (evadeSpell.EvadeType == EvadeTypes.WindWall)
                {
                    var skillshots =
                        Evade.DetectedSkillshots.Where(
                            i =>
                            i.Enabled && i.SpellData.CollisionObjects.Contains(CollisionObjectTypes.YasuoWall) &&
                            i.IsAboutToHit(
                                150 + evadeSpell.Delay
                                - MainMenu["Evade"]["Spells"][evadeSpell.Name]["WDelay"].GetValue <MenuSlider>().Value,
                                Player)).ToList();
                    if (skillshots.Count > 0)
                    {
                        var dangerousSkillshot =
                            skillshots.MaxOrDefault(
                                i =>
                                MainMenu["Evade"][i.SpellData.ChampionName.ToLowerInvariant()][i.SpellData.SpellName][
                                    "DangerLevel"].GetValue <MenuSlider>().Value);
                        Player.Spellbook.CastSpell(
                            evadeSpell.Slot,
                            Player.ServerPosition.Extend(dangerousSkillshot.Start, 100));
                    }
                }
            }
        }
Exemple #8
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo", "Combo");
            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(true));
            //
            ult = new Menu("R Settings (BETA)", "rsetting");
            ult.AddItem(new MenuItem("CUSER", "Use R").SetValue(true));
            ult.AddItem(new MenuItem("CUSERHIT", "If Can Hit Enemies Count >=").SetValue(new Slider(3, 2, 5)));
            ult.AddItem(new MenuItem("CUSERHP", "If Target HP Percent <=").SetValue(new Slider(30, 1, 100)));
            ult.AddItem(new MenuItem("CUSEHPHIT", "Use Both ^ (x enemies with less than y% hp)").SetValue(true));
            ult.AddItem(new MenuItem("CUSERRANGE", "Don't Use R If Enemy Count >= 2 In Range: ").SetValue(new Slider(600, 1, 2500)));
            ult.AddItem(new MenuItem("CRHITCHANCE", "Hit Chance").SetValue <StringList>(new StringList(ShineCommon.Utility.HitchanceNameArray, 2)));
            //
            combo.AddSubMenu(ult);

            harass = new Menu("Harass", "Harass");
            harass.AddItem(new MenuItem("HUSEQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("HUSEW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            laneclear = new Menu("LaneClear", "LaneClear");
            laneclear.AddItem(new MenuItem("LUSEQ", "Use Q").SetValue(true));
            laneclear.AddItem(new MenuItem("LMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            misc = new Menu("Misc", "Misc");
            misc.AddItem(new MenuItem("MLASTQ", "Last Hit Q").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOQ", "Auto Harass Q").SetValue(true));
            misc.AddItem(new MenuItem("MUSER", "Use R If Killable").SetValue(false));
            CustomizableAntiGapcloser.AddToMenu(misc.SubMenu("Customizable Antigapcloser"));
            misc.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("CUSTOMANTIGAPE", "Use E for Anti-Gapcloser").SetValue(true));
            misc.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("CUSTOMANTIGAPEMETHOD", "Use E for Anti-Gapcloser").SetValue(new StringList(new[] { "Side", "Far from enemy" })));
            CustomizableAntiGapcloser.OnEnemyCustomGapcloser += OnEnemyCustomGapcloser;

            m_evader = new Evader(out evade, EvadeMethods.Blink);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(laneclear);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(misc);
            Config.AddToMainMenu();

            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Combo]     += Combo;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Mixed]     += Harass;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LaneClear] += LaneClear;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LastHit]   += LastHit;
            base.BeforeOrbWalking += BeforeOrbwalk;
        }
Exemple #9
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo", "Combo");
            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(true));
            //
            ult = new Menu("R Settings", "rsetting");
            ult.AddItem(new MenuItem("CUSER", "Use R").SetValue(true));
            ult.AddItem(new MenuItem("CUSERHIT", "If Can Hit Enemies Count >=").SetValue(new Slider(3, 2, 5)));
            ult.AddItem(new MenuItem("CUSERHP", "If Target HP Percent <=").SetValue(new Slider(30, 1, 100)));
            ult.AddItem(new MenuItem("CUSERRANGE", "Don't Use R If Enemy Count >= 2 In Range: ").SetValue(new Slider(600, 1, 2500)));
            ult.AddItem(new MenuItem("CRHITCHANCE", "Hit Chance").SetValue <StringList>(new StringList(ShineCommon.Utility.HitchanceNameArray, 2)));
            //
            combo.AddSubMenu(ult);

            harass = new Menu("Harass", "Harass");
            harass.AddItem(new MenuItem("HUSEQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("HUSEW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            laneclear = new Menu("LaneClear", "LaneClear");
            laneclear.AddItem(new MenuItem("LUSEQ", "Use Q").SetValue(true));
            laneclear.AddItem(new MenuItem("LMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            misc = new Menu("Misc", "Misc");
            misc.AddItem(new MenuItem("MLASTQ", "Last Hit Q").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOQ", "Auto Harass Q").SetValue(new KeyBind('T', KeyBindType.Toggle)));
            misc.AddItem(new MenuItem("MUSER", "Use R If Killable").SetValue(false));
            misc.AddItem(new MenuItem("MJUNGLER", "Dragon/Baron Steal With R").SetValue(true));

            m_evader = new Evader(out evade, EvadeMethods.EzrealE);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(laneclear);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(misc);
            Config.AddToMainMenu();

            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Combo]     += Combo;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Mixed]     += Harass;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LaneClear] += LaneClear;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LastHit]   += LastHit;
            base.BeforeOrbWalking += BeforeOrbwalk;
        }
Exemple #10
0
        private static Obj_AI_Base GetNearObj(Obj_AI_Base target = null, bool inQCir = false)
        {
            var pos = target != null
                          ? Prediction.GetPrediction(target, E.Delay, 0, E.Speed).UnitPosition
                          : Game.CursorPos;

            var obj = new List <Obj_AI_Base>();

            obj.AddRange(GameObjects.EnemyHeroes.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            obj.AddRange(GameObjects.EnemyMinions.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            obj.AddRange(GameObjects.Jungle.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            return
                (obj.Where(
                     i =>
                     PosAfterE(i).Distance(pos) < (inQCir ? QCirWidth : Player.Distance(pos)) &&
                     Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe)
                 .MinOrDefault(i => PosAfterE(i).Distance(pos)));
        }
Exemple #11
0
        private static void OnUpdateEvade(EventArgs args)
        {
            if (Player.IsDead || !MainMenu["Evade"]["Enabled"].GetValue <MenuKeyBind>().Active)
            {
                return;
            }
            if (Player.HasBuffOfType(BuffType.SpellShield) || Player.HasBuffOfType(BuffType.SpellImmunity))
            {
                return;
            }
            var safePoint = Evader.IsSafePoint(Player.ServerPosition.ToVector2());
            var safePath  = Evader.IsSafePath(Player.GetWaypoints(), 100);

            if (!safePath.IsSafe && !safePoint.IsSafe)
            {
                TryToEvade(safePoint.SkillshotList, Game.CursorPos.ToVector2());
            }
        }
Exemple #12
0
        /// <summary>
        /// makes sure the active param object matches the GUI
        /// </summary>
        private void setParamData()
        {
            //param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked;
            //param.canSinksSensePursuers = chkSinksSensePursuers.Checked;
            //param.areSinksSafe = chkSafeSinks.Checked;

            int psi;

            if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi))
            {
                param.A_P = Pursuer.getAgents(psi);
            }

            int evaderCount;

            if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount))
            {
                param.A_E = Evader.getAgents(evaderCount);
            }

            int res;

            if (tryParseTextBox(txtres, lblrs, out res))
            {
                param.r_e = res;
            }

            float fe;

            if (tryParseTextBox(txtRenewal, lblREnewal, out fe))
            {
                param.f_e = fe;
            }

            float dp;

            if (tryParseTextBox(txtDetectionProb, lblDetectionProb, out dp))
            {
                param.detectionProbRestraint = dp;
            }
        }
        public SquareGame(int m, int u, int a, double scale, Evader E)
        {
            this.M = m;
            this.U = u;
            this.A = a;

            this.evader = E;

            int    persuersSetCount = m;
            Random randonNumber     = new Random();

            // начальные положения преследователей
            for (int persuersSet = 1; persuersSet <= persuersSetCount; persuersSet++)
            {
                for (int persuerNumber = 0; persuerNumber < 4; persuerNumber++)
                {
                    int    r1          = randonNumber.Next(-(int)scale, (int)scale);
                    int    r2          = randonNumber.Next(-(int)scale, (int)scale);
                    double coord1      = Math.Pow(-1, persuerNumber / 2) * scale * persuersSet + r1 /*- scale*/;
                    double coord2      = Math.Pow(-1, (persuerNumber + 1) % 3) * scale * persuersSet + r2 /*- scale*/;
                    Vector coordinates = new Vector(coord1, coord2);
                    double Z1          = coord1 - E.coordinates.X;
                    double Z2          = coord2 - E.coordinates.Y;
                    Vector Z           = new Vector(Z1, Z2);
                    pursuers.Add(new Pursuer(coordinates, Z, false));
                }
            }

            /* for (int i = 1; i <= m; i++) // начальные положения преследователей
             * {
             *   double coord1 = scale * i;
             *   double coord2 = scale * i;
             *   double Z1 = coord1 - E.coordinates.X;
             *   double Z2 = coord2 - E.coordinates.Y;
             *   pursuers.Add(new Pursuer(coord1, coord2, Z1, Z2, false));
             * }
             *
             * for (int i = m + 1; i <= 2 * m; i++)
             * {
             *   double coord1 = scale * i;
             *   double coord2 = -scale * i;
             *   double Z1 = coord1 - E.coordinates.X;
             *   double Z2 = coord2 - E.coordinates.Y;
             *   pursuers.Add(new Pursuer(coord1, coord2, Z1, Z2, false));
             * }
             *
             * for (int i = 2 * m + 1; i <= 3 * m; i++)
             * {
             *   double coord1 = -scale * i;
             *   double coord2 = scale * i;
             *   double Z1 = coord1 - E.coordinates.X;
             *   double Z2 = coord2 - E.coordinates.Y;
             *   pursuers.Add(new Pursuer(coord1, coord2, Z1, Z2, false));
             * }
             *
             * for (int i = 3 * m + 1; i <= 4 * m; i++)
             * {
             *   double coord1 = -scale * i;
             *   double coord2 = -scale * i;
             *   double Z1 = coord1 - E.coordinates.X;
             *   double Z2 = coord2 - E.coordinates.Y;
             *   pursuers.Add(new Pursuer(coord1, coord2, Z1, Z2, false));
             * }*/
        }
Exemple #14
0
        public static List <Vector2> PathFind(Vector2 start, Vector2 end)
        {
            var result = new List <Vector2>();

            try
            {
                var innerPolygonList = new List <Geometry.Polygon>();
                var outerPolygonList = new List <Geometry.Polygon>();

                foreach (var skillshot in Program.DetectedSkillshots)
                {
                    if (skillshot.Evade())
                    {
                        innerPolygonList.Add(skillshot.PathFindingInnerPolygon);
                        outerPolygonList.Add(skillshot.PathFindingPolygon);
                    }
                }

                var innerPolygons = Geometry.ClipPolygons(innerPolygonList).ToPolygons();
                var outerPolygons = Geometry.ClipPolygons(outerPolygonList).ToPolygons();


                if (outerPolygons.Aggregate(false, (current, poly) => current || !poly.IsOutside(end)))
                {
                    end = Evader.GetClosestOutsidePoint(end, outerPolygons);
                }

                if (outerPolygons.Aggregate(false, (current, poly) => current || !poly.IsOutside(start)))
                {
                    start = Evader.GetClosestOutsidePoint(start, outerPolygons);
                }

                if (Utils.CanReach(start, end, innerPolygons, true))
                {
                    return(new List <Vector2> {
                        start, end
                    });
                }

                outerPolygons.Add(new Geometry.Polygon {
                    Points = new List <Vector2> {
                        start, end
                    }
                });

                var nodes = new List <Node>();

                foreach (var pol in outerPolygons)
                {
                    for (int i = 0; i < pol.Points.Count; i++)
                    {
                        if (pol.Points.Count == 2 || !Utils.IsVertexConcave(pol.Points, i))
                        {
                            var node = nodes.FirstOrDefault(node1 => node1.Point == pol.Points[i]);
                            if (node == null)
                            {
                                node = new Node(pol.Points[i]);
                            }

                            nodes.Add(node);
                            foreach (var polygon in outerPolygons)
                            {
                                foreach (var point in polygon.Points)
                                {
                                    if (Utils.CanReach(pol.Points[i], point, innerPolygons, true))
                                    {
                                        var nodeToAdd = nodes.FirstOrDefault(node1 => node1.Point == point);
                                        if (nodeToAdd == null)
                                        {
                                            nodeToAdd = new Node(point);
                                        }
                                        nodes.Add(nodeToAdd);
                                        node.Neightbours.Add(nodeToAdd);
                                    }
                                }
                            }
                        }
                    }
                }

                var startNode = nodes.FirstOrDefault(n => n.Point == start);
                var endNode   = nodes.FirstOrDefault(n => n.Point == end);

                if (endNode == null)
                {
                    return(result);
                }

                Func <Node, Node, double> distance = (node1, node2) => node1.Point.LSDistance(node2.Point);
                Func <Node, double>       estimate = t => t.Point.LSDistance(endNode.Point);

                var foundPath = FindPath(startNode, endNode, distance, estimate);

                if (foundPath == null)
                {
                    return(result);
                }

                result.AddRange(foundPath.Select(node => node.Point));
                result.Reverse();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            return(result);
        }
Exemple #15
0
        public Champion(string szChampName, string szMenuName, bool enableRangeDrawings = true, bool enableEvader = true)
        {
            Text = new Font(Drawing.Direct3DDevice,
                            new FontDescription
            {
                FaceName        = "Malgun Gothic",
                Height          = 15,
                OutputPrecision = FontPrecision.Default,
                Quality         = FontQuality.ClearTypeNatural
            });

            ConfigMenu = new Menu(szMenuName, szChampName, true);

            TargetSelector.Initialize(ConfigMenu);
            Orbwalker = new Orbwalking.Orbwalker(ConfigMenu);

            SetSpells();

            DrawingMenu = new Menu("Drawings", "drawings");
            if (enableRangeDrawings)
            {
                if (this.Spells[0] != null && this.Spells[0].Range > 0)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWQ", "Draw Q").SetValue(new Circle(true, Color.Red, this.Spells[0].Range)));
                }

                if (this.Spells[1] != null && this.Spells[1].Range > 0)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWW", "Draw W").SetValue(new Circle(true, Color.Aqua, this.Spells[1].Range)));
                }

                if (this.Spells[2] != null && this.Spells[2].Range > 0)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWE", "Draw E").SetValue(new Circle(true, Color.Bisque, this.Spells[2].Range)));
                }

                if (this.Spells[3] != null && this.Spells[3].Range > 0 && this.Spells[3].Range < 3000) //global ult ?
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWR", "Draw R").SetValue(new Circle(true, Color.Chartreuse, this.Spells[3].Range)));
                }
            }
            ConfigMenu.AddSubMenu(DrawingMenu);

            if (enableEvader)
            {
                Menu   evaderMenu = null;
                Evader evader;
                switch (szChampName.ToLower())
                {
                case "ezreal":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Blink, Spells[E]);
                    break;

                case "sivir":
                case "morgana":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[E]);
                    break;

                case "fizz":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]);
                    break;

                case "lissandra":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[R]);
                    break;

                case "nocturne":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[W]);
                    break;

                case "vladimir":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[W]);
                    break;

                case "graves":
                case "gnar":
                case "lucian":
                case "riven":
                case "shen":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]);
                    break;

                case "zed":
                case "leblanc":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[W]);
                    break;

                case "vayne":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[Q]);
                    break;
                }
                if (evaderMenu != null)
                {
                    ConfigMenu.AddSubMenu(evaderMenu);
                }
            }
            CreateConfigMenu();

            #region Events
            Game.OnUpdate  += this.Game_OnUpdate;
            Drawing.OnDraw += this.Drawing_OnDraw;
            Orbwalking.Events.BeforeAttack     += this.Orbwalking_BeforeAttack;
            Orbwalking.Events.AfterAttack      += this.Orbwalking_AfterAttack;
            AntiGapcloser.OnEnemyGapcloser     += this.AntiGapcloser_OnEnemyGapcloser;
            Interrupter2.OnInterruptableTarget += this.Interrupter_OnPossibleToInterrupt;
            Obj_AI_Base.OnBuffAdd          += this.Obj_AI_Base_OnBuffAdd;
            Obj_AI_Base.OnProcessSpellCast += this.Obj_AI_Base_OnProcessSpellCast;
            CustomEvents.Unit.OnDash       += Unit_OnDash;
            #endregion

            Prediction.Prediction.Initialize(ConfigMenu);
        }
        public TriangleGame(int m, int u, int a, double scale, Evader E)
        {
            this.M = m;
            this.U = u;
            this.A = a;

            this.evader = E;
            Random md = new Random();

            // начальные положения преследователей
            int persuersSetCount = m;

            for (int persuersSet = 1; persuersSet <= persuersSetCount; persuersSet++)
            {
                // for (int persuerNumber = 0; persuerNumber < 3; persuerNumber++)
                // {
                int    r1          = md.Next(1, (int)scale / 2);
                int    r2          = md.Next(1, (int)scale / 2);
                double coord1      = r1;
                double coord2      = scale * persuersSet + r2;
                Vector coordinates = new Vector(coord1, coord2);
                double Z1          = coord1 - E.coordinates.X;
                double Z2          = coord2 - E.coordinates.Y;
                Vector Z           = new Vector(Z1, Z2);
                pursuers.Add(new Pursuer(coordinates, Z, false));

                r1          = md.Next(1, (int)scale / 2);
                r2          = md.Next(1, (int)scale / 2);
                coord1      = scale * persuersSet + r1;
                coord2      = -scale * persuersSet + r2;
                coordinates = new Vector(coord1, coord2);
                Z1          = coord1 - E.coordinates.X;
                Z2          = coord2 - E.coordinates.Y;
                Z           = new Vector(Z1, Z2);
                pursuers.Add(new Pursuer(coordinates, Z, false));

                r1          = md.Next(1, (int)scale / 2);
                r2          = md.Next(1, (int)scale / 2);
                coord1      = -scale * persuersSet + r1;
                coord2      = -scale * persuersSet + r2;
                coordinates = new Vector(coord1, coord2);
                Z1          = coord1 - E.coordinates.X;
                Z2          = coord2 - E.coordinates.Y;
                Z           = new Vector(Z1, Z2);
                pursuers.Add(new Pursuer(coordinates, Z, false));
                // }
            }

            /*  for (int i = 1; i <= m; i++) // начальные положения преследователей
             * {
             *    double coord1 = 0;
             *    double coord2 = scale * i;
             *    Vector coordinates = new Vector(coord1, coord2);
             *    double Z1 = coord1 - E.coordinates.X;
             *    double Z2 = coord2 - E.coordinates.Y;
             *    Vector Z = new Vector(Z1, Z2);
             *    pursuers.Add(new Pursuer(coordinates, Z, false));
             * }
             *
             * for (int i = m + 1; i <= 2 * m; i++)
             * {
             *    double coord1 = scale * i;
             *    double coord2 = -scale * i;
             *    Vector coordinates = new Vector(coord1, coord2);
             *    double Z1 = coord1 - E.coordinates.X;
             *    double Z2 = coord2 - E.coordinates.Y;
             *    Vector Z = new Vector(Z1, Z2);
             *    pursuers.Add(new Pursuer(coordinates, Z, false));
             *
             * }
             *
             * for (int i = 2 * m + 1; i <= 3 * m; i++)
             * {
             *    double coord1 = -scale * i;
             *    double coord2 = -scale * i;
             *    Vector coordinates = new Vector(coord1, coord2);
             *    double Z1 = coord1 - E.coordinates.X;
             *    double Z2 = coord2 - E.coordinates.Y;
             *    Vector Z = new Vector(Z1, Z2);
             *    pursuers.Add(new Pursuer(coordinates, Z, false));
             *
             * }*/
        }
Exemple #17
0
        public Jhin()
        {
            foreach (var enemy in EntityManager.Heroes.Enemies)
            {
                TextsInScreen.Add(enemy.NetworkId, new Text(enemy.ChampionName + " 可击杀", new Font("Arial", 30F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
                TextsInHeroPosition.Add(enemy.NetworkId, new Text("R 可击杀", new Font("Arial", 23F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
                LastPredictedPositionText.Add(enemy.NetworkId, new Text(enemy.ChampionName + " 最后预知位置", new Font("Arial", 23F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
            }
            Q = new SpellBase(SpellSlot.Q, SpellType.Targeted, 600)
            {
                Width     = 450,
                Speed     = 1800,
                CastDelay = 250,
            };
            W = new SpellBase(SpellSlot.W, SpellType.Linear, 2500)
            {
                Width                 = 40,
                CastDelay             = 750,
                AllowedCollisionCount = -1,
            };
            E = new SpellBase(SpellSlot.E, SpellType.Circular, 750)
            {
                Width     = 135,
                CastDelay = 250,
                Speed     = 1600,
            };
            R = new SpellBase(SpellSlot.R, SpellType.Linear, 3500)
            {
                Width                 = 80,
                CastDelay             = 200,
                Speed                 = 5000,
                AllowedCollisionCount = -1,
            };
            Evader.OnEvader += delegate
            {
                if (EvaderMenu.CheckBox("BlockW"))
                {
                    LastBlockTick = Core.GameTickCount;
                }
            };

            Spellbook.OnCastSpell += delegate(Spellbook sender, SpellbookCastSpellEventArgs args)
            {
                if (sender.Owner.IsMe)
                {
                    if (args.Slot == SpellSlot.W)
                    {
                        args.Process = Core.GameTickCount - LastBlockTick > 750;
                    }
                }
            };
            Obj_AI_Base.OnProcessSpellCast += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
            {
                if (sender.IsMe)
                {
                    switch (args.Slot)
                    {
                    case SpellSlot.W:
                        W.LastCastTime    = Core.GameTickCount;
                        W.LastEndPosition = args.End;
                        break;

                    case SpellSlot.R:
                        if (args.SData.Name == "JhinR")
                        {
                            IsCastingR = true;
                            LastRCone  = new Geometry.Polygon.Sector(sender.Position, args.End, (float)(60f * Math.PI / 180f), R.Range);
                            Stacks     = 4;
                        }
                        else if (args.SData.Name == "JhinRShot")
                        {
                            R.LastCastTime = Core.GameTickCount;
                            TapKeyPressed  = false;
                            Stacks--;
                        }
                        break;
                    }
                }
            };
            Gapcloser.OnGapcloser += delegate(AIHeroClient sender, Gapcloser.GapcloserEventArgs args)
            {
                if (sender.IsValidTarget() && sender.IsEnemy)
                {
                    if (MyHero.Distance(args.Start, true) > MyHero.Distance(args.End))
                    {
                        if (AutomaticMenu.CheckBox("E.Gapcloser") && MyHero.IsInRange(args.End, E.Range))
                        {
                            E.Cast(args.End);
                        }
                        if (MyHero.Distance(args.End, true) < (sender.GetAutoAttackRange(MyHero) * 1.5f).Pow())
                        {
                            WShouldWaitTick = Core.GameTickCount;
                        }
                    }
                }
            };

            MenuManager.AddSubMenu("Keys");
            {
                KeysMenu.AddValue("TapKey", new KeyBind("R 半自动发射", false, KeyBind.BindTypes.HoldActive, 32)).OnValueChange +=
                    delegate(ValueBase <bool> sender, ValueBase <bool> .ValueChangeArgs args)
                {
                    if (args.NewValue && R.IsLearned && IsCastingR)
                    {
                        TapKeyPressed = true;
                    }
                };
                ToggleManager.RegisterToggle(
                    KeysMenu.AddValue("AutoW",
                                      new KeyBind("自动W开关", true, KeyBind.BindTypes.PressToggle, 'K')),
                    delegate
                {
                    foreach (var enemy in UnitManager.ValidEnemyHeroes.Where(TargetHaveEBuff))
                    {
                        if (MyHero.ManaPercent >= MiscMenu.Slider("W.ManaPercent"))
                        {
                            if (MiscMenu.CheckBox("自动W." + enemy.ChampionName))
                            {
                                CastW(enemy);
                            }
                        }
                    }
                });
            }

            W.AddConfigurableHitChancePercent();
            R.AddConfigurableHitChancePercent();

            MenuManager.AddSubMenu("Combo");
            {
                ComboMenu.AddValue("Q", new CheckBox("Use Q"));
                ComboMenu.AddValue("E", new CheckBox("Use E"));
                ComboMenu.AddValue("Items", new CheckBox("Use offensive items"));
                ComboMenu.AddStringList("W", "Use W", new[] { "Never", "Only buffed enemies", "Always" }, 2);
            }
            MenuManager.AddSubMenu("Ultimate");
            {
                UltimateMenu.AddStringList("Mode", "R 瞄准模式", new[] { "不使用", "使用扳机键", "自动" }, 2);
                UltimateMenu.AddValue("OnlyKillable", new CheckBox("只攻击可击杀目标"));
                UltimateMenu.AddValue("Delay", new Slider("R之间的延迟(毫秒)", 0, 0, 1500));
                UltimateMenu.AddValue("NearMouse", new GroupLabel("鼠标附近设置"));
                UltimateMenu.AddValue("NearMouse.Enabled", new CheckBox("只选择鼠标附近目标", false));
                UltimateMenu.AddValue("NearMouse.Radius", new Slider("靠近鼠标半径", 500, 100, 1500));
                UltimateMenu.AddValue("NearMouse.Draw", new CheckBox("显示鼠标半径"));
            }
            MenuManager.AddSubMenu("Harass");
            {
                HarassMenu.AddValue("Q", new CheckBox("Use Q"));
                HarassMenu.AddValue("W", new CheckBox("Use W", false));
                HarassMenu.AddValue("E", new CheckBox("Use E", false));
                HarassMenu.AddValue("ManaPercent", new Slider("Minimum Mana Percent", 20));
            }

            MenuManager.AddSubMenu("Clear");
            {
                ClearMenu.AddValue("LaneClear", new GroupLabel("LaneClear"));
                {
                    ClearMenu.AddValue("LaneClear.Q", new Slider("Use Q if hit is greater than {0}", 3, 0, 10));
                    ClearMenu.AddValue("LaneClear.W", new Slider("Use W if hit is greater than {0}", 5, 0, 10));
                    ClearMenu.AddValue("LaneClear.E", new Slider("Use E if hit is greater than {0}", 4, 0, 10));
                    ClearMenu.AddValue("LaneClear.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("LastHit", new GroupLabel("LastHit"));
                {
                    ClearMenu.AddStringList("LastHit.Q", "Use Q", new[] { "Never", "Smartly", "Always" }, 1);
                    ClearMenu.AddValue("LastHit.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("JungleClear", new GroupLabel("JungleClear"));
                {
                    ClearMenu.AddValue("JungleClear.Q", new CheckBox("Use Q"));
                    ClearMenu.AddValue("JungleClear.W", new CheckBox("Use W"));
                    ClearMenu.AddValue("JungleClear.E", new CheckBox("Use E"));
                    ClearMenu.AddValue("JungleClear.ManaPercent", new Slider("Minimum Mana Percent", 20));
                }
            }

            MenuManager.AddKillStealMenu();
            {
                KillStealMenu.AddValue("Q", new CheckBox("Use Q"));
                KillStealMenu.AddValue("W", new CheckBox("Use W"));
                KillStealMenu.AddValue("E", new CheckBox("Use E"));
                KillStealMenu.AddValue("R", new CheckBox("Use R"));
            }

            MenuManager.AddSubMenu("Automatic");
            {
                AutomaticMenu.AddValue("E.Gapcloser", new CheckBox("Use E on hero gapclosing / dashing"));
                AutomaticMenu.AddValue("Immobile", new CheckBox("对无法移动目标使用E"));
            }
            MenuManager.AddSubMenu("Evader");
            {
                EvaderMenu.AddValue("BlockW", new CheckBox("保留W进行躲避"));
            }
            Evader.Initialize();
            Evader.AddCrowdControlSpells();
            Evader.AddDangerousSpells();
            MenuManager.AddSubMenu("Misc");
            {
                MiscMenu.AddValue("W.ManaPercent", new Slider("最低蓝量百分比使用自动W", 10));
                MiscMenu.AddValue("Champions", new GroupLabel("自动使用W英雄"));
                foreach (var enemy in EntityManager.Heroes.Enemies)
                {
                    MiscMenu.AddValue("自动W." + enemy.ChampionName, new CheckBox(enemy.ChampionName));
                }
            }
            MenuManager.AddDrawingsMenu();
            {
                Q.AddDrawings(false);
                W.AddDrawings();
                E.AddDrawings(false);
                R.AddDrawings();
                DrawingsMenu.AddValue("Toggles", new CheckBox("Draw toggles status"));
                DrawingsMenu.AddValue("R.Killable", new CheckBox("显示可被R击杀的目标"));
                DrawingsMenu.AddValue("R.LastPredictedPosition", new CheckBox("显示预判敌人最后出现位置"));
            }
        }
Exemple #18
0
        /// <summary>
        /// Champion constructor
        /// </summary>
        /// <param name="szChampName">The champion name.</param>
        /// <param name="szMenuName">The menu name.</param>
        /// <param name="enableRangeDrawings">if <c>true</c>, enables the spell range drawings</param>
        /// <param name="enableEvader">if <c>true</c>, enables the spell evader if the champion is supported</param>
        public Champion(string szChampName, string szMenuName, bool enableRangeDrawings = true, bool enableEvader = true)
        {
            Text = new Font(Drawing.Direct3DDevice,
                            new FontDescription
            {
                FaceName        = "Malgun Gothic",
                Height          = 15,
                OutputPrecision = FontPrecision.Default,
                Quality         = FontQuality.ClearTypeNatural
            });

            ConfigMenu = new Menu(szMenuName, String.Format("SAutoCarry.{0}.Root", szChampName), true);

            TargetSelector.Initialize(ConfigMenu);
            Orbwalker = new Orbwalking.Orbwalker(ConfigMenu);

            SetSpells();

            DrawingMenu = new Menu("Drawings", "drawings");
            if (enableRangeDrawings)
            {
                if (this.Spells[Q] != null && this.Spells[0].Range > 0 && this.Spells[Q].Range < 3000)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWQ", "Draw Q").SetValue(new Circle(true, Color.Red, this.Spells[Q].Range)));
                }

                if (this.Spells[W] != null && this.Spells[1].Range > 0 && this.Spells[W].Range < 3000)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWW", "Draw W").SetValue(new Circle(true, Color.Aqua, this.Spells[W].Range)));
                }

                if (this.Spells[E] != null && this.Spells[2].Range > 0 && this.Spells[E].Range < 3000)
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWE", "Draw E").SetValue(new Circle(true, Color.Bisque, this.Spells[E].Range)));
                }

                if (this.Spells[R] != null && this.Spells[3].Range > 0 && this.Spells[R].Range < 3000) //global ult ?
                {
                    this.DrawingMenu.AddItem(new MenuItem("DDRAWR", "Draw R").SetValue(new Circle(true, Color.Chartreuse, this.Spells[R].Range)));
                }
            }
            ConfigMenu.AddSubMenu(DrawingMenu);

            if (enableEvader)
            {
                Menu   evaderMenu = null;
                Evader evader;
                switch (szChampName.ToLower())
                {
                case "ezreal":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Blink, Spells[E]);
                    break;

                case "sivir":
                case "morgana":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[E]);
                    break;

                case "fizz":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]);
                    break;

                case "lissandra":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[R]);
                    break;

                case "nocturne":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.SpellShield, Spells[W]);
                    break;

                case "vladimir":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Invulnerability, Spells[W]);
                    break;

                case "graves":
                case "gnar":
                case "lucian":
                case "riven":
                case "shen":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[E]);
                    break;

                case "zed":
                case "leblanc":
                case "corki":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[W]);
                    break;

                case "vayne":
                    evader = new Evader(out evaderMenu, Database.EvadeMethods.Dash, Spells[Q]);
                    break;
                }
                if (evaderMenu != null)
                {
                    ConfigMenu.AddSubMenu(evaderMenu);
                }
            }
            CreateConfigMenu();

            Menu credits = new Menu("Credits", "SAutoCarry.Credits.Root");

            credits.AddItem(new MenuItem("SAutoCarry.Credits.Root.Author", "SAutoCarry - Made By Synx"));
            credits.AddItem(new MenuItem("SAutoCarry.Credits.Root.Upvote", "Dont Forget to upvote in DB!"));

            Menu supportedChamps = new Menu("Supported Champions", "SAutoCarry.Credits.Supported");

            Menu adc = new Menu("ADC (5)", "SAutoCarry.Credits.ADC");

            adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported1", "  ->Corki        "));
            adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported2", "  ->Lucian       "));
            adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported3", "  ->Miss Fortune "));
            adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported4", "  ->Twitch       "));
            adc.AddItem(new MenuItem("SAutoCarry.Credits.ADC.Supported5", "  ->Vayne        "));
            //
            supportedChamps.AddSubMenu(adc);
            //
            Menu mid = new Menu("Mid (6)", "SAutoCarry.Credits.Mid");

            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported1", "  ->Azir         "));
            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported2", "  ->Cassiopeia   "));
            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported3", "  ->Orianna      "));
            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported4", "  ->Twisted Fate "));
            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported5", "  ->Veigar       "));
            mid.AddItem(new MenuItem("SAutoCarry.Credits.Mid.Supported6", "  ->Viktor       "));
            //
            supportedChamps.AddSubMenu(mid);
            //
            Menu top = new Menu("Top (5)", "SAutoCarry.Credits.Top");

            top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported1", "  ->Darius      "));
            top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported2", "  ->Dr. Mundo   "));
            top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported3", "  ->Pantheon    "));
            top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported4", "  ->Rengar      "));
            top.AddItem(new MenuItem("SAutoCarry.Credits.Top.Supported5", "  ->Riven       "));
            //
            supportedChamps.AddSubMenu(top);
            //
            Menu jungle = new Menu("Jungle (3)", "SAutoCarry.Credits.Jungle");

            jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported1", "  ->Jax          "));
            jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported2", "  ->Master Yi    "));
            jungle.AddItem(new MenuItem("SAutoCarry.Credits.Jungle.Supported3", "  ->Shyvana      "));
            //
            supportedChamps.AddSubMenu(jungle);
            //
            Menu support = new Menu("Support (1)", "SAutoCarry.Credits.Support");

            support.AddItem(new MenuItem("SAutoCarry.Credits.Support.Support1", "  ->Blitzcrank   "));
            //
            supportedChamps.AddSubMenu(support);
            //

            credits.AddSubMenu(supportedChamps);

            #region Events
            Game.OnUpdate  += this.Game_OnUpdate;
            Drawing.OnDraw += this.Drawing_OnDraw;
            Orbwalking.Events.BeforeAttack     += this.OrbwalkingEvents_BeforeAttack;
            Orbwalking.Events.AfterAttack      += this.OrbwalkingEvents_AfterAttack;
            AntiGapcloser.OnEnemyGapcloser     += this.AntiGapcloser_OnEnemyGapcloser;
            Interrupter2.OnInterruptableTarget += this.Interrupter_OnPossibleToInterrupt;
            Obj_AI_Base.OnBuffGain             += this.Obj_AI_Base_OnBuffAdd;
            Obj_AI_Base.OnSpellCast            += this.Obj_AI_Base_OnProcessSpellCast;
            CustomEvents.Unit.OnDash           += this.Unit_OnDash;
            TargetedSpellDetector.OnDetected   += this.TargetedSpellDetector_OnDetected;
            #endregion

            Prediction.Prediction.Initialize(ConfigMenu);
            ConfigMenu.AddSubMenu(credits);
        }
Exemple #19
0
        /// <summary>
        /// makes sure the active param object matches the GUI
        /// </summary>
        private void setParamData()
        {
            param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked;
            param.canSinksSensePursuers = chkSinksSensePursuers.Checked;
            param.areSinksSafe          = chkSafeSinks.Checked;

            int psi;

            if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi))
            {
                param.A_P = Pursuer.getAgents(psi);
            }

            int evaderCount;

            if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount))
            {
                param.A_E = Evader.getAgents(evaderCount);
            }

            int rp;

            if (tryParseTextBox(txtrp, lblrp, out rp))
            {
                param.r_p = rp;
            }

            int re;

            if (tryParseTextBox(txtre, lblre, out re))
            {
                param.r_e = re;
            }

            int rs;

            if (tryParseTextBox(txtrs, lblrs, out rs))
            {
                param.r_s = rs;
            }

            float pd;

            if (tryParseTextBox(txtpd, lblpd, out pd))
            {
                param.p_d = pd;
            }

            try
            {
                // set reward func:
                if (cmbRewardFunc.SelectedItem == null)
                {
                    lblR.ForeColor = Color.Red;
                    return;
                }

                param.R        = ReflectionUtils.constructEmptyCtorType <ARewardFunction>((string)cmbRewardFunc.SelectedItem);
                lblR.ForeColor = Color.Black;
                lstRewarrdDesc.Items.Clear();
                lstRewarrdDesc.Items.AddRange(param.R.argumentsDescription().ToArray <object>());

                try
                {
                    param.R.setArgs(txtRewardArg.Text);
                    lblRewardArg.ForeColor = Color.Black;
                }
                catch (Exception)
                {
                    lblRewardArg.ForeColor = Color.Red;
                }

                //// if reward func isn't undefined, check argument validity:
                //int givenArgs;
                //if (txtRewardArg.Text == "")
                //    givenArgs = 0;
                //else
                //    givenArgs = txtRewardArg.Text.Split(new char[] { ',' }).Count() + 1;

                //if (givenArgs == param.R.argumentsDescription().Count)
                //    lblRewardArg.ForeColor = Color.Black;
                //else
                //    lblRewardArg.ForeColor = Color.Red;
            }
            catch (Exception ex)
            {
                lblR.ForeColor = Color.Red;
            }
        }
Exemple #20
0
        public Zed()
        {
            Q = new SpellBase(SpellSlot.Q, SpellType.Linear, 925)
            {
                CastDelay = 250,
                Speed     = 1700,
                Width     = 50
            };
            Q.SetSourceFunction(() => MyHero);
            Q.SetRangeCheckSourceFunction(() => MyHero);
            W = new SpellBase(SpellSlot.W, SpellType.Linear, WRange)
            {
                Speed = 1750,
                Width = 60
            };
            E = new SpellBase(SpellSlot.E, SpellType.Self, 280);
            E.SetSourceFunction(() => MyHero);
            E.SetRangeCheckSourceFunction(() => MyHero);
            R          = new SpellBase(SpellSlot.R, SpellType.Targeted, 625);
            IsDeadText = new Text("", new Font("Arial", 30F, FontStyle.Bold))
            {
                Color    = Color.Red,
                Position = new Vector2(100, 50)
            };
            Obj_AI_Base.OnBuffGain += delegate(Obj_AI_Base sender, Obj_AI_BaseBuffGainEventArgs args)
            {
                var minion = sender as Obj_AI_Minion;
                if (minion != null && minion.IsAlly && minion.BaseSkinName == ShadowSkinName && args.Buff.Caster.IsMe)
                {
                    switch (args.Buff.Name)
                    {
                    case "zedwshadowbuff":
                        WShadow = minion;
                        break;

                    case "zedrshadowbuff":
                        RShadow = minion;
                        break;
                    }
                }
            };
            Obj_AI_Base.OnPlayAnimation += delegate(Obj_AI_Base sender, GameObjectPlayAnimationEventArgs args)
            {
                var minion = sender as Obj_AI_Minion;
                if (minion != null && minion.IsAlly && minion.BaseSkinName == ShadowSkinName)
                {
                    if (args.Animation == "Death")
                    {
                        if (WShadow.IdEquals(minion))
                        {
                            WShadow = null;
                        }
                        else if (RShadow.IdEquals(minion))
                        {
                            RShadow = null;
                        }
                    }
                }
            };
            GameObject.OnCreate += delegate(GameObject sender, EventArgs args)
            {
                if (sender.Name == IsDeadName && RTarget != null && RTarget.IsInRange(sender, 200))
                {
                    IsDeadObject = sender;
                }
            };
            GameObject.OnDelete += delegate(GameObject sender, EventArgs args)
            {
                var minion = sender as Obj_AI_Minion;
                if (minion != null && minion.IsAlly && minion.BaseSkinName == ShadowSkinName)
                {
                    if (WShadow.IdEquals(minion))
                    {
                        WShadow = null;
                    }
                    else if (RShadow.IdEquals(minion))
                    {
                        RShadow = null;
                    }
                }
                else if (sender.IdEquals(IsDeadObject))
                {
                    IsDeadObject = null;
                }
            };
            Obj_AI_Base.OnProcessSpellCast += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
            {
                if (sender.IsMe)
                {
                    switch (args.Slot)
                    {
                    case SpellSlot.W:
                        if (args.SData.Name == "ZedW")
                        {
                            W.LastCastTime    = Core.GameTickCount;
                            W.LastEndPosition = args.End;
                        }
                        break;

                    case SpellSlot.R:
                        if (args.SData.Name == "ZedR")
                        {
                            MarkedDamageReceived = 0;
                            EnemyWillDie         = false;
                        }
                        break;
                    }
                }
            };
            Evader.OnEvader += delegate(EvaderArgs args)
            {
                var w1Distance = W.IsReady && IsW1 && EvaderMenu.CheckBox("Evader.W1")
                    ? MyHero.GetDistanceSqr(args.Sender)
                    : 16000000;
                var w2Distance = W.IsReady && WShadowIsValid && EvaderMenu.CheckBox("Evader.W2") &&
                                 !args.WillHitMyHero(WShadow.Position)
                    ? WShadow.GetDistanceSqr(args.Sender)
                    : 16000000;
                var rTarget    = TargetSelector.GetTarget(R.Range, DamageType.Physical) ?? args.Sender;
                var r1Distance = R.IsReady && IsR1 && rTarget != null && R.InRange(rTarget) &&
                                 EvaderMenu.CheckBox("Evader.R1")
                    ? MyHero.GetDistanceSqr(args.Sender)
                    : 16000000;
                var r2Distance = R.IsReady && RShadowIsValid && EvaderMenu.CheckBox("Evader.R2") &&
                                 !args.WillHitMyHero(RShadow.Position)
                    ? RShadow.GetDistanceSqr(args.Sender)
                    : 16000000;
                var min = Math.Min(w1Distance, Math.Min(w2Distance, Math.Min(r1Distance, r2Distance)));
                if (min < 16000000)
                {
                    if (Math.Abs(min - r2Distance) < float.Epsilon)
                    {
                        R.Cast();
                    }
                    else if (Math.Abs(min - r1Distance) < float.Epsilon)
                    {
                        R.Cast(rTarget);
                    }
                    else if (Math.Abs(min - w2Distance) < float.Epsilon)
                    {
                        W.Cast();
                    }
                    else if (Math.Abs(min - w1Distance) < float.Epsilon)
                    {
                        var wPos = MyHero.ServerPosition +
                                   ((args.Sender.ServerPosition - MyHero.ServerPosition).Normalized() * WRange)
                                   .To2D()
                                   .Perpendicular()
                                   .To3DWorld();
                        W.Cast(wPos);
                    }
                }
            };

            AttackableUnit.OnDamage += delegate(AttackableUnit sender, AttackableUnitDamageEventArgs args)
            {
                if (args.Source.IsMe)
                {
                    var hero = args.Target as AIHeroClient;
                    if (hero != null && TargetHaveR(hero))
                    {
                        MarkedDamageReceived += args.Damage;
                    }
                }
            };

            MenuManager.AddSubMenu("Keys");
            {
                Orbwalker.RegisterKeyBind(
                    KeysMenu.AddValue("Combo2", new KeyBind("Combo without R", false, KeyBind.BindTypes.HoldActive, 'A')),
                    Orbwalker.ActiveModes.Combo);
                Orbwalker.RegisterKeyBind(
                    KeysMenu.AddValue("Harass2", new KeyBind("Harass WEQ", false, KeyBind.BindTypes.HoldActive, 'S')),
                    Orbwalker.ActiveModes.Harass);
            }

            Q.AddConfigurableHitChancePercent();

            MenuManager.AddSubMenu("Combo");
            {
                ComboMenu.AddStringList("Mode", "R Combo Mode", new[] { "Line", "Triangle", "MousePos" });
                ComboMenu.AddValue("Q", new CheckBox("Use Q"));
                ComboMenu.AddValue("W", new CheckBox("Use W"));
                ComboMenu.AddValue("E", new CheckBox("Use E"));
                ComboMenu.AddValue("R", new CheckBox("Use R"));
                ComboMenu.AddValue("Items", new CheckBox("Use offensive items"));
                ComboMenu.AddValue("SwapDead", new CheckBox("Use W2/R2 if target will die"));
                ComboMenu.AddValue("SwapGapclose", new CheckBox("Use W2/R2 to get close to target"));
                ComboMenu.AddValue("SwapHP", new Slider("Use W2/R2 if my % of health is less than {0}", 15));
                ComboMenu.AddValue("Prevent", new CheckBox("Don't use spells before R"));
                if (EntityManager.Heroes.Enemies.Count > 0)
                {
                    ComboMenu.AddValue("BlackList.R", new GroupLabel("Don't use R on:"));
                    var enemiesAdded = new HashSet <string>();
                    foreach (var enemy in EntityManager.Heroes.Enemies)
                    {
                        if (!enemiesAdded.Contains(enemy.ChampionName))
                        {
                            ComboMenu.AddValue("BlackList." + enemy.ChampionName,
                                               new CheckBox(enemy.ChampionName, false));
                            enemiesAdded.Add(enemy.ChampionName);
                        }
                    }
                }
            }
            MenuManager.AddSubMenu("Harass");
            {
                HarassMenu.AddValue("Collision", new CheckBox("Check collision when casting Q (more damage)", false));
                HarassMenu.AddValue("WE", new CheckBox("Only harass when combo WE will hit", false));
                HarassMenu.AddValue("SwapGapclose", new CheckBox("Use W2 if target is killable"));
                HarassMenu.AddValue("ManaPercent", new Slider("Minimum Mana Percent", 20));
            }

            MenuManager.AddSubMenu("Clear");
            {
                ClearMenu.AddValue("LaneClear", new GroupLabel("LaneClear"));
                {
                    ClearMenu.AddValue("LaneClear.Q", new Slider("Use Q if hit is greater than {0}", 3, 0, 10));
                    ClearMenu.AddValue("LaneClear.W", new Slider("Use W if hit is greater than {0}", 4, 0, 10));
                    ClearMenu.AddValue("LaneClear.E", new Slider("Use E if hit is greater than {0}", 3, 0, 10));
                    ClearMenu.AddValue("LaneClear.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("LastHit", new GroupLabel("LastHit"));
                {
                    ClearMenu.AddStringList("LastHit.Q", "Use Q", new[] { "Never", "Smartly", "Always" }, 1);
                    ClearMenu.AddStringList("LastHit.E", "Use E", new[] { "Never", "Smartly", "Always" }, 1);
                    ClearMenu.AddValue("LastHit.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("JungleClear", new GroupLabel("JungleClear"));
                {
                    ClearMenu.AddValue("JungleClear.Q", new CheckBox("Use Q"));
                    ClearMenu.AddValue("JungleClear.W", new CheckBox("Use W"));
                    ClearMenu.AddValue("JungleClear.E", new CheckBox("Use E"));
                    ClearMenu.AddValue("JungleClear.ManaPercent", new Slider("Minimum Mana Percent", 20));
                }
            }

            MenuManager.AddKillStealMenu();
            {
                KillStealMenu.AddValue("Q", new CheckBox("Use Q"));
                KillStealMenu.AddValue("W", new CheckBox("Use W"));
                KillStealMenu.AddValue("E", new CheckBox("Use E"));
            }

            MenuManager.AddSubMenu("Automatic");
            {
                AutomaticMenu.AddValue("E", new CheckBox("Use E", false));
                AutomaticMenu.AddValue("SwapDead", new CheckBox("Use W2/R2 if target will die", false));
            }
            MenuManager.AddSubMenu("Evader");
            {
                EvaderMenu.AddValue("Evader.W1", new CheckBox("Use W1", false));
                EvaderMenu.AddValue("Evader.W2", new CheckBox("Use W2"));
                EvaderMenu.AddValue("Evader.R1", new CheckBox("Use R1"));
                EvaderMenu.AddValue("Evader.R2", new CheckBox("Use R2"));
            }
            Evader.Initialize();
            Evader.AddCrowdControlSpells();
            Evader.AddDangerousSpells();
            MenuManager.AddDrawingsMenu();
            {
                Q.AddDrawings();
                W.AddDrawings();
                E.AddDrawings(false);
                R.AddDrawings();
                CircleManager.Circles.Add(new Circle(
                                              DrawingsMenu.AddValue("W.Shadow", new CheckBox("Draw W shadow circle")), SharpDX.Color.Blue,
                                              () => 100, () => WShadowIsValid,
                                              () => WShadow)
                {
                    Width = 1
                });

                CircleManager.Circles.Add(new Circle(
                                              DrawingsMenu.AddValue("R.Shadow", new CheckBox("Draw R shadow circle")), SharpDX.Color.Orange,
                                              () => 100, () => RShadowIsValid,
                                              () => RShadow)
                {
                    Width = 1
                });
                DrawingsMenu.AddValue("IsDead", new CheckBox("Draw text if target will die"));
                DrawingsMenu.AddValue("Passive", new CheckBox("Draw text when passive is available"));
            }
        }
Exemple #21
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            foreach (object o in this.Controls)
            {
                Label l = o as Label;

                if (l != null && l.ForeColor.ToArgb() != Color.Black.ToArgb() && l.Visible == true)     // ensure all fields are "valid"
                {
                    MessageBox.Show(l.Text + " has invalid value");
                    return;
                }
            }
            SaveFileDialog d = new SaveFileDialog();

            d.Filter = "Routing Game Param Files (*." + AppConstants.FileExtensions.ROUTING_PARAM + ")|*." + AppConstants.FileExtensions.ROUTING_PARAM;

            try
            {
                if (d.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }

                string dialogFilename = d.FileName;


                float minRenew = float.Parse(txtRenewal.Text);
                int   minRES   = Int32.Parse(txtres.Text);
                //int minRPS = Int32.Parse(txtrps.Text);

                int minPsi = Int32.Parse(txtPursuerCount.Text);
                int minEta = Int32.Parse(txtEvadersCount.Text);
                //string minRewardArg = txtRewardArg.Text;


                int maxPsi = minPsi;
                int maxEta = minEta;
                int maxRES = minRES;
                //int maxRPS = minRPS;
                float maxRenew = minRenew;

                //string maxRewardArg = txtRewardArgMax.Text;


                if (txtMaxPsi.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxPsi.Text, out maxPsi);
                }
                if (txtMaxEta.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxEta.Text, out maxEta);
                }
                if (txtMaxRes.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxRes.Text, out maxRES);
                }
                //if (txtMaxRps.Text.Length > 0)
                //     Int32.TryParse(txtMaxRps.Text, out maxRPS);
                if (txtRenewalMax.Text.Length > 0)
                {
                    float.TryParse(txtRenewalMax.Text, out maxRenew);
                }

                if (minRenew == maxRenew && maxPsi == minPsi && maxEta == minEta && maxRES == minRES)
                {
                    param.serialize(d.FileName);
                }
                else
                {
                    //string rewardJump = txtRewardArgJump.Text;
                    int   rpJump, psiJump, etaJump, resJump, rpsJump;
                    float renewalJump;
                    Int32.TryParse(txtPsiJump.Text, out psiJump);
                    Int32.TryParse(txtEtaJump.Text, out etaJump);
                    Int32.TryParse(txtResJump.Text, out resJump);
                    float.TryParse(txtRenewalJump.Text, out renewalJump);


                    psiJump     = Math.Max(psiJump, 1);
                    etaJump     = Math.Max(etaJump, 1);
                    resJump     = Math.Max(resJump, 1);
                    renewalJump = Math.Max(renewalJump, 0);

                    dialogFilename = dialogFilename.Substring(0, dialogFilename.LastIndexOf('.'));

                    string newFolderName = "";

                    try
                    {
                        char slash = '\\';
                        if (!dialogFilename.Contains(slash))
                        {
                            slash = '/';
                        }

                        newFolderName = dialogFilename.Substring(dialogFilename.LastIndexOf(slash) + 1);
                        Directory.CreateDirectory(dialogFilename);
                        dialogFilename += (slash + newFolderName);
                    }
                    catch (Exception) { }

                    //var rewardFuncs = param.R.getRewardFunctions(minRewardArg, maxRewardArg, rewardJump);

                    //foreach(ARewardFunction rw in rewardFuncs)
                    //for (int rps = minRPS; rps <= maxRPS; rps += rpsJump)
                    for (int res = minRES; res <= maxRES; res += resJump)
                    {
                        for (int psi = minPsi; psi <= maxPsi; psi += psiJump)
                        {
                            for (int eta = minEta; eta <= maxEta; eta += etaJump)
                            {
                                for (float renewal = minRenew; renewal <= maxRenew; renewal += renewalJump)
                                {
                                    param.A_E = Evader.getAgents(eta);
                                    param.A_P = Pursuer.getAgents(psi);
                                    param.r_e = res;
                                    param.detectionProbRestraint = double.Parse(txtDetectionProb.Text);
                                    param.f_e = renewal;
                                    //param.r_ps = rps;

                                    //param.R = rw;


                                    string fileName =
                                        dialogFilename + "_eta" + eta.ToString() +
                                        "_psi" + psi.ToString() +
                                        "_res" + res.ToString() +
                                        "_fe" + renewal.ToString("0.00") +
                                        "." + AppConstants.FileExtensions.ROUTING_PARAM;
                                    param.serialize(fileName);
                                }
                            }
                        }
                    }
                }

                isDirty       = false;
                ParamFilePath = d.FileName;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #22
0
        /// <summary>
        /// makes sure the active param object matches the GUI
        /// </summary>
        private void setParamData()
        {
            //param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked;
            //param.canSinksSensePursuers = chkSinksSensePursuers.Checked;
            //param.areSinksSafe = chkSafeSinks.Checked;

            int psi;

            if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi))
            {
                param.A_P = Pursuer.getAgents(psi);
            }

            int evaderCount;

            if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount))
            {
                param.A_E = Evader.getAgents(evaderCount);
            }

            int rp;

            if (tryParseTextBox(txtrp, lblrp, out rp))
            {
                param.r_p = rp;
            }

            int re;

            // if area is square, also make sure re is valid i.e. odd value
            if (tryParseTextBox(txtre, lblre, out re, (reval) => { return(!chkSquareArea.Checked || reval % 2 == 1); }))
            {
                param.r_e = re;
            }


            int res;

            if (tryParseTextBox(txtres, lblrs, out res))
            {
                param.r_es = res;
            }

            //int rps;
            //if (tryParseTextBox(txtrps, lblrs, out rps))
            //    param.r_ps = rps;

            int ti;

            if (tryParseTextBox(txtti, lblti, out ti))
            {
                param.t_i = ti;
            }


            param.IsAreaSquare = chkSquareArea.Checked;

            //try
            //{
            //    // set reward func:
            //    if (cmbRewardFunc.SelectedItem == null)
            //    {
            //        lblR.ForeColor = Color.Red;
            //        return;
            //    }

            //    param.R = ReflectionUtils.constructEmptyCtorType<ARewardFunction>((string)cmbRewardFunc.SelectedItem);
            //    lblR.ForeColor = Color.Black;
            //    lstRewarrdDesc.Items.Clear();
            //    lstRewarrdDesc.Items.AddRange(param.R.argumentsDescription().ToArray<object>());

            //    try
            //    {
            //        param.R.setArgs(txtRewardArg.Text);
            //        lblRewardArg.ForeColor = Color.Black;
            //    }
            //    catch (Exception)
            //    {
            //        lblRewardArg.ForeColor = Color.Red;
            //    }

            //}
            //catch (Exception ex)
            //{
            //    lblR.ForeColor = Color.Red;
            //}
        }
Exemple #23
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            foreach (object o in this.Controls)
            {
                Label l = o as Label;

                if (l != null && l.ForeColor.ToArgb() != Color.Black.ToArgb() && l.Visible == true)     // ensure all fields are "valid"
                {
                    MessageBox.Show(l.Text + " has invalid value");
                    return;
                }
            }
            SaveFileDialog d = new SaveFileDialog();

            d.Filter = "Intrusion Game Param Files (*." + AppConstants.FileExtensions.INTRUSION_PARAM + ")|*." + AppConstants.FileExtensions.INTRUSION_PARAM;

            try
            {
                if (d.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }

                string dialogFilename = d.FileName;

                int minTI  = Int32.Parse(txtti.Text);
                int minRES = Int32.Parse(txtres.Text);
                //int minRPS = Int32.Parse(txtrps.Text);
                int minRP  = Int32.Parse(txtrp.Text);
                int minPsi = Int32.Parse(txtPursuerCount.Text);
                int minEta = Int32.Parse(txtEvadersCount.Text);
                //string minRewardArg = txtRewardArg.Text;

                int maxRP  = minRP;
                int maxPsi = minPsi;
                int maxEta = minEta;
                int maxRES = minRES;
                //int maxRPS = minRPS;
                int maxTI = minTI;

                //string maxRewardArg = txtRewardArgMax.Text;

                if (txtMaxRP.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxRP.Text, out maxRP);
                }
                if (txtMaxPsi.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxPsi.Text, out maxPsi);
                }
                if (txtMaxEta.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxEta.Text, out maxEta);
                }
                if (txtMaxRes.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxRes.Text, out maxRES);
                }
                //if (txtMaxRps.Text.Length > 0)
                //     Int32.TryParse(txtMaxRps.Text, out maxRPS);
                if (txtMaxTi.Text.Length > 0)
                {
                    Int32.TryParse(txtMaxTi.Text, out maxTI);
                }

                if (maxRP == minRP && maxPsi == minPsi && maxEta == minEta
                    //&& maxRPS == minRPS
                    && maxRES == minRES && minTI == maxTI /*&& maxRewardArg.Length == 0*/)
                {
                    param.serialize(d.FileName);
                }
                else
                {
                    //string rewardJump = txtRewardArgJump.Text;
                    int rpJump = 0, psiJump = 0, etaJump = 0, resJump = 0, rpsJump = 0, tiJump;
                    Int32.TryParse(txtPsiJump.Text, out psiJump);
                    Int32.TryParse(txtEtaJump.Text, out etaJump);
                    Int32.TryParse(txtRPJump.Text, out rpJump);
                    Int32.TryParse(txtResJump.Text, out resJump);
                    //Int32.TryParse(txtRpsJump.Text, out rpsJump);
                    Int32.TryParse(txtTiJump.Text, out tiJump);

                    rpJump  = Math.Max(rpJump, 1);
                    psiJump = Math.Max(psiJump, 1);
                    etaJump = Math.Max(etaJump, 1);
                    resJump = Math.Max(resJump, 1);
                    //rpsJump = Math.Max(rpsJump, 1);
                    tiJump = Math.Max(tiJump, 1);

                    dialogFilename = dialogFilename.Substring(0, dialogFilename.LastIndexOf('.'));

                    string newFolderName = "";

                    try
                    {
                        char slash = '\\';
                        if (!dialogFilename.Contains(slash))
                        {
                            slash = '/';
                        }

                        newFolderName = dialogFilename.Substring(dialogFilename.LastIndexOf(slash) + 1);
                        Directory.CreateDirectory(dialogFilename);
                        dialogFilename += (slash + newFolderName);
                    }
                    catch (Exception) { }

                    //var rewardFuncs = param.R.getRewardFunctions(minRewardArg, maxRewardArg, rewardJump);

                    //foreach(ARewardFunction rw in rewardFuncs)
                    //for (int rps = minRPS; rps <= maxRPS; rps += rpsJump)
                    for (int res = minRES; res <= maxRES; res += resJump)
                    {
                        for (int rp = minRP; rp <= maxRP; rp += rpJump)
                        {
                            for (int psi = minPsi; psi <= maxPsi; psi += psiJump)
                            {
                                for (int eta = minEta; eta <= maxEta; eta += etaJump)
                                {
                                    for (int ti = minTI; ti <= maxTI; ti += tiJump)
                                    {
                                        param.A_E  = Evader.getAgents(eta);
                                        param.A_P  = Pursuer.getAgents(psi);
                                        param.r_p  = rp;
                                        param.t_i  = ti;
                                        param.r_es = res;
                                        //param.r_ps = rps;

                                        //param.R = rw;


                                        string fileName =
                                            dialogFilename + "_eta" + eta.ToString() +
                                            "_rp" + rp.ToString() +
                                            "_psi" + psi.ToString() +
                                            "_res" + res.ToString() +
                                            //"_rps" + rps.ToString() +
                                            "_ti" + ti.ToString() +
                                            //"_" + rw.fileNameDescription() +
                                            "." + AppConstants.FileExtensions.INTRUSION_PARAM;
                                        param.serialize(fileName);
                                    }
                                }
                            }
                        }
                    }
                }

                isDirty       = false;
                ParamFilePath = d.FileName;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #24
0
        /// <summary>
        ///     Champion constructor
        /// </summary>
        /// <param name="szChampName">The champion name.</param>
        /// <param name="szMenuName">The menu name.</param>
        /// <param name="enableRangeDrawings">if <c>true</c>, enables the spell range drawings</param>
        /// <param name="enableEvader">if <c>true</c>, enables the spell evader if the champion is supported</param>
        public Champion(string szChampName, string szMenuName, bool enableRangeDrawings = true, bool enableEvader = true)
        {
            Text = new Font(Drawing.Direct3DDevice,
                            new FontDescription
            {
                FaceName        = "Malgun Gothic",
                Height          = 15,
                OutputPrecision = FontPrecision.Default,
                Quality         = FontQuality.ClearTypeNatural
            });

            TargetSelector.Initialize(ConfigMenu);

            SetSpells();

            if (enableEvader)
            {
                Menu   evaderMenu = null;
                Evader evader;
                switch (szChampName.ToLower())
                {
                case "ezreal":
                    evader = new Evader(out evaderMenu, EvadeMethods.Blink, Spells[E]);
                    break;

                case "sivir":
                case "morgana":
                    evader = new Evader(out evaderMenu, EvadeMethods.SpellShield, Spells[E]);
                    break;

                case "fizz":
                    evader = new Evader(out evaderMenu, EvadeMethods.Dash, Spells[E]);
                    break;

                case "lissandra":
                    evader = new Evader(out evaderMenu, EvadeMethods.Invulnerability, Spells[R]);
                    break;

                case "nocturne":
                    evader = new Evader(out evaderMenu, EvadeMethods.SpellShield, Spells[W]);
                    break;

                case "vladimir":
                    evader = new Evader(out evaderMenu, EvadeMethods.Invulnerability, Spells[W]);
                    break;

                case "graves":
                case "gnar":
                case "lucian":
                case "riven":
                case "shen":
                    evader = new Evader(out evaderMenu, EvadeMethods.Dash, Spells[E]);
                    break;

                case "zed":
                case "leblanc":
                case "corki":
                    evader = new Evader(out evaderMenu, EvadeMethods.Dash, Spells[W]);
                    break;

                case "vayne":
                    evader = new Evader(out evaderMenu, EvadeMethods.Dash, Spells[Q]);
                    break;
                }
            }

            #region Events

            Game.OnUpdate                      += Game_OnUpdate;
            Drawing.OnDraw                     += Drawing_OnDraw;
            Orbwalker.OnPreAttack              += OrbwalkingEvents_BeforeAttack;
            Orbwalker.OnPostAttack             += OrbwalkingEvents_AfterAttack;
            AntiGapcloser.OnEnemyGapcloser     += AntiGapcloser_OnEnemyGapcloser;
            Interrupter2.OnInterruptableTarget += Interrupter_OnPossibleToInterrupt;
            Obj_AI_Base.OnBuffGain             += Obj_AI_Base_OnBuffAdd;
            Obj_AI_Base.OnProcessSpellCast     += Obj_AI_Base_OnProcessSpellCast;
            CustomEvents.Unit.OnDash           += Unit_OnDash;
            TargetedSpellDetector.OnDetected   += TargetedSpellDetector_OnDetected;

            #endregion
        }
Exemple #25
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo Settings", "Combo Settings");
            {
                combo.AddItem(new MenuItem("combo.q", "Use Q").SetValue(true));
                combo.AddItem(new MenuItem("combo.w", "Use W").SetValue(true));
                combo.AddItem(new MenuItem("combo.e", "Use E").SetValue(true));
                combo.AddItem(new MenuItem("combo.r", "Use R").SetValue(true));

                ult = new Menu("R Settings", "rsettings");
                {
                    ult.AddItem(new MenuItem("r.min.hp.combo", "Min. HP Percent for R").SetValue(new Slider(30, 1, 99)));
                    ult.AddItem(new MenuItem("r.enemy.count", "Min. Enemies for R").SetValue(new Slider(3, 1, 5)));
                    ult.AddItem(new MenuItem("r.method", "R Method").SetValue <StringList>(new StringList(new string[] { "Smart R" }, 0)));
                    combo.AddSubMenu(ult);
                }
                esettings = new Menu("E Settings", "esettings");
                {
                    esettings.AddItem(new MenuItem("e.method", "E Method").SetValue <StringList>(new StringList(new string[] { "Safe Position", "Cursor Position" }, 0)));
                    combo.AddSubMenu(esettings);
                }
                Config.AddSubMenu(combo);
            }
            harass = new Menu("Harass Settings", "Harass Settings");
            {
                harass.AddItem(new MenuItem("harass.q", "Use Q").SetValue(true));
                harass.AddItem(new MenuItem("harass.mana", "Min. Mana Percent").SetValue(new Slider(50, 1, 99)));
                Config.AddSubMenu(harass);
            }
            laneclear = new Menu("Clear Settings", "Clear Settings");
            {
                laneclear.AddItem(new MenuItem("clear.q", "Use Q").SetValue(true));
                laneclear.AddItem(new MenuItem("min.minions.for.q", "Min. Minions to use Q ").SetValue <Slider>(new Slider(3, 1, 6)));
                laneclear.AddItem(new MenuItem("clear.mana", "Min. Mana Percent").SetValue(new Slider(50, 1, 99)));
                Config.AddSubMenu(laneclear);
            }
            jungle = new Menu("Jungle Settings", "Jungle Settings");
            {
                jungle.AddItem(new MenuItem("jungle.q", "Use Q").SetValue(true));
                jungle.AddItem(new MenuItem("jungle.w", "Use W").SetValue(true));
                jungle.AddItem(new MenuItem("jungle.e", "Use E").SetValue(true));
                jungle.AddItem(new MenuItem("jungle.mana", "Min. Mana Percent").SetValue(new Slider(50, 1, 99)));
                Config.AddSubMenu(jungle);
            }
            killsteal = new Menu("KillSteal Settings", "KillSteal Settings");
            {
                killsteal.AddItem(new MenuItem("disable.ks", "Disable KillSteal?").SetValue(false));
                killsteal.AddItem(new MenuItem("ayracx4", "                  KillSteal Settings"));
                killsteal.AddItem(new MenuItem("killsteal.q", "Use Q").SetValue(true));
                killsteal.AddItem(new MenuItem("killsteal.e", "Use E").SetValue(true));
                killsteal.AddItem(new MenuItem("killsteal.r", "Use R").SetValue(true));
                killsteal.AddItem(new MenuItem("min.hp.killsteal", "Min. HP Percent").SetValue(new Slider(50, 1, 99)));
                Config.AddSubMenu(killsteal);
            }
            m_evader = new Evader(out evade, EvadeMethods.EkkoE);
            {
                Config.AddSubMenu(evade);
            }
            protector = new Menu("(R) Protector", "(R) Protector");
            {
                protector.AddItem(new MenuItem("ayracx", "                  Protector Settings"));
                protector.AddItem(new MenuItem("hp.for.protect", "Min. HP Percent").SetValue(new Slider(10, 100, 0)));
                protector.AddItem(new MenuItem("protector", "Disable Protector?").SetValue(true));
                protector.AddItem(new MenuItem("ayrac", "                 Protector Spell List"));
                foreach (var enemy in HeroManager.Enemies)
                {
                    foreach (var skillshot in SSHCommon.Spell_Database.SpellDatabase.Spells.Where(x => x.charName == enemy.ChampionName)) // 2.5F Protector
                    {
                        protector.AddItem(new MenuItem("hero." + skillshot.spellName, "" + skillshot.charName + "(" + skillshot.spellKey + ")").SetValue(true));
                    }
                }
                Config.AddSubMenu(protector);
            }
            activator = new Menu("Activator Settings", "Activator Settings");
            {
                new Smite(TargetSelector.DamageType.Magical, activator);
                new Ignite(TargetSelector.DamageType.Magical, activator);
                Config.AddSubMenu(activator);
            }
            misc = new Menu("Misc", "Misc");
            {
                misc.AddItem(new MenuItem("auto.w.immobile", "Auto Cast W If Enemy Immobile").SetValue(true));
                //misc.AddItem(new MenuItem("focus.method", "Focus Method").SetValue<StringList>(new StringList(new string[] { "Normal", "Always Focus 2 Stack Enemy" }, 0)));
                Config.AddSubMenu(misc);
            }
            drawing = new Menu("Draw Settings", "Draw Settings");
            {
                drawing.AddItem(new MenuItem("q.draw", "Q Range").SetValue(new Circle(true, System.Drawing.Color.Chartreuse)));
                drawing.AddItem(new MenuItem("w.draw", "W Range").SetValue(new Circle(true, System.Drawing.Color.Yellow)));
                drawing.AddItem(new MenuItem("e.draw", "E Range").SetValue(new Circle(true, System.Drawing.Color.White)));
                drawing.AddItem(new MenuItem("r.draw", "R Range").SetValue(new Circle(true, System.Drawing.Color.SandyBrown)));
                //drawing.AddItem(new MenuItem("wall.draw", "Wall Jump Draw").SetValue(true));
                Config.AddSubMenu(drawing);
            }
            Config.AddItem(new MenuItem("CRHITCHANCE", "Skillshot Hit Chance").SetValue <StringList>(new StringList(SSHCommon.Utility.HitchanceNameArray, 1)));
            Config.AddToMainMenu();
            //DamageIndicator.DamageToUnit = (t) => (float)CalculateComboDamage(t);
            Game.OnUpdate                  += Game_OnGameUpdate;
            Orbwalking.AfterAttack         += Orbwalking_AfterAttack;
            Obj_AI_Base.OnProcessSpellCast += OnProcessSpellCast;
            Drawing.OnDraw                 += OnDraw;
        }
Exemple #26
0
        public Jhin()
        {
            foreach (var enemy in EntityManager.Heroes.Enemies)
            {
                TextsInScreen.Add(enemy.NetworkId, new Text(enemy.ChampionName + " is R killable", new Font("Arial", 30F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
                TextsInHeroPosition.Add(enemy.NetworkId, new Text("R killable", new Font("Arial", 23F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
                LastPredictedPositionText.Add(enemy.NetworkId, new Text(enemy.ChampionName + " last predicted position", new Font("Arial", 23F, FontStyle.Bold))
                {
                    Color = Color.Red
                });
            }
            Q = new SpellBase(SpellSlot.Q, SpellType.Targeted, 600)
            {
                Width     = 450,
                Speed     = 1800,
                CastDelay = 250,
            };
            W = new SpellBase(SpellSlot.W, SpellType.Linear, 2500)
            {
                Width                 = 40,
                CastDelay             = 750,
                Speed                 = 5000,
                AllowedCollisionCount = -1,
            };
            E = new SpellBase(SpellSlot.E, SpellType.Circular, 750)
            {
                Width     = 135,
                CastDelay = 250,
                Speed     = 1600,
            };
            R = new SpellBase(SpellSlot.R, SpellType.Linear, 3500)
            {
                Width                 = 65,
                CastDelay             = 250,
                Speed                 = 5000,
                AllowedCollisionCount = -1,
            };
            Evader.OnEvader += delegate
            {
                if (EvaderMenu.CheckBox("BlockW"))
                {
                    LastBlockTick = Core.GameTickCount;
                }
            };

            Spellbook.OnCastSpell += delegate(Spellbook sender, SpellbookCastSpellEventArgs args)
            {
                if (sender.Owner.IsMe)
                {
                    if (args.Slot == SpellSlot.W)
                    {
                        args.Process = Core.GameTickCount - LastBlockTick > 750;
                    }
                }
            };
            Obj_AI_Base.OnProcessSpellCast += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
            {
                if (sender.IsMe)
                {
                    switch (args.Slot)
                    {
                    case SpellSlot.W:
                        W.LastCastTime    = Core.GameTickCount;
                        W.LastEndPosition = args.End;
                        break;

                    case SpellSlot.R:
                        if (args.SData.Name == "JhinR")
                        {
                            IsCastingR = true;
                            LastRCone  = new Geometry.Polygon.Sector(sender.Position, args.End, (float)(45 * 2f * Math.PI / 175f), R.Range);
                            Stacks     = 4;
                        }
                        else if (args.SData.Name == "JhinRShot")
                        {
                            R.LastCastTime = Core.GameTickCount;
                            TapKeyPressed  = false;
                            Stacks--;
                        }
                        break;
                    }
                }
            };
            Gapcloser.OnGapcloser += delegate(AIHeroClient sender, Gapcloser.GapcloserEventArgs args)
            {
                if (sender.IsValidTarget(E.Range) && sender.IsEnemy)
                {
                    if (MyHero.Distance(args.Start, true) > MyHero.Distance(args.End))
                    {
                        if (AutomaticMenu.CheckBox("E.Gapcloser") && MyHero.IsInRange(args.End, E.Range) && E.IsReady)
                        {
                            E.Cast(args.End);
                        }
                        if (MyHero.Distance(args.End, true) < (sender.GetAutoAttackRange(MyHero) * 1.5f).Pow())
                        {
                            WShouldWaitTick = Core.GameTickCount;
                        }
                    }
                }
            };

            MenuManager.AddSubMenu("Keys");
            {
                KeysMenu.AddValue("TapKey", new KeyBind("R Tap Key", false, KeyBind.BindTypes.HoldActive, 'T')).OnValueChange +=
                    delegate(ValueBase <bool> sender, ValueBase <bool> .ValueChangeArgs args)
                {
                    if (args.NewValue && R.IsLearned && (R.IsReady || IsCastingR) && R.EnemyHeroes.Count > 0)
                    {
                        TapKeyPressed = true;
                    }
                };
                KeysMenu.AddValue("UltKey", new KeyBind("R Key in game", false, KeyBind.BindTypes.HoldActive, 'R')).OnValueChange +=
                    delegate(ValueBase <bool> sender, ValueBase <bool> .ValueChangeArgs args)
                {
                    if (args.NewValue && R.IsLearned && (R.IsReady || IsCastingR))
                    {
                        Player.IssueOrder(GameObjectOrder.Stop, Player.Instance.ServerPosition);
                    }
                };
                ToggleManager.RegisterToggle(
                    KeysMenu.AddValue("AutoW",
                                      new KeyBind("AutoW Toggle", false, KeyBind.BindTypes.PressToggle, 'K')),
                    delegate
                {
                    foreach (var enemy in UnitManager.ValidEnemyHeroes.Where(TargetHaveEBuff))
                    {
                        if (MiscMenu.CheckBox("AutoW." + enemy.ChampionName))
                        {
                            CastW(enemy);
                        }
                    }
                });
            }

            W.AddConfigurableHitChancePercent();
            R.AddConfigurableHitChancePercent();

            MenuManager.AddSubMenu("Combo");
            {
                ComboMenu.AddValue("Q", new CheckBox("Use Q"));
                ComboMenu.AddValue("W", new CheckBox("Use W", false));
                ComboMenu.AddValue("E", new CheckBox("Use E", false));
                ComboMenu.AddValue("Items", new CheckBox("Use offensive items"));
            }
            MenuManager.AddSubMenu("Ultimate");
            {
                UltimateMenu.AddStringList("Mode", "R AIM Mode", new[] { "Disabled", "Using TapKey", "Automatic" }, 3);
                UltimateMenu.AddValue("OnlyKillable", new CheckBox("Only attack if it's killable", false));
                UltimateMenu.AddValue("Delay", new Slider("Delay between R's (in ms)", 0, 0, 1500));
                UltimateMenu.AddValue("NearMouse", new GroupLabel("Near Mouse Settings"));
                UltimateMenu.AddValue("NearMouse.Enabled", new CheckBox("Only select target near mouse", false));
                UltimateMenu.AddValue("NearMouse.Radius", new Slider("Near mouse radius", 500, 100, 1500));
                UltimateMenu.AddValue("NearMouse.Draw", new CheckBox("Draw near mouse radius"));
            }
            MenuManager.AddSubMenu("Harass");
            {
                HarassMenu.AddValue("Q", new CheckBox("Use Q"));
                HarassMenu.AddValue("W", new CheckBox("Use W", false));
                HarassMenu.AddValue("E", new CheckBox("Use E", false));
                HarassMenu.AddValue("ManaPercent", new Slider("Minimum Mana Percent", 20));
            }

            MenuManager.AddSubMenu("Clear");
            {
                ClearMenu.AddValue("LaneClear", new GroupLabel("LaneClear"));
                {
                    ClearMenu.AddValue("LaneClear.Q", new Slider("Use Q if hit is greater than {0}", 5, 0, 10));
                    ClearMenu.AddValue("LaneClear.W", new Slider("Use W if hit is greater than {0}", 6, 0, 10));
                    ClearMenu.AddValue("LaneClear.E", new Slider("Use E if hit is greater than {0}", 5, 0, 10));
                    ClearMenu.AddValue("LaneClear.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("LastHit", new GroupLabel("LastHit"));
                {
                    ClearMenu.AddStringList("LastHit.Q", "Use Q", new[] { "Never", "Smartly", "Always" }, 1);
                    ClearMenu.AddValue("LastHit.ManaPercent", new Slider("Minimum Mana Percent", 50));
                }
                ClearMenu.AddValue("JungleClear", new GroupLabel("JungleClear"));
                {
                    ClearMenu.AddValue("JungleClear.Q", new CheckBox("Use Q"));
                    ClearMenu.AddValue("JungleClear.W", new CheckBox("Use W", false));
                    ClearMenu.AddValue("JungleClear.E", new CheckBox("Use E", false));
                    ClearMenu.AddValue("JungleClear.ManaPercent", new Slider("Minimum Mana Percent", 20));
                }
            }

            MenuManager.AddKillStealMenu();
            {
                KillStealMenu.AddValue("Q", new CheckBox("Use Q"));
                KillStealMenu.AddValue("Qmin", new CheckBox("Use Q On Minions"));
                KillStealMenu.AddValue("W", new CheckBox("Use W"));
                KillStealMenu.AddValue("E", new CheckBox("Use E", false));
                KillStealMenu.AddValue("R", new CheckBox("Use R"));
            }

            MenuManager.AddSubMenu("Automatic");
            {
                AutomaticMenu.AddValue("E.Gapcloser", new CheckBox("Use E on hero gapclosing / dashing"));
                AutomaticMenu.AddValue("Immobile", new CheckBox("Use E on hero immobile"));
                AutomaticMenu.AddValue("Buffed", new CheckBox("Use W on hero with buff"));
            }
            MenuManager.AddSubMenu("Evader");
            {
                EvaderMenu.AddValue("BlockW", new CheckBox("Block W to Evade"));
            }
            Evader.Initialize();
            Evader.AddCrowdControlSpells();
            Evader.AddDangerousSpells();
            MenuManager.AddSubMenu("Misc");
            {
                MiscMenu.AddValue("Champions", new GroupLabel("Allowed champions to use Auto W"));
                foreach (var enemy in EntityManager.Heroes.Enemies)
                {
                    MiscMenu.AddValue("AutoW." + enemy.ChampionName, new CheckBox(enemy.ChampionName));
                }
            }
            MenuManager.AddDrawingsMenu();
            {
                Q.AddDrawings(false);
                W.AddDrawings();
                E.AddDrawings(false);
                R.AddDrawings();
                DrawingsMenu.AddValue("Toggles", new CheckBox("Draw toggles status"));
                DrawingsMenu.AddValue("R.Killable", new CheckBox("Draw text if target is r killable"));
                DrawingsMenu.AddValue("R.LastPredictedPosition", new CheckBox("Draw last predicted position"));
            }
        }
Exemple #27
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo Settings", "Combo Settings");
            combo.AddItem(new MenuItem("combo.q", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("combo.e", "Use E").SetValue(true));
            combo.AddItem(new MenuItem("combo.r", "Use R").SetValue(true));
            combo.AddItem(new MenuItem("combo.r.count", "R on x Enemy").SetValue(new Slider(3, 1, 5)));

            harass = new Menu("Harass Settings", "Harass Settings");
            harass.AddItem(new MenuItem("harass.q", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("harass.e", "Use E").SetValue(true));
            harass.AddItem(new MenuItem("harass.mana", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            jungle = new Menu("Jungle Settings", "Jungle Settings");
            jungle.AddItem(new MenuItem("jungle.q", "Use Q").SetValue(true));
            jungle.AddItem(new MenuItem("jungle.e", "Use E").SetValue(true));
            jungle.AddItem(new MenuItem("jungle.mana", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            CondemnMenu      = new Menu("» Condemn Settings «", "Condemn Settings");
            condemnwhitelist = new Menu("» Condemn Whitelist", "Condemn Whitelist");
            foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(o => o.IsEnemy))
            {
                condemnwhitelist.AddItem(new MenuItem("condemnset." + enemy.CharData.BaseSkinName, string.Format("Condemn: {0}", enemy.CharData.BaseSkinName)).SetValue(true));
            }
            CondemnMenu.AddItem(new MenuItem("condemn.distance", "» Condemn Push Distance").SetValue(new Slider(410, 350, 420)));

            misc = new Menu("Miscellaneous", "Miscellaneous");
            customizableinterrupter = new Menu("Customizable Interrupter", "Customizable Interrupter");
            customizableinterrupter.AddItem(new MenuItem("miss.fortune.r", "Miss Fortune (R)").SetValue(true));
            customizableinterrupter.AddItem(new MenuItem("katarina.r", "Katarina (R)").SetValue(true));

            misc.AddItem(new MenuItem("auto.orb.buy", "Auto Scrying Orb Buy!").SetValue(true));
            misc.AddItem(new MenuItem("orb.level", "Scrying Orb Buy Level").SetValue(new Slider(6, 0, 18)));

            activator = new Menu("Activator Settings", "Activator Settings");
            #region QSS Usage
            qss = new Menu("QSS Settings", "QSS Settings");
            qss.AddItem(new MenuItem("use.qss", "Use QSS").SetValue(true));
            #region QSS Debuff List
            qssMenu = new Menu("QSS Debuff List", "QSS Debuff List");
            qssMenu.AddItem(new MenuItem("qss.charm", "Charm").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.flee", "Flee").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.snare", "Snare").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.polymorph", "Polymorph").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.stun", "Stun").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.suppression", "Suppression").SetValue(true));
            qssMenu.AddItem(new MenuItem("qss.taunt", "Taunt").SetValue(true));
            #endregion QSS Debuff List
            #endregion QSS Usage
            #region BOTRK Usage
            botrk = new Menu("BOTRK Settings", "BOTRK Settings");
            botrk.AddItem(new MenuItem("use.botrk", "Use BOTRK").SetValue(true));
            botrk.AddItem(new MenuItem("botrk.vayne.hp", "Use if Vayne HP < %").SetValue(new Slider(20, 0, 100)));
            botrk.AddItem(new MenuItem("botrk.enemy.hp", "Use if Enemy HP < %").SetValue(new Slider(20, 0, 100)));
            #endregion BOTRK Usage
            #region Youmuu Usage
            youmuu = new Menu("Youmuu Settings", "Youmuu Settings");
            youmuu.AddItem(new MenuItem("use.youmuu", "Use Youmuu").SetValue(true));
            #endregion Youmuu Usage

            m_evader = new Evader(out evade, EvadeMethods.VayneQ);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(jungle);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(CondemnMenu);
            CondemnMenu.AddSubMenu(condemnwhitelist);
            misc.AddSubMenu(customizableinterrupter);

            Config.AddSubMenu(misc);
            activator.AddSubMenu(qss);
            activator.AddSubMenu(botrk);
            activator.AddSubMenu(youmuu);
            qss.AddSubMenu(qssMenu);
            Config.AddSubMenu(activator);

            Config.AddItem(new MenuItem("masterracec0mb0", "                      HikiCarry Masterrace Mode"));
            Config.AddItem(new MenuItem("condemn.style", "Condemn Method").SetValue(new StringList(new[] { "Shine", "Asuna", "360" })));
            Config.AddItem(new MenuItem("condemn.x1", "Condemn Style").SetValue(new StringList(new[] { "Only Combo" })));
            Config.AddItem(new MenuItem("q.type", "Q Type").SetValue(new StringList(new[] { "Cursor Position" })));
            Config.AddItem(new MenuItem("combo.type", "Combo Type").SetValue(new StringList(new[] { "Burst", "Normal" })));
            Config.AddItem(new MenuItem("harass.type", "Harass Type").SetValue(new StringList(new[] { "2 Silver Stack + Q", "2 Silver Stack + E" })));
            Config.AddToMainMenu();

            var drawing = new Menu("Draw Settings", "Draw Settings");
            {
                drawing.AddItem(new MenuItem("qDraw", "Q Range").SetValue(new Circle(true, System.Drawing.Color.Chartreuse)));
                drawing.AddItem(new MenuItem("eDraw", "E Range").SetValue(new Circle(true, System.Drawing.Color.Yellow)));
                drawing.AddItem(new MenuItem("aa.indicator", "AA Indicator").SetValue(true));
                Config.AddSubMenu(drawing);
            }

            Game.OnUpdate          += Game_OnGameUpdate;
            Orbwalking.AfterAttack += Orbwalking_AfterAttack;
            Drawing.OnDraw         += OnDraw;
        }