예제 #1
0
 public Positions Update(Packet.S2C.Teleport.Struct newData)
 {
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Abort)
     {
         Aborted   = Recall;
         AbortTime = Environment.TickCount;
         started   = false;
     }
     else
     {
         AbortTime = 0;
     }
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Finish)
     {
         started = false;
     }
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Start)
     {
         if (!started)
         {
             RecallStartTime = Environment.TickCount;
         }
         started = true;
     }
     Recall = newData;
     return(Positions);
 }
예제 #2
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;
                }
            }
        }
예제 #3
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;
                    }
                }
            }
예제 #4
0
 public RecallInfo(EnemyInfo enemyInfo)
 {
     EnemyInfo = enemyInfo;
     #pragma warning disable 618
     Recall = new Packet.S2C.Teleport.Struct(EnemyInfo.Player.NetworkId, Packet.S2C.Teleport.Status.Unknown, Packet.S2C.Teleport.Type.Unknown, 0);
     #pragma warning restore 618
     IncomingDamage = new Dictionary <int, float>();
 }
예제 #5
0
 public RecallInfo(EnemyInfo enemyInfo)
 {
     this.enemyInfo = enemyInfo;
     this.recall    = new Packet.S2C.Teleport.Struct(
         this.enemyInfo.Player.NetworkId,
         Packet.S2C.Teleport.Status.Unknown,
         Packet.S2C.Teleport.Type.Unknown,
         0);
 }
예제 #6
0
        public EnemyInfo UpdateRecall(Packet.S2C.Teleport.Struct newRecall)
        {
            IncomingDamage.Clear();
            LockedTarget    = false;
            EstimatedShootT = 0;

            Recall = newRecall;
            return(EnemyInfo);
        }
예제 #7
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);
        }
예제 #8
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;
            }
        }
예제 #9
0
 public Recall()
 {
     foreach (Obj_AI_Hero enemy in ObjectManager.Get <Obj_AI_Hero>())
     {
         if (enemy.IsEnemy)
         {
             Packet.S2C.Teleport.Struct p = new Packet.S2C.Teleport.Struct(enemy.NetworkId, Packet.S2C.Teleport.Status.Unknown, Packet.S2C.Teleport.Type.Unknown, 0, 0);
             _recalls.Add(new RecallRender(p));
         }
     }
     Obj_AI_Base.OnTeleport += Obj_AI_Base_OnTeleport;
     Common.ExecuteInOnGameUpdate(() => Init());
 }
 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);
     }
 }
예제 #11
0
파일: Uim.cs 프로젝트: Screeder/LeagueSharp
 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;
             }
         }
     }
 }
예제 #12
0
        public EnemyInfo UpdateRecall(Packet.S2C.Teleport.Struct newRecall)
        {
            this.EstimatedShootT = 0;

            if (newRecall.Type == Packet.S2C.Teleport.Type.Recall &&
                newRecall.Status == Packet.S2C.Teleport.Status.Abort)
            {
                this.abortedRecall = this.recall;
                this.abortedT      = Utils.TickCount;
            }
            else
            {
                this.abortedT = 0;
            }

            this.recall = newRecall;
            return(this.enemyInfo);
        }
 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;
         }
     }
 }
예제 #14
0
        public EnemyInfo UpdateRecall(Packet.S2C.Teleport.Struct newRecall)
        {
            IncomingDamage.Clear();
            LockedTarget    = false;
            EstimatedShootT = 0;

            if (newRecall.Type == Packet.S2C.Teleport.Type.Recall && newRecall.Status == Packet.S2C.Teleport.Status.Abort)
            {
                AbortedRecall = Recall;
                AbortedT      = Environment.TickCount;
            }
            else
            {
                AbortedT = 0;
            }

            Recall = newRecall;
            return(EnemyInfo);
        }
예제 #15
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;
             }
         }
     }
 }
예제 #16
0
        #pragma warning disable 618
        public EnemyInfo UpdateRecall(Packet.S2C.Teleport.Struct newRecall)
        #pragma warning restore 618
        {
            IncomingDamage.Clear();
            LockedTarget    = false;
            EstimatedShootT = 0;

        #pragma warning disable 618
            if (newRecall.Type == Packet.S2C.Teleport.Type.Recall && newRecall.Status == Packet.S2C.Teleport.Status.Abort)
        #pragma warning restore 618
            {
                AbortedRecall = Recall;
                AbortedT      = Utils.TickCount;
            }
            else
            {
                AbortedT = 0;
            }

            Recall = newRecall;
            return(EnemyInfo);
        }
예제 #17
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());
     }
 }
예제 #18
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);
            }
        }
        private void HandleRecall(Packet.S2C.Teleport.Struct recallEx)
        {
            int time = Environment.TickCount - Game.Ping;

            for (int i = 0; i < Recalls.Count; i++)
            {
                Packet.S2C.Teleport.Struct recall = Recalls[i];
                if (true /*recallEx.Type == Recall.ObjectType.Player*/)
                {
                    var obj   = ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(recall.UnitNetworkId);
                    var objEx = ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(recallEx.UnitNetworkId);
                    if (obj == null)
                    {
                        continue;
                    }
                    if (obj.NetworkId == objEx.NetworkId) //already existing
                    {
                        recall = recallEx;
                        //recall.Recall2 = new Recall.Struct();

                        var    percentHealth = (int)((obj.Health / obj.MaxHealth) * 100);
                        String sColor;
                        String hColor = (percentHealth > 50
                            ? "<font color='#00FF00'>"
                            : (percentHealth > 30 ? "<font color='#FFFF00'>" : "<font color='#FF0000'>"));
                        if (recallEx.Status == Packet.S2C.Teleport.Status.Start)
                        {
                            String text = (recallEx.Type == Packet.S2C.Teleport.Type.Recall
                                ? Language.GetString("DETECTORS_RECALL_TEXT_RECALLING")
                                : Language.GetString("DETECTORS_RECALL_TEXT_PORTING"));
                            sColor       = "<font color='#FFFF00'>";
                            recall.Start = (int)Game.Time;
                            if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 1)
                            {
                                Game.PrintChat("{0}" + obj.ChampionName + " {1} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {2} " +
                                               Language.GetString("DETECTORS_RECALL_TEXT_HP") + " {3}({4})", sColor, text,
                                               (int)obj.Health, hColor, percentHealth);
                            }
                            else if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 2 &&
                                Menu.GlobalSettings.GetMenuItem("SAssembliesGlobalSettingsServerChatPingActive")
                                .GetValue <bool>())
                            {
                                Game.Say("{0}" + obj.ChampionName + " {1} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {2} " +
                                         Language.GetString("DETECTORS_RECALL_TEXT_HP") + " {3}({4})", sColor, text, (int)obj.Health,
                                         hColor, percentHealth);
                            }
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                            {
                                Speech.Speak(obj.ChampionName + " " + text);
                            }
                        }
                        else if (recallEx.Status == Packet.S2C.Teleport.Status.Finish)
                        {
                            String text = (recallEx.Type == Packet.S2C.Teleport.Type.Recall
                                ? Language.GetString("DETECTORS_RECALL_TEXT_RECALLED")
                                : Language.GetString("DETECTORS_RECALL_TEXT_PORTED"));
                            sColor = "<font color='#FF0000'>";
                            if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 1)
                            {
                                Game.PrintChat("{0}" + obj.ChampionName + " {1} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {2} " +
                                               Language.GetString("DETECTORS_RECALL_TEXT_HP") + " {3}({4})", sColor, text,
                                               (int)obj.Health, hColor, percentHealth);
                            }
                            else if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 2 &&
                                Menu.GlobalSettings.GetMenuItem(
                                    "SAssembliesGlobalSettingsServerChatPingActive").GetValue <bool>())
                            {
                                Game.Say("{0}" + obj.ChampionName + " {1} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {2} " +
                                         Language.GetString("DETECTORS_RECALL_TEXT_HP") + " {3}({4})", sColor, text,
                                         (int)obj.Health, hColor, percentHealth);
                            }
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                            {
                                Speech.Speak(obj.ChampionName + " " + text);
                            }
                        }
                        else
                        {
                            sColor = "<font color='#00FF00'>";
                            if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 1)
                            {
                                Game.PrintChat("{0}" + obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED") + " " +
                                               Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {1} " +
                                               Language.GetString("DETECTORS_RECALL_TEXT_HP") + "", sColor, (int)obj.Health);
                            }
                            else if (
                                RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChatChoice")
                                .GetValue <StringList>()
                                .SelectedIndex == 2 &&
                                Menu.GlobalSettings.GetMenuItem(
                                    "SAssembliesGlobalSettingsServerChatPingActive").GetValue <bool>())
                            {
                                Game.Say("{0}" + obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED") + " "
                                         + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {1} " +
                                         Language.GetString("DETECTORS_RECALL_TEXT_HP") + "", sColor, (int)obj.Health);
                            }
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                            {
                                Speech.Speak(obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED"));
                            }
                        }
                        return;
                    }
                }
            }
        }
예제 #20
0
 public RecallData(Positions positions)
 {
     Positions = positions;
     Recall = new Packet.S2C.Teleport.Struct(
         Positions.Player.NetworkId, Packet.S2C.Teleport.Status.Unknown, Packet.S2C.Teleport.Type.Unknown, 0);
 }
예제 #21
0
 public RecallInfo(EnemyInfo enemyInfo)
 {
     EnemyInfo      = enemyInfo;
     Recall         = new Packet.S2C.Teleport.Struct(EnemyInfo.Player.NetworkId, Packet.S2C.Teleport.Status.Unknown, Packet.S2C.Teleport.Type.Unknown, 0);
     IncomingDamage = new Dictionary <int, float>();
 }
예제 #22
0
 public Positions Update(Packet.S2C.Teleport.Struct newData)
 {
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Abort)
     {
         Aborted = Recall;
         AbortTime = System.Environment.TickCount;
         started = false;
     }
     else
     {
         AbortTime = 0;
     }
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Finish)
     {
         started = false;
     }
     if (newData.Type == Packet.S2C.Teleport.Type.Recall && newData.Status == Packet.S2C.Teleport.Status.Start)
     {
         if (!started)
         {
             RecallStartTime = System.Environment.TickCount;
         }
         started = true;
     }
     Recall = newData;
     return Positions;
 }
예제 #23
0
 public RecallData(Positions positions)
 {
     Positions = positions;
     Recall    = new Packet.S2C.Teleport.Struct(
         Positions.Player.NetworkId, Packet.S2C.Teleport.Status.Unknown, Packet.S2C.Teleport.Type.Unknown, 0);
 }
예제 #24
0
        public static void OnGameProcessPacket(GamePacketEventArgs args)
        {
            try
            {
                if (args.PacketData[0] == Packet.S2C.Damage.Header) // damage dealt
                {
                    var packet = new GamePacket(args.PacketData);
                    packet.Position = 1;
                    int targetId   = packet.ReadInteger();
                    int damageType = packet.ReadByte();
                    packet.Position = 16;
                    int sourceId = packet.ReadInteger();

                    if (Player.NetworkId != sourceId)
                    {
                        return;
                    }

                    var target = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>(targetId);

                    if (orbwalker.ActiveMode.ToString() == "Combo")
                    {
                        //4.18 - 4 = basic attack/all spells, 3 = crit attack
                        if ((damageType == 3 || damageType == 4) && lastSpellName.Contains("Attack"))
                        {
                            if (_tiamat.IsReady() && currentTarget.IsValidTarget(_tiamat.Range) && CanCast())
                            {
                                LastCast = Environment.TickCount;
                                _tiamat.Cast();
                            }
                            else if (_tiamat2.IsReady() && currentTarget.IsValidTarget(_tiamat2.Range) && CanCast())
                            {
                                LastCast = Environment.TickCount;
                                _tiamat2.Cast();
                            }
                            else if (_w.IsReady() && currentTarget.IsValidTarget(_w.Range) && qCount != 0)
                            {
                                nextSpell = _w;
                            }
                            else
                            {
                                nextSpell = _q;
                            }
                            UseAttack = false;
                            orbwalker.SetMovement(true);
                        }
                    }
                }
                else if (args.PacketData[0] == 0x34)
                {
                    var packet = new GamePacket(args.PacketData);
                    packet.Position = 9;
                    int action = packet.ReadByte();
                    packet.Position = 1;
                    int sourceId = packet.ReadInteger();
                    if (action == 17 && sourceId == Player.NetworkId)
                    {
                        if (ProcessPackets)
                        {
                            if (!Config.SubMenu("Misc").Item("DCFix").GetValue <bool>() && CanCast())
                            {
                                CancelAnimation();
                            }
                            Orbwalking.ResetAutoAttackTimer();
                        }
                    }
                }
                else if (args.PacketData[0] == 0x61) //move
                {
                    var packet = new GamePacket(args.PacketData);
                    packet.Position = 12;
                    int sourceId = packet.ReadInteger();
                    if (sourceId == Player.NetworkId)
                    {
                        if (currentTarget != null && ProcessPackets && orbwalker.ActiveMode.ToString() == "Combo")
                        {
                            LastCast = Environment.TickCount;
                            Packet.C2S.Move.Encoded(new Packet.C2S.Move.Struct(currentTarget.ServerPosition.To2D().X,
                                                                               currentTarget.ServerPosition.To2D().Y, 3, currentTarget.NetworkId)).Send();
                            Orbwalking.ResetAutoAttackTimer();
                            ProcessPackets = false;
                        }
                        if (ProcessPackets)
                        {
                            Orbwalking.ResetAutoAttackTimer();
                            ProcessPackets = false;
                        }
                    }
                }
                else if (args.PacketData[0] == 0x38) //animation2
                {
                    var packet = new GamePacket(args.PacketData);
                    packet.Position = 1;
                    int sourceId = packet.ReadInteger();
                    if (packet.Size() == 9 && sourceId == Player.NetworkId)
                    {
                        if (ProcessPackets)
                        {
                            CancelAnimation(); // wait until recv packet 0x61
                            Orbwalking.ResetAutoAttackTimer();
                        }
                    }
                }
                else if (args.PacketData[0] == Packet.S2C.Teleport.Header)
                {
                    Packet.S2C.Teleport.Struct packet = Packet.S2C.Teleport.Decoded(args.PacketData);
                    if (packet.UnitNetworkId == Player.NetworkId)
                    {
                        if (packet.Status == Packet.S2C.Teleport.Status.Start)
                        {
                            IsRecalling = true;
                        }
                        else if (packet.Status == Packet.S2C.Teleport.Status.Abort ||
                                 packet.Status == Packet.S2C.Teleport.Status.Finish)
                        {
                            IsRecalling = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
예제 #25
0
            public RecallRender(Packet.S2C.Teleport.Struct recall)
            {
                var recWidth = 200;

                Recall    = recall;
                Rectangle = new Render.Rectangle(Drawing.Width / 2, Drawing.Height / 4, recWidth, 10, SharpDX.Color.Green);
                Rectangle.PositionUpdate += delegate
                {
                    float percent  = RecallStatusPercent();
                    var   newWidth = (int)(recWidth - (recWidth * percent));
                    if (!Rectangle.Width.Equals(newWidth))
                    {
                        Rectangle.Width = newWidth;
                    }
                    SharpDX.Color newCol = Common.PercentColorRedToGreen(percent);
                    if (!Equals(newCol, Rectangle.Color))
                    {
                        Rectangle.Color = newCol;
                    }
                    return(new Vector2(Drawing.Width / 2 - recWidth / 2, Drawing.Height / 1.5f));
                };
                Rectangle.VisibleCondition = delegate
                {
                    return(IsActive() && Recall.Status == Packet.S2C.Teleport.Status.Start && (Recall.Start + Recall.Duration - Environment.TickCount) > 0);
                };
                Rectangle.Add(1);
                Line = new Render.Line(new Vector2(0, 0), new Vector2(0, 0), 1, SharpDX.Color.WhiteSmoke);
                Line.StartPositionUpdate += delegate
                {
                    return(new Vector2(Rectangle.X + Rectangle.Width, Rectangle.Y - 5));
                };
                Line.EndPositionUpdate += delegate
                {
                    return(new Vector2(Rectangle.X + Rectangle.Width, Rectangle.Y));
                };
                Line.VisibleCondition = delegate
                {
                    SharpDX.Color newCol = new SharpDX.Color(255, 255, 255, (int)(255 - (255 * RecallStatusPercent())));
                    if (!Equals(newCol, Line.Color))
                    {
                        Line.Color = newCol;
                    }
                    return(IsActive() && Recall.Status == Packet.S2C.Teleport.Status.Start && (Recall.Start + Recall.Duration - Environment.TickCount) > 0);
                };
                Line.Add(1);
                Text = new Render.Text(ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(Recall.UnitNetworkId).ChampionName, 0, 0, 18, SharpDX.Color.WhiteSmoke);
                Text.PositionUpdate += delegate
                {
                    return(new Vector2(Line.Start.X, Line.Start.Y - 15));
                };
                Text.TextUpdate = delegate
                {
                    SharpDX.Color newCol = new SharpDX.Color(255, 255, 255, (int)(255 - (150 * RecallStatusPercent())));
                    if (!Equals(newCol, Text.Color))
                    {
                        Text.Color = newCol;
                    }
                    return(ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(Recall.UnitNetworkId).ChampionName);
                };
                Text.Centered         = true;
                Text.VisibleCondition = delegate
                {
                    return(IsActive() && Recall.Status == Packet.S2C.Teleport.Status.Start && (Recall.Start + Recall.Duration - Environment.TickCount) > 0);
                };
                Text.Add(1);
                Text2 = new Render.Text(ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(Recall.UnitNetworkId).ChampionName, 0, 0, 18, SharpDX.Color.WhiteSmoke);
                Text2.PositionUpdate += delegate
                {
                    return(new Vector2(Line.Start.X, Line.Start.Y - 5));
                };
                Text2.TextUpdate = delegate
                {
                    SharpDX.Color newCol = new SharpDX.Color(255, 255, 255, (int)(255 - (150 * RecallStatusPercent())));
                    if (!Equals(newCol, Text2.Color))
                    {
                        Text2.Color = newCol;
                    }
                    TimeSpan t = TimeSpan.FromMilliseconds(Recall.Start + Recall.Duration - Environment.TickCount);
                    return(string.Format("{0}.{1}", t.Seconds, t.Milliseconds.ToString("D3").Remove(1, 2)));
                };
                Text2.Centered         = true;
                Text2.VisibleCondition = delegate
                {
                    return(IsActive() && Recall.Status == Packet.S2C.Teleport.Status.Start && (Recall.Start + Recall.Duration - Environment.TickCount) > 0);
                };
                Text2.Add(1);
            }
예제 #26
0
        private void HandleRecall(Packet.S2C.Teleport.Struct recallEx)
        {
            for (int i = 0; i < _recalls.Count; i++)
            {
                Packet.S2C.Teleport.Struct recall = _recalls[i].Recall;
                var obj   = ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(recall.UnitNetworkId);
                var objEx = ObjectManager.GetUnitByNetworkId <Obj_AI_Hero>(recallEx.UnitNetworkId);
                if (obj == null)
                {
                    continue;
                }
                if (obj.NetworkId == objEx.NetworkId)
                {
                    _recalls[i].Recall = recallEx;

                    var percentHealth = (int)((obj.Health / obj.MaxHealth) * 100);
                    if (recallEx.Status == Packet.S2C.Teleport.Status.Start)
                    {
                        String text = (recallEx.Type == Packet.S2C.Teleport.Type.Recall
                            ? Language.GetString("DETECTORS_RECALL_TEXT_RECALLING")
                            : Language.GetString("DETECTORS_RECALL_TEXT_PORTING"));
                        recall.Start = (int)Game.Time;
                        if (
                            RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChat").GetValue <bool>() &&
                            Menu.GlobalSettings.GetMenuItem("SAssembliesGlobalSettingsServerChatPingActive")
                            .GetValue <bool>())
                        {
                            Game.Say(obj.ChampionName + " {0} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {1} " +
                                     Language.GetString("DETECTORS_RECALL_TEXT_HP") + " ({2})", text, (int)obj.Health,
                                     percentHealth);
                        }
                        for (int j = 0;
                             j < RecallDetector.GetMenuItem("SAssembliesDetectorsRecallPingTimes").GetValue <Slider>().Value;
                             j++)
                        {
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>())
                            {
                                Game.ShowPing(PingCategory.EnemyMissing, obj.ServerPosition, true);
                            }
                            else if (!RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>() &&
                                     Menu.GlobalSettings.GetMenuItem("SAssembliesGlobalSettingsServerChatPingActive")
                                     .GetValue <bool>())
                            {
                                Game.SendPing(PingCategory.EnemyMissing, obj.ServerPosition);
                            }
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                        {
                            Speech.Speak(obj.ChampionName + " " + text);
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallNotification").GetValue <bool>())
                        {
                            Common.ShowNotification(obj.ChampionName + " " + text + " " + (int)obj.Health + " " +
                                                    Language.GetString("DETECTORS_RECALL_TEXT_HP") + " (" + percentHealth + ")", System.Drawing.Color.OrangeRed, 3);
                        }
                    }
                    else if (recallEx.Status == Packet.S2C.Teleport.Status.Finish)
                    {
                        String text = (recallEx.Type == Packet.S2C.Teleport.Type.Recall
                            ? Language.GetString("DETECTORS_RECALL_TEXT_RECALLED")
                            : Language.GetString("DETECTORS_RECALL_TEXT_PORTED"));
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChat").GetValue <bool>() &&
                            Menu.GlobalSettings.GetMenuItem(
                                "SAssembliesGlobalSettingsServerChatPingActive").GetValue <bool>())
                        {
                            Game.Say(obj.ChampionName + " {0} " + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {1} " +
                                     Language.GetString("DETECTORS_RECALL_TEXT_HP") + " ({2})", text,
                                     (int)obj.Health, percentHealth);
                        }
                        for (int j = 0;
                             j < RecallDetector.GetMenuItem("SAssembliesDetectorsRecallPingTimes").GetValue <Slider>().Value;
                             j++)
                        {
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>())
                            {
                                Game.ShowPing(PingCategory.Fallback, obj.ServerPosition, true);
                            }
                            else if (!RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>() &&
                                     Menu.GlobalSettings.GetMenuItem("SAssembliesGlobalSettingsServerChatPingActive")
                                     .GetValue <bool>())
                            {
                                Game.SendPing(PingCategory.Fallback, obj.ServerPosition);
                            }
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                        {
                            Speech.Speak(obj.ChampionName + " " + text);
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallNotification").GetValue <bool>())
                        {
                            Common.ShowNotification(obj.ChampionName + " " + text + " " + (int)obj.Health + " " +
                                                    Language.GetString("DETECTORS_RECALL_TEXT_HP") + " (" + percentHealth + ")", System.Drawing.Color.Red, 3);
                        }
                    }
                    else
                    {
                        if (
                            RecallDetector.GetMenuItem("SAssembliesDetectorsRecallChat").GetValue <bool>() &&
                            Menu.GlobalSettings.GetMenuItem(
                                "SAssembliesGlobalSettingsServerChatPingActive").GetValue <bool>())
                        {
                            Game.Say(obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED") + " "
                                     + Language.GetString("DETECTORS_RECALL_TEXT_WITH") + " {0} " +
                                     Language.GetString("DETECTORS_RECALL_TEXT_HP") + "", (int)obj.Health);
                        }
                        for (int j = 0;
                             j < RecallDetector.GetMenuItem("SAssembliesDetectorsRecallPingTimes").GetValue <Slider>().Value;
                             j++)
                        {
                            if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>())
                            {
                                Game.ShowPing(PingCategory.Danger, obj.ServerPosition, true);
                            }
                            else if (!RecallDetector.GetMenuItem("SAssembliesDetectorsRecallLocalPing").GetValue <bool>() &&
                                     Menu.GlobalSettings.GetMenuItem("SAssembliesGlobalSettingsServerChatPingActive")
                                     .GetValue <bool>())
                            {
                                Game.SendPing(PingCategory.Danger, obj.ServerPosition);
                            }
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallSpeech").GetValue <bool>())
                        {
                            Speech.Speak(obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED"));
                        }
                        if (RecallDetector.GetMenuItem("SAssembliesDetectorsRecallNotification").GetValue <bool>())
                        {
                            Common.ShowNotification(obj.ChampionName + " " + Language.GetString("DETECTORS_RECALL_TEXT_CANCELED") + " " + (int)obj.Health + " " +
                                                    Language.GetString("DETECTORS_RECALL_TEXT_HP") + " (" + percentHealth + ")", System.Drawing.Color.LawnGreen, 3);
                        }
                    }
                    return;
                }
            }
        }