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

jinx scrypt


Rekomendowane odpowiedzi

Opublikowano

 

https://bitbucket.org/KainBoL/bol/raw/master/Common/SidasAutoCarryPlugin%20-%20Jinx.lua

lub

 

--[[

Auto Carry Plugin - Jinx PROdiction Edition
        Author: Kain
        Version: See version variable below.
        Copyright 2013

        Dependency: Sida's Auto Carry

        How to install:
            Make sure you already have AutoCarry installed.
            Name the script EXACTLY "SidasAutoCarryPlugin - Jinx.lua" without the quotes.
            Place the plugin in BoL/Scripts/Common folder.

        Features:
            Combo: SBTW Intelligent Q, E, R
            Killsteal: Killsteal with Q, E, or R.
            Range Circles: Smart range circles turn on and off as their respective spells are available.
            Damage Combo Calulator: Shows messages on targets when kill-able by a combo.
            Customization: Fully customizable Combo (Q, E, R), Harass (Q, E, R), and Draw.
            Menus: Extensive configuration options in two menus.
            Reborn: Fully compatible.
            Misc: Mana Manager, Auto Leveler.

        Download: https://bitbucket.org/KainBoL/bol/raw/master/Common/SidasAutoCarryPlugin%20-%20Jinx.lua

        Version History:
            Version: 0.5
                Beta
            Version: 0.2
                Pre-Release

--]]

if myHero.charName ~= "Jinx" then return end

-- Check to see if user failed to read the forum...
if VIP_USER then
    if FileExist(SCRIPT_PATH..'Common/Collision.lua') then
        require "Collision"

        if type(Collision) ~= "userdata" then
            PrintChat("Your version of Collision.lua is incorrect. Please install v1.1.1 or later in Common folder.")
            return
        else
            assert(type(Collision.GetMinionCollision) == "function")
        end
    else
        PrintChat("Please install Collision.lua v1.1.1 or later in Common folder.")
        return
    end

    if FileExist(SCRIPT_PATH..'Common/2DGeometry.lua') then
        PrintChat("Please delete 2DGeometry.lua from your Common folder.")
    end
end

function Vars()
    curVersion = 0.5

    if AutoCarry.Skills then IsSACReborn = true else IsSACReborn = false end

    -- Disable SAC Reborn's skills. Ours are better.
    if IsSACReborn then
        AutoCarry.Skills:DisableAll()
    end

    KeyQ = string.byte("Q")
    KeyW = string.byte("W")
    KeyE = string.byte("E")
    KeyR = string.byte("R")

    QRange, WRange, ERange, RRange = 600, 1500, 950, math.huge
    QSpeed, WSpeed, ESpeed, RSpeed = 1.3, 2.5, .887, 2.15
    QDelay, WDelay, EDelay, RDelay = 390, 500, 500, 590
    QWidth, WWidth, EWidth, RWidth = 200, 200, 200, 200

    RRadius = 225

    if IsSACReborn then
        SkillQ = AutoCarry.Skills:NewSkill(true, _Q, QRange, "Switcheroo!", AutoCarry.SPELL_LINEAR, 0, false, false, QSpeed, QDelay, QWidth, false)
        SkillW = AutoCarry.Skills:NewSkill(true, _W, WRange, "Zap!", AutoCarry.SPELL_LINEAR, 0, false, false, WSpeed, WDelay, WWidth, false)
        SkillE = AutoCarry.Skills:NewSkill(true, _E, ERange, "Flame Chompers!", AutoCarry.SPELL_CIRCLE, 0, false, false, ESpeed, EDelay, EWidth, false)
        SkillR = AutoCarry.Skills:NewSkill(true, _R, RRange, "Super Mega Death Rocket!", AutoCarry.SPELL_LINEAR, 0, false, false, RSpeed, RDelay, RWidth, false)
    else
        SkillQ = {spellKey = _Q, range = QRange, speed = QSpeed, delay = QDelay, width = QWidth, minions = false }
        SkillW = {spellKey = _W, range = WRange, speed = WSpeed, delay = WDelay, width = WWidth, minions = false }
        SkillE = {spellKey = _E, range = ERange, speed = ESpeed, delay = EDelay, width = EWidth, minions = false }
        SkillR = {spellKey = _R, range = RRange, speed = RSpeed, delay = RDelay, width = RWidth, minions = false }
    end

    QReady, WReady, EReady, RReady = false, false, false, false

    floattext = {"Harass him","Fight him","Kill him","Murder him"} -- text assigned to enemys

    killable = {} -- our enemy array where stored if people are killable
    waittxt = {} -- prevents UI lags, all credits to Dekaron

    for i=1, heroManager.iCount do waittxt[i] = i*3 end -- All credits to Dekaron

    stacks, timer = 0, 0

    BuffPowPow = "jinxqicon"
    BuffFishBones = "JinxQ"
    BuffPowPowStacks = "jinxqramp"

    AAFishBones = false
    AAPowPowStacks = 0

    Target = nil

    debugMode = true

    -- Check to see if user failed to read the forum...
    if VIP_USER then
        if FileExist(SCRIPT_PATH..'Common/Collision.lua') then
            require "Collision"

            if type(Collision) ~= "userdata" then
                PrintChat("Your version of Collision.lua is incorrect. Please install v1.1.1 or later in Common folder.")
                return
            else
                assert(type(Collision.GetMinionCollision) == "function")
            end
        else
            PrintChat("Please install Collision.lua v1.1.1 or later in Common folder.")
            return
        end

        if FileExist(SCRIPT_PATH..'Common/2DGeometry.lua') then
            PrintChat("Please delete 2DGeometry.lua from your Common folder.")
        end
    end

    if VIP_USER then
        LoadVIPScript('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99B4E34E179D9B9B4C18817DA48E47BE')

        LoadProtectedScript('RHAZNUsgPGBQExs3FikQJQZNGglsTWAgLBUhPGggBCsrJUETDhYJKBwiWFR1fHBBEw4BHCEYP11UdXxwQRMOEhApDS5eRSg1CAhBJGl0R3BPewMwIiMZWiQrUTgXLwZJZTwvHh9rJhg+DRUCACkgaWA5QkxwRBAgUiAXKSEJSmskFylZARcRASUzGVIlJhxlDCgbEWxsfE12GSQXKhxmBg0gIk1nOkJMcEQ/LwAAAGQ1A1o/aVk9FjVeRSYtMxlgOyAVIVBLeGxMRUkIXS9Ic0RwTxcLIWU=B005819188E43F7F317C84445801E3D5')

        if IsSACReborn then
            PrintChat("<font color='#CCCCCC'> >> Kain's Jinx - PROdiction 2.0 <</font>")
        else
            PrintChat("<font color='#CCCCCC'> >> Kain's Jinx - VIP Prediction <</font>")
        end
    else
        PrintChat("<font color='#CCCCCC'> >> Kain's Jinx - Free Prediction <</font>")
    end
end

function Menu()
    AutoCarry.PluginMenu:addParam("sep", "----- "..myHero.charName.." by Kain: v"..curVersion.." -----", SCRIPT_PARAM_INFO, "")
    AutoCarry.PluginMenu:addParam("sep", "----- [ Combo ] -----", SCRIPT_PARAM_INFO, "")
    AutoCarry.PluginMenu:addParam("ComboQ", "Use Switcheroo!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("ComboW", "Use Zap!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("ComboE", "Use Flame Chompers!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("ComboR", "Use SMD Rocket!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("RMaxDistance", "Max Distance to Auto R", SCRIPT_PARAM_SLICE, 2000, 100, 10000, 0)
    AutoCarry.PluginMenu:addParam("ComboRMinEnemies", "R Min Enemies", SCRIPT_PARAM_SLICE, 2, 1, 5, 0)
    AutoCarry.PluginMenu:addParam("MousePosE", "Use Mouse Direction for E", SCRIPT_PARAM_ONOFF, false)
    AutoCarry.PluginMenu:addParam("MousePosEDistance", "Mouse E Fire-Ahead Distance", SCRIPT_PARAM_SLICE, 50, 10, 300, 0)
    AutoCarry.PluginMenu:addParam("sep", "----- [ Harass ] -----", SCRIPT_PARAM_INFO, "")
    AutoCarry.PluginMenu:addParam("HarassQ", "Use Switcheroo!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("HarassW", "Use Zap!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("sep", "----- [ Killsteal ] -----", SCRIPT_PARAM_INFO, "")    
    AutoCarry.PluginMenu:addParam("KillstealW", "Use Zap!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("KillstealE", "Use Flame Chompers!", SCRIPT_PARAM_ONOFF, true)
    AutoCarry.PluginMenu:addParam("KillstealR", "Use SMD Rocket!", SCRIPT_PARAM_ONOFF, true)

    ExtraConfig = scriptConfig("Sida's Auto Carry Plugin: "..myHero.charName..": Extras", myHero.charName)
    ExtraConfig:addParam("sep", "----- [ Misc ] -----", SCRIPT_PARAM_INFO, "")

    ExtraConfig:addParam("RSplashDamage", "Use Splash Dmg on R (FPS)", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("AutoLevelSkills", "Auto Level Skills (Requires Reload)", SCRIPT_PARAM_ONOFF, true) -- auto level skills
    ExtraConfig:addParam("ManaManager", "Mana Manager %", SCRIPT_PARAM_SLICE, 40, 0, 100, 2)
    ExtraConfig:addParam("ProMode", "Use Auto QWER Keys", SCRIPT_PARAM_ONOFF, true)

    ExtraConfig:addParam("sep", "----- [ Draw ] -----", SCRIPT_PARAM_INFO, "")
    ExtraConfig:addParam("DrawKillable", "Draw Killable Enemies", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("DisableDrawCircles", "Disable Draw", SCRIPT_PARAM_ONOFF, false)
    ExtraConfig:addParam("DrawFurthest", "Draw Furthest Spell Available", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("DrawTargetArrow", "Draw Arrow to Target", SCRIPT_PARAM_ONOFF, false)
    ExtraConfig:addParam("DrawQ", "Draw Switcheroo!", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("DrawW", "Draw Zap!", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("DrawE", "Draw Flame Chompers!", SCRIPT_PARAM_ONOFF, true)
    ExtraConfig:addParam("DrawR", "Draw SMD Rocket!", SCRIPT_PARAM_ONOFF, true)
end

function PluginOnLoad()
    AutoCarry.SkillsCrosshair.Range = 1200

    Vars()
    Menu()

    if ExtraConfig.AutoLevelSkills then -- setup the skill autolevel
        autoLevelSetSequence(levelSequence)
    end
end

function PluginOnTick()
    tick = GetTickCount()
    Target = AutoCarry.GetAttackTarget()
-- DebugAA()
    SpellCheck()

    if Target and not Target.dead then
        if AutoCarry.MainMenu.AutoCarry then
            if AutoCarry.PluginMenu.KillstealR and RReady then KillstealR() end
            Combo()
        elseif (AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear) and not IsMyManaLow() then
            Harass()
        end
    end

    if not Target and (AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear) then
        Farm()
    end
end

function OnGainBuff(unit, buff)
    if buff and buff.type ~= nil and unit.name == myHero.name and unit.team == myHero.team then
     PrintChat(buff.name)
        if buff.name == BuffPowPow then
            AAFishBones = false
        elseif buff.name == BuffFishBones then
            AAFishBones = true
        elseif buff.name == BuffPowPowStacks then
            IncrementPowPowStacks(1)
        end
    end
end

function OnLoseBuff(unit, buff)
    if buff and buff.type ~= nil and unit.name == myHero.name and unit.team == myHero.team then
        if buff.name == BuffPowPowStacks then
            IncrementPowPowStacks(-1)
        end
    end
end

function IncrementPowPowStacks(value)
    if value > 0 then
        if (AAPowPowStacks + value) >= 3 then
            AAPowPowStacks = 3
        else
            AAPowPowStacks = AAPowPowStacks + value
        end
    elseif value < 0 then
        if (AAPowPowStacks + value) <= 0 then
            AAPowPowStacks = 0
        else
            AAPowPowStacks = AAPowPowStacks + value
        end
    end
end

function DebugAA()
    if AAFishBones then
        PrintChat("fishbones on")
    else
        PrintChat("powpow on")
    end

    PrintChat("stacks: "..AAPowPowStacks)
end

function PluginOnProcessSpell(unit, spell)
    if unit.name == myHero.name and unit.team == myHero.team then
        -- if debugMode then PrintChat("spell: "..spell.name) end
    end
end

function Combo()
    local calcenemy = 1

    if not Target or not ValidTarget(Target) then return true end

    for i=1, heroManager.iCount do
    local Unit = heroManager:GetHero(i)
    if Unit.charName == Target.charName then
        calcenemy = i
    end
    end
    
    if IGNITEReady and killable[calcenemy] == 3 then CastSpell(IGNITESlot, Target) end

    if AutoCarry.PluginMenu.UseItems then
        if BWCReady and (killable[calcenemy] == 2 or killable[calcenemy] == 3) then CastSpell(BWCSlot, Target) end
        if RUINEDKINGReady and (killable[calcenemy] == 2 or killable[calcenemy] == 3) then CastSpell(RUINEDKINGSlot, Target) end
        if RANDUINSReady then CastSpell(RANDUINSSlot) end
    end

    -- if AutoCarry.PluginMenu.ComboQ then CastQ() end
    if AutoCarry.PluginMenu.ComboW then CastW() end
    if AutoCarry.PluginMenu.ComboE then CastE() end

    if RReady and AutoCarry.PluginMenu.ComboR and GetDistance(Target) <= AutoCarry.PluginMenu.RMaxDistance then
        local enemyCount = EnemyCount(Target, RRadius)
        local killable = ((GetDamage(Target, _R, 1) >= Target.health + 20) or killable[calcenemy] == 2 or killable[calcenemy] == 3) and true or false

        if (enemyCount >= AutoCarry.PluginMenu.ComboRMinEnemies and killable) or (not WReady and not EReady and killable) then
            CastR()
        end
    end
end

function Harass()
    if (AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear) and not IsMyManaLow() then
        if AutoCarry.PluginMenu.HarassW then CastW() end
    end
end

function Farm()
end

function GetDamage(enemy, spell, dmgType)
    if not dmgType then dmgType = 1 end

    if spell == _W then
        return myHero:CalcDamage(enemy, ((35*(myHero:GetSpellData(_W).level-1) + 30) + (1.40 * myHero.addDamage)))
    elseif spell == _E then
        return myHero:CalcDamage(enemy, ((55*(myHero:GetSpellData(_E).level-1) + 120) + (1.00 * myHero.ap)))
    elseif spell == _R and dmgType == 1 then
        return myHero:CalcDamage(enemy, ((50*(myHero:GetSpellData(_R).level-1) + 150) + (.50 * myHero.addDamage) + (((5*myHero:GetSpellData(_R).level-1) + 25)/100 * (myHero.maxHealth - myHero.health))))
    elseif spell == _R and dmgType == 2 then
        return myHero:CalcDamage(enemy, ((100*(myHero:GetSpellData(_R).level-1) + 300) + (1.00 * myHero.addDamage) + (((5*myHero:GetSpellData(_R).level-1) + 25)/100 * (myHero.maxHealth - myHero.health))))
    elseif spell == _R and dmgType == 3 then
        return myHero:CalcDamage(enemy, ((100*(myHero:GetSpellData(_R).level-1) + 300) + (1.00 * myHero.addDamage)) + (((5*myHero:GetSpellData(_R).level-1) + 25)/100 * (myHero.maxHealth - myHero.health)) * .80)
    end
end

function GetPowPowBonusAttackSpeed()
    return (20*myHero:GetSpellData(_Q).level-1) + 50
end

function GetFishBonesBonusRange()
    return (25*myHero:GetSpellData(_Q).level-1) + 75
end

function CastQ(enemy)
    if not enemy then enemy = Target end

    CastSpell(_Q)
    if QReady and IsValid(enemy, SkillQ.Range) then
        CastSpell(_E)
    end
end

function CastW(enemy)
    if not enemy then enemy = Target end

    if WReady and IsValid(enemy, SkillW.Range) then
        if IsSACReborn then
            SkillW:ForceCast(enemy)
        else
            AutoCarry.CastSkillshot(SkillW, enemy)
        end
    end
end

function CastE(enemy, mouseAim)
    if not enemy then enemy = Target end

    if EReady and IsValid(enemy, SkillE.Range) then
        if IsSACReborn then
            if AutoCarry.PluginMenu.MousePosE or mouseAim then
                predic = ep:EnableTarget(enemy, true)
            else
                SkillE:ForceCast(enemy)
            end
        else
            AutoCarry.CastSkillshot(SkillE, enemy)
        end
    end
end

function FireE(unit, predic, spell)
    local TargetPos = Vector(predic.x, predic.y, predic.z)
    local MyPos = Vector(myHero.x, myHero.y, myHero.z)
    local MyMouse = Vector(mousePos.x, mousePos.y, mousePos.z)
    local mouseDistance = GetDistance(mousePos)

    if mouseDistance > 0 then
        local FirePos = TargetPos + (MyMouse - MyPos) * ((AutoCarry.PluginMenu.MousePosEDistance / mouseDistance))
        CastSpell(_E, FirePos.x, FirePos.z)
        return true
    end

    return false
end

function CastR(enemy)
    if not enemy then enemy = Target end

    if RReady and IsValid(enemy, SkillR.Range) then
        if IsSACReborn then
            SkillR:ForceCast(enemy)
        else
            AutoCarry.CastSkillshot(SkillR, enemy)
        end
    end
end

function KillstealR()
end

function SpellCheck()
    DFGSlot, HXGSlot, BWCSlot, SheenSlot, TrinitySlot, LichBaneSlot = GetInventorySlotItem(3128),
    GetInventorySlotItem(3146), GetInventorySlotItem(3144), GetInventorySlotItem(3057),
    GetInventorySlotItem(3078), GetInventorySlotItem(3100)

    RUINEDKINGSlot, QUICKSILVERSlot, RANDUINSSlot, BWCSlot = GetInventorySlotItem(3153), GetInventorySlotItem(3140), GetInventorySlotItem(3143)

    QReady = (myHero:CanUseSpell(_Q) == READY)
    WReady = (myHero:CanUseSpell(_W) == READY)
    EReady = (myHero:CanUseSpell(_E) == READY)
    RReady = (myHero:CanUseSpell(_R) == READY)

    RUINEDKINGReady = (RUINEDKINGSlot ~= nil and myHero:CanUseSpell(RUINEDKINGSlot) == READY)
    QUICKSILVERReady = (QUICKSILVERSlot ~= nil and myHero:CanUseSpell(QUICKSILVERSlot) == READY)
    RANDUINSReady = (RANDUINSSlot ~= nil and myHero:CanUseSpell(RANDUINSSlot) == READY)

    DFGReady = (DFGSlot ~= nil and myHero:CanUseSpell(DFGSlot) == READY)
    HXGReady = (HXGSlot ~= nil and myHero:CanUseSpell(HXGSlot) == READY)
    BWCReady = (BWCSlot ~= nil and myHero:CanUseSpell(BWCSlot) == READY)
    IReady = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY)
end

function PluginOnDraw()
-- if 1 == 1 then return end
    if Target and not Target.dead and ExtraConfig.DrawTargetArrow and (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.MixedMode) then
        DrawArrowsToPos(myHero, Target)
    end

    if IsTickReady(75) then DMGCalculation() end
    DrawKillable()
    DrawRanges()
end

function DrawKillable()
    if ExtraConfig.DrawKillable and not myHero.dead then
        for i=1, heroManager.iCount do
            local Unit = heroManager:GetHero(i)
            if ValidTarget(Unit) then -- we draw our circles
                 if killable[i] == 1 then
                     DrawCircle(Unit.x, Unit.y, Unit.z, 100, 0xFFFFFF00)
                 end

                 if killable[i] == 2 then
                     DrawCircle(Unit.x, Unit.y, Unit.z, 100, 0xFFFFFF00)
                 end

                 if killable[i] == 3 then
                     for j=0, 10 do
                         DrawCircle(Unit.x, Unit.y, Unit.z, 100+j*0.8, 0x099B2299)
                     end
                 end

                 if killable[i] == 4 then
                     for j=0, 10 do
                         DrawCircle(Unit.x, Unit.y, Unit.z, 100+j*0.8, 0x099B2299)
                     end
                 end

                 if waittxt[i] == 1 and killable[i] ~= nil and killable[i] ~= 0 and killable[i] ~= 1 then
                     PrintFloatText(Unit,0,floattext[killable[i]])
                 end
            end

            if waittxt[i] == 1 then
                waittxt[i] = 30
            else
                waittxt[i] = waittxt[i]-1
            end
        end
    end
end

function DrawRanges()
    if not ExtraConfig.DisableDrawCircles and not myHero.dead then
        local farSpell = FindFurthestReadySpell()

        -- DrawCircle(myHero.x, myHero.y, myHero.z, getTrueRange(), 0x808080) -- Gray

        if ExtraConfig.DrawQ and QReady and ((ExtraConfig.DrawFurthest and farSpell and farSpell == SkillQ.Range) or not ExtraConfig.DrawFurthest) then
            DrawCircle(myHero.x, myHero.y, myHero.z, SkillQ.Range, 0x0099CC) -- Blue
        end

        if ExtraConfig.DrawW and WReady and ((ExtraConfig.DrawFurthest and farSpell and farSpell == SkillW.Range) or not ExtraConfig.DrawFurthest) then
            DrawCircle(myHero.x, myHero.y, myHero.z, SkillW.Range, 0xFFFF00) -- Yellow
        end

        if ExtraConfig.DrawE and EReady and ((ExtraConfig.DrawFurthest and farSpell and farSpell == SkillE.Range) or not ExtraConfig.DrawFurthest) then
            DrawCircle(myHero.x, myHero.y, myHero.z, SkillE.Range, 0x00FF00) -- Green
        end

        Target = AutoCarry.GetAttackTarget()
        if Target ~= nil then
            for j=0, 10 do
                DrawCircle(Target.x, Target.y, Target.z, 40 + j*1.5, 0x00FF00) -- Green
            end
        end
    end
end

function DMGCalculation()
    for i=1, heroManager.iCount do
local Unit = heroManager:GetHero(i)
if ValidTarget(Unit) then
    local RUINEDKINGDamage, IGNITEDamage, BWCDamage = 0, 0, 0

--[[
    local QDamage = getDmg("Q", Unit, myHero)
            local WDamage = getDmg("W", Unit, myHero)
            local EDamage = getDmg("E", Unit, myHero)
            local RDamage = getDmg("R", Unit, myHero)
            local HITDamage = getDmg("AD", Unit, myHero)
--]]

            local WDamage = GetDamage(Unit, _W, nil)
            local EDamage = GetDamage(Unit, _E, nil)
            local RDamage = GetDamage(Unit, _R, 1)
            -- local HITDamage = getDmg("AD", Unit, myHero)
            local HITDamage = 10

            local IGNITEDamage = (IGNITESlot and getDmg("IGNITE", Unit, myHero) or 0)
            local BWCDamage = (BWCSlot and getDmg("BWC", Unit, myHero) or 0)
            local RUINEDKINGDamage = (RUINEDKINGSlot and getDmg("RUINEDKING", Unit, myHero) or 0)
            local combo1 = HITDamage
            local combo2 = HITDamage
            local combo3 = HITDamage
            local mana = 0

--[[
            if QReady then
                combo1 = combo1 + QDamage
                combo2 = combo2 + QDamage
                combo3 = combo3 + QDamage
                mana = mana + myHero:GetSpellData(_Q).mana
            end
--]]

            if WReady then
                combo1 = combo1 + WDamage
                combo2 = combo2 + WDamage
                combo3 = combo3 + WDamage
                mana = mana + myHero:GetSpellData(_W).mana
            end

            if EReady then
                combo1 = combo1 + EDamage
                combo2 = combo2 + EDamage
                combo3 = combo3 + EDamage
                mana = mana + myHero:GetSpellData(_E).mana
            end

            if RReady then
                combo2 = combo2 + RDamage
                combo3 = combo3 + RDamage
                mana = mana + myHero:GetSpellData(_R).mana
            end

            if BWCReady then
                combo2 = combo2 + BWCDamage
                combo3 = combo3 + BWCDamage
            end

            if RUINEDKINGReady then
                combo2 = combo2 + RUINEDKINGDamage
                combo3 = combo3 + RUINEDKINGDamage
            end

            if IGNITEReady then
                combo3 = combo3 + IGNITEDamage
            end

            killable[i] = 1 -- the default value = harass

            if combo3 >= Unit.health and myHero.mana >= mana then -- all cooldowns needed
                killable[i] = 2
            end

            if combo2 >= Unit.health and myHero.mana >= mana then -- only spells + ulti and items needed
                killable[i] = 3
            end

            if combo1 >= Unit.health and myHero.mana >= mana then -- only spells but no ulti needed
                killable[i] = 4
            end
        end
    end
end

function FindFurthestReadySpell()
    local farSpell = nil

    if ExtraConfig.DrawW and WReady then farSpell = SkillW.Range end
    if ExtraConfig.DrawE and EReady and (not farSpell or SkillE.Range > farSpell) then farSpell = SkillE.Range end

    return farSpell
end

function DrawArrowsToPos(pos1, pos2)
    if pos1 and pos2 then
        startVector = D3DXVECTOR3(pos1.x, pos1.y, pos1.z)
        endVector = D3DXVECTOR3(pos2.x, pos2.y, pos2.z)
        DrawArrows(startVector, endVector, 60, 0xE97FA5, 100)
    end
end

function IsValid(enemy, dist)
    if enemy and enemy.valid and not enemy.dead and enemy.bTargetable and ValidTarget(enemy, dist) then
        return true
    else
        return false
    end
end

function FindClosestEnemy()
    local closestEnemy = nil

    for _, enemy in pairs(AutoCarry.EnemyTable) do
        if enemy and enemy.valid and not enemy.dead then
            if not closestEnemy or GetDistance(enemy) < GetDistance(closestEnemy) then
                closestEnemy = enemy
            end
        end
    end

    return closestEnemy
end

function FindLowestHealthEnemy(range)
    local lowHealthEnemy = nil

    for _, enemy in pairs(AutoCarry.EnemyTable) do
        if enemy and enemy.valid and not enemy.dead then
            if not lowHealthEnemy or (GetDistance(enemy) <= range and enemy.health < lowHealthEnemy.health) then
                lowHealthEnemy = enemy
            end
        end
    end

    return closestEnemy
end

function EnemyCount(point, range)
    local count = 0

    for _, enemy in pairs(GetEnemyHeroes()) do
        if enemy and not enemy.dead and GetDistance(point, enemy) <= range then
            count = count + 1
        end
    end

    return count
end

function IsMyManaLow()
    if myHero.mana < (myHero.maxMana * ( ExtraConfig.ManaManager / 100)) then
        return true
    else
        return false
    end
end

function GetTrueRange()
    return myHero.range + GetDistance(myHero.minBBox)
end

function IsTickReady(tickFrequency)
    -- Improves FPS
    if tick ~= nil and math.fmod(tick, tickFrequency) == 0 then
        return true
    else
        return false
    end
end

function PluginOnWndMsg(msg, key)
    Target = AutoCarry.GetAttackTarget(true)
    if Target ~= nil and ExtraConfig.ProMode then
-- PrintChat("2: "..msg.."!"..key.."!"..string.byte("E"))
        -- if msg == KEY_DOWN and key == KeyQ then CastQ() end
        if msg == KEY_DOWN and key == KeyW then CastW() end
        if msg == KEY_DOWN and key == KeyE then CastE(Target, true) end
        if msg == KEY_DOWN and key == KeyR then CastR() end
    end
end

--UPDATEURL=
--HASH=63287C1A2EBD1295A49E69EF3D3EF3BF

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...