コード例 #1
0
        private void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
        {
            // Only check for enemy Heroes and recall teleports
            if (sender.Type == GameObjectType.AIHeroClient && sender.IsEnemy && args.Type == TeleportType.Recall)
            {
                switch (args.Status)
                {
                case TeleportStatus.Start:
                    RecallingHeroes[sender.NetworkId] = new Tuple <int, int>(Core.GameTickCount, args.Duration);
                    break;

                case TeleportStatus.Abort:
                    RecallingHeroes.Remove(sender.NetworkId);
                    break;

                case TeleportStatus.Finish:
                    LastSeen[sender.NetworkId]         = Core.GameTickCount;
                    LastSeenPosition[sender.NetworkId] = EnemySpawnPoint;
                    LastSeenRange[sender.NetworkId]    = 0;
                    RecallingHeroes.Remove(sender.NetworkId);
                    break;
                }
            }
        }
コード例 #2
0
ファイル: RandomUlt.cs プロジェクト: alathuan2/Elobuddy
        public void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
        {
            var enemy = RandomUltUnits.Find(x => x.Unit.NetworkId == sender.NetworkId);

            if (enemy == null || args.Type != TeleportType.Recall)
            {
                return;
            }
            var recall = enemy.RecallData;

            switch (args.Status)
            {
            case TeleportStatus.Start:
            {
                recall.Status   = RecallStatus.Active;
                recall.Started  = Game.Time;
                recall.Duration = args.Duration;
                recall.Ended    = recall.Started + recall.Duration;
                break;
            }

            case TeleportStatus.Abort:
            {
                recall.Status = RecallStatus.Abort;
                recall.Ended  = Game.Time;
                break;
            }

            case TeleportStatus.Finish:
            {
                recall.Status = RecallStatus.Finished;
                recall.Ended  = Game.Time;
                break;
            }
            }
        }
コード例 #3
0
 public TrackedTeleport(AIHeroClient caster, Teleport.TeleportEventArgs args)
 {
     this.Caster    = caster;
     this.Args      = args;
     this.StartTick = args.Start;
 }
コード例 #4
0
ファイル: AurelionSol.cs プロジェクト: tekintr/AIO
 protected override void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
 {
     return;
 }
コード例 #5
0
ファイル: BaseUlt.cs プロジェクト: tekintr/AIO
        private static void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
        {
            if (sender?.Type != GameObjectType.AIHeroClient)
            {
                return;
            }
            var hero = sender as AIHeroClient;

            if (hero == null || (!hero.IsEnemy && !BaseMenu.VChecked("Tracker.Enabled.Ally")))
            {
                return;
            }

            switch (args.Status)
            {
            case TeleportStatus.Start:
            {
                if (BaseMenu.VChecked("Tracker.Enabled"))
                {
                    var text = args.Type.Equals(TeleportType.Recall) ? "recalling." : "teleporting.";
                    UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " is " + text, "recall", 2500);
                }
                if (Teleporting.ContainsKey(sender.NetworkId))
                {
                    Teleporting[sender.NetworkId] = new Teleport_Infomation(sender, args.Type.Equals(TeleportType.Recall))
                    {
                        Duration = args.Duration, Started = args.Start, End = args.Duration + args.Start
                    };
                }
                else
                {
                    Teleporting.Add(sender.NetworkId, new Teleport_Infomation(sender, args.Type.Equals(TeleportType.Recall))
                        {
                            Duration = args.Duration, Started = args.Start, End = args.Duration + args.Start
                        });
                }
            }
            break;

            case TeleportStatus.Abort:
            {
                if (BaseMenu.VChecked("Tracker.Enabled"))
                {
                    var text = args.Type.Equals(TeleportType.Recall) ? "recall." : "teleport.";
                    UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " canceled " + text, "recall", 2500);
                }
                Teleporting.Remove(hero.NetworkId);
            }
            break;

            case TeleportStatus.Finish:
            {
                if (BaseMenu.VChecked("Tracker.Enabled"))
                {
                    var text = args.Type.Equals(TeleportType.Recall) ? "recall." : "teleport.";
                    UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " finished " + text, "recall", 2500);
                }
                Teleporting.Remove(hero.NetworkId);
            }
            break;

            case TeleportStatus.Unknown:
            {
                Teleporting.Remove(hero.NetworkId);
            }
            break;

            default:
                throw new ArgumentOutOfRangeException(nameof(args.Status));
            }
        }
コード例 #6
0
 /// <summary>
 ///     On teleport event.
 /// </summary>
 /// <param name="sender">
 ///     The sender.
 /// </param>
 /// <param name="args">
 ///     The args.
 /// </param>
 private static void OnTeleportEvent(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
 {
     EventTeleport(sender, args);
 }
コード例 #7
0
 protected virtual void Volatile_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
 {
     //for extensions
 }
コード例 #8
0
 private void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
 {
     Volatile_OnTeleport(sender, args);
 }
コード例 #9
0
        private void SnipePredictionOnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
        {
            if (sender != target)
            {
                return;
            }

            float timeElapsed_ms = Core.GameTickCount - invisibleStartTime;

            if (DoesCollide().Any())
            {
                SnipeChance = HitChance.Collision;
            }

            if (args.Status == TeleportStatus.Start)
            {
                float maxWalkDist = target.Position.Distance(lastRealPath.Last());
                float moveSpeed   = target.MoveSpeed;

                float normalTime_ms = maxWalkDist / moveSpeed * 1000;

                /*target hasn't reached end point*/
                if (timeElapsed_ms <= normalTime_ms)
                {
                    SnipeChance = HitChance.High;
                }
                else if (timeElapsed_ms > normalTime_ms) /*target reached endPoint and is nearby*/
                {
                    float extraTimeElapsed   = timeElapsed_ms - normalTime_ms;
                    float targetSafeZoneTime = ultBoundingRadius / moveSpeed * 1000;

                    if (extraTimeElapsed < targetSafeZoneTime)
                    {
                        /*target has reached end point but is still in danger zone*/
                        SnipeChance = HitChance.Medium;
                    }
                    else
                    {
                        /*target too far away*/
                        SnipeChance = HitChance.Low;
                    }
                }


                float realDist = moveSpeed * (timeElapsed_ms / 1000);
                CastPosition = GetCastPosition(realDist);

                lastEstimatedPosition = CastPosition;
            }

            if (args.Status == TeleportStatus.Abort)
            {
                SnipeChance = HitChance.Impossible;
                CancelProcess();
            }

            int minHitChance        = Listing.snipeMenu.Get <Slider>("minSnipeHitChance").CurrentValue;
            int currentHitChanceInt = 0;

            if ((int)SnipeChance <= 2)
            {
                currentHitChanceInt = 0;
            }
            else if (SnipeChance == HitChance.Low)
            {
                currentHitChanceInt = 1;
            }
            else if (SnipeChance == HitChance.Medium)
            {
                currentHitChanceInt = 2;
            }
            else if (SnipeChance == HitChance.High)
            {
                currentHitChanceInt = 3;
            }

            if (currentHitChanceInt >= minHitChance)
            {
                if (Listing.snipeMenu.Get <CheckBox>("snipeDraw").CurrentValue)
                {
                    Drawing.OnDraw += OnDraw;
                }
                CheckUltCast(args.Start + args.Duration);
            }
            else
            {
                CancelProcess();
            }
        }
コード例 #10
0
 private static void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
 {
 }
コード例 #11
0
 /// <summary>
 ///     Is Target
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     returns where the teleport is target.
 /// </returns>
 public bool IsTarget(Teleport.TeleportEventArgs args)
 {
     return(!string.Equals(args.Type.ToString(), "ShenStandUnited", StringComparison.InvariantCultureIgnoreCase));
 }
コード例 #12
0
 /// <summary>
 ///     Get duration
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     Duration of the teleport.
 /// </returns>
 public int GetDuration(Teleport.TeleportEventArgs args)
 {
     return(3000);
 }
コード例 #13
0
 /// <summary>
 ///     Is Target
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     returns where the teleport is target.
 /// </returns>
 public bool IsTarget(Teleport.TeleportEventArgs args)
 {
     return(false);
 }
コード例 #14
0
        private void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args)
        {
            if (sender?.Type != GameObjectType.AIHeroClient)
            {
                return;
            }

            var hero = sender as AIHeroClient;

            if (hero == null || hero.IsMe || !hero.IsEnemy || args.Type == TeleportType.Shen)
            {
                return;
            }

            switch (args.Status)
            {
            case TeleportStatus.Start:
                if (args.Type == TeleportType.Recall)
                {
                    if (IsRecallTrackerEnabled)
                    {
                        Notifications.Show(new SimpleNotification("Recall tracker", $"{hero.Hero} ({hero.Name}) just started recalling."), 2500);
                    }

                    ActiveRecalls[hero.NetworkId] = args;
                }
                ActiveTeleports[hero.NetworkId] = args;

                break;

            case TeleportStatus.Abort:
                if (args.Type == TeleportType.Recall)
                {
                    ActiveRecalls.Remove(hero.NetworkId);
                }

                ActiveTeleports.Remove(hero.NetworkId);
                break;

            case TeleportStatus.Finish:
                if (args.Type == TeleportType.Recall)
                {
                    if (IsRecallTrackerEnabled)
                    {
                        Notifications.Show(new SimpleNotification("Recall tracker", $"{hero.Hero} ({hero.Name}) just finished recalling."), 2500);
                    }

                    ActiveRecalls.Remove(hero.NetworkId);
                }

                ActiveTeleports.Remove(hero.NetworkId);
                break;

            case TeleportStatus.Unknown:
                ActiveTeleports.Remove(hero.NetworkId);
                ActiveRecalls.Remove(hero.NetworkId);
                return;

            default:
                throw new ArgumentOutOfRangeException(nameof(args.Status));
            }
        }