private void Game_OnTick(EventArgs args) { if (!menu.CheckBoxValue("enable")) { return; } if (Core.GameTickCount - lastupdate > Utility.Load.FPSProtection) { foreach (var aiHeroClient in EntityManager.Heroes.AllHeroes) { foreach (var spellInfo in EnabledSpells.Where(x => x?.SpellType == SpellType.Buff)) { if (aiHeroClient.HasBuff(spellInfo.ObjectName) && !DetectedSpells.Any(x => x.Sender?.NetworkId == aiHeroClient.NetworkId && x.ObjectName == spellInfo.ObjectName)) { var buff = aiHeroClient.Buffs?.FirstOrDefault(x => x.Name == spellInfo.ObjectName && x.IsActive && x.IsValid && ((AIHeroClient)x.Caster).ChampionName.Equals(spellInfo.ChampionName)); if (buff != null && aiHeroClient != null) { DetectedSpells.Add(new DetectedSpellInfo(spellInfo.SpellName, spellInfo.ChampionName, (int)(buff.EndTime - Game.Time), SpellType.Buff, spellInfo.ObjectName, buff.EndTime, aiHeroClient.NetworkId, aiHeroClient.Position, aiHeroClient, null)); } } } } foreach (var minion in ObjectManager.Get <Obj_AI_Minion>()) { foreach (var spellInfo in EnabledSpells.Where(x => x?.ObjectName == minion?.BaseSkinName && x?.SpellType == SpellType.Minion)) { if (!DetectedSpells.Any(x => x.Sender?.NetworkId == minion?.NetworkId && x?.ObjectName == spellInfo?.ObjectName)) { var info = EnabledSpells.FirstOrDefault(x => x?.ObjectName == minion?.BaseSkinName); if (info != null && minion != null) { DetectedSpells.Add(new DetectedSpellInfo(spellInfo.SpellName, spellInfo.ChampionName, info.SpellTime, SpellType.Minion, spellInfo.ObjectName, Game.Time + info.SpellTime, minion.NetworkId, minion.Position, minion, null)); } } } } DetectedSpells.RemoveAll(x => x.EndTime - Game.Time <= 0); DetectedSpells.RemoveAll(x => x.SpellType == SpellType.Buff && (!x.Sender.HasBuff(x.ObjectName) || x.EndTime - Game.Time <= 0 || x.Sender.IsDead)); DetectedSpells.RemoveAll(x => (x.SpellType.Equals(SpellType.Minion) || x.SpellType.Equals(SpellType.GameObject)) && ((x.Sender != null && (x.Sender.IsDead || !x.Sender.IsValid) || x.Sender == null) || (x.Object != null && (x.Object.IsDead || !x.Object.IsValid) || x.Object == null))); lastupdate = Core.GameTickCount; } }
private void GameObject_OnCreate(GameObject sender, EventArgs args) { if (sender.GetType() == typeof(Obj_GeneralParticleEmitter)) { var gameObject = (Obj_GeneralParticleEmitter)sender; if (EnabledSpells.All(x => x.ObjectName != gameObject.Name) || DetectedSpells.Any(x => x.ObjectName == gameObject.Name)) { return; } var info = EnabledSpells.FirstOrDefault(x => x.ObjectName == gameObject.Name); if (info != null) { DetectedSpells.Add(new DetectedSpellInfo(info.SpellName, info.ChampionName, info.SpellTime, SpellType.GameObject, gameObject.Name, Game.Time + info.SpellTime, gameObject.NetworkId, gameObject.Position, null, gameObject)); } } if (sender.GetType() != typeof(MissileClient)) { return; } var missile = (MissileClient)sender; if (EnabledSpells.All(x => x.ObjectName != missile.Name) || DetectedSpells.Any(x => x.ObjectName != missile.Name)) { return; } var spellInfo = EnabledSpells.FirstOrDefault(x => x.ObjectName == missile.Name); if (spellInfo != null) { DetectedSpells.Add(new DetectedSpellInfo(spellInfo.SpellName, spellInfo.ChampionName, spellInfo.SpellTime, SpellType.GameObject, missile.SData.Name, Game.Time + spellInfo.SpellTime, missile.NetworkId, missile.Position, missile.SpellCaster, missile)); } }