Пример #1
0
        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);
                }
            });
        }
Пример #2
0
        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);
                }
            });
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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();
        }
Пример #5
0
        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}");
            }
        }
Пример #6
0
        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());
            }
        }
Пример #7
0
        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
        }
Пример #8
0
        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);
                }
            }
        }
Пример #9
0
        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;
                }
            }
        }