Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

L# mKatarina


Gość Pan Szymek

Rekomendowane odpowiedzi

Opublikowano

Ostatecznie nietestowane, ale powinno działać

 

using System;
using System.Collections.Generic;
using System.Text;
using LeagueSharp;
using LeagueSharp.Common;
using System.Linq;
using System.Drawing;

namespace mKatarina
{
    class Program
    {
        const double WERSJA = 1.0;
        static Spell q, w, e, r;
        static List<Spell> skille;
        static SpellSlot ignite;
        static Items.Item dfg;
        static Menu menu;
        static Dictionary<int, int> doZabicia = new Dictionary<int,int>();

        static void Main(string[] args)
        {
            CustomEvents.Game.OnGameLoad += Game_OnGameLoad;
        }
        private static void Game_OnGameLoad(EventArgs args)
        {
            try
            {
                q = new Spell(SpellSlot.Q, 675);
                w = new Spell(SpellSlot.W, 375);
                e = new Spell(SpellSlot.E, 700);
                r = new Spell(SpellSlot.R, 500);
                ignite = ObjectManager.Player.GetSpellSlot("SummonerDot");
                //na tt i dominionie blackfire torch
                dfg = Utility.Map.GetMap() == Utility.Map.MapType.CrystalScar || Utility.Map.GetMap() == Utility.Map.MapType.TwistedTreeline ? new Items.Item(3188, 750) : new Items.Item(3128, 750);
                
                skille = new List<Spell>() { q, w, e, r };
                menu = new Menu("mKatarina", "mKatarina", true);

                menu.AddSubMenu(new Menu("Drawing", "drawing"));
                menu.SubMenu("drawing").AddItem(new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.Red)));
                menu.SubMenu("drawing").AddItem(new MenuItem("WRange", "W range").SetValue(new Circle(false, Color.Purple)));
                menu.SubMenu("drawing").AddItem(new MenuItem("ERange", "E range").SetValue(new Circle(false, Color.Green)));
                menu.SubMenu("drawing").AddItem(new MenuItem("ecircle", "Circle around killable enemy").SetValue(true));

                menu.AddItem(new MenuItem("stopult", "Can stop ult").SetValue(true));
                if (ignite != SpellSlot.Unknown)
                    menu.AddItem(new MenuItem("ignite", "Use ignite").SetValue(true));
                else
                    menu.AddItem(new MenuItem("ignite", "Use ignite (unavailable)"));

                menu.AddItem(new MenuItem("combok", "Combo").SetValue(new KeyBind(32, KeyBindType.Press)));
                menu.AddItem(new MenuItem("harassk", "Harass").SetValue(new KeyBind(67, KeyBindType.Press)));
                menu.AddToMainMenu();

                Drawing.OnDraw += Drawing_OnDraw;
                Game.OnGameUpdate += Game_OnGameUpdate;
                

                Game.PrintChat("mKatarina loaded");
            }
            catch (Exception ex) { Game.PrintChat("Katarina: " + ex.Message); }
        }

        static void Game_OnGameUpdate(EventArgs args)
        {
            foreach (var przeciwnik in ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.Team != ObjectManager.Player.Team))         
                calcDmg(przeciwnik);
            var aSpell = ObjectManager.Player.Spellbook.ActiveSpellSlot;
            if (menu.Item("harassk").GetValue<KeyBind>().Active)
                harass(SimpleTs.GetTarget(e.Range, SimpleTs.DamageType.Magical));
            else if (menu.Item("combok").GetValue<KeyBind>().Active)
            {
                if (aSpell != SpellSlot.R || menu.Item("stopult").GetValue<bool>())
                {
                    var target = SimpleTs.GetTarget(e.Range, SimpleTs.DamageType.Magical);
                    if (target != null)
                    {
                        if (aSpell == SpellSlot.R && DamageLib.IsKillable(target, new[] { DamageLib.SpellType.Q, DamageLib.SpellType.E, DamageLib.SpellType.W }))
                        {
                            if (dfg.IsReady() && ObjectManager.Player.Distance(target) <= e.Range)
                                dfg.Cast(target);
                            if (q.IsReady() && ObjectManager.Player.Distance(target) <= q.Range)
                                q.CastOnUnit(target);
                            if (e.IsReady() && ObjectManager.Player.Distance(target) <= e.Range)
                                e.CastOnUnit(target);
                            if (w.IsReady() && ObjectManager.Player.Distance(target) <= w.Range)
                                w.Cast();
                            if (r.IsReady() && ObjectManager.Player.Distance(target) < r.Range)
                                r.Cast();
                        }

                        if (menu.Item("ignite").GetValue<bool>() && ignite != SpellSlot.Unknown && ObjectManager.Player.Spellbook.CanUseSpell(ignite) == SpellState.Ready && DamageLib.IsKillable(target, new [] { DamageLib.SpellType.IGNITE }))
                            ObjectManager.Player.SummonerSpellbook.CastSpell(ignite, target);
                    }
                }
            }
        }
        private static Circle _item;
        private static Obj_AI_Hero _killable;
        static void Drawing_OnDraw(EventArgs args)
        {
            if (menu.Item("ecircle").GetValue<bool>())
            {
                for (int y = 0; y < doZabicia.Count; y++)
                {
                    var kvp = doZabicia.ElementAt(y);
                    if (kvp.Value == 0)
                        continue;
                    _killable = getPlayerByNID(kvp.Key);
                    if (_killable.Health <= 0 || !_killable.IsVisible)
                    {
                        doZabicia.Remove(kvp.Key);
                        continue;
                    }
                    if (kvp.Value == 1 || kvp.Value == 2)
                    {
                        for (var i = 0; i < 10; i++)
                            Utility.DrawCircle(_killable.Position, (80 + i * 1.5f), Color.Red);
                    }
                    else if (kvp.Value == 3 || kvp.Value == 4)
                    {
                        for (var i = 0; i < 10; i++)
                        {
                            Utility.DrawCircle(_killable.Position, (80 + i * 1.5f), Color.Red);
                            Utility.DrawCircle(_killable.Position, (110 + i * 1.5f), Color.Red);
							if (kvp.Value == 4)
								Utility.DrawCircle(_killable.Position, (140 + i * 1.5f), Color.Red);
                        }
                    }
                }
            }
            foreach (var skill in skille)
            {
                _item = menu.Item(skill.Slot + "Range").GetValue<Circle>();
                if (_item.Active)
                    Utility.DrawCircle(ObjectManager.Player.Position, skill.Range, _item.Color);
            }
        }

        static Obj_AI_Hero getPlayerByNID(int nid)
        {
            return ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.NetworkId == nid).FirstOrDefault();
        }
        static void harass(Obj_AI_Hero target)
        {
            if (target == null)
                return;
            if (q.IsReady() && ObjectManager.Player.Distance(target) <= q.Range)
                q.CastOnUnit(target);
            if (e.IsReady() && ObjectManager.Player.Distance(target) <= e.Range)
                e.CastOnUnit(target);
            if (w.IsReady() && ObjectManager.Player.Distance(target) <= w.Range)
                w.Cast();
        }

        static void calcDmg(Obj_AI_Base enemy)
        {
            var qdmg = DamageLib.getDmg(enemy, DamageLib.SpellType.Q);
            var qdmg2 = 0;
            //var qdmg2 = DamageLib.getDmg(enemy, DamageLib.SpellType.Q, DamageLib.StageType.);
            var wdmg = DamageLib.getDmg(enemy, DamageLib.SpellType.W);
            var edmg = DamageLib.getDmg(enemy, DamageLib.SpellType.E);
            var rdmg = DamageLib.getDmg(enemy, DamageLib.SpellType.R);
            var aadmg = DamageLib.getDmg(enemy, DamageLib.SpellType.AD);
            var dfgdmg = dfg.IsReady() ? DamageLib.getDmg(enemy, DamageLib.SpellType.DFG) : 0;
            var ignitedmg = ignite != SpellSlot.Unknown ? DamageLib.getDmg(enemy, DamageLib.SpellType.IGNITE) : 0;
            var combo1 = aadmg + (qdmg * 2 + qdmg2 * 2 + wdmg * 2 + edmg * 2 + rdmg * 10) * (dfg.IsReady() ? 1.2 : 1);
            var combo2 = aadmg;
            var combo3 = aadmg;
            double combo4 = 0;
            if (q.IsReady())
            {
                combo2 = combo2 + (qdmg + qdmg2) * (dfg.IsReady() ? 2.2 : 2);
                combo3 = combo3 + (qdmg + qdmg2) * (dfg.IsReady() ? 2.2 : 2);
                combo4 += qdmg + (e.IsReady() ? qdmg2 : 0);
            }
            if (w.IsReady())
            {
                combo2 += wdmg * (dfg.IsReady() ? 2.2 : 2);
                combo3 += wdmg * (dfg.IsReady() ? 1.2 : 1);
                combo4 += e.IsReady() ? wdmg : 0;
            }
            if (e.IsReady())
            {
                combo2 += edmg * (dfg.IsReady() ? 2.2 : 2);
                combo3 += edmg * (dfg.IsReady() ? 1.2 : 1);
                combo4 += edmg;
            }
            if (r.IsReady())
            {
                combo2 += rdmg * 10 * (dfg.IsReady() ? 1.2 : 1);
                combo3 += rdmg * 7 * (dfg.IsReady() ? 1.2 : 1);
                combo4 += e.IsReady() ? rdmg * 3 : 0;
            }
            if (dfg.IsReady())
            {
                combo1 += dfgdmg;
                combo2 += dfgdmg;
                combo3 += dfgdmg;
                combo4 += dfgdmg;
            }
            if (ObjectManager.Player.SummonerSpellbook.CanUseSpell(ignite) == SpellState.Ready)
            {
                combo1 += ignitedmg;
                combo2 += ignitedmg;
                combo3 += ignitedmg;
            }

            int killable = 0;

            if (combo4 >= enemy.Health)
                killable = 4;
            else if (combo3 >= enemy.Health)
                killable = 3;
            else if (combo2 >= enemy.Health)
                killable = 2;
            else if (combo1 >= enemy.Health)
                killable = 1;

            if (doZabicia.ContainsKey(enemy.NetworkId))
                doZabicia[enemy.NetworkId] = killable;
            else
                doZabicia.Add(enemy.NetworkId, killable);
        }
    }
}
Opublikowano

Nie wstawię gotowej binarki z powodów bezpieczeństwa. Oto, jak skompilować BEZ UŻYCIA SVN COMPILERA:
1. Tworzycie plik z rozszerzeniem .cs i wklejacie do niego kod źródłowy skryptu.
2. Uruchamiamy cmd.exe.

Teraz w folderze L# wchodzimy w folder Assemblies, a potem System. Kopiujemy jego ścieżkę (czyli np: C:\LeagueSharp\Assemblies\System\).

3. Wpisujemy w cmd polecenie set libs=C:\LeagueSharp\Assemblies\System (wstawiacie tutaj Waszą ścieżkę do tego folderu)
4. Korzystając z polecenia "cd" wchodzimy do folderu, gdzie zapisaliśmy kod źródłowy.
5. Teraz wpisujecie:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:mKatarina.exe /r:"%libs%\LeagueSharp.dll" /r:"%libs%\LeagueSharp.Common.dll" /r:"%libs%\SharpDX.dll" skrypt.cs

Jak to powinno wyglądać:

b1505i.jpg
Tą metodą możecie praktycznie kompilować dowolny skrypt.
 
Uwaga! Jeżeli wyskoczy wam błąd dotyczący "IsKillable", pobierzcie najnowszą wersję LeagueSharp.Common.dll - https://github.com/LeagueSharp/LeagueSharpCommon/blob/master/Releases/LeagueSharp.Common.dll?raw=true

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

 

Nie wstawię gotowej binarki z powodów bezpieczeństwa. Oto, jak skompilować BEZ UŻYCIA SVN COMPILERA:

1. Tworzycie plik z rozszerzeniem .cs i wklejacie do niego kod źródłowy skryptu.

2. Uruchamiamy cmd.exe.

 

Teraz w folderze L# wchodzimy w folder Assemblies, a potem System. Kopiujemy jego ścieżkę (czyli np: C:\LeagueSharp\Assemblies\System\).

 

3. Wpisujemy w cmd polecenie set libs=C:\LeagueSharp\Assemblies\System (wstawiacie tutaj Waszą ścieżkę do tego folderu)

4. Korzystając z polecenia "cd" wchodzimy do folderu, gdzie zapisaliśmy kod źródłowy.

5. Teraz wpisujecie:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:mKatarina.exe /r:"%libs%\LeagueSharp.dll" /r:"%libs%\LeagueSharp.Common.dll" /r:"%libs%\SharpDX.dll" skrypt.cs

Jak to powinno wyglądać:

747901408543096358546.jpg
Tą metodą możecie praktycznie kompilować dowolny skrypt.
 
Uwaga! Jeżeli wyskoczy wam błąd dotyczący "IsKillable", pobierzcie najnowszą wersję LeagueSharp.Common.dll - https://github.com/LeagueSharp/LeagueSharpCommon/blob/master/Releases/LeagueSharp.Common.dll?raw=true

 

a po mojemu? :D

Opublikowano

U mnie nie robi comba, dmg liczy z dupy (przed 6 chyba wlicza dmg z ulta, a kolejnym razem mimo możliwości zabicia w ogóle nie zaznaczyło), brak możliwości ustawienia czym ma harassować. 

Bóg to twoje sumienie

Opublikowano

Nie wyręczaj tych kidów :P Dałeś instrukcję 100% pewną, działającą, więc jak nie umieją bo są brainless to im nie dawaj :D

Take it easy my friend

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...