private void OnNewHero(object sender, Hero hero) { DelayAction.Add(350, () => { if (hero == null || !hero.IsValid) { return; } if (hero.IsIllusion) { return; } if (Heroes.Any(x => x.Hero.Equals(hero))) { Log.Error($"Cant init New Hero -> {hero.GetDisplayName()} [{hero.Handle}]"); return; } if (hero.HeroId == HeroId.npc_dota_hero_monkey_king) { if (!hero.Spellbook.Spells.Any()) { Log.Error($"Monkey king bugisoft (ubishit) -> [{hero.Handle}]"); return; } } var myTeam = Main.Context.Value.Owner.Team; var targetTeam = hero.Team; var isAlly = myTeam == targetTeam; var newHero = new HeroContainer(hero, isAlly, Main); if (hero.HeroId == HeroId.npc_dota_hero_phantom_assassin && !isAlly) { Main.Config.ShowMeMore.InitPhantomAssiasin(newHero); } try { Heroes.Add(newHero); if (isAlly) { AllyHeroes.Add(newHero); } else { EnemyHeroes.Add(newHero); } Log.Info($"New Hero -> {hero.GetDisplayName()} [{hero.Handle}] [{(isAlly ? "Ally" : "Enemy")}]"); } catch (Exception e) { Console.WriteLine(e); } }); }
private void OnNewHero(object sender, Hero hero) { DelayAction.Add(100, () => { if (hero == null || !hero.IsValid) { return; } if (hero.IsIllusion) { return; } if (Heroes.Any(x => x.Hero.Equals(hero))) { Log.Error($"Cant init New Hero -> {hero.GetDisplayName()} [{hero.Handle}]"); return; } if (hero.ClassId == ClassId.CDOTA_Unit_Hero_MonkeyKing) { if (!hero.Spellbook.Spells.Any()) { Log.Error($"Monkey king bugisoft (ubishit) -> [{hero.Handle}]"); return; } } var myTeam = Main.Context.Value.Owner.Team; var targetTeam = hero.Team; var isAlly = myTeam == targetTeam; var newHero = new HeroContainer(hero, isAlly, Main); try { Heroes.Add(newHero); if (isAlly) { AllyHeroes.Add(newHero); } else { EnemyHeroes.Add(newHero); } Log.Info($"New Hero -> {hero.GetDisplayName()} [{hero.Handle}] [{(isAlly ? "Ally" : "Enemy")}]"); } catch (Exception e) { Console.WriteLine(e); } }); }
private void OnHeroRemoved(object sender, Hero e) { var founder = Heroes.Find(x => x.Hero.Equals(e)); if (founder != null) { Heroes.Remove(founder); if (founder.IsAlly) { AllyHeroes.Remove(founder); } else { EnemyHeroes.Remove(founder); } } }
public void OnDeactivate() { foreach (var container in Heroes) { container.Flush(); } foreach (var container in Couriers) { container.Dispose(); } AllyHeroes.Clear(); EnemyHeroes.Clear(); AllyCouriers.Clear(); EnemyCouriers.Clear(); }
private void OnHeroRemoved(object sender, Hero e) { var founder = Heroes.Find(x => x.Hero.Equals(e)); if (founder != null) { Heroes.Remove(founder); if (founder.IsAlly) { AllyHeroes.Remove(founder); } else { EnemyHeroes.Remove(founder); } Log.Error($"ON REMOVED -> {e.Name}"); } }
public static void Drawing_OnDraw(EventArgs args) { if (!Game.IsInGame || AbilityMain.Me == null || !AbilityMain.Me.IsValid || EnemyHeroes.Heroes == null) { return; } if (Utils.SleepCheck("AbilityOverlay.Update")) { boxSizeX = HpBar.SizeX / 6 + MainMenu.AbilityOverlayMenu.Item("sizeSliderSpell").GetValue <Slider>().Value; boxSizeY = boxSizeX + 1; boxExtraPosX = MainMenu.AbilityOverlayMenu.Item("ExtraPosSliderSpellX").GetValue <Slider>().Value *(float)0.5; boxExtraPosY = MainMenu.AbilityOverlayMenu.Item("ExtraPosSliderSpellY").GetValue <Slider>().Value *(float)0.5; itemBoxSizeX = HpBar.SizeX / 6 + MainMenu.AbilityOverlayMenu.Item("sizeSliderItem").GetValue <Slider>().Value; itemBoxSizeY = (float)(itemBoxSizeX / 1.24); itemboxExtraPosX = MainMenu.AbilityOverlayMenu.Item("ExtraPosSliderItemX").GetValue <Slider>().Value *(float)0.5; itemboxExtraPosY = MainMenu.AbilityOverlayMenu.Item("ExtraPosSliderItemY").GetValue <Slider>().Value *(float)0.5; Utils.Sleep(100, "AbilityOverlay.Update"); } var size = new Vector2(HpBar.SizeX, (float)(HpBar.SizeY / 2.8)); var spellOverlayEnabledEnemy = MainMenu.AbilityOverlayMenu.Item("enableSpellOverlayEnemy").GetValue <bool>(); var enableManaBar = MainMenu.ManaBarMenu.Item("enableManaBar").GetValue <bool>(); try { foreach (var hero in EnemyHeroes.UsableHeroes) { var heroName = NameManager.Name(hero); var mana = hero.Mana; var maxMana = hero.MaximumMana; var hpbarpos = HpBar.HpBarPositionDictionary[heroName]; if (hpbarpos.X + 20 > HUDInfo.ScreenSizeX() || hpbarpos.X - 20 < 0 || hpbarpos.Y + 100 > HUDInfo.ScreenSizeY() || hpbarpos.Y - 30 < 0) { continue; } if (enableManaBar) { var start = hpbarpos + new Vector2(0, HpBar.SizeY + 1); var manaperc = mana / maxMana; Drawing.DrawRect(start, size + new Vector2(1, 1), new Color(0, 0, 50, 150)); Drawing.DrawRect(start, new Vector2(size.X * manaperc, size.Y), new Color(70, 120, 220)); Drawing.DrawRect(start + new Vector2(-1, -1), size + new Vector2(3, 3), Color.Black, true); } if (EnemyHeroes.AbilityDictionary.ContainsKey(heroName) && spellOverlayEnabledEnemy) { var abilities = EnemyHeroes.AbilityDictionary[heroName].Where( x => (int)x.AbilitySlot >= 0 && (int)x.AbilitySlot <= 5) .OrderBy(x => (int)x.AbilitySlot); var defaultPos = hpbarpos + new Vector2( HpBar.SizeX / 2 - Math.Max((abilities.Count() / 2) * boxSizeX, HpBar.SizeX / 2), HpBar.SizeY + size.Y + 3); var position = defaultPos + new Vector2(boxExtraPosX, boxExtraPosY); foreach (var ability in abilities) { DrawAbilityOverlay(ability, position, heroName, mana); position += new Vector2(boxSizeX, 0); } } if (MainMenu.AbilityOverlayMenu.Item("enableItemOverlayEnemy").GetValue <bool>()) { if (!EnemyHeroes.ItemDictionary.ContainsKey(heroName)) { continue; } var items = EnemyHeroes.ItemDictionary[heroName].Where(ability => ability.IsValid).ToList(); var itemPos = hpbarpos - new Vector2( -HpBar.SizeX / 2 + Math.Max((items.Count / 2) * itemBoxSizeX, HpBar.SizeX / 2), itemBoxSizeY); var ItemPosExtra = itemPos + new Vector2(itemboxExtraPosX, itemboxExtraPosY); foreach (var ability in items) { DrawItemOverlay(ability, ItemPosExtra, mana); ItemPosExtra += new Vector2(itemBoxSizeX, 0); } } } } catch (EntityNotFoundException e) { EnemyHeroes.UpdateHeroes(); Console.WriteLine(e.ToString()); } var spellOverlayEnabledAlly = MainMenu.AbilityOverlayMenu.Item("enableSpellOverlayAlly").GetValue <bool>(); try { foreach (var hero in AllyHeroes.UsableHeroes) { var heroName = NameManager.Name(hero); var mana = hero.Mana; var hpbarpos = HpBar.HpBarPositionDictionary[heroName]; if (hpbarpos.X + 20 > HUDInfo.ScreenSizeX() || hpbarpos.X - 20 < 0 || hpbarpos.Y + 100 > HUDInfo.ScreenSizeY() || hpbarpos.Y - 30 < 0) { continue; } if (spellOverlayEnabledAlly && AllyHeroes.AbilityDictionary.ContainsKey(heroName)) { var abilities = AllyHeroes.AbilityDictionary[heroName].Where( x => (int)x.AbilitySlot >= 0 && (int)x.AbilitySlot <= 5) .OrderBy(x => (int)x.AbilitySlot); var defaultPos = hpbarpos + new Vector2( HpBar.SizeX / 2 - Math.Max((abilities.Count() / 2) * boxSizeX, HpBar.SizeX / 2), HpBar.SizeY + size.Y + 3); if (hero.Equals(AbilityMain.Me)) { defaultPos += new Vector2(-3, 3); } var position = defaultPos + new Vector2(boxExtraPosX, boxExtraPosY); foreach (var ability in abilities) { DrawAbilityOverlay(ability, position, heroName, mana); position += new Vector2(boxSizeX, 0); } } if (MainMenu.AbilityOverlayMenu.Item("enableItemOverlayAlly").GetValue <bool>()) { if (!AllyHeroes.ItemDictionary.ContainsKey(heroName)) { continue; } var items = AllyHeroes.ItemDictionary[heroName].Where(ability => ability.IsValid).ToList(); var itemPos = hpbarpos - new Vector2( -HpBar.SizeX / 2 + Math.Max((items.Count / 2) * itemBoxSizeX, HpBar.SizeX / 2), itemBoxSizeY); var ItemPosExtra = itemPos + new Vector2(itemboxExtraPosX, itemboxExtraPosY); if (hero.Equals(AbilityMain.Me)) { ItemPosExtra += new Vector2(-3, 1); } foreach (var ability in items) { DrawItemOverlay(ability, ItemPosExtra, mana); ItemPosExtra += new Vector2(itemBoxSizeX, 0); } } } } catch (EntityNotFoundException e) { AllyHeroes.UpdateHeroes(); Console.WriteLine(e.ToString()); } }
public static void Update(EventArgs args) { if (!CanUpdate()) { return; } //var tempSummonlist = Var.Summons; //if (MenuVar.LastHitEnable) //{ // if (Var.Summons.Count > 0 && Var.Summons.Any(x => !x.Key.IsAlive)) // { // //foreach (var summon in Var.Summons.Where(x => !x.Key.IsAlive)) // //{ // // tempSummonlist.Remove(summon.Key); // //} // //Var.Summons.Clear(); // //Var.Summons = tempSummonlist; // } //} EnemyHeroes.Update(); AllyHeroes.Update(); Couriers.Update(); if (MenuVar.Maphack || MenuVar.DodgeEnable) { Methods.ShowMeMore.Maphack(); } MenuVar.TestEffectMenu = MainMenu.Menu.Item("effects"); MenuVar.CameraDistance = MainMenu.MenuSettings.Item("cameradistance"); if (!Utils.SleepCheck("Update.sleep")) { return; } Utils.Sleep(500, "Update.sleep"); if (MenuVar.ShowRoshanTimer) { Methods.ShowMeMore.Roshan(); } #region Runes Runes.Update(); #endregion Runes if (MenuVar.LastHitEnable && MenuVar.SummonsEnable || MenuVar.StackKey) { Common.UpdateAttackableSummons(); } #region Menu MainMenu.Update(); #endregion Menu #region Hero Var.Q = Var.Me.Spellbook.SpellQ; Var.W = Var.Me.Spellbook.SpellW; Var.E = Var.Me.Spellbook.SpellE; Var.R = Var.Me.Spellbook.SpellR; double apoint = Var.Me.ClassID == ClassID.CDOTA_Unit_Hero_ArcWarden ? 0.3 : UnitDatabase.Units.Find(x => x.UnitName == Var.Me.Name).AttackPoint; Var.HeroAPoint = apoint / (1 + Var.Me.AttacksPerSecond * Var.Me.BaseAttackTime / 100) * 1000; #endregion Hero #region Autoattack if (Var.AutoAttackMode != MenuVar.AutoAttackMode) { switch (MenuVar.AutoAttackMode) { case 0: Var.AutoAttackMode = 0; Common.Autoattack(Var.AutoAttackMode); break; case 1: Var.AutoAttackMode = 1; Common.Autoattack(Var.AutoAttackMode); break; case 2: Var.AutoAttackMode = 2; Common.Autoattack(Var.AutoAttackMode); break; } } #endregion Autoattack #region Target if (Var.Target != null && !Var.Target.IsVisible && !Orbwalking.AttackOnCooldown(Var.Target)) { Var.Target = TargetSelector.ClosestToMouse(Var.Me); } else if (Var.Target == null || !Orbwalking.AttackOnCooldown(Var.Target)) { var bestAa = Var.Me.BestAATarget(); if (bestAa != null) { Var.Target = Var.Me.BestAATarget(); } } #endregion Target #region Towers if (!Towers.TowerLoad) { Buildings.GetBuildings(); Towers.TowerLoad = true; } //else //{ // Towers.Load(); //} #endregion Towers }
private void GameObject_OnDelete(GameObject sender, EventArgs args) { AllObjects.Remove(sender); var hero = sender as AIHeroClient; if (hero != null) { AllHeroes.Remove(hero); if (hero.IsEnemy) { EnemyHeroes.Remove(hero); AllEnemies.Remove(hero); } else { AllyHeroes.Remove(hero); AllAllies.Remove(hero); } return; } var minion = sender as Obj_AI_Minion; if (minion != null) { if (minion.Team != GameObjectTeam.Neutral) { if (minion.GetMinionType().HasFlag(Extensions.MinionTypes.Ward)) { AllWards.Remove(minion); if (minion.IsEnemy) { EnemyWards.Remove(minion); } else { AllyWards.Remove(minion); } } else { AllMinions.Remove(minion); if (minion.IsEnemy) { EnemyMinions.Remove(minion); AllEnemies.Remove(minion); } else { AllyMinions.Remove(minion); AllAllies.Remove(minion); } } } else if (minion.Name != "WardCorpse") { switch (minion.GetJungleType()) { case Extensions.JungleType.Small: SmallJungleMinions.Remove(minion); break; case Extensions.JungleType.Large: LargeJungleMinions.Remove(minion); break; case Extensions.JungleType.Epic: EpicJungleMinions.Remove(minion); break; case Extensions.JungleType.Legendary: LegendaryJungleMinions.Remove(minion); break; } AllJungleMinions.Remove(minion); } return; } var particle = sender as Obj_GeneralParticleEmitter; if (particle != null) { AllParticleEmitters.Remove(particle); return; } var turret = sender as Obj_AI_Turret; if (turret != null) { AllTurrets.Remove(turret); if (turret.IsEnemy) { EnemyTurrets.Remove(turret); } else { AllyTurrets.Remove(turret); } return; } var shop = sender as Obj_Shop; if (shop != null) { AllShops.Remove(shop); if (shop.IsAlly) { AllyShops.Remove(shop); } else { EnemyShops.Remove(shop); } return; } var spawnPoint = sender as Obj_SpawnPoint; if (spawnPoint != null) { AllSpawnPoints.Remove(spawnPoint); if (spawnPoint.IsAlly) { AllySpawnPoints.Remove(spawnPoint); } else { EnemySpawnPoints.Remove(spawnPoint); } } var inhibitor = sender as Obj_BarracksDampener; if (inhibitor != null) { AllInhibitors.Remove(inhibitor); if (inhibitor.IsAlly) { AllyInhibitors.Remove(inhibitor); } else { EnemyInhibitors.Remove(inhibitor); } } var nexus = sender as Obj_HQ; if (nexus != null) { AllNexus.Remove(nexus); if (nexus.IsAlly) { AllyNexus = null; } else { EnemyNexus = null; } } var missile = sender as MissileClient; if (missile != null) { AllMissiles.Remove(missile); if (missile.IsAlly) { AllyMissiles.Remove(missile); } else { EnemyMissiles.Remove(missile); } } }
public static void Update(EventArgs args) { if (!CanUpdate()) { return; } EnemyHeroes.Update(); AllyHeroes.Update(); Variables.Q = Variables.Me.Spellbook.SpellQ; Variables.W = Variables.Me.Spellbook.SpellW; Variables.E = Variables.Me.Spellbook.SpellE; Variables.R = Variables.Me.Spellbook.SpellR; double apoint = Variables.Me.ClassId == ClassId.CDOTA_Unit_Hero_ArcWarden ? 0.3 : UnitDatabase.Units.Find(x => x.UnitName == Variables.Me.Name).AttackPoint; Variables.HeroAPoint = apoint / (1 + Variables.Me.AttacksPerSecond * Variables.Me.BaseAttackTime / 100) * 1000; MenuLoader.MenuLoader.Update(); if (MenuVariables.ShowAttackRange) { if (Variables.AttackRange == null) { if (Variables.Me.IsAlive) { Variables.AttackRange = Variables.Me.AddParticleEffect(@"particles\ui_mouseactions\drag_selected_ring.vpcf"); Variables.AttackRange.SetControlPoint(1, new Vector3(255, 80, 50)); Variables.AttackRange.SetControlPoint(3, new Vector3(20, 0, 0)); Variables.AttackRange.SetControlPoint(2, new Vector3(Variables.LastRange, 255, 0)); } } else { if (!Variables.Me.IsAlive) { Variables.AttackRange.Dispose(); Variables.AttackRange = null; } else if (Variables.LastRange != MyHero.AttackRange()) { Variables.AttackRange.Dispose(); Variables.LastRange = MyHero.AttackRange(); Variables.AttackRange = Variables.Me.AddParticleEffect(@"particles\ui_mouseactions\drag_selected_ring.vpcf"); Variables.AttackRange.SetControlPoint(1, new Vector3(255, 80, 50)); Variables.AttackRange.SetControlPoint(3, new Vector3(15, 0, 0)); Variables.AttackRange.SetControlPoint(2, new Vector3(Variables.LastRange, 255, 0)); } } } else if (!MenuVariables.ShowAttackRange) { if (Variables.AttackRange != null) { Variables.AttackRange.Dispose(); } Variables.AttackRange = null; } if (Variables.AutoAttackMode != MenuLoader.MenuVariables.AutoAttackMode) { switch (MenuLoader.MenuVariables.AutoAttackMode) { case 0: Variables.AutoAttackMode = 0; Variables.Autoattack(Variables.AutoAttackMode); break; case 1: Variables.AutoAttackMode = 1; Variables.Autoattack(Variables.AutoAttackMode); break; case 2: Variables.AutoAttackMode = 2; Variables.Autoattack(Variables.AutoAttackMode); break; } } }