public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.SourceNetworkId = packet.ReadInteger(); result.Slot = (SpellSlot)packet.ReadByte(); result.FromX = packet.ReadFloat(); result.FromY = packet.ReadFloat(); result.ToX = packet.ReadFloat(); result.ToY = packet.ReadFloat(); return(result); }
/// <summary> /// Detects the spells that have missile and are casted from fow. /// </summary> public static void GameOnOnGameProcessPacket(GamePacketEventArgs args) { //Gets received when a projectile is created. if (args.PacketData[0] == 0x3B) { var packet = new GamePacket(args.PacketData) { Position = 1 }; packet.ReadFloat(); //Missile network ID var missilePosition = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); var unitPosition = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); packet.Position = packet.Size() - 119; var missileSpeed = packet.ReadFloat(); packet.Position = 65; var endPos = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); packet.Position = 112; var id = packet.ReadByte(); packet.Position = packet.Size() - 83; var unit = ObjectManager.GetUnitByNetworkId<Obj_AI_Hero>(packet.ReadInteger()); if ((!unit.IsValid || unit.Team == ObjectManager.Player.Team)) { return; } var spellData = SpellDatabase.GetBySpeed(unit.ChampionName, (int) missileSpeed, id); if (spellData == null) { return; } if (spellData.SpellName != "Laser") { return; } var castTime = Environment.TickCount - Game.Ping / 2 - spellData.Delay - (int) (1000 * Geometry.SwitchYZ(missilePosition).To2D().Distance(Geometry.SwitchYZ(unitPosition)) / spellData.MissileSpeed); //Trigger the skillshot detection callbacks. TriggerOnDetectSkillshot( DetectionType.RecvPacket, spellData, castTime, unitPosition.SwitchYZ().To2D(), endPos.SwitchYZ().To2D(), unit); } }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.SourceNetworkId = packet.ReadInteger(); result.MoveType = packet.ReadByte(); result.X = packet.ReadFloat(); result.Y = packet.ReadFloat(); result.TargetNetworkId = packet.ReadInteger(); packet.ReadByte(); result.UnitNetworkId = packet.ReadInteger(); return(result); }
private static void Game_OnGameProcessPacket(GamePacketEventArgs args) { var packet = new GamePacket(args.PacketData); Camp camp; switch (packet.Header) { case 0xC3: packet.Position = 5; var UnitNetworkId = packet.ReadInteger(); var CampId = packet.ReadInteger(); var EmptyType = packet.ReadByte(); var BuffHash = packet.ReadInteger(); var respawnTime = packet.ReadFloat(); camp = Camps[CampId]; if (camp != null) camp.Kill(respawnTime); break; case 0xE9: packet.Position = 21; var campId = packet.ReadByte(); camp = Camps[campId]; if (camp != null) camp.Spawn(); break; } }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 12; result.UnitNetworkId = packet.ReadInteger(); result.Speed = packet.ReadFloat(); return(result); }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.TargetNetworkId = packet.ReadInteger(); result.Type = (DamageTypePacket)packet.ReadByte(); result.TargetNetworkIdCopy = packet.ReadInteger(); result.SourceNetworkId = packet.ReadInteger(); result.DamageAmount = packet.ReadFloat(); return(result); }
public static void Game_OnGameProcessPacket(GamePacketEventArgs args) { if (!Config.Item("comboWreset").GetValue<bool>() || args.PacketData[0] != 0x65 || !MasterYi.W.IsReady() || LxOrbwalker.CurrentMode != LxOrbwalker.Mode.Combo) { return; } // LogPacket(args); var gp = new GamePacket(args.PacketData) {Position = 1}; var dmg = Packet.S2C.Damage.Decoded(args.PacketData); var targetId = gp.ReadInteger(); int dType = gp.ReadByte(); int unknown = gp.ReadShort(); var damageAmount = gp.ReadFloat(); var targetNetworkIdCopy = gp.ReadInteger(); var sourceNetworkId = gp.ReadInteger(); var dmga = (float) MasterYi.Player.GetAutoAttackDamage( ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(targetId)); if (dmga - 10 > damageAmount || dmga + 10 < damageAmount) { return; } if (MasterYi.Player.NetworkId != dmg.SourceNetworkId && MasterYi.Player.NetworkId == targetId) { return; } var targ = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(dmg.TargetNetworkId); if ((int) dmg.Type != 12 && (int) dmg.Type != 4 && (int) dmg.Type != 3) { return; } if (MasterYi.W.IsReady() && LxOrbwalker.InAutoAttackRange(targ)) { MasterYi.W.Cast(targ.Position); // LXOrbwalker.ResetAutoAttackTimer(); } // Console.WriteLine("dtyoe: " + dType); }
public static void OnGameProcessPacket(GamePacketEventArgs args) { try { if (Talon.orbwalker.ActiveMode.ToString() == "Combo" || Config.Item("harHard").GetValue<KeyBind>().Active) { if (args.PacketData[0] == 101 && Talon.Q.IsReady()) { Packet.S2C.Damage.Struct dmg = Packet.S2C.Damage.Decoded(args.PacketData); // LogPacket(args); GamePacket gp = new GamePacket(args.PacketData); gp.Position = 1; int targetID = gp.ReadInteger(); int dType = (int)gp.ReadByte(); int Unknown = gp.ReadShort(); float DamageAmount = gp.ReadFloat(); int TargetNetworkIdCopy = gp.ReadInteger(); int SourceNetworkId = gp.ReadInteger(); if (Talon.Player.NetworkId != dmg.SourceNetworkId) return; Obj_AI_Hero targ = ObjectManager.GetUnitByNetworkId<Obj_AI_Hero>(targetID); if (targ != null) { Talon.sumItems.cast(SummonerItems.ItemIds.Ghostblade); Talon.Q.Cast(); useQ = true; Orbwalking.ResetAutoAttackTimer(); } } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data) { Position = 5 }; return new Struct( packet.ReadFloat(), packet.ReadFloat(), packet.ReadInteger(), packet.ReadInteger(), (PingType)packet.ReadByte()); }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.SourceNetworkId = packet.ReadInteger(); result.Slot = (SpellSlot)packet.ReadByte(); result.ToX = packet.ReadFloat(); result.ToY = packet.ReadFloat(); result.ToZ = packet.ReadFloat(); return result; }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.SourceNetworkId = packet.ReadInteger(); result.MoveType = packet.ReadByte(); result.X = packet.ReadFloat(); result.Y = packet.ReadFloat(); result.TargetNetworkId = packet.ReadInteger(); packet.ReadByte(); result.UnitNetworkId = packet.ReadInteger(); return result; }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.TargetNetworkId = packet.ReadInteger(); result.Type = (DamageTypePacket)packet.ReadByte(); result.TargetNetworkIdCopy = packet.ReadInteger(); result.SourceNetworkId = packet.ReadInteger(); result.DamageAmount = packet.ReadFloat(); return result; }
private void OnGameSendPacket(GamePacketEventArgs args) { if (!PacketCast) return; if (args.PacketData[0] == 153) { var PacketData = new GamePacket(args.PacketData[0]); PacketData.Position = 1; if (PacketData.ReadFloat() != Player.NetworkId) return; if (PacketData.ReadByte() != 0) return; switch (Config.Item(Name + "cancelAni").GetValue<StringList>().SelectedIndex) { case 0: Packet.C2S.Emote.Encoded(new Packet.C2S.Emote.Struct(0)); break; case 1: Packet.C2S.Emote.Encoded(new Packet.C2S.Emote.Struct(1)); break; case 2: if (targetObj != null) { var pos = targetObj.Position + Vector3.Normalize(Player.Position - targetObj.Position) * (Player.Distance(targetObj) + 50); Packet.C2S.Move.Encoded(new Packet.C2S.Move.Struct(pos.X, pos.Y)).Process(); } break; } } }
/// <summary> /// Detects the spells that have missile and are casted from fow. /// </summary> public static void GameOnOnGameProcessPacket(GamePacketEventArgs args) { //Gets received when a projectile is created. if (args.PacketData[0] == 0x3B) { var packet = new GamePacket(args.PacketData) {Position = 1}; packet.ReadFloat(); //Missile network ID var missilePosition = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); var unitPosition = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); packet.Position = packet.Size() - 119; var missileSpeed = packet.ReadFloat(); packet.Position = 65; var endPos = new Vector3(packet.ReadFloat(), packet.ReadFloat(), packet.ReadFloat()); packet.Position = 112; var id = packet.ReadByte(); packet.Position = packet.Size() - 83; var unit = ObjectManager.GetUnitByNetworkId<AIHeroClient>((uint) packet.ReadInteger()); if (!unit.IsValid<AIHeroClient>()) { return; // only valid hero } var spellData = SpellDatabase.GetBySpeed(unit.ChampionName, (int) missileSpeed, id); if (spellData == null) { return; // only if database contains skillshot } if (spellData.SpellName != "Laser") { return; // ingore lasers } var castTime = System.Environment.TickCount - Game.Ping/2 - spellData.Delay - (int) (1000*missilePosition.SwitchYZ().LSTo2D().LSDistance(unitPosition.SwitchYZ())/ spellData.MissileSpeed); //Trigger the skillshot detection callbacks. TriggerOnDetectSkillshot( DetectionType.RecvPacket, spellData, castTime, unitPosition.SwitchYZ().LSTo2D(), endPos.SwitchYZ().LSTo2D(), unit); } }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); result.NetworkId = packet.ReadInteger(1); result.Unit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.NetworkId); result.BuffSlot = packet.ReadByte(); result.BuffId = packet.ReadInteger(); result.Duration = packet.ReadFloat(); return result; }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); result.NetworkId = packet.ReadInteger(1); result.Unit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.NetworkId); result.BuffSlot = packet.ReadByte(); result.Type = (BuffType) packet.ReadByte(); result.Stack = packet.ReadByte(); result.Visible = packet.ReadByte() > 0; result.BuffId = packet.ReadInteger(); result.TargetNetworkId = packet.ReadInteger(); result.Target = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.TargetNetworkId); packet.Position += 4; result.Duration = packet.ReadFloat(); result.SourceNetworkId = packet.ReadInteger(); result.Source = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.SourceNetworkId); return result; }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); result.SourceNetworkId = packet.ReadInteger(1); result.SourceUnit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.SourceNetworkId); result.SpellFlag = packet.ReadShort(10); result.SpellHash = packet.ReadInteger(); result.SpellNetworkId = packet.ReadInteger(); packet.ReadByte(); //this always used to be 0, maybe flag now packet.ReadFloat(); // always 1 packet.ReadFloat(); // always player nID packet.ReadFloat(); // always player nID result.MissileHash = packet.ReadInteger(); result.MissileNetworkId = packet.ReadInteger(); var p = packet.Position + 8; result.ToPosition = new Vector2(packet.ReadFloat(), packet.ReadFloat(p)); packet.Position += 4; var c = packet.ReadByte(65); if (c > 0) //hopefully c is 1 always { result.TargetNetworkId = packet.ReadInteger(); result.TargetUnit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.TargetNetworkId); packet.ReadByte(); // for 0 } result.ChannelTime = packet.ReadFloat(); result.Delay = packet.ReadFloat(); result.Visible = packet.ReadFloat(); result.IsVisible = result.Visible > 0; result.Cooldown = packet.ReadFloat(); packet.ReadInteger(); packet.ReadByte(); result.SpellSlot = (SpellSlot) packet.ReadByte(); result.SpellFlag2 = packet.ReadByte(); result.ManaCost = packet.ReadFloat(); p = packet.Position + 8; result.FromPosition = new Vector2(packet.ReadFloat(), packet.ReadFloat(p)); return result; }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data) { Position = 6 }; var targetNetworkId = packet.ReadInteger(); var type = packet.ReadByte(); var sourceNetworkId = packet.ReadInteger(); var x = packet.ReadFloat(); var y = packet.ReadFloat(); var silent = (packet.ReadByte() & 1) != 1; return new Struct( x, y, targetNetworkId, sourceNetworkId, (PingType)type, silent); }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct { RecvTime = packet.ReadFloat(1), AckTime = packet.ReadFloat(5) }; return result; }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 1; result.UnitNetworkId = packet.ReadInteger(); packet.ReadShort(); result.MaxHealth = packet.ReadFloat(); result.CurrentHealth = packet.ReadFloat(); return result; }
public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); packet.Position = 12; result.UnitNetworkId = packet.ReadInteger(); result.Speed = packet.ReadFloat(); return result; }
private static void PacketHandler(GamePacketEventArgs args) { var packet = new GamePacket(args.PacketData); if (OnGainBuff != null) { if (args.PacketData[0] == 0xB7) { packet.Position = 1; var targetbuff = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); int buffSlot = packet.ReadByte(); int bufftype = packet.ReadByte(); int stackCount = packet.ReadByte(); int visible = packet.ReadByte(); int buffID = packet.ReadInteger(); int targetID = packet.ReadInteger(); int unknown = packet.ReadInteger(); float duration = packet.ReadFloat(); float starttime = Game.Time; float endtime = Game.Time + duration; var sourceNetworkId = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(BitConverter.ToInt32(args.PacketData, 24)); OnGainBuff(targetbuff, sourceNetworkId, new OnGainBuffArgs { Slot = buffSlot + 1, Type = bufftype, Count = stackCount, Visible = visible, BuffID = buffID, TargetID = targetID, Duration = duration, StartTime = starttime, EndTime = endtime }); }; }; if (OnLoseBuff != null) { if (args.PacketData[0] == 0x7B) { packet.Position = 1; var targetbuff = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); int buffSlot = packet.ReadByte(); int buffID = packet.ReadInteger(); if (targetbuff == null) return; OnLoseBuff(targetbuff, targetbuff, new OnGainBuffArgs { Slot = buffSlot + 1, Count = 0, BuffID = buffID }); }; }; if (OnUpdateBuff != null) { if (args.PacketData[0] == 0x2F) { Console.WriteLine("Update BUFF PACKET"); var targetbuff = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); int buffSlot = packet.ReadByte(); float timeBuffAlreadyOnTarget = packet.ReadFloat(); float duration = packet.ReadFloat(); float starttime = Game.Time; float endtime = Game.Time + duration; var source = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); if (targetbuff == null) return; OnUpdateBuff(source, targetbuff, new OnGainBuffArgs { Slot = buffSlot + 1, Count = 1, Duration = duration, EndTime = endtime }); }; if (args.PacketData[0] == 0x1C) { Console.WriteLine("Update BUFF PACKET2"); var targetbuff = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); int buffSlot = packet.ReadByte(); int stackCount = packet.ReadByte(); float duration = packet.ReadFloat(); float timeBuffAlreadyOnTarget = packet.ReadFloat(); float starttime = Game.Time; float endtime = Game.Time + duration; var source = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(packet.ReadInteger()); if (targetbuff == null) return; OnUpdateBuff(source, targetbuff, new OnGainBuffArgs { Slot = buffSlot + 1, Count = stackCount, Duration = duration, EndTime = endtime }); }; }; }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); result.NetworkId = packet.ReadInteger(1); result.Unit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.NetworkId); result.Slot = (SpellSlot) packet.ReadByte(); packet.Position += 1; result.TotalCooldown = packet.ReadFloat(); result.CurrentCooldown = packet.ReadFloat(); return result; }
static void Game_OnGameProcessPacket(GamePacketEventArgs args) { if (args.PacketData[0] == Packet.S2C.EmptyJungleCamp.Header) { Packet.S2C.EmptyJungleCamp.Struct camp = Packet.S2C.EmptyJungleCamp.Decoded(args.PacketData); Console.WriteLine("disable camp: "+camp.CampId); jTimer.disableCamp((byte)camp.CampId); } if (args.PacketData[0] == 0xE9) { GamePacket gp = new GamePacket(args.PacketData); gp.Position = 21; byte campID = gp.ReadByte(); Console.WriteLine("Enable camp: "+campID); jTimer.enableCamp(campID); } //AfterAttack if (args.PacketData[0] == 0x65 && Config.Item("doJungle").GetValue<KeyBind>().Active) { GamePacket gp = new GamePacket(args.PacketData); gp.Position = 1; Packet.S2C.Damage.Struct dmg = Packet.S2C.Damage.Decoded(args.PacketData); int targetID = gp.ReadInteger(); int dType = (int)gp.ReadByte(); int Unknown = gp.ReadShort(); float DamageAmount = gp.ReadFloat(); int TargetNetworkIdCopy = gp.ReadInteger(); int SourceNetworkId = gp.ReadInteger(); float dmga = (float)player.GetAutoAttackDamage(ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(targetID)); if (dmga - 10 > DamageAmount || dmga + 10 < DamageAmount) return; if (player.NetworkId != dmg.SourceNetworkId || player.NetworkId == targetID || player.NetworkId == TargetNetworkIdCopy) return; Obj_AI_Base targ = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(dmg.TargetNetworkId); if ((int) dmg.Type == 12 || (int) dmg.Type == 4 || (int) dmg.Type == 3) { Console.WriteLine("dmg: " + DamageAmount + " : " + dmga); JungleClearer.jungler.doAfterAttack(targ); } } }
/// <summary> /// Decodes the specified data. /// </summary> /// <param name="data">The data.</param> /// <returns>Struct.</returns> public static Struct Decoded(byte[] data) { var packet = new GamePacket(data); var result = new Struct(); result.ReceivingNetworkId = packet.ReadInteger(5); result.ReceivingUnit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.ReceivingNetworkId); result.SourceNetworkId = packet.ReadInteger(); result.SourceUnit = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(result.SourceNetworkId); result.Gold = packet.ReadFloat(); return result; }
public static void OnGameProcessPacket(GamePacketEventArgs args) { return; if (Config.Item("comboWreset").GetValue<bool>() && args.PacketData[0] == 0x65 && MasterYi.W.IsReady() && LXOrbwalker.CurrentMode == LXOrbwalker.Mode.Combo) { // LogPacket(args); GamePacket gp = new GamePacket(args.PacketData); gp.Position = 1; Packet.S2C.Damage.Struct dmg = Packet.S2C.Damage.Decoded(args.PacketData); int targetID = gp.ReadInteger(); int dType = (int) gp.ReadByte(); int Unknown = gp.ReadShort(); float DamageAmount = gp.ReadFloat(); int TargetNetworkIdCopy = gp.ReadInteger(); int SourceNetworkId = gp.ReadInteger(); float dmga = (float) MasterYi.player.GetAutoAttackDamage( ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(targetID)); if (dmga - 10 > DamageAmount || dmga + 10 < DamageAmount) return; if (MasterYi.player.NetworkId != dmg.SourceNetworkId && MasterYi.player.NetworkId == targetID) return; Obj_AI_Base targ = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(dmg.TargetNetworkId); if ((int) dmg.Type == 12 || (int) dmg.Type == 4 || (int) dmg.Type == 3 ) { if (MasterYi.W.IsReady() && LXOrbwalker.InAutoAttackRange(targ)) { MasterYi.W.Cast(targ.Position); // LXOrbwalker.ResetAutoAttackTimer(); } } // Console.WriteLine("dtyoe: " + dType); } }