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; } } }
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; }
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); } }
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; } } }
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 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; } }
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); }
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)); } }
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); } }
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)); } }
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; } } }
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; } } }
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; } } }
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()); } }
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 } }
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 { } }
/// <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); }
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); }
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; } }
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); }
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); }
/// <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 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; } } } }
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); } }
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; } } } }
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; } } }
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); } }
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; } }
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); } }
/// <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; }
/// <summary> /// Get duration /// </summary> /// <param name="args"> /// The event data /// </param> /// <returns> /// Duration of the teleport. /// </returns> public int GetDuration(GameObjectTeleportEventArgs args) { return 3000; }
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; } } }
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; } }
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 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); } }
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; } } }
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); } }
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; } } }
/// <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; }
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; } } } } }
/// <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); }
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; } } }
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; } } }
protected virtual void OnTeleport(GameObject sender, GameObjectTeleportEventArgs args) { }
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 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; } } } }
/// <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; }
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; } } }
/// <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); }
/// <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); } }
/// <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); }
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; } } } }