Example #1
0
 internal static void AtoB(this Spell spell, Obj_AI_Base T, float Drag = 700f) //Coded By RL244 AtoB Drag 기본값 700f는 빅토르를 위한 것임.
 {
     if (T != null)
     {
         var             T2       = HeroManager.Enemies.Where(x => x != T && AIO_Func.CanHit(spell, x, Drag)).FirstOrDefault();
         var             pred     = Prediction.GetPrediction(T, spell.Delay, spell.Width / 2, spell.Speed);
         var             T2pred   = Prediction.GetPrediction(T2, spell.Delay, spell.Width / 2, spell.Speed);
         SharpDX.Vector2 castVec  = (pred.UnitPosition.To2D() + T.ServerPosition.To2D()) / 2;
         SharpDX.Vector2 castVec2 = Player.ServerPosition.To2D() +
                                    SharpDX.Vector2.Normalize(pred.UnitPosition.To2D() - Player.Position.To2D()) * (spell.Range);
         SharpDX.Vector2 castVec3 = T.ServerPosition.To2D() -
                                    SharpDX.Vector2.Normalize(pred.UnitPosition.To2D() - Player.Position.To2D()) * (40f);
         if (pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)
         {
             if (T.Distance(Player.ServerPosition) >= spell.Range)
             {
                 if (AIO_Func.CanHit(spell, T, Drag) && T2 == null && pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)
                 {
                     spell.Cast(castVec2, pred.UnitPosition.To2D());
                 }
                 else //if(AIO_Func.CanHit(spell,T,Drag) && T2 != null && T2pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)//별로 좋은 생각이 더 안나고 피곤해서 걍관둠.
                 {
                     spell.Cast(castVec2, T.ServerPosition.To2D());//별로 좋은 생각이 더 안나고 피곤해서 걍관둠.
                 }
             }
             else
             {
                 if (T2 == null || !AIO_Func.CanHit(spell, T2, Drag))
                 {
                     spell.Cast(castVec3, T.ServerPosition.To2D());
                 }
                 else if (T2 != null && AIO_Func.CanHit(spell, T2, Drag) && T2pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)
                 {
                     SharpDX.Vector2 castVec4 = T.ServerPosition.To2D() -
                                                SharpDX.Vector2.Normalize(T2pred.UnitPosition.To2D() - T.ServerPosition.To2D()) * (40f);
                     spell.Cast(castVec4, T2pred.UnitPosition.To2D());
                 }
             }
         }
     }
 }
Example #2
0
        internal static void AtoB(this Spell spell, Obj_AI_Base T, float Drag = 700f) //Coded By RL244 AtoB Drag 기본값 700f는 빅토르를 위한 것임.
        {
            if (T != null)
            {
                var TH = T as Obj_AI_Hero;
                var TM = T as Obj_AI_Minion;
                if (TH != null)
                {
                    var             TH2      = HeroManager.Enemies.Where(x => x != TH && AIO_Func.CanHit(spell, x, Drag)).FirstOrDefault();
                    var             THdelay  = (Player.Distance(TH.ServerPosition) > spell.Range ? (Player.Distance(TH.ServerPosition) - spell.Range) / spell.Speed : 100f / spell.Speed);
                    var             pred     = Prediction.GetPrediction(TH, THdelay + spell.Delay);
                    var             TH2delay = (TH2 != null ?(Player.Distance(TH.ServerPosition) > spell.Range ? (Player.Distance(TH2.ServerPosition) - spell.Range) / spell.Speed : TH2.ServerPosition.Distance(TH.ServerPosition) / spell.Speed):0f);
                    var             TH2pred  = (TH2 != null ? Prediction.GetPrediction(TH2, TH2delay + spell.Delay) : null);
                    SharpDX.Vector2 castVec  = (pred.UnitPosition.To2D() + TH.ServerPosition.To2D()) / 2;
                    SharpDX.Vector2 castVec2 = Player.ServerPosition.To2D() +
                                               SharpDX.Vector2.Normalize(pred.UnitPosition.To2D() - Player.Position.To2D()) * (spell.Range);
                    SharpDX.Vector2 castVec3 = TH.ServerPosition.To2D() -
                                               SharpDX.Vector2.Normalize(pred.UnitPosition.To2D() - Player.Position.To2D()) * (100f);
                    SharpDX.Vector2 EditedVec = pred.UnitPosition.To2D() -
                                                SharpDX.Vector2.Normalize(pred.UnitPosition.To2D() - TH.ServerPosition.To2D()) * (spell.Width * 2 / 5);
                    SharpDX.Vector2 EditedCV2Vec = Player.ServerPosition.To2D() +
                                                   SharpDX.Vector2.Normalize(EditedVec - Player.Position.To2D()) * (spell.Range);

                    if (pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)
                    {
                        if (TH.Distance(Player.ServerPosition) >= spell.Range)
                        {
                            if (AIO_Func.CanHit(spell, TH, Drag) && (pred.UnitPosition.Distance(TH.ServerPosition) <= spell.Width / 2 || TH.MoveSpeed * THdelay <= spell.Width / 2)) //if(AIO_Func.CanHit(spell,TH,Drag) && TH2 != null && TH2pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)//별로 좋은 생각이 더 안나고 피곤해서 걍관둠.
                            {
                                spell.Cast(EditedCV2Vec, TH.ServerPosition.To2D());                                                                                                  //별로 좋은 생각이 더 안나고 피곤해서 걍관둠.
                            }
                            else if (AIO_Func.CanHit(spell, TH, Drag) && pred.UnitPosition.Distance(TH.ServerPosition) < 350)
                            {
                                if (pred.UnitPosition.Distance(Player.ServerPosition) > spell.Range)
                                {
                                    spell.Cast(castVec2, EditedVec);//pred.UnitPosition.To2D());
                                }
                            }
                        }
                        else
                        {
                            if (TH2 == null || !AIO_Func.CanHit(spell, TH2, Drag))
                            {
                                if (castVec3.Distance(Player.ServerPosition) < TH.ServerPosition.Distance(Player.ServerPosition))
                                {
                                    spell.Cast(castVec3, TH.ServerPosition.To2D());
                                }
                                else
                                {
                                    spell.Cast(TH.ServerPosition.To2D(), castVec3);
                                }
                            }
                            else if (TH2 != null && AIO_Func.CanHit(spell, TH2, Drag) && TH2pred.Hitchance >= AIO_Menu.Champion.Misc.SelectedHitchance)
                            {
                                SharpDX.Vector2 castVec4 = TH.ServerPosition.To2D() -
                                                           SharpDX.Vector2.Normalize(TH2pred.UnitPosition.To2D() - TH.ServerPosition.To2D()) * (80f);
                                if (castVec4.Distance(Player.ServerPosition) < TH2pred.UnitPosition.Distance(Player.ServerPosition))
                                {
                                    spell.Cast(castVec4, TH2pred.UnitPosition.To2D());
                                }
                                else
                                {
                                    spell.Cast(TH2pred.UnitPosition.To2D(), castVec4);
                                }
                            }
                        }
                    }
                }
                if (TM != null)
                {
                    var Minions = ObjectManager.Get <Obj_AI_Minion>().Where(m => m.IsValidTarget(spell.Range + Drag) && m.Team != ObjectManager.Player.Team).Cast <Obj_AI_Base>().ToList();
                    if (Minions.Count > 0)
                    { //으....
                        //MinionManager.GetMinions(spell.Range+Drag, MinionTypes.All, MinionTeam.NotAlly);
                        var FM  = Minions.OrderBy(o => o.Distance(Player.ServerPosition)).FirstOrDefault().ServerPosition;
                        var FFM = Minions.OrderBy(o => o.Distance(Player.ServerPosition)).Reverse().FirstOrDefault().ServerPosition;
                        var P   = MinionManager.GetMinionsPredictedPositions(Minions, spell.Delay, spell.Width, spell.Speed, FM, Drag, true, SkillshotType.SkillshotLine);
                        var PP  = MinionManager.GetBestLineFarmLocation(P, spell.Width, spell.Range + Drag);
                        if (FM != null && FM.Distance(Player.ServerPosition) <= spell.Range)// && PP.MinionsHit >= Math.Min(Minions.Count,6))
                        //spell.Cast(FM.To2D(),PP.Position);
                        {
                            spell.Cast(FM.To2D(), FFM.To2D());
                        }
                    }
                }
            }
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                var Minions = ObjectManager.Get <Obj_AI_Minion>().Where(m => m.IsValidTarget(spell.Range + Drag) && m.Team != ObjectManager.Player.Team).Cast <Obj_AI_Base>().ToList();
                if (Minions.Count > 0)
                {
                    //MinionManager.GetMinions(spell.Range+Drag, MinionTypes.All, MinionTeam.NotAlly);
                    var FM  = Minions.OrderBy(o => o.Distance(Player.ServerPosition)).FirstOrDefault().ServerPosition;
                    var FFM = Minions.OrderBy(o => o.Distance(Player.ServerPosition)).Reverse().FirstOrDefault().ServerPosition;
                    var P   = MinionManager.GetMinionsPredictedPositions(Minions, spell.Delay, spell.Width, spell.Speed, FM, Drag, true, SkillshotType.SkillshotLine);
                    var PP  = MinionManager.GetBestLineFarmLocation(P, spell.Width, spell.Range + Drag);
                    if (FM != null && FM.Distance(Player.ServerPosition) <= spell.Range)   // && PP.MinionsHit >= Math.Min(Minions.Count,6))
                    //spell.Cast(FM.To2D(),PP.Position);
                    {
                        spell.Cast(FM.To2D(), FFM.To2D());
                    }
                }
            }
        }