--[[ Zyra Combo 1.0 by eXtragoZ It requires AllClass and Spell Damage Library -Full combo: items -> E -> Q -> W -> W -> R -Supports Deathfire Grasp, Bilgewater Cutlass, Hextech Gunblade, Sheen, Trinity, Lich Bane and Ignite -Harass mode: Q -> W -> W -Option for manual mode (where is the mouse) -Informs where will use the combo / default off -Mark killable target with a combo -Target configuration -Press shift to configure Explanation of the marks: Green circle: Marks the current target to which you will do the combo Blue circle: Mark a target that can be killed with a combo, if all the skills were available Red circle: Mark a target that can be killed using items + 3 hits + Q x2 + W (6 hits) + E + R + ignite 2 Red circles: Mark a target that can be killed using items + 2 hits + Q + W (3 hits) + E + R + ignite 3 Red circles: Mark a target that can be killed using items (without Sheen, Trinity and Lich Bane) + Q + E + R ]] if myHero.charName ~= "Zyra" then return end --[[ Code ]] local range = 1100 local range2 = 825 local castspeed = 700 local tick = nil -- Active -- draw local waittxt = {} local calculationenemy = 1 local floattext = {"Skills are not available","Able to fight","Killable","Murder him!"} local killable = {} -- ts local ts -- local ignite = nil local DFGSlot, HXGSlot, BWCSlot, SheenSlot, TrinitySlot, LichBaneSlot = nil, nil, nil, nil, nil, nil local QREADY, WREADY, EREADY, RREADY, DFGREADY, HXGREADY, BWCREADY, IREADY = false, false, false, false, false, false, false, false function OnLoad() ZCConfig = scriptConfig("Zyra Combo 1.0", "zyracombo") ZCConfig:addParam("scriptActive", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32) ZCConfig:addParam("harass", "Harass", SCRIPT_PARAM_ONKEYDOWN, false, 84) ZCConfig:addParam("drawcircles", "Draw Circles", SCRIPT_PARAM_ONOFF, true) ZCConfig:addParam("drawtext", "Draw Text", SCRIPT_PARAM_ONOFF, true) ZCConfig:addParam("drawprediction", "Draw Prediction", SCRIPT_PARAM_ONOFF, false) ZCConfig:addParam("manual", "Use manual", SCRIPT_PARAM_ONOFF, false) ZCConfig:addParam("useUlt", "Use Ult", SCRIPT_PARAM_ONOFF, false) ZCConfig:permaShow("scriptActive") ZCConfig:permaShow("harass") ZCConfig:permaShow("manual") ts = TargetSelector(TARGET_LOW_HP,range,DAMAGE_MAGIC) ts:SetPrediction(castspeed) ts.name = "Zyra" ZCConfig:addTS(ts) if myHero:GetSpellData(SUMMONER_1).name:find("SummonerDot") then ignite = SUMMONER_1 elseif myHero:GetSpellData(SUMMONER_2).name:find("SummonerDot") then ignite = SUMMONER_2 end for i=1, heroManager.iCount do waittxt[i] = i*3 end end function OnTick() ts:update() --Prediction__OnTick() DFGSlot, HXGSlot, BWCSlot, SheenSlot, TrinitySlot, LichBaneSlot = GetInventorySlotItem(3128), GetInventorySlotItem(3146), GetInventorySlotItem(3144), GetInventorySlotItem(3057), GetInventorySlotItem(3078), GetInventorySlotItem(3100) QREADY = (myHero:CanUseSpell(_Q) == READY) WREADY = (myHero:CanUseSpell(_W) == READY) EREADY = (myHero:CanUseSpell(_E) == READY) RREADY = (myHero:CanUseSpell(_R) == 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) if tick == nil or GetTickCount()-tick >= 200 then tick = GetTickCount() ZCDmgCalculation() end if ZCConfig.harass then if ts.target and not ZCConfig.manual then if QREADY and GetDistance(ts.nextPosition)<=825 then CastSpell(_Q, ts.nextPosition.x, ts.nextPosition.z) end if WREADY and GetDistance(ts.nextPosition)<=825 then CastSpell(_W, ts.nextPosition.x, ts.nextPosition.z) end end if ZCConfig.manual then if QREADY and GetDistance(mousePos)<=825 then CastSpell(_Q, mousePos.x, mousePos.z) end if WREADY and GetDistance(mousePos)<=825 then CastSpell(_W, mousePos.x, mousePos.z) end end end if ZCConfig.scriptActive then if ts.target then if DFGREADY then CastSpell(DFGSlot, ts.target) end if HXGREADY then CastSpell(HXGSlot, ts.target) end if BWCREADY then CastSpell(BWCSlot, ts.target) end if not ZCConfig.manual then if EREADY and GetDistance(ts.nextPosition)<=1100 then CastSpell(_E, ts.nextPosition.x, ts.nextPosition.z) end if QREADY and GetDistance(ts.nextPosition)<=825 then CastSpell(_Q, ts.nextPosition.x, ts.nextPosition.z) end if WREADY and GetDistance(ts.nextPosition)<=825 then CastSpell(_W, ts.nextPosition.x, ts.nextPosition.z) end if ZCConfig.useUlt and RREADY and GetDistance(ts.nextPosition)<=700 then CastSpell(_R, ts.nextPosition.x, ts.nextPosition.z) end end end if ZCConfig.manual then if EREADY and GetDistance(mousePos)<=1100 then CastSpell(_E, mousePos.x, mousePos.z) end if QREADY and GetDistance(mousePos)<=825 then CastSpell(_Q, mousePos.x, mousePos.z) end if WREADY and GetDistance(mousePos)<=825 then CastSpell(_W, mousePos.x, mousePos.z) end if ZCConfig.useUlt and RREADY and GetDistance(mousePos)<=700 then CastSpell(_R, mousePos.x, mousePos.z) end end end end function ZCDmgCalculation() local enemy = heroManager:GetHero(calculationenemy) if ValidTarget(enemy) then local dfgdamage, hxgdamage, bwcdamage, ignitedamage, Sheendamage, Trinitydamage, LichBanedamage = 0, 0, 0, 0, 0, 0, 0 local pdamage = getDmg("P",enemy,myHero) local qdamage = getDmg("Q",enemy,myHero) local wdamage = getDmg("W",enemy,myHero) --xstrike Extra plants striking the same target deal 50% less damage local edamage = getDmg("E",enemy,myHero) local rdamage = getDmg("R",enemy,myHero) local hitdamage = getDmg("AD",enemy,myHero) local dfgdamage = (DFGSlot and getDmg("DFG",enemy,myHero) or 0) local hxgdamage = (HXGSlot and getDmg("HXG",enemy,myHero) or 0) local bwcdamage = (BWCSlot and getDmg("BWC",enemy,myHero) or 0) local ignitedamage = (ignite and getDmg("IGNITE",enemy,myHero) or 0) local Sheendamage = (SheenSlot and getDmg("SHEEN",enemy,myHero) or 0) local Trinitydamage = (TrinitySlot and getDmg("TRINITY",enemy,myHero) or 0) local LichBanedamage = (LichBaneSlot and getDmg("LICHBANE",enemy,myHero) or 0) local combo1 = hitdamage*3 + qdamage*2 + wdamage*6 + edamage + rdamage + Sheendamage + Trinitydamage + LichBanedamage --0 cd local combo2 = hitdamage*3 + Sheendamage + Trinitydamage + LichBanedamage local combo3 = hitdamage*2 + Sheendamage + Trinitydamage + LichBanedamage local combo4 = 0 if QREADY then combo2 = combo2 + qdamage*2 combo3 = combo3 + qdamage combo4 = combo4 + qdamage end if WREADY then combo2 = combo2 + wdamage*6 combo3 = combo3 + wdamage*3 end if EREADY then combo2 = combo2 + edamage combo3 = combo3 + edamage combo4 = combo4 + edamage end if RREADY then combo2 = combo2 + rdamage combo3 = combo3 + rdamage combo4 = combo4 + rdamage end if DFGREADY then combo1 = combo1 + dfgdamage combo2 = combo2 + dfgdamage combo3 = combo3 + dfgdamage combo4 = combo4 + dfgdamage end if HXGREADY then combo1 = combo1 + hxgdamage combo2 = combo2 + hxgdamage combo3 = combo3 + hxgdamage combo4 = combo4 + hxgdamage end if BWCREADY then combo1 = combo1 + bwcdamage combo2 = combo2 + bwcdamage combo3 = combo3 + bwcdamage combo4 = combo4 + bwcdamage end if IREADY then combo1 = combo1 + ignitedamage combo2 = combo2 + ignitedamage combo3 = combo3 + ignitedamage end if combo4 >= enemy.health then killable[calculationenemy] = 4 elseif combo3 >= enemy.health then killable[calculationenemy] = 3 elseif combo2 >= enemy.health then killable[calculationenemy] = 2 elseif combo1 >= enemy.health then killable[calculationenemy] = 1 else killable[calculationenemy] = 0 end end if calculationenemy == 1 then calculationenemy = heroManager.iCount else calculationenemy = calculationenemy-1 end end function OnDraw() if ZCConfig.drawcircles and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, range, 0x19A712) DrawCircle(myHero.x, myHero.y, myHero.z, range2, 0x19A712) if ts.target ~= nil then for j=0, 10 do DrawCircle(ts.target.x, ts.target.y, ts.target.z, 40 + j*1.5, 0x00FF00) end end end if ts.target ~= nil and ZCConfig.drawprediction then DrawCircle(ts.nextPosition.x, ts.target.y, ts.nextPosition.z, 200, 0x0000FF) end for i=1, heroManager.iCount do local enemydraw = heroManager:GetHero(i) if ValidTarget(enemydraw) then if ZCConfig.drawcircles then if killable[i] == 1 then for j=0, 20 do DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0x0000FF) end elseif killable[i] == 2 then for j=0, 10 do DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000) end elseif killable[i] == 3 then for j=0, 10 do DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000) DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 110 + j*1.5, 0xFF0000) end elseif killable[i] == 4 then for j=0, 10 do DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000) DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 110 + j*1.5, 0xFF0000) DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 140 + j*1.5, 0xFF0000) end end end if ZCConfig.drawtext and waittxt[i] == 1 and killable[i] ~= 0 then PrintFloatText(enemydraw,0,floattext[killable[i]]) end end if waittxt[i] == 1 then waittxt[i] = 30 else waittxt[i] = waittxt[i]-1 end end --SC__OnDraw() end function OnWndMsg(msg,key) --SC__OnWndMsg(msg,key) end function OnSendChat(msg) TargetSelector__OnSendChat(msg) ts:OnSendChat(msg, "pri") end PrintChat(" >> Zyra Combo 1.0 loaded!")