示例#1
0
        private void CastSingleR()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

            if (target == null)
            {
                return;
            }

            var vector1 = target.ServerPosition - Vector3.Normalize(target.ServerPosition - Player.ServerPosition) * 300;

            R2.UpdateSourcePosition(vector1, vector1);

            var pred = R2.GetPrediction(target, true);

            if (Player.Distance(target) < 400)
            {
                var midpoint = (Player.ServerPosition + pred.UnitPosition) / 2;

                vector1 = midpoint + Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 800;
                var vector2 = midpoint - Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 300;

                if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, vector2))
                {
                    CastR(vector1, vector2);
                }
            }
            else if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, pred.CastPosition))
            {
                //wall check
                if (pred.Hitchance >= HitChance.Medium)
                {
                    CastR(vector1, pred.CastPosition);
                }
            }
        }
示例#2
0
 private static void Fight(string mode)
 {
     if (GetValue <bool>(mode, "P") && HaveP && Orbwalk.GetBestHeroTarget != null && Orbwalk.CanAttack)
     {
         return;
     }
     if (GetValue <bool>(mode, "Q") && Q.IsReady())
     {
         if (IsQOne)
         {
             var target = Q.GetTarget();
             if (target != null)
             {
                 var state = Q.Cast(target, PacketCast);
                 if (state.IsCasted())
                 {
                     return;
                 }
                 if (state == Spell.CastStates.Collision && GetValue <bool>(mode, "QCol") && Smite.IsReady())
                 {
                     var pred = Q.GetPrediction(target);
                     if (
                         pred.CollisionObjects.Count(
                             i => i.IsValid <Obj_AI_Minion>() && IsSmiteable((Obj_AI_Minion)i)) == 1 &&
                         CastSmite(pred.CollisionObjects.First()) && Q.Cast(pred.CastPosition, PacketCast))
                     {
                         return;
                     }
                 }
             }
         }
         else
         {
             var target = Q2.GetTarget(0, HeroManager.Enemies.Where(i => !HaveQ(i)));
             if (target != null &&
                 (QAgain(target) ||
                  ((target.HasBuffOfType(BuffType.Knockback) || target.HasBuffOfType(BuffType.Knockup)) &&
                   Player.Distance(target) > 300 && !R.IsReady() && Utils.TickCount - R.LastCastAttemptT < 1500) ||
                  Q.IsKillable(target, 1) || !Orbwalk.InAutoAttackRange(target, 100) || !HaveP) &&
                 Q2.Cast(PacketCast))
             {
                 return;
             }
             if (target == null)
             {
                 var sub = Q2.GetTarget();
                 if (sub != null &&
                     ObjHaveQ.Any(i => i.Distance(sub) < Player.Distance(sub) && i.Distance(sub) < E.Range) &&
                     Q2.Cast(PacketCast))
                 {
                     return;
                 }
             }
         }
     }
     if (GetValue <bool>(mode, "Smite") && CurrentSmiteType == SmiteType.Red)
     {
         var target = TargetSelector.GetTarget(760, TargetSelector.DamageType.Physical);
         if (target != null)
         {
             CastSmite(target, false);
         }
         return;
     }
     if (GetValue <bool>(mode, "E") && E.IsReady())
     {
         if (IsEOne)
         {
             if (E.GetTarget() != null && Player.Mana >= 70 && E.Cast(PacketCast))
             {
                 return;
             }
         }
         else if (
             HeroManager.Enemies.Where(i => i.IsValidTarget(E2.Range) && HaveE(i))
             .Any(i => EAgain(i) || !Orbwalk.InAutoAttackRange(i, 50) || !HaveP) && Player.Mana >= 50 &&
             E2.Cast(PacketCast))
         {
             return;
         }
     }
     if (GetValue <bool>(mode, "R") && R.IsReady())
     {
         var target = R.GetTarget(0, HeroManager.Enemies.Where(i => !HaveQ(i)));
         if (GetValue <bool>(mode, "Q") && Q.IsReady() && !IsQOne && target != null)
         {
             if (CanKill(target, GetQ2Dmg(target, R.GetDamage(target))) && R.CastOnUnit(target, PacketCast))
             {
                 return;
             }
         }
         else
         {
             foreach (var enemy in
                      HeroManager.Enemies.Where(i => i.IsValidTarget(R.Range) && !R.IsKillable(i)))
             {
                 R2.UpdateSourcePosition(enemy.ServerPosition, enemy.ServerPosition);
                 var enemyBehind =
                     HeroManager.Enemies.Where(
                         i =>
                         i.IsValidTarget(R2.Range) && i.NetworkId != enemy.NetworkId &&
                         R2.WillHit(
                             i, enemy.ServerPosition.Extend(Player.ServerPosition, -R2.Range),
                             (int)enemy.BoundingRadius)).ToList();
                 if (GetValue <bool>(mode, "RBehind") && enemyBehind.Any(i => R.IsKillable(i)) &&
                     R.CastOnUnit(enemy, PacketCast))
                 {
                     break;
                 }
                 if (enemyBehind.Count >= GetValue <Slider>(mode, "RCount").Value&&
                     R.CastOnUnit(enemy, PacketCast))
                 {
                     break;
                 }
             }
         }
     }
     if (GetValue <bool>(mode, "W") && W.IsReady() && Orbwalk.GetBestHeroTarget != null)
     {
         if (IsWOne)
         {
             if (Player.HealthPercent < GetValue <Slider>(mode, "WHpU").Value)
             {
                 W.Cast(PacketCast);
             }
         }
         else if (!Player.HasBuff("BlindMonkSafeguard") &&
                  (Player.HealthPercent < GetValue <Slider>(mode, "WHpU").Value || !HaveP))
         {
             W.Cast(PacketCast);
         }
     }
 }
示例#3
0
        protected override void Drawing_OnDraw(EventArgs args)
        {
            if (menu.Item("Draw_Disabled", true).GetValue <bool>())
            {
                return;
            }

            if (menu.Item("Draw_Q", true).GetValue <bool>())
            {
                if (Q.Level > 0)
                {
                    Render.Circle.DrawCircle(Player.Position, Q.Range, Q.IsReady() ? Color.Green : Color.Red);
                }
            }

            if (menu.Item("Draw_W", true).GetValue <bool>())
            {
                if (W.Level > 0)
                {
                    Render.Circle.DrawCircle(Player.Position, W.Range - 2, W.IsReady() ? Color.Green : Color.Red);
                }
            }

            if (menu.Item("Draw_E", true).GetValue <bool>())
            {
                if (E.Level > 0)
                {
                    Render.Circle.DrawCircle(Player.Position, E.Range, E.IsReady() ? Color.Green : Color.Red);
                }
            }

            if (menu.Item("Draw_R", true).GetValue <bool>())
            {
                if (R.Level > 0)
                {
                    Render.Circle.DrawCircle(Player.Position, R.Range, R.IsReady() ? Color.Green : Color.Red);
                }
            }


            if (menu.Item("Draw_R_Pred", true).GetValue <bool>() && R.IsReady())
            {
                if (countEnemiesNearPosition(Player.ServerPosition, R.Range + 500) < 2)
                {
                    var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

                    if (target == null)
                    {
                        return;
                    }

                    var vector1 = target.ServerPosition - Vector3.Normalize(target.ServerPosition - Player.ServerPosition) * 300;

                    R2.UpdateSourcePosition(vector1, vector1);

                    var pred = R2.GetPrediction(target, true);

                    var midpoint = (Player.ServerPosition + pred.UnitPosition) / 2;
                    var vector2  = midpoint - Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 300;

                    if (Player.Distance(target) < 400)
                    {
                        vector1 = midpoint + Vector3.Normalize(pred.UnitPosition - Player.ServerPosition) * 800;
                        if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, vector2))
                        {
                            Vector2 wts = Drawing.WorldToScreen(Player.Position);
                            Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + 1);

                            Vector2 wtsPlayer = Drawing.WorldToScreen(vector1);
                            Vector2 wtsPred   = Drawing.WorldToScreen(vector2);

                            Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat);
                            Render.Circle.DrawCircle(vector1, 50, Color.Aqua);
                            Render.Circle.DrawCircle(vector2, 50, Color.Yellow);
                            Render.Circle.DrawCircle(pred.UnitPosition, 50, Color.Red);
                        }
                    }
                    else if (!IsPassWall(pred.UnitPosition, vector1) && !IsPassWall(pred.UnitPosition, pred.CastPosition))
                    {
                        if (pred.Hitchance >= HitChance.Medium)
                        {
                            Vector2 wts = Drawing.WorldToScreen(Player.Position);
                            Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + 1);

                            Vector2 wtsPlayer = Drawing.WorldToScreen(vector1);
                            Vector2 wtsPred   = Drawing.WorldToScreen(pred.CastPosition);

                            Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat);
                            Render.Circle.DrawCircle(vector1, 50, Color.Aqua);
                            Render.Circle.DrawCircle(pred.CastPosition, 50, Color.Yellow);
                        }
                    }
                    return;
                }
                //-----------------------------------------------------------------Draw Ult Mec-----------------------------------------------
                int     maxHit = 0;
                Vector3 start  = Vector3.Zero;
                Vector3 end    = Vector3.Zero;
                Vector3 mid    = Vector3.Zero;
                //loop one
                foreach (var target in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsValidTarget(R.Range)).OrderByDescending(GetComboDamage))
                {
                    //loop 2
                    foreach (
                        var enemy in
                        ObjectManager.Get <Obj_AI_Hero>()
                        .Where(
                            x =>
                            x.IsValidTarget(R.Range + 1000) && x.NetworkId != target.NetworkId &&
                            x.Distance(target) < 900)
                        .OrderByDescending(x => x.Distance(target)))
                    {
                        int hit = 2;

                        var targetPred = Prediction.GetPrediction(target, .25f);
                        var enemyPred  = Prediction.GetPrediction(enemy, .25f);

                        var midpoint = (enemyPred.CastPosition + targetPred.CastPosition) / 2;

                        var startpos = midpoint + Vector3.Normalize(enemyPred.CastPosition - targetPred.CastPosition) * 600;
                        var endPos   = midpoint - Vector3.Normalize(enemyPred.CastPosition - targetPred.CastPosition) * 600;

                        if (!IsPassWall(midpoint, startpos) && !IsPassWall(midpoint, endPos) && countEnemiesNearPosition(Player.ServerPosition, R.Range + 1000) > 2)
                        {
                            //loop 3
                            foreach (var enemy2 in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsValidTarget(R.Range + 1000) && x.NetworkId != target.NetworkId && x.NetworkId != enemy.NetworkId && x.Distance(target) < 1000))
                            {
                                var enemy2Pred = Prediction.GetPrediction(enemy2, .25f);

                                Object[] obj       = VectorPointProjectionOnLineSegment(startpos.To2D(), endPos.To2D(), enemy2Pred.CastPosition.To2D());
                                var      isOnseg   = (bool)obj[2];
                                var      pointLine = (Vector2)obj[1];

                                if (pointLine.Distance(enemy2Pred.CastPosition.To2D()) < 100 + enemy2.BoundingRadius &&
                                    isOnseg)
                                {
                                    hit++;
                                }
                            }
                        }
                        if (hit > maxHit)
                        {
                            maxHit = hit;
                            start  = startpos;
                            end    = endPos;
                            mid    = midpoint;
                        }
                    }
                }

                if (maxHit >= 2)
                {
                    Vector2 wts = Drawing.WorldToScreen(Player.Position);
                    Drawing.DrawText(wts[0], wts[1], Color.Wheat, "Hit: " + maxHit);

                    Vector2 wtsPlayer = Drawing.WorldToScreen(start);
                    Vector2 wtsPred   = Drawing.WorldToScreen(end);

                    Drawing.DrawLine(wtsPlayer, wtsPred, 1, Color.Wheat);
                    Render.Circle.DrawCircle(start, 50, Color.Aqua);
                    Render.Circle.DrawCircle(end, 50, Color.Yellow);
                    Render.Circle.DrawCircle(mid, 50, Color.Red);
                }
                //---------------------------------------------------End drawing Ult Mec---------------------------------------
            }
        }