冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 935|回覆: 1
打印 上一主題 下一主題

[求助] 求塔隆腳本

[複製鏈接]

2

主題

0

好友

1

積分

新手上路

Rank: 1

UID
163190
帖子
14
主題
2
精華
0
積分
1
楓幣
88
威望
1
存款
135
贊助金額
0
推廣
0
GP
1
閱讀權限
10
性別
保密
在線時間
4 小時
註冊時間
2016-9-15
最後登入
2016-11-15

Apple勳章

跳轉到指定樓層
1
發表於 2016-9-21 01:22:19 |只看該作者 |倒序瀏覽
哪位大大能提供塔隆腳本
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$

6

主題

0

好友

31

積分

新手上路

Rank: 1

UID
77891
帖子
442
主題
6
精華
0
積分
31
楓幣
1296
威望
18
存款
0
贊助金額
0
推廣
0
GP
6
閱讀權限
10
性別
保密
在線時間
269 小時
註冊時間
2014-8-21
最後登入
2024-6-19

Android勳章

2
發表於 2016-9-21 18:09:53 |只看該作者
if GetObjectName(myHero) ~= "Talon" then return end

Talon=MenuConfig("Talon","Maxxxel Talon God")
Talon:Key("Combo","Combo",string.byte(" "))
Talon:Boolean("M", "Mouse", false)
Talon:Menu("KS","Killfunctions")
Talon.KS:Boolean("Ignite","Auto-Ignite",true)
Talon.KS:Boolean("R", "Smart Ulti",true)
Talon.KS:Boolean("AR", "AOE Ulti", true)
Talon.KS:Slider("AOER", "AOE Ulti, Enemies >", 3, 0, 5, 1)
Talon.KS:Boolean("Percent","Show % Kill",true)
Talon:Menu("Harass", "Harass Menu")
Talon.Harass:Key("DoIt","Harass",string.byte("X"))
Talon.Harass:Boolean("Auto", "Auto Harass", false)
Talon.Harass:Slider("Mana", "Minimum Mana %", 40, 0, 100, 1)
------------------------------------------
--version = 1.7
--Ignite Fix
------------------------------------------

------------------------------------------
--Variables
------------------------------------------
local xHydra, HRDY, QRDY, WRDY, ERDY, R1RDY, R2RDY, HydraCast, HydraCastTime, xAA, xQ, xQ2, xW, xE, xR, IRDY, xIgnite, Wtime, dmgOverTime, Check, lastAA, AAREADY = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
local target, LS
local summonerNameOne = GetCastName(myHero,SUMMONER_1)
local summonerNameTwo = GetCastName(myHero,SUMMONER_2)
local Ignite = (summonerNameOne:lower():find("summonerdot") and SUMMONER_1 or (summonerNameTwo:lower():find("summonerdot") and SUMMONER_2 or nil))
local myHero = GetMyHero()
local stopMove, doQ = false, false
------------------------------------------
--Tables
------------------------------------------
local KSN = {}
local n = {}
------------------------------------------
--Check for Items
------------------------------------------
local function CheckItemCD()
  HydraCast = HydraCastTime ~= 0 and HydraCast == 1 and (GetTickCount() - HydraCastTime) >= 10000 and 0 or HydraCast
  HydraCastTime = HydraCastTime ~= 0 and HydraCast == 1 and (GetTickCount() - HydraCastTime) >= 10000 and 0 or HydraCastTime
  HRDY = GetItemSlot(myHero,3077) + GetItemSlot(myHero,3074) > 0 and HydraCast == 0 and 1 or 0
  IRDY = Ignite and CanUseSpell(myHero, Ignite) == 0 and 1 or 0
end
------------------------------------------
--Check for Spell Damage
------------------------------------------
local function DamageFunc()
        local base = GetBaseDamage(myHero)
        local bonus = GetBonusDmg(myHero)
        xAA = base + bonus
        xQ = xAA + 30 * GetCastLevel(myHero,_Q) + .3 * bonus
        xQ2 = (9 * GetCastLevel(myHero,_Q) + bonus) - dmgOverTime
        xW = 2 * (5 + 25 * GetCastLevel(myHero,_W) + .6 * bonus)
        xE = 1 + GetCastLevel(myHero,_E) * .03
        xR = 70 + GetCastLevel(myHero,_R) * 50 + .75 * bonus
        xHYDRA = .6 * xAA *HRDY
        xIgnite = (50 + GetLevel(myHero) * 20) * IRDY
end
------------------------------------------
--MISC
------------------------------------------
local function MoveToMouse()
        if Talon.M:Value() == true then
                if LS ~= "E" or stopMove == true then
                        MoveToXYZ(GetMousePos())
          end
  end
end

local function Valid(unit)
  return unit and not IsDead(unit) and IsTargetable(unit) and not IsImmune(unit, myHero) and IsVisible(unit) or false
end

local function HasE(unit)
        return GotBuff(unit,"talondamageamp") ~= 0 or false
end

local function Emulti(unit)
  return HasE(unit) and ERDY == 0 and 1 or 0
end

local function Wmulti()
  return GetTickCount() - Wtime <= 0 and WRDY == 0 and 1 or 0
end

local function HasQ2(unit)
        return GotBuff(unit,"talonbleeddebuff") ~= 0 or false
end

local function IsMoving(unit)
        local t = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), 99999, 0, 2000, 1, false, false)
        local k = {x = t.PredPos.x, y = t.PredPos.y, z = t.PredPos.z}
        local p = GetOrigin(unit)
        local d1 = GetDistance(p)
        local d2 = GetDistance(k)
        return d1 < d2 and 1 or 0
end
------------------------------------------
--Get Target to Harass
------------------------------------------
function GetTarget(range, damageType)       
        damageType = damageType or 2
    local target, steps = nil, 10000
    for _, k in pairs(GetEnemyHeroes()) do
        local step = GetCurrentHP(k) / CalcDamage(GetMyHero(), k, DAMAGE_PHYSICAL == damageType and 100 or 0, DAMAGE_MAGIC == damageType and 100 or 0)
        if k and ValidTarget(k, range) and step < steps then
            target = k
            steps = step
        end
    end
    return target
end
------------------------------------------
--Check Spells for CD
------------------------------------------
local function CD(a,b,c,d,e)
        QRDY = GetCastName(myHero,_Q) == "TalonNoxianDiplomacy" and GetCastLevel(myHero,_Q) >= 1 and CanUseSpell(myHero, _Q) == READY and 1 or GotBuff(myHero,"talonnoxiandiplomacybuff") ~= 0 and 1 or 0
        WRDY = GetCastName(myHero,_W) == "TalonRake" and GetCastLevel(myHero,_W) >= 1 and CanUseSpell(myHero, _W) == READY and 1 or 0
        ERDY = GetCastName(myHero,_E) == "TalonCutthroat" and GetCastLevel(myHero,_E) >= 1 and CanUseSpell(myHero, _E) == READY and 1 or 0
        R1RDY = GetCastName(myHero,_R) == "TalonShadowAssault" and GetCastName(myHero,_R) ~= "talonshadowassaulttoggle" and GetCastLevel(myHero,_R) >= 1 and CanUseSpell(myHero, _R) == READY and 1 or 0
        R2RDY = GetCastName(myHero,_R) == "talonshadowassaulttoggle" and GetCastLevel(myHero,_R) >= 1 and CanUseSpell(myHero, _R) == READY and 1 or 0
        return (QRDY == a or a == n) and (WRDY == b or b == n) and (ERDY == c or c == n) and (R1RDY == d or d == n) and (R2RDY == e or e == n) and 1 or 0
end
------------------------------------------
--Check Spells for Mana
------------------------------------------
local function Mana(a,b,c,d,e)
        a = a == 1 and 35 + GetCastLevel(myHero,_Q) * 5 or 0
        b = b == 1 and 55 + GetCastLevel(myHero,_W) * 5 or 0
        c = c == 1 and 30 + GetCastLevel(myHero,_E) * 5 or 0
        d = d == 1 and 70 + GetCastLevel(myHero,_R) * 10 or 0
        return GetCurrentMana(myHero) > a + b + c + d and 1 or 0
end
------------------------------------------
--Spells
------------------------------------------
local function W(o)
        if GetDistance(o) <= 700 - GetMoveSpeed(o) * IsMoving(o) * .1 then
                local WSS = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 1200, 250, 700, (700 - GetDistance(o)) * .5, false, false)
                if WSS.HitChance == 1 then
                        CastSkillShot(_W, WSS.PredPos)
                end
        end
end

local function E(o)
        if GetDistance(o) <= 700 then
                stopMove = true
                CastTargetSpell(o, _E)
                if AAREADY ~= 1 and doQ and GetDistance(o) <= 300 then
                        CastSpell(_Q)
                end
        end
end

local function R1(o)
        if GetDistance(o) <= 650 - GetMoveSpeed(o) * IsMoving(o) * .15 then
                CastSpell(_R)
        end
end

local function R2(o)
        if GetCastName(myHero, _R) == "talonshadowassaulttoggle" and GetDistance(o) <= 650 - GetMoveSpeed(o) * IsMoving(o) * .15 then
          CastSpell(_R)
        end
end
------------------------------------------
--Function to round the numbers in Killnotis
------------------------------------------
local function Round(val, decimal)
                return decimal ~= nil and math.floor((val * 10 ^ decimal) + 0.5) / (10 ^ decimal) or math.floor(val + 0.5)
end
------------------------------------------
--Main Function, calcs the Killnotis and which Spell to use on Combo
------------------------------------------
local function SpellSequence()
        if #n > 0 then
                for  i = 1, #n do
            local name = GetObjectName(n[i])
                  local armor = GetArmor(n[i])
                  local hp = GetCurrentHP(n[i])
                  local mhp = GetMaxHP(n[i])
                  local hpreg = GetHPRegen(n[i])
                        local shield = GetDmgShield(n[i])
                         local maxHealth = mhp * ((100 + ((armor - GetArmorPenFlat(myHero)) * GetArmorPenPercent(myHero))) * .01) + hpreg * 6 + shield
                         local health = hp * ((100 + ((armor - GetArmorPenFlat(myHero)) * GetArmorPenPercent(myHero))) * .01) + hpreg * 6 + shield
            if GetDistance(n[i]) <= 2000 and Talon.KS.Percent and Valid(n[i]) then
              local maxDMG =                 xHYDRA + xIgnite + (xAA * ((1 + (-1 * (ERDY + Emulti(n[i])))) + xE * (ERDY + Emulti(n[i])))) + ((xQ * QRDY) * ((1 + (-1 * (ERDY * Emulti(n[i])))) + xE * (ERDY + Emulti(n[i]))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i])))) + xR * (R1RDY + R2RDY) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i]))) * (2 -  R2RDY))
              local maxDMGNoR = xHYDRA + xIgnite + (xAA * ((1 + (-1 * (ERDY + Emulti(n[i])))) + xE * (ERDY + Emulti(n[i])))) + ((xQ * QRDY) * ((1 + (-1 * (ERDY + Emulti(n[i])))) + xE * (ERDY + Emulti(n[i]))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i]))))
                    local seconds = 0
                    local Q2Timer = 0
                    Q2Timer = HasQ2(n[i]) and Q2Timer == 0 and GetTickCount() or seconds >= 6 and 0 or Q2Timer
                    seconds = HasQ2(n[i]) and Q2Timer ~= 0 and (GetTickCount() - Q2Timer) * .001 or 0
                    dmgOverTime = HasQ2(n[i]) and seconds ~= 0 and ((10 * GetCastLevel(myHero,_Q) + GetBonusDmg(myHero)) / 6) * seconds or 0
                    if health < R2RDY * xR then
                            R2(n[i])
                    end
                    if                 HRDY == 1 and IRDY == 1 and health < maxDMG and GetDistance(n[i]) <= 300 and Talon.Combo:Value() and target and n[i] == target then
                                        CastOffensiveItems(n[i])
                                        CastTargetSpell(n[i], Ignite)
                    elseif HRDY == 1 and IRDY == 0 and health < maxDMG and GetDistance(n[i]) <= 300 and Talon.Combo:Value() and target and n[i] == target then
                            CastOffensiveItems(n[i])
                    elseif HRDY == 0 and IRDY == 1 and health < maxDMG and GetDistance(n[i]) <= 300 and Talon.Combo:Value() and target and n[i] == target then
                            CastTargetSpell(n[i], Ignite)
                    elseif IRDY == 1 and health < xIgnite and GetDistance(n[i]) <= 600 then
                            CastTargetSpell(n[i], Ignite)
                    end
                        end
                end
        end
end
--
local function Combo()
        target = GetCurrentTarget()
        if target and Valid(target) and GetDistance(target) <= 750 then
                local DIST = GetDistance(target)
                local ARMOR = GetArmor(target)
                local HPREG = GetHPRegen(target)
                local HP = GetCurrentHP(target)
                local MOVE = GetMoveSpeed(target)
                local SHIELD = GetDmgShield(target)
                local LIFE = HP * ((100 + ((ARMOR - GetArmorPenFlat(myHero)) * GetArmorPenPercent(myHero))) * .01) + HPREG * 6 + SHIELD
                local myRange = GetRange(myHero) + GetHitBox(target) + GetHitBox(myHero) - (IsMoving(target) * 5) * IsMoving(target) * (GetWindUp(myHero) + GetLatency() * .001)
                local maxDMG =                 xHYDRA + xIgnite + (xAA * ((1 + (-1 * (ERDY + Emulti(target)))) + xE * (ERDY + Emulti(target)))) + ((xQ * QRDY) * ((1 + (-1 * (ERDY * Emulti(target)))) + xE * (ERDY + Emulti(target))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(target))) + xE * (ERDY + Emulti(target)))) + xR * (R1RDY + R2RDY) * ((1 + (-1 * (ERDY + Emulti(target))) + xE * (ERDY + Emulti(target))) * (2 -  R2RDY))
                local maxDMGNoR = xHYDRA + xIgnite + (xAA * ((1 + (-1 * (ERDY + Emulti(target)))) + xE * (ERDY + Emulti(target)))) + ((xQ * QRDY) * ((1 + (-1 * (ERDY + Emulti(target)))) + xE * (ERDY + Emulti(target))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(target))) + xE * (ERDY + Emulti(target))))
                if ERDY == 1 and DIST < 700 then HoldPosition() E(target) end
                if DIST < 650 and not Talon.KS.R:Value() or LIFE < maxDMG and LIFE > maxDMGNoR or Talon.KS.AR:Value() and Talon.KS.AOER:Value() <= EnemiesAround(myHeroPos(), myRange) then
                        R1(target)
                end
                if DIST < 300 and (AAREADY ~= 1 or LS == "Q" or DIST > myRange) then CastOffensiveItems(target) end
                if (AAREADY == 1 or GotBuff(myHero,"talonnoxiandiplomacybuff") ~= 0) and DIST < myRange then
                        AttackUnit(target)
                end
                if DIST < myRange and QRDY == 1 and GotBuff(myHero,"talonnoxiandiplomacybuff") == 0 and (doQ or AAREADY ~= 1) then
                        CastSpell(_Q)
                end
                if (AAREADY == 1 or GotBuff(myHero,"talonnoxiandiplomacybuff") ~= 0) and DIST < myRange then
                        AttackUnit(target)
                end
                if WRDY == 1 and DIST > myRange + 50 or DIST < myRange and GotBuff(myHero,"talonnoxiandiplomacybuff") == 0 and QRDY == 0 then
                        W(target)
                end
                if (AAREADY == 1 or GotBuff(myHero,"talonnoxiandiplomacybuff") ~= 0) and DIST < myRange then
                        AttackUnit(target)
                end
                if DIST > myRange + 50 then
                        MoveToMouse()
                elseif DIST < myRange and AAREADY ~= 1 and QRDY == 0 and GotBuff(myHero,"talonnoxiandiplomacybuff") == 0 then
                        MoveToMouse()
                end
        else
                doQ = false
                MoveToMouse()
        end
end
--
local function Harass()
        if GetCurrentMana(myHero) / (GetMaxMana(myHero) * .01) >= Talon.Harass.Mana:Value() then
                if WRDY == 1 then
                        local targetH = GetTarget(700, DAMAGE_PHYSICAL)
                        if targetH and GetDistance(targetH) < 700 then W(targetH) end
                        if Talon.Harass.DoIt:Value() then MoveToMouse() end
                else
                        if Talon.Harass.DoIt:Value() then MoveToMouse() end
                end
        end
end
--
local function MISC()
        local buffer = 0
        buffer = not LS and GetTickCount() or LS and buffer
        LS = GetTickCount() - buffer < 2800 and LS ~= "E" and LS or GetTickCount() - buffer < 50 and LS == "E" and LS or nil
        stopMove = LS ~= "E" and false or stopMove
        AAREADY = (GetTickCount() - lastAA) * .001 + 0.01 >= GetWindUp(myHero) and 1 or 0
        lastAA = AAREADY == 1 and 0 or 1
        doQ = doQ and AAREADY == 1 and false or doQ
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------- OnLoop, OnProcessSpell, OnCreateObject, all those Globals        ----------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------
--Check for Attack cast by Talon
------------------------------------------
OnProcessSpellComplete(function(Object,Spell)
        if Object == GetMyHero() then
                if Talon.Combo:Value() then
                        if Spell.name:lower():find("attack") then
                                doQ = true
                                LS = "AA"
                                lastAA = GetTickCount()
            elseif Spell.name:lower():find("noxiandiplomacy") then
                    doQ = false
                    QRDY = 0
                    LS = "Q"
                    lastAA = GetTickCount()
            end
          end
     if Spell.name:lower():find("rake") then
            LS = "W"
            Wtime = Spell.animationTime * 50 + GetTickCount()
    end
    if Spell.name:lower():find("cutthroat") then
            LS = "E"
            doQ = false
    end
                HydraCast = Spell.name == "ItemTiamatCleave" and 1 or HydraCast
                HydraCastTime = Spell.name == "ItemTiamatCleave" and GetTickCount() or HydraCastTime
        end
end)
------------------------------------------
--Loop, which functions are perma called
------------------------------------------
OnDraw(function(myHero)
        if #n > 0 then
                for  i = 1, #n do
                        if GetDistance(n[i]) < 2000 and Valid(n[i]) then
                                local drawPos = GetOrigin(n[i])
                          local armor = GetArmor(n[i])
                          local hp = GetCurrentHP(n[i])
                          local mhp = GetMaxHP(n[i])
                          local hpreg = GetHPRegen(n[i])
                                local shield = GetDmgShield(n[i])
                                 local maxHealth = mhp * ((100 + ((armor - GetArmorPenFlat(myHero)) * GetArmorPenPercent(myHero))) * .01) + hpreg * 6 + shield
                                 local health = hp * ((100 + ((armor - GetArmorPenFlat(myHero)) * GetArmorPenPercent(myHero))) * .01) + hpreg * 6 + shield
                                 local maxDMG = xHYDRA + xIgnite + ((xQ * QRDY) * ((1 + (-1 * (ERDY * Emulti(n[i]))) + xE * (ERDY + Emulti(n[i])))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i])))) + xR * (R1RDY + R2RDY) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i]))) * (2 -  R2RDY))
                    local maxDMGNoR = xHYDRA + xIgnite + ((xQ * QRDY) * ((1 + (-1 * (ERDY + Emulti(n[i])))) + xE * (ERDY + Emulti(n[i]))) + (xQ2 * QRDY)) + xW * (WRDY + Wmulti()) * ((1 + (-1 * (ERDY + Emulti(n[i]))) + xE * (ERDY + Emulti(n[i]))))
                    if Talon.KS.Percent then
                      if Round(((health - maxDMG) / maxHealth * 100), 0) > 0 then
                                                local drawing = WorldToScreen(1, GetOrigin(n[i]))
                                                local rounded = Round(((health - maxDMG) / maxHealth * 100), 0)
                                                DrawText("\n\n" .. rounded .. "%", 15, drawing.x, drawing.y, 0xffff0000)
                                        end
                                end
                                if health < xIgnite then
                                  DrawCircle(drawPos, 50, 0, 0, 0xff00ff00) --green
                          elseif health < maxDMGNoR then
                                  DrawCircle(drawPos, 100, 0, 0, 0xffffff00) --yellow
                          elseif health < maxDMG then
                                  DrawCircle(drawPos, 150, 0, 0, 0xffff0000) --red
                          end
                  end
          end
        end
end)

OnTick(function(myHero)
        n = GetEnemyHeroes()
        if not IsDead(myHero) then
                CheckItemCD()
                DamageFunc()
                SpellSequence()
                CD()
          if Talon.Combo:Value() then
            Combo()
          elseif Talon.Harass.DoIt:Value() or Talon.Harass.Auto:Value() then
                  Harass()
          end
        end
        MISC()
end)
回覆

使用道具 舉報

您需要登入後才可以回文 登入 | 立即註冊

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-30 11:56

回頂部