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); }
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 + "% 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 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; } } }
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>(); }
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); }
public EnemyInfo UpdateRecall(Packet.S2C.Teleport.Struct newRecall) { IncomingDamage.Clear(); LockedTarget = false; EstimatedShootT = 0; Recall = newRecall; return(EnemyInfo); }
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); }
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; } }
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); } }
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; } } } }
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; } } }
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); }
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; } } } }
#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); }
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()); } }
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; } } } }
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); }
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>(); }
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; }
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()); } }
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); }
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; } } }