Beispiel #1
0
        private static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
                return;

            var ChampionInfoOne = ChampionInfoList.Find(x => x.NetworkId == sender.NetworkId);

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                    case Packet.S2C.Teleport.Status.Start:
                        ChampionInfoOne.StartRecallTime = Game.Time;
                        break;
                    case Packet.S2C.Teleport.Status.Abort:
                        ChampionInfoOne.AbortRecallTime = Game.Time;
                        break;
                    case Packet.S2C.Teleport.Status.Finish:
                        ChampionInfoOne.FinishRecallTime = Game.Time;
                        ChampionInfoOne.LastVisablePos = ObjectManager.Get<Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy).Position;
                        break;
                }
            }
        }
Beispiel #2
0
        private static void onTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            //si alguien esta backeando
            //  Game.PrintChat("El chaval esta en fov");
            if (!menu.Item("active").GetValue <bool>())
            {
                return;
            }

            if (HeroManager.Enemies
                .FindAll(hero => hero.IsRecalling())                                      // 200 * 200
                .OrderBy(h => h.Distance(Game.CursorPos, true)).FirstOrDefault() != null) // siempre que estes en fov esto sera null
            {
                hero = HeroManager.Enemies
                       .FindAll(heros => heros.IsRecalling())                            // 200 * 200
                       .OrderBy(h => h.Distance(Game.CursorPos, true)).FirstOrDefault(); //
            }
            else
            {
                //aqui estamos en fov
                Game.PrintChat("Ulti on fov dont work on this version wait :)");
            }

            //
            Drawing.OnDraw += draw;
        }
Beispiel #3
0
        private void OnObjAiBaseTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            try
            {
                if (!this.Menu.Item("cooldown-tracker-Enabled").IsActive())
                {
                    return;
                }

                var packet = Packet.S2C.Teleport.Decoded(sender, args);
                if (packet.Type == Packet.S2C.Teleport.Type.Teleport &&
                    (packet.Status == Packet.S2C.Teleport.Status.Finish ||
                     packet.Status == Packet.S2C.Teleport.Status.Abort))
                {
                    var time = Game.Time;
                    Utility.DelayAction.Add(
                        250,
                        delegate
                    {
                        var cd = packet.Status == Packet.S2C.Teleport.Status.Finish ? 300 : 200;
                        _teleports[packet.UnitNetworkId] = time + cd;
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Beispiel #4
0
        private static void Obj_AI_Base_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var packet       = Packet.S2C.Teleport.Decoded(sender, args);
            var lastPosition = LastPositions.FirstOrDefault(e => e.Hero.NetworkId == packet.UnitNetworkId);

            if (lastPosition != null)
            {
                switch (packet.Status)
                {
                case Packet.S2C.Teleport.Status.Start:
                    lastPosition.IsTeleporting = true;
                    break;

                case Packet.S2C.Teleport.Status.Abort:
                    lastPosition.IsTeleporting = false;
                    break;

                case Packet.S2C.Teleport.Status.Finish:
                    lastPosition.Teleported    = true;
                    lastPosition.IsTeleporting = false;
                    lastPosition.LastSeen      = Game.Time;
                    break;
                }
            }
        }
Beispiel #5
0
        private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
            if (decoded.UnitNetworkId == _hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (decoded.Status)
                {
                case Packet.S2C.Teleport.Status.Start:
                    _begin    = Game.ClockTime;
                    _duration = decoded.Duration;
                    _active   = true;
                    break;

                case Packet.S2C.Teleport.Status.Finish:
                    int    colorIndex = (int)((_hero.HealthPercent / 100) * 255);
                    string color      = (255 - colorIndex).ToString("X2") + colorIndex.ToString("X2") + "00";
                    Program.Instance().Notify(_hero.ChampionName + " has recalled with <font color='#" + color + "'>" + (int)_hero.HealthPercent + "&#37; HP</font>");
                    _active = false;
                    break;

                case Packet.S2C.Teleport.Status.Abort:
                    _active = false;
                    break;

                case Packet.S2C.Teleport.Status.Unknown:
                    Program.Instance()
                    .Notify(
                        _hero.ChampionName + " is <font color='#ff3232'>unknown</font> (" +
                        _hero.Spellbook.GetSpell(SpellSlot.Recall).Name + ")");
                    _active = false;
                    break;
                }
            }
        }
Beispiel #6
0
    private void OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
    {
        var unit = sender as Obj_AI_Hero;

        if (unit == null)
        {
            return;
        }

        var hero   = heroes_info[sender.NetworkId];
        var recall = S2C.Teleport.Decoded(unit, args);

        switch (recall.Status)
        {
        case S2C.Teleport.Status.Finish:
            if (sender.IsEnemy && recall.Type == S2C.Teleport.Type.Recall)
            {
                hero.last_visible_position = OktwCommon.EnemySpawnPoint.Position;
                hero.last_visible_tick     = LeagueSharp.Common.Utils.TickCount;
            }
            hero.teleport_finish_tick = Game.Time;
            break;

        case S2C.Teleport.Status.Abort:
            hero.teleport_abort_tick = Game.Time;
            break;

        case S2C.Teleport.Status.Start:
            hero.teleport_type       = recall.Type;
            hero.teleport_start_tick = Game.Time;
            hero.teleport_end_tick   = Game.Time + recall.Duration / 1000f;
            break;
        }
    }
Beispiel #7
0
        public static int GetRecallDuration(GameObjectTeleportEventArgs args)
        {
            string key;

            switch (key = args.RecallType.ToLower())
            {
            case "recall":
                return(8000);

            case "recallimproved":
                return(7000);

            case "odinrecall":
                return(4500);

            case "odinrecallimproved":
                return(4000);

            case "superrecall":
                return(4000);

            case "superrecallimproved":
                return(4000);
            }
            return(8000);
        }
Beispiel #8
0
 private void OnObjAiBaseTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
 {
     try
     {
         var packet = Packet.S2C.Teleport.Decoded(sender, args);
         if (packet.Type == Packet.S2C.Teleport.Type.Teleport &&
             (packet.Status == Packet.S2C.Teleport.Status.Finish ||
              packet.Status == Packet.S2C.Teleport.Status.Abort))
         {
             var time = Game.Time;
             Utility.DelayAction.Add(
                 250, delegate
             {
                 var cd = packet.Status == Packet.S2C.Teleport.Status.Finish
                         ? (GameObjects.EnemyHeroes.Any(
                                e =>
                                e.NetworkId == packet.UnitNetworkId &&
                                GameObjects.EnemyTurrets.Any(t => e.Distance(t) < 400))
                             ? 240
                             : 300)
                         : 200;
                 _teleports[packet.UnitNetworkId] = time + cd;
             });
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
Beispiel #9
0
        private void OnObjAiBaseTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            try
            {
                if (!this.Menu.Item("cooldown-tracker-Enabled").IsActive())
                {
                    return;
                }

                var packet = Packet.S2C.Teleport.Decoded(sender, args);
                if (packet.Type == Packet.S2C.Teleport.Type.Teleport &&
                    (packet.Status == Packet.S2C.Teleport.Status.Finish ||
                     packet.Status == Packet.S2C.Teleport.Status.Abort))
                {
                    var time = Game.Time;
                    Utility.DelayAction.Add(
                        250,
                        delegate
                    {
                        var cd = packet.Status == Packet.S2C.Teleport.Status.Finish ? 300 : 200;
                        _teleports[packet.UnitNetworkId] = time + cd;
                    });
                }
            }
            catch (Exception e)
            {
                Logging.AddEntry(LoggingEntryType.Error, "@SpellTracker1.cs: An error occurred: {0}", e);
            }
        }
Beispiel #10
0
 private void OnObjAiBaseTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
 {
     try
     {
         var packet      = Packet.S2C.Teleport.Decoded(sender, args);
         var enemyObject = _enemyObjects.FirstOrDefault(e => e.Unit.NetworkId == packet.UnitNetworkId);
         if (enemyObject != null)
         {
             if (packet.Type == Packet.S2C.Teleport.Type.Teleport &&
                 (packet.Status == Packet.S2C.Teleport.Status.Finish ||
                  packet.Status == Packet.S2C.Teleport.Status.Abort))
             {
                 var time = Game.Time;
                 Utility.DelayAction.Add(
                     250, delegate
                 {
                     var cd = packet.Status == Packet.S2C.Teleport.Status.Finish ? 300 : 200;
                     _teleports[packet.UnitNetworkId] = time + cd;
                 });
             }
             enemyObject.TeleportStatus = packet.Status;
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
        private void OnObjAiBaseTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            try
            {
                var packet       = Packet.S2C.Teleport.Decoded(sender, args);
                var lastPosition = _lastPositions.FirstOrDefault(e => e.Hero.NetworkId == packet.UnitNetworkId);
                if (lastPosition != null)
                {
                    switch (packet.Status)
                    {
                    case Packet.S2C.Teleport.Status.Start:
                        lastPosition.IsTeleporting = true;
                        break;

                    case Packet.S2C.Teleport.Status.Abort:
                        lastPosition.IsTeleporting = false;
                        break;

                    case Packet.S2C.Teleport.Status.Finish:
                        lastPosition.Teleported    = true;
                        lastPosition.IsTeleporting = false;
                        lastPosition.LastSeen      = Game.Time;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Beispiel #12
0
        void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall    = Packet.S2C.Teleport.Decoded(unit, args);
            var enemyInfo = EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                case Packet.S2C.Teleport.Status.Abort:
                    if (Menu.Item("notifRecAborted").GetValue <bool>())
                    {
                        ShowNotification(enemyInfo.Player.ChampionName + ": Recall ABORTED", System.Drawing.Color.Orange, 4000);
                    }

                    break;

                case Packet.S2C.Teleport.Status.Finish:
                    if (Menu.Item("notifRecFinished").GetValue <bool>())
                    {
                        ShowNotification(enemyInfo.Player.ChampionName + ": Recall FINISHED", NotificationColor, 4000);
                    }

                    break;
                }
            }
        }
Beispiel #13
0
            private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
            {
                Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
                if (decoded.UnitNetworkId == _hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
                {
                    switch (decoded.Status)
                    {
                    case Packet.S2C.Teleport.Status.Start:
                        _begin    = Game.ClockTime;
                        _duration = decoded.Duration;
                        _active   = true;
                        break;

                    case Packet.S2C.Teleport.Status.Finish:
                        speakMsg = _hero.ChampionName + " has recalled.";
                        Thread tr = new Thread(new ThreadStart(TSSpeak));
                        tr.Start();
                        Program.Instance().Notify(_hero.ChampionName + " has recalled.");
                        _active = false;
                        break;

                    case Packet.S2C.Teleport.Status.Abort:
                        _active = false;
                        break;

                    case Packet.S2C.Teleport.Status.Unknown:
                        Program.Instance()
                        .Notify(
                            _hero.ChampionName + " is <font color='#ff3232'>unknown</font> (" +
                            _hero.Spellbook.GetSpell(SpellSlot.Recall).Name + ")");
                        _active = false;
                        break;
                    }
                }
            }
Beispiel #14
0
        private static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var ChampionInfoOne = ChampionInfoList.Find(x => x.NetworkId == sender.NetworkId);

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                case Packet.S2C.Teleport.Status.Start:
                    ChampionInfoOne.StartRecallTime = Game.Time;
                    break;

                case Packet.S2C.Teleport.Status.Abort:
                    ChampionInfoOne.AbortRecallTime = Game.Time;
                    break;

                case Packet.S2C.Teleport.Status.Finish:
                    ChampionInfoOne.FinishRecallTime = Game.Time;
                    ChampionInfoOne.LastVisablePos   = ObjectManager.Get <Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy).Position;
                    break;
                }
            }
        }
Beispiel #15
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     try
     {
         if (!Enabled) return;
         Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
         var recall = _recalls.FirstOrDefault(r => r.Hero.NetworkId == decoded.UnitNetworkId);
         if (!Equals(recall, default(Recall)))
         {
             recall.Duration = decoded.Duration;
             recall.LastStatus = decoded.Status;
             recall.LastStatusType = decoded.Type;
         }
         if (decoded.Status == Packet.S2C.Teleport.Status.Finish)
             IoC.Resolve<Mediator>().NotifyColleagues(Name + "_Finished", decoded.UnitNetworkId);
         if (decoded.Status == Packet.S2C.Teleport.Status.Start)
             IoC.Resolve<Mediator>().NotifyColleagues(Name + "_Started", decoded.UnitNetworkId);
         if (decoded.Status == Packet.S2C.Teleport.Status.Abort)
             IoC.Resolve<Mediator>().NotifyColleagues(Name + "_Aborted", decoded.UnitNetworkId);
         if (decoded.Status == Packet.S2C.Teleport.Status.Unknown)
             IoC.Resolve<Mediator>().NotifyColleagues(Name + "_Unknown", decoded.UnitNetworkId);
     }
     catch (Exception ex)
     {
         Logger.WriteBlock(ex.Message, ex.ToString());
     }
 }
Beispiel #16
0
        internal static int GetRecallDuration(GameObjectTeleportEventArgs args)
        {
            switch (args.RecallType.ToLower())
            {
            case "recall":
                return(8000);

            case "recallimproved":
                return(7000);

            case "odinrecall":
                return(4500);

            case "odinrecallimproved":
                return(4000);

            case "superrecall":
                return(4000);

            case "superrecallimproved":
                return(4000);

            default:
                return(8000);    //fallback
            }
        }
Beispiel #17
0
        static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var target = sender as AIHeroClient;

            if (target == null || !target.IsValid || target.IsAlly)
            {
                return;
            }

            try
            {
                var recallPacket = Packet.S2C.Teleport.Decoded(target, args);
                if (recallPacket.Type != Packet.S2C.Teleport.Type.Recall ||
                    _orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo ||
                    !Config.Item("Killsteal-R-Snipe-Enabled").GetValue <bool>() ||
                    Player.HasBuff("Recall"))
                {
                    return;
                }

                var hero = ObjectManager.GetUnitByNetworkId <AIHeroClient>((uint)recallPacket.UnitNetworkId);

                if (!rFlag && recallPacket.Status == Packet.S2C.Teleport.Status.Start && hero.IsValid &&
                    hero.IsValidTarget(Config.Item("Killsteal-R-Snipe-Range").GetValue <Slider>().Value) &&
                    _r.GetDamage(hero) > hero.Health + 50)
                {
                    rCastAtTime = recallPacket.Start + recallPacket.Duration -
                                  Config.Item("Killsteal-R-Snipe-Delay").GetValue <Slider>().Value -
                                  ((Player.ServerPosition.Distance(hero.Position) / _r.Speed + _r.Delay) * 1000);

                    if (rCastAtTime < Environment.TickCount)
                    {
                        //Can't make it in time
                        rFlag = false;
                        Console.WriteLine("Too early");
                        rNetworkID = 0;
                    }
                    else
                    {
                        rPlayerVector = Player.ServerPosition;
                        rCastVector   = hero.Position;
                        rNetworkID    = recallPacket.UnitNetworkId;
                        rFlag         = true;
                        Console.WriteLine("rFlag: " + Environment.TickCount);
                    }
                }
                else if ((recallPacket.Status == Packet.S2C.Teleport.Status.Abort ||
                          recallPacket.Status == Packet.S2C.Teleport.Status.Finish) &&
                         recallPacket.UnitNetworkId == rNetworkID)
                {
                    rFlag = false;
                    Console.WriteLine("Abort");
                    rNetworkID = 0;
                }
            }
            catch
            {
            }
        }
Beispiel #18
0
                /// <summary>
                ///     Decodes the specified sender.
                /// </summary>
                /// <param name="sender">The sender.</param>
                /// <param name="args">The <see cref="GameObjectTeleportEventArgs" /> instance containing the event data.</param>
                /// <returns>Struct.</returns>
                public static Struct Decoded(GameObject sender, GameObjectTeleportEventArgs args) //
                {
                    var result = new Struct {
                        Status = Status.Unknown, Type = Type.Unknown
                    };

                    if (sender == null || !sender.IsValid || !(sender is Obj_AI_Hero))
                    {
                        return(result);
                    }

                    result.UnitNetworkId = sender.NetworkId;

                    var hero = sender as Obj_AI_Hero;

                    if (!RecallDataByNetworkId.ContainsKey(result.UnitNetworkId))
                    {
                        RecallDataByNetworkId[result.UnitNetworkId] = new TeleportData {
                            Type = Type.Unknown
                        };
                    }

                    if (!string.IsNullOrEmpty(args.RecallType))
                    {
                        if (TypeByString.ContainsKey(args.RecallType))
                        {
                            ITeleport teleportMethod = TypeByString[args.RecallType];

                            var duration = teleportMethod.GetDuration(args);
                            var type     = teleportMethod.Type;
                            var time     = Utils.TickCount;

                            RecallDataByNetworkId[result.UnitNetworkId] = new TeleportData
                            {
                                Duration = duration,
                                Type     = type,
                                Start    = time
                            };

                            result.Status   = Status.Start;
                            result.Duration = duration;
                            result.Type     = type;
                            result.Start    = time;
                        }
                    }
                    else
                    {
                        var shorter = Utils.TickCount - RecallDataByNetworkId[result.UnitNetworkId].Start
                                      < RecallDataByNetworkId[result.UnitNetworkId].Duration - ErrorGap;
                        result.Status   = shorter ? Status.Abort : Status.Finish;
                        result.Type     = RecallDataByNetworkId[result.UnitNetworkId].Type;
                        result.Duration = 0;
                        result.Start    = 0;
                    }
                    return(result);
                }
Beispiel #19
0
        private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            if (!IsActive() && sender.Type != GameObjectType.obj_AI_Hero)
            {
                return;
            }

            Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
            HandleRecall(decoded);
        }
        private void Obj_AI_Base_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);
            Enemies.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallData.Update(recall);
        }
Beispiel #21
0
        static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
            var recall = _recalls.FirstOrDefault(r => r.Hero.NetworkId == decoded.UnitNetworkId);

            if (!Equals(recall, default(Recall)))
            {
                recall.Duration       = decoded.Duration;
                recall.LastStatus     = decoded.Status;
                recall.LastStatusType = decoded.Type;
            }
        }
Beispiel #22
0
        private void Obj_AI_Base_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as AIHeroClient;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            Enemies.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallData.Update(recall);
        }
Beispiel #23
0
        void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);
        }
Beispiel #24
0
        /// <summary>
        ///     OnTeleport event.
        /// </summary>
        /// <param name="sender">
        ///     The sender
        /// </param>
        /// <param name="args">
        ///     The event data
        /// </param>
        private static void EventTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var eventArgs = new TeleportEventArgs {
                Status = TeleportStatus.Unknown, Type = TeleportType.Unknown
            };

            if (sender == null || !sender.IsValid)
            {
                FireEvent(eventArgs);
                return;
            }

            if (!TeleportDataByNetworkId.ContainsKey(sender.NetworkId))
            {
                TeleportDataByNetworkId[sender.NetworkId] = eventArgs;
            }

            if (!string.IsNullOrEmpty(args.RecallType))
            {
                ITeleport value;
                if (TypeByString.TryGetValue(args.RecallType, out value))
                {
                    var teleportMethod = value;

                    eventArgs.Status   = TeleportStatus.Start;
                    eventArgs.Duration = teleportMethod.GetDuration(args);
                    eventArgs.Type     = teleportMethod.Type;
                    eventArgs.Start    = Variables.TickCount;
                    eventArgs.IsTarget = teleportMethod.IsTarget(args);
                    eventArgs.Object   = sender;

                    TeleportDataByNetworkId[sender.NetworkId] = eventArgs;
                }
                else
                {
                    Console.WriteLine(
                        @"Teleport type {0} with name {1} is not supported yet. Please report it!",
                        args.RecallType,
                        args.RecallName);
                }
            }
            else
            {
                eventArgs = TeleportDataByNetworkId[sender.NetworkId];
                var shorter = Variables.TickCount - eventArgs.Start < eventArgs.Duration - ErrorBuffer;
                eventArgs.Status = shorter ? TeleportStatus.Abort : TeleportStatus.Finish;
            }

            FireEvent(eventArgs);
        }
Beispiel #25
0
        private static void Game_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var hero = sender as AIHeroClient;

            if (hero != null)
            {
                var packet = Packet.S2C.Teleport.Decoded(sender, args);

                if (packet.Type == Packet.S2C.Teleport.Type.Teleport)
                {
                    var duration = 0;

                    if (packet.Status == Packet.S2C.Teleport.Status.Finish)
                    {
                        duration = 300;

                        var info = teleportInfos[sender.NetworkId];
                        if (info.isTurretTeleport)
                        {
                            duration = 240;
                        }

                        info.isTeleporting = false;
                    }
                    else if (packet.Status == Packet.S2C.Teleport.Status.Abort)
                    {
                        duration = 200;

                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = false;
                    }

                    if (packet.Status == Packet.S2C.Teleport.Status.Start)
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting    = true;
                        info.isTurretTeleport = false;
                        info.isRecalling      = false;
                        info.position         = Vector3.Zero;
                        info.startTime        = HelperUtils.TickCount;
                    }
                    else
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting    = false;
                        info.isTurretTeleport = false;
                    }
                }
            }
        }
Beispiel #26
0
        private static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                case Packet.S2C.Teleport.Status.Start:
                    RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                    RecallInfos.Add(new RecallInfo()
                    {
                        RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 0
                    });

                    break;

                case Packet.S2C.Teleport.Status.Abort:
                    RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                    RecallInfos.Add(new RecallInfo()
                    {
                        RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 1
                    });

                    break;

                case Packet.S2C.Teleport.Status.Finish:
                    RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                    if (jungler.NetworkId == sender.NetworkId)
                    {
                        enemySpawn = ObjectManager.Get <Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy);
                        timer      = (int)(enemySpawn.Position.Distance(ObjectManager.Player.Position) / 370);
                    }
                    RecallInfos.Add(new RecallInfo()
                    {
                        RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 2
                    });
                    break;
                }
            }
        }
        /// <summary>
        ///     OnTeleport event.
        /// </summary>
        /// <param name="sender">
        ///     The sender
        /// </param>
        /// <param name="args">
        ///     The event data
        /// </param>
        private static void EventTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var eventArgs = new TeleportEventArgs { Status = TeleportStatus.Unknown, Type = TeleportType.Unknown };

            if (sender == null || !sender.IsValid)
            {
                FireEvent(eventArgs);
                return;
            }

            if (!TeleportDataByNetworkId.ContainsKey(sender.NetworkId))
            {
                TeleportDataByNetworkId[sender.NetworkId] = eventArgs;
            }

            if (!string.IsNullOrEmpty(args.RecallType))
            {
                ITeleport value;
                if (TypeByString.TryGetValue(args.RecallType, out value))
                {
                    var teleportMethod = value;

                    eventArgs.Status = TeleportStatus.Start;
                    eventArgs.Duration = teleportMethod.GetDuration(args);
                    eventArgs.Type = teleportMethod.Type;
                    eventArgs.Start = Variables.TickCount;
                    eventArgs.IsTarget = teleportMethod.IsTarget(args);
                    eventArgs.Object = sender;

                    TeleportDataByNetworkId[sender.NetworkId] = eventArgs;
                }
                else
                {
                    Console.WriteLine(
                        @"Teleport type {0} with name {1} is not supported yet. Please report it!",
                        args.RecallType,
                        args.RecallName);
                }
            }
            else
            {
                eventArgs = TeleportDataByNetworkId[sender.NetworkId];
                var shorter = Variables.TickCount - eventArgs.Start < eventArgs.Duration - ErrorBuffer;
                eventArgs.Status = shorter ? TeleportStatus.Abort : TeleportStatus.Finish;
            }

            FireEvent(eventArgs);
        }
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     if (!IsActive())
     {
         return;
     }
     try
     {
         Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
         HandleRecall(decoded);
     }
     catch (Exception ex)
     {
         Console.WriteLine("RecallProcess: " + ex);
     }
 }
Beispiel #29
0
 void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     foreach (var enemy in _enemies)
     {
         if (enemy.Value.RecallInfo.UnitNetworkId == decoded.UnitNetworkId)
         {
             enemy.Value.RecallInfo = decoded;
             if (decoded.Status == Packet.S2C.Teleport.Status.Finish)
             {
                 Vector3 spawnPos = ObjectManager.Get <GameObject>().First(spawnPoint => spawnPoint is Obj_SpawnPoint &&
                                                                           spawnPoint.Team != ObjectManager.Player.Team).Position;
                 enemy.Value.LastPosition = spawnPos;
             }
         }
     }
 }
Beispiel #30
0
        static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as AIHeroClient;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

#pragma warning disable 618
            var recall = Packet.S2C.Teleport.Decoded(unit, args);
#pragma warning restore 618
            var enemyInfo =
                EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);

#pragma warning disable 618
            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
#pragma warning restore 618
            {
                switch (recall.Status)
                {
#pragma warning disable 618
                case Packet.S2C.Teleport.Status.Abort:
#pragma warning restore 618
                    if (MenuLocal["notifRecAborted"])
                    {
                        ShowNotification(enemyInfo.Player.ChampionName + ": Recall ABORTED",
                                         System.Drawing.Color.Orange, 4000);
                    }

                    break;

#pragma warning disable 618
                case Packet.S2C.Teleport.Status.Finish:
#pragma warning restore 618
                    if (MenuLocal["notifRecFinished"])
                    {
                        ShowNotification(enemyInfo.Player.ChampionName + ": Recall FINISHED", NotificationColor,
                                         4000);
                    }

                    break;
                }
            }
        }
Beispiel #31
0
        private void OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var hero = sender as AIHeroClient;

            if (hero == null)
            {
                return;
            }

            if (hero.IsMe && !this["self"].Cast <CheckBox>().CurrentValue)
            {
                return;
            }

            if (hero.IsEnemy && !this["enemies"].Cast <CheckBox>().CurrentValue)
            {
                return;
            }

            if (hero.IsAlly && !hero.IsMe && !this["allies"].Cast <CheckBox>().CurrentValue)
            {
                return;
            }

            if (args.RecallName != string.Empty)
            {
                this.teleports.Add(new TeleportInfo(hero, Environment.TickCount + GetRecallTime(hero)));
                return;
            }

            foreach (var tp in this.teleports)
            {
                if (Environment.TickCount >= tp.EndTime)
                {
                    tp.Finished = true;
                }
                else
                {
                    tp.Aborted = true;
                }

                Core.DelayAction(() => { this.teleports.Remove(tp); }, 3000);
            }
        }
Beispiel #32
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct teleport = Packet.S2C.Teleport.Decoded(sender, args);
     foreach (var enemy in Enemies)
     {
         if (teleport.UnitNetworkId == enemy.Key.NetworkId && teleport.Type == Packet.S2C.Teleport.Type.Recall)
         {
             Enemies[enemy.Key].Teleport = teleport;
             if (teleport.Status == Packet.S2C.Teleport.Status.Finish)
             {
                 Vector3 spawnPos = ObjectManager.Get <GameObject>().First(spawnPoint => spawnPoint is Obj_SpawnPoint &&
                                                                           spawnPoint.Team != ObjectManager.Player.Team).Position;
                 Enemies[enemy.Key].PredictedPosition = spawnPos;
                 Enemies[enemy.Key].LastPosition      = spawnPos;
                 Enemies[enemy.Key].VisibleTime       = (int)Game.ClockTime;
             }
         }
     }
 }
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     if (decoded.UnitNetworkId == Hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
     {
         RecallStatus = decoded.Status;
         if (decoded.Status == Packet.S2C.Teleport.Status.Finish)
         {
             BeforeRecallLocation = Hero.ServerPosition;
             Obj_SpawnPoint enemySpawn = ObjectManager.Get <Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy);
             if (enemySpawn != null)
             {
                 LastLocation      = enemySpawn.Position;
                 PredictedLocation = enemySpawn.Position;
             }
             LastSeen = Game.ClockTime;
         }
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            try
            {
                if (sender.IsAlly || !this.Menu.Item("DrawTeleport").IsActive())
                {
                    return;
                }

                var hero = sender as Obj_AI_Hero;
                if (hero != null)
                {
                    var packet = Packet.S2C.Teleport.Decoded(sender, args);
                    if (packet.Type == Packet.S2C.Teleport.Type.Teleport &&
                        (packet.Status == Packet.S2C.Teleport.Status.Finish || packet.Status == Packet.S2C.Teleport.Status.Abort))
                    {
                        var time = Game.Time;
                        Utility.DelayAction.Add(
                            250,
                            delegate
                        {
                            var cd   = packet.Status == Packet.S2C.Teleport.Status.Finish ? 300 : 200;
                            var card = new Card
                            {
                                EndTime      = time + cd,
                                EndMessage   = "Ready",
                                FriendlyName = $"{hero.ChampionName} Teleport",
                                StartTime    = Game.Time
                            };

                            card.Name = "Teleport";
                            this.Cards.Add(card);
                        });
                    }
                }
            }
            catch (Exception e)
            {
                Logging.AddEntry(LoggingEntryType.Error, "@SpellCountDownTracker.cs: An error occurred: {0}", e);
                throw;
            }
        }
Beispiel #35
0
 private void ObjAiBaseOnOnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     try
     {
         //if (!Menu.Item("ALP").GetValue<bool>())
         //{
         //    return;
         //}
     
         var unit = sender as Obj_AI_Hero;
         if (unit == null || !unit.IsValid || unit.IsAlly)
         {
             return;
         }
         Packet.S2C.Teleport.Struct recall = Packet.S2C.Teleport.Decoded(sender, args);
         if (recall.Type == Packet.S2C.Teleport.Type.Recall)
         {
             ChampionTracker cham = _championsTracker.FirstOrDefault(
                 c => c.Champion.NetworkId == recall.UnitNetworkId);
             if (cham != null)
             {
                 cham.RecallPostion = cham.Champion.ServerPosition;
                 cham.Text.Color = Color.Red;
                 if (recall.Status == Packet.S2C.Teleport.Status.Finish)
                 {
                     cham.LastPotion = _enemySpawn.Position;
                     cham.Text.Color = Color.White;
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Beispiel #36
0
                /// <summary>
                /// Decodes the specified sender.
                /// </summary>
                /// <param name="sender">The sender.</param>
                /// <param name="args">The <see cref="GameObjectTeleportEventArgs"/> instance containing the event data.</param>
                /// <returns>Struct.</returns>
                public static Struct Decoded(GameObject sender, GameObjectTeleportEventArgs args) //
                {
                    var result = new Struct
                    {
                        Status = Status.Unknown,
                        Type = Type.Unknown
                    };

                    if(sender == null || !sender.IsValid || !(sender is Obj_AI_Hero))
                    {
                        return result;
                    }

                    result.UnitNetworkId = sender.NetworkId;

                    var hero = sender as Obj_AI_Hero;

                    if (!RecallDataByNetworkId.ContainsKey(result.UnitNetworkId))
                    {
                        RecallDataByNetworkId[result.UnitNetworkId] = new TeleportData {Type = Type.Unknown};
                    }

                    if (!string.IsNullOrEmpty(args.RecallType))
                    {
                        if (TypeByString.ContainsKey(args.RecallType))
                        {
                            ITeleport teleportMethod = TypeByString[args.RecallType];

                            int duration = teleportMethod.GetDuration(args);
                            Type type = teleportMethod.Type;
                            int time = Utils.TickCount;

                            RecallDataByNetworkId[result.UnitNetworkId] = new TeleportData
                            {
                                Duration = duration,
                                Type = type,
                                Start = time
                            };

                            result.Status = Status.Start;
                            result.Duration = duration;
                            result.Type = type;
                            result.Start = time;
                        }
                    }
                    else
                    {
                        bool shorter = Utils.TickCount - RecallDataByNetworkId[result.UnitNetworkId].Start <
                                       RecallDataByNetworkId[result.UnitNetworkId].Duration - ErrorGap;
                        result.Status = shorter ? Status.Abort : Status.Finish;
                        result.Type = RecallDataByNetworkId[result.UnitNetworkId].Type;
                        result.Duration = 0;
                        result.Start = 0;
                    }
                    return result;
                }
Beispiel #37
0
 /// <summary>
 ///     Get duration
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     Duration of the teleport.
 /// </returns>
 public int GetDuration(GameObjectTeleportEventArgs args)
 {
     return 3000;
 }
Beispiel #38
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     if (decoded.UnitNetworkId == _hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
     {
         switch (decoded.Status)
         {
             case Packet.S2C.Teleport.Status.Start:
                 _begin = Game.ClockTime;
                 _duration = decoded.Duration;
                 _active = true;
                 break;
             case Packet.S2C.Teleport.Status.Finish:
                 Program.Instance().Notify(_hero.ChampionName + " has recalled.");
                 _active = false;
                 break;
             case Packet.S2C.Teleport.Status.Abort:
                 _active = false;
                 break;
             case Packet.S2C.Teleport.Status.Unknown:
                 Program.Instance()
                     .Notify(
                         _hero.ChampionName + " is <font color='#ff3232'>unknown</font> (" +
                         _hero.Spellbook.GetSpell(SpellSlot.Recall).Name + ")");
                 _active = false;
                 break;
         }
     }
 }
Beispiel #39
0
        private static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
                return;

            var recall = Packet.S2C.Teleport.Decoded(unit, args);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                    case Packet.S2C.Teleport.Status.Start:
                        RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                        RecallInfos.Add(new RecallInfo() { RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 0 });

                        break;
                    case Packet.S2C.Teleport.Status.Abort:
                        RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                        RecallInfos.Add(new RecallInfo() { RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 1 });

                        break;
                    case Packet.S2C.Teleport.Status.Finish:
                        RecallInfos.RemoveAll(x => x.RecallID == sender.NetworkId);
                        if (jungler.NetworkId == sender.NetworkId)
                        {
                            enemySpawn = ObjectManager.Get<Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy);
                            timer = (int)(enemySpawn.Position.Distance(ObjectManager.Player.Position) / 370);
                        }
                        RecallInfos.Add(new RecallInfo() { RecallID = sender.NetworkId, RecallStart = Game.Time, RecallNum = 2 });
                        break;
                }
            }
        }
    static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
    {
        var recallPacket = Packet.S2C.Teleport.Decoded(sender, args);
        if (recallPacket.Type != Packet.S2C.Teleport.Type.Recall ||
            _orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo || !Config.Item("Killsteal-R-Snipe-Enabled").GetValue<bool>() ||
            Player.HasBuff("Recall")) return;

        var hero = ObjectManager.GetUnitByNetworkId<Obj_AI_Hero>(recallPacket.UnitNetworkId);

        if (!rFlag && recallPacket.Status == Packet.S2C.Teleport.Status.Start && hero.IsValid &&
            hero.IsValidTarget(Config.Item("Killsteal-R-Snipe-Range").GetValue<Slider>().Value) &&
            _r.GetDamage(hero) > hero.Health + 50)
        {
            rCastAtTime = recallPacket.Start + recallPacket.Duration -
                          Config.Item("Killsteal-R-Snipe-Delay").GetValue<Slider>().Value -
                          ((Player.ServerPosition.Distance(hero.Position) / _r.Speed + _r.Delay) * 1000);

            if (rCastAtTime < Environment.TickCount)
            {
                //Can't make it in time
                rFlag = false;
                Console.WriteLine("Too early");
                rNetworkID = recallPacket.UnitNetworkId;
            }
            else
            {
                rPlayerVector = Player.ServerPosition;
                rCastVector = hero.Position;
                rNetworkID = recallPacket.UnitNetworkId;
                rFlag = true;
                Console.WriteLine("rFlag: " + Environment.TickCount);
            }
        }
        else if ((recallPacket.Status == Packet.S2C.Teleport.Status.Abort ||
                  recallPacket.Status == Packet.S2C.Teleport.Status.Finish)
                 && recallPacket.UnitNetworkId == rNetworkID)
        {
            rFlag = false;
            Console.WriteLine("Abort");
            rNetworkID = 0;
        }
    }
Beispiel #41
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct teleport = Packet.S2C.Teleport.Decoded(sender, args);
     foreach (var enemy in Enemies)
     {
         if (teleport.UnitNetworkId == enemy.Key.NetworkId && teleport.Type == Packet.S2C.Teleport.Type.Recall)
         {
             Enemies[enemy.Key].Teleport = teleport;
             if (teleport.Status == Packet.S2C.Teleport.Status.Finish)
             {
                 Vector3 spawnPos = ObjectManager.Get<GameObject>().First(spawnPoint => spawnPoint is Obj_SpawnPoint &&
                     spawnPoint.Team != ObjectManager.Player.Team).Position;
                 Enemies[enemy.Key].PredictedPosition = spawnPos;
                 Enemies[enemy.Key].LastPosition = spawnPos;
                 Enemies[enemy.Key].VisibleTime = (int)Game.ClockTime;
             }
         }
     }
 }
Beispiel #42
0
        private void OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var hero = sender as AIHeroClient;

            if (hero == null)
            {
                return;
            }

            if (hero.IsMe && !this["self"].Cast<CheckBox>().CurrentValue)
            {
                return;
            }

            if (hero.IsEnemy && !this["enemies"].Cast<CheckBox>().CurrentValue)
            {
                return;
            }

            if (hero.IsAlly && !hero.IsMe && !this["allies"].Cast<CheckBox>().CurrentValue)
            {
                return;
            }

            if (args.RecallName != string.Empty)
            {
                this.teleports.Add(new TeleportInfo(hero, Environment.TickCount + GetRecallTime(hero)));
                return;
            }

            foreach (var tp in this.teleports)
            {
                if (Environment.TickCount >= tp.EndTime)
                {
                    tp.Finished = true;
                }
                else
                {
                    tp.Aborted = true;
                }

                Core.DelayAction(() => { this.teleports.Remove(tp); }, 3000);
            }
        }
Beispiel #43
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     if (decoded.UnitNetworkId == Hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
     {
         RecallStatus = decoded.Status;
         if (decoded.Status == Packet.S2C.Teleport.Status.Finish)
         {
             BeforeRecallLocation = Hero.ServerPosition;
             Obj_SpawnPoint enemySpawn = ObjectManager.Get<Obj_SpawnPoint>().FirstOrDefault(x => x.IsEnemy);
             if (enemySpawn != null)
             {
                 LastLocation = enemySpawn.Position;
                 PredictedLocation = enemySpawn.Position;
             }
             LastSeen = Game.ClockTime;
         }
     }
 }
Beispiel #44
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     if (!IsActive())
         return;
     try
     {
         Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
         HandleRecall(decoded);
     }
     catch (Exception ex)
     {
         Console.WriteLine("RecallProcess: " + ex);
     }
 }
Beispiel #45
0
        private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);
            var enemyInfo =
                this.EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);

            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch (recall.Status)
                {
                    case Packet.S2C.Teleport.Status.Abort:
                        if (InitializeMenu.Menu.Item("notifRecAborted").GetValue<bool>())
                        {
                            this.ShowNotification(
                                enemyInfo.Player.ChampionName + ": Recall ABORTED",
                                Color.Orange,
                                4000);
                        }

                        break;
                    case Packet.S2C.Teleport.Status.Finish:
                        if (InitializeMenu.Menu.Item("notifRecFinished").GetValue<bool>())
                        {
                            this.ShowNotification(
                                enemyInfo.Player.ChampionName + ": Recall FINISHED",
                                Color.White,
                                4000);
                        }

                        break;
                }
            }
        }
Beispiel #46
0
        /// <summary>
        ///     Get duration
        /// </summary>
        /// <param name="args">
        ///     The event data
        /// </param>
        /// <returns>
        ///     Duration of the teleport.
        /// </returns>
        public int GetDuration(GameObjectTeleportEventArgs args)
        {
            var duration = 0;

            switch (args.RecallName.ToLower())
            {
                case "recall":
                    duration = 8000;
                    break;
                case "recallimproved":
                    duration = 7000;
                    break;
                case "odinrecall":
                    duration = 4500;
                    break;
                case "odinrecallimproved":
                    duration = 4000;
                    break;
                case "superrecall":
                    duration = 4000;
                    break;
                case "superrecallimproved":
                    duration = 4000;
                    break;
                default:
                    Console.WriteLine($"Recall {args.RecallName} is not supported yet. Please report it!");
                    break;
            }

            return duration;
        }
Beispiel #47
0
 private static void Obj_AI_Base_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
 {
     // todo CC
     // todo onrecall
     if (_Player.IsDead) return;
     if (sender == null  || !sender.IsEnemy || !Config.interruptrecallMenu.GetCheckBox("enabled")) return;
     bool useR = Config.interruptrecallMenu.GetCheckBox("rinterruptrecall") && R.IsReady() &&
                 Config.interruptrecallMenu.GetSlider("rinterruptrecallmana") < _Player.ManaPercent;
     if (useR && sender.Distance(_Player) < rRange[R.Level - 1])
     {
         Player.CastSpell(SpellSlot.R, sender.Position);
     }
 }
        private void Game_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var hero = sender as Obj_AI_Hero;
            if (hero != null)
            {
                var packet = Packet.S2C.Teleport.Decoded(sender, args);
                if (packet.Type == Packet.S2C.Teleport.Type.Recall)
                {
                    if (packet.Status == Packet.S2C.Teleport.Status.Start)
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isRecalling = true;
                        info.startTime = HelperUtils.TickCount;

                        var totalRecallTime = 8000;

                        if (Game.MapId == GameMapId.CrystalScar)
                        {
                            totalRecallTime = 4500;
                        }

                        info.endTime = HelperUtils.TickCount + totalRecallTime;
                    }
                    else
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isRecalling = false;
                    }
                }

                if (packet.Type == Packet.S2C.Teleport.Type.Teleport)
                {
                    var duration = 0;

                    if (packet.Status == Packet.S2C.Teleport.Status.Finish)
                    {
                        duration = 300;

                        var info = teleportInfos[sender.NetworkId];
                        if (info.isTurretTeleport)
                        {
                            duration = 240;
                            ConsolePrinter.Print(sender.Name);
                        }
                    }
                    else if (packet.Status == Packet.S2C.Teleport.Status.Abort)
                    {
                        duration = 200;
                    }

                    if (packet.Status == Packet.S2C.Teleport.Status.Start)
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = true;
                        info.isTurretTeleport = false;
                        info.isRecalling = false;
                        info.startTime = HelperUtils.TickCount;
                    }
                    else
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = false;
                        info.isTurretTeleport = false;
                    }

                    if (duration > 0)
                    {
                        SpellTrackerInfo spellInfo;
                        if (spellCooldowns[sender.NetworkId].TryGetValue("summonerteleport", out spellInfo))
                        {
                            spellInfo.cooldownExpires = HelperUtils.TickCount + duration * 1000;
                            spellInfo.totalCooldown = duration;
                        }
                    }
                }
            }
        }
Beispiel #49
0
 /// <summary>
 /// Gets the duration.
 /// </summary>
 /// <param name="args">The <see cref="GameObjectTeleportEventArgs"/> instance containing the event data.</param>
 /// <returns>System.Int32.</returns>
 public int GetDuration(GameObjectTeleportEventArgs args)
 {
     return Utility.GetRecallTime(args.RecallName);
 }
Beispiel #50
0
        static void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            #pragma warning disable 618
            var recall = Packet.S2C.Teleport.Decoded(unit, args);
            #pragma warning restore 618
            var enemyInfo =
                EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);

            #pragma warning disable 618
            if (recall.Type == Packet.S2C.Teleport.Type.Recall)
            #pragma warning restore 618
            {
                switch (recall.Status)
                {
            #pragma warning disable 618
                    case Packet.S2C.Teleport.Status.Abort:
            #pragma warning restore 618
                        if (MenuLocal.Item("notifRecAborted").GetValue<bool>())
                        {
                            ShowNotification(enemyInfo.Player.ChampionName + ": Recall ABORTED",
                                System.Drawing.Color.Orange, 4000);
                        }

                        break;
            #pragma warning disable 618
                    case Packet.S2C.Teleport.Status.Finish:
            #pragma warning restore 618
                        if (MenuLocal.Item("notifRecFinished").GetValue<bool>())
                        {
                            ShowNotification(enemyInfo.Player.ChampionName + ": Recall FINISHED", NotificationColor,
                                4000);
                        }

                        break;
                }
            }
        }
Beispiel #51
0
        void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || unit.IsAlly)
            {
                return;
            }

            var recall = Packet.S2C.Teleport.Decoded(unit, args);
            var enemyInfo = EnemyInfo.Find(x => x.Player.NetworkId == recall.UnitNetworkId).RecallInfo.UpdateRecall(recall);

            if(recall.Type == Packet.S2C.Teleport.Type.Recall)
            {
                switch(recall.Status)
                {
                    case Packet.S2C.Teleport.Status.Abort:
                        if(Menu.Item("notifRecAborted").GetValue<bool>())
                        {
                            ShowNotification(enemyInfo.Player.ChampionName + ": Đã Hủy Biến Về", System.Drawing.Color.Orange, 4000);
                        }

                        break;
                    case Packet.S2C.Teleport.Status.Finish:
                        if (Menu.Item("notifRecFinished").GetValue<bool>())
                        {
                            ShowNotification(enemyInfo.Player.ChampionName + ": Biến Về Thành Công", NotificationColor, 4000);
                        }

                        break;
                }
            }
        }
Beispiel #52
0
 protected virtual void OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
 }
Beispiel #53
0
 private void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     if (decoded.UnitNetworkId == _hero.NetworkId && decoded.Type == Packet.S2C.Teleport.Type.Recall)
     {
         switch (decoded.Status)
         {
             case Packet.S2C.Teleport.Status.Start:
                 _begin = Game.ClockTime;
                 _duration = decoded.Duration;
                 _active = true;
                 break;
             case Packet.S2C.Teleport.Status.Finish:
                 int colorIndex = (int) ((_hero.HealthPercent / 100) * 255);
                 string color = (255 - colorIndex).ToString("X2") + colorIndex.ToString("X2") + "00";
                 Program.Instance().Notify(_hero.ChampionName + " has recalled with <font color='#" + color + "'>" + (int) _hero.HealthPercent + "&#37; HP</font>");
                 _active = false;
                 break;
             case Packet.S2C.Teleport.Status.Abort:
                 _active = false;
                 break;
             case Packet.S2C.Teleport.Status.Unknown:
                 Program.Instance()
                     .Notify(
                         _hero.ChampionName + " is <font color='#ff3232'>unknown</font> (" +
                         _hero.Spellbook.GetSpell(SpellSlot.Recall).Name + ")");
                 _active = false;
                 break;
         }
     }
 }
        private static void Game_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
        {
            var hero = sender as Obj_AI_Hero;
            if (hero != null)
            {
                var packet = Packet.S2C.Teleport.Decoded(sender, args);

                if (packet.Type == Packet.S2C.Teleport.Type.Teleport)
                {
                    var duration = 0;

                    if (packet.Status == Packet.S2C.Teleport.Status.Finish)
                    {
                        duration = 300;

                        var info = teleportInfos[sender.NetworkId];
                        if (info.isTurretTeleport)
                        {
                            duration = 240;
                        }

                        info.isTeleporting = false;
                    }
                    else if (packet.Status == Packet.S2C.Teleport.Status.Abort)
                    {
                        duration = 200;

                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = false;
                    }

                    if (packet.Status == Packet.S2C.Teleport.Status.Start)
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = true;
                        info.isTurretTeleport = false;
                        info.isRecalling = false;
                        info.position = Vector3.Zero;
                        info.startTime = HelperUtils.TickCount;
                    }
                    else
                    {
                        var info = teleportInfos[sender.NetworkId];
                        info.isTeleporting = false;
                        info.isTurretTeleport = false;
                    }
                }
            }
        }
Beispiel #55
0
 /// <summary>
 ///     Is Target
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     returns where the teleport is target.
 /// </returns>
 public bool IsTarget(GameObjectTeleportEventArgs args)
 {
     return false;
 }
Beispiel #56
0
 private static void Obj_AI_Base_OnTeleport(Obj_AI_Base sender, GameObjectTeleportEventArgs args)
 {
     var packet = Packet.S2C.Teleport.Decoded(sender, args);
     var lastPosition = LastPositions.FirstOrDefault(e => e.Hero.NetworkId == packet.UnitNetworkId);
     if (lastPosition != null)
     {
         switch (packet.Status)
         {
             case Packet.S2C.Teleport.Status.Start:
                 lastPosition.IsTeleporting = true;
                 break;
             case Packet.S2C.Teleport.Status.Abort:
                 lastPosition.IsTeleporting = false;
                 break;
             case Packet.S2C.Teleport.Status.Finish:
                 lastPosition.Teleported = true;
                 lastPosition.IsTeleporting = false;
                 lastPosition.LastSeen = Game.ClockTime;
                 break;
         }
     }
 }
Beispiel #57
0
 /// <summary>
 ///     Is Target
 /// </summary>
 /// <param name="args">
 ///     The event data
 /// </param>
 /// <returns>
 ///     returns where the teleport is target.
 /// </returns>
 public bool IsTarget(GameObjectTeleportEventArgs args)
 {
     return !string.Equals(args.RecallName, "ShenStandUnited", StringComparison.InvariantCultureIgnoreCase);
 }
Beispiel #58
0
        /// <summary>
        ///     Fired when a unit teleports.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectTeleportEventArgs" /> instance containing the event data.</param>
        private void ObjAiHeroOnOnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
        {
            if (!this.GetBool("rKSRecall"))
            {
                return;
            }

            var decoded = Packet.S2C.Teleport.Decoded(sender, args);
            var hero = ObjectManager.GetUnitByNetworkId<Obj_AI_Hero>(decoded.UnitNetworkId);

            if (hero.IsAlly || decoded.Type != Packet.S2C.Teleport.Type.Recall
                || decoded.Status != Packet.S2C.Teleport.Status.Start)
            {
                return;
            }

            var rDamage = this.Player.GetSpellDamage(hero, SpellSlot.R);
            if (rDamage > hero.Health)
            {
                R.Cast(hero);
            }
        }
Beispiel #59
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, GameObjectTeleportEventArgs args)
 {
     EventTeleport(sender, args);
 }
Beispiel #60
0
 void Obj_AI_Base_OnTeleport(GameObject sender, GameObjectTeleportEventArgs args)
 {
     Packet.S2C.Teleport.Struct decoded = Packet.S2C.Teleport.Decoded(sender, args);
     foreach (var enemy in _enemies)
     {
         if (enemy.Value.RecallInfo.UnitNetworkId == decoded.UnitNetworkId)
         {
             enemy.Value.RecallInfo = decoded;
             if (decoded.Status == Packet.S2C.Teleport.Status.Finish)
             {
                 Vector3 spawnPos = ObjectManager.Get<GameObject>().First(spawnPoint => spawnPoint is Obj_SpawnPoint &&
                         spawnPoint.Team != ObjectManager.Player.Team).Position;
                 enemy.Value.LastPosition = spawnPos;
             }
         }
     }
 }