--[[ Akali Elo Shower by Kn0wM3 Hope you enjoy! Please report bugs on the forum!(http://forum.botoflegends.com/topic/47828-) ]] if myHero.charName ~= "Akali" then return end _G.AUTOUPDATE = false -- Change to "false" to disable auto updates! local version = "1.81" local author = "Kn0wM3" local UPDATE_HOST = "raw.github.com" local UPDATE_PATH = "/Kn0wM3/BoLScripts/master/Akali Elo Shower.lua".."?rand="..math.random(1,10000) local UPDATE_FILE_PATH = SCRIPT_PATH..GetCurrentEnv().FILE_NAME local UPDATE_URL = "https://"..UPDATE_HOST..UPDATE_PATH function AutoupdaterMsg(msg) print("Akali Elo Shower: "..msg..".") end local ServerData = GetWebResult(UPDATE_HOST, "/Kn0wM3/BoLScripts/master/Akali%20Elo%20Shower.Version") if ServerData then ServerVersion = type(tonumber(ServerData)) == "number" and tonumber(ServerData) or nil if ServerVersion then if tonumber(version) < ServerVersion then AutoupdaterMsg("New version available "..ServerVersion) if _G.AUTOUPDATE then AutoupdaterMsg("Updating, please don't press F9") DelayAction(function() DownloadFile(UPDATE_URL, UPDATE_FILE_PATH, function () AutoupdaterMsg("Successfully updated. ("..version.." => "..ServerVersion.."), press F9 twice to load the updated version.") end) end, 3) else AutoupdaterMsg("New Version found ("..ServerVersion..") Enable AutoUpdate or download manually!") end else AutoupdaterMsg("You have got the latest version ("..ServerVersion..")") end else AutoupdaterMsg("Error downloading version info") end end local QRKill, ERKill, IRKill, SAC, Sx = false local Q = {name = "Mark of the Assassin", range = 600, ready = function() return myHero:CanUseSpell(_Q) == READY end} local W = {name = "Twillight Shroud", ready = function() return myHero:CanUseSpell(_W) == READY end} local E = {name = "Crescent Slash", range = 325, ready = function() return myHero:CanUseSpell(_E) == READY end} local R = {name = "Shadow Dance", range = 700, ready = function() return myHero:CanUseSpell(_R) == READY end} local GapCloserList = { {charName = "Aatrox", spellName = "AatroxQ", name = "Q"}, {charName = "Akali", spellName = "AkaliShadowDance", name = "R"}, {charName = "Alistar", spellName = "Headbutt", name = "W"}, {charName = "Amumu", spellName = "BandageToss", name = "Q"}, {charName = "Fiora", spellName = "FioraQ", name = "Q"}, {charName = "Diana", spellName = "DianaTeleport", name = "W"}, {charName = "Elise", spellName = "EliseSpiderQCast", name = "W"}, {charName = "FiddleSticks", spellName = "Crowstorm", name = "R"}, {charName = "Fizz", spellName = "FizzPiercingStrike", name = "Q"}, {charName = "Gragas", spellName = "GragasE", name = "E"}, {charName = "Hecarim", spellName = "HecarimUlt", name = "R"}, {charName = "JarvanIV", spellName = "JarvanIVDragonStrike", name = "E"}, {charName = "Irelia", spellName = "IreliaGatotsu", name = "Q"}, {charName = "Jax", spellName = "JaxLeapStrike", name = "Q"}, {charName = "Katarina", spellName = "ShadowStep", name = "E"}, {charName = "Kassadin", spellName = "RiftWalk", name = "R"}, {charName = "Khazix", spellName = "KhazixE", name = "E"}, {charName = "Khazix", spellName = "khazixelong", name = "Evolved E"}, {charName = "LeBlanc", spellName = "LeblancSlide", name = "W"}, {charName = "LeBlanc", spellName = "LeblancSlideM", name = "UltW"}, {charName = "LeeSin", spellName = "BlindMonkQTwo", name = "Q"}, {charName = "Leona", spellName = "LeonaZenithBlade", name = "E"}, {charName = "Malphite", spellName = "UFSlash", name = "R"}, {charName = "Nautilus", spellName = "NautilusAnchorDrag", name = "Q"}, {charName = "Pantheon", spellName = "Pantheon_LeapBash", name = "R"}, {charName = "Poppy", spellName = "PoppyHeroicCharge", name = "W"}, {charName = "Renekton", spellName = "RenektonSliceAndDice", name = "E"}, {charName = "Riven", spellName = "RivenTriCleave", name = "E"}, {charName = "Sejuani", spellName = "SejuaniArcticAssault", name = "E"}, {charName = "Shen", spellName = "ShenShadowDash", name = "E"}, {charName = "Tristana", spellName = "RocketJump", name = "W"}, {charName = "Tryndamere", spellName = "slashCast", name = "E"}, {charName = "Vi", spellName = "ViQ", name = "Q"}, {charName = "MonkeyKing", spellName = "MonkeyKingNimbus", name = "Q"}, {charName = "XinZhao", spellName = "XenZhaoSweep", name = "Q"}, {charName = "Yasuo", spellName = "YasuoDashWrapper", name = "E"}, } function OnLoad() PriorityOnLoad() if _G.Reborn_Loaded ~= nil then SAC = true else Sx = true require "SxOrbWalk" end CustomOnLoad() end function CustomOnLoad() AddMsgCallback(CustomOnWndMsg) AddDrawCallback(CustomOnDraw) AddProcessSpellCallback(CustomOnProcessSpell) AddTickCallback(CustomOnTick) Variables() Menu() end function CustomOnTick() Checks() if myHero.dead then return end ComboKey = Config.keys.combo HarassKey = Config.keys.harass AutoHarassKey = Config.keys.harass2 FarmKey = Config.keys.farmCS ClearKey = Config.keys.clearCS if ComboKey then Combo(Target) end if HarassKey or AutoHarassKey then Harass(Target) end if Config.harass.q.autoQ then AutoQ() end if Config.farm.q.autoQ then FarmQ() end if Config.harass.e.autoE then AutoE() end if Config.farm.e.autoE then FarmE() end if Config.misc.w.autoW and W.ready then AutoW() end if Config.ks.ks then KillSteal() end if FarmKey or Config.keys.farmCS2 and not ComboKey and not HarassKey and not AutoHarassKey then LastHitMode() end if ClearKeyS or Config.keys.clearCS2 and not ComboKey and not HarassKey and not AutoHarassKey then LaneClearMode() end if ClearKey or Config.keys.clearCS2 and not ComboKey and not HarassKey and not AutoHarassKey then JungleClearMode() end if Config.misc.zhonyas.zhonyas then Zhonyas() end end function CustomOnDraw() if not myHero.dead and not Config.draw.mdraw then if Config.draw.drawQ and Q.ready then DrawCircle(myHero.x, myHero.y, myHero.z, Q.range, RGB(Config.draw.qColor[2], Config.draw.qColor[2], Config.draw.qColor[4])) end if Config.draw.drawE and E.ready then DrawCircle(myHero.x, myHero.y, myHero.z, E.range, RGB(Config.draw.eColor[2], Config.draw.eColor[3], Config.draw.eColor[4])) end if Config.draw.drawR and R.ready then DrawCircle(myHero.x, myHero.y, myHero.z, R.range, RGB(Config.draw.rColor[2], Config.draw.rColor[3], Config.draw.rColor[4])) end if Config.draw.myHero then DrawCircle(myHero.x, myHero.y, myHero.z, TrueRange(), RGB(Config.draw.myColor[2], Config.draw.myColor[3], Config.draw.myColor[4])) end if Config.draw.Target2 and Target ~= nil then DrawCircle(Target.x, Target.y, Target.z, 80, ARGB(255, 10, 255, 10)) end if Config.draw.text and Target ~= nil and Target.type == myHero.type then DrawText3D("Current Target", Target.x-100, Target.y-50, Target.z, 20, 0xFFFFFF00) end if Config.draw.drawHP then for i, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy) then DrawIndicator(enemy) end end end if Config.draw.drawDD then DmgCalc() for _, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy, 100000) and killstring[enemy.networkID] ~= nil then local pos = WorldToScreen(D3DXVECTOR3(enemy.x, enemy.y, enemy.z)) DrawText(killstring[enemy.networkID], 20, pos.x - 35, pos.y - 40, 0xFFFFFF00) end end end end end function CountEnemyHeroInRange(range) local enemyInRange = 0 for i = 1, heroManager.iCount, 1 do local hero = heroManager:getHero(i) if ValidTarget(hero,range) then enemyInRange = enemyInRange + 1 end end return enemyInRange end function AutoW() local wRange = Config.misc.w.wRange local amount = Config.misc.w.wCount local amount2 = Config.misc.w.wCount2 local health = myHero.health local maxHealth = myHero.maxHealth if CountEnemyHeroInRange(wRange) >= amount then CastSpell(_W, myHero.x, myHero.z) elseif ((health/maxHealth)*100) <= Config.misc.w.wHealth and CountEnemyHeroInRange(wRange) >= amount2 then CastSpell(_W, myHero.x, myHero.z) end end function Combo(unit) if ValidTarget(unit) and unit ~= nil and unit.type == myHero.type then if Config.combo.useItems then UseItems(unit) end if Config.combo.r.useR and Config.combo.r.chaseR and R.ready then if Config.combo.w.useW and W.ready then ChaseR(unit) DelayAction(function() CastSpell(_W, myHero.x, myHero.z) end, 0.5) else ChaseR(unit) end end if Config.combo.r.useR and Config.combo.w.useW and W.ready and R.ready then CastR(unit) DelayAction(function() CastSpell(_W, myHero.x, myHero.z) end, 0.5) else CastR(unit) end if Config.combo.q.useQ then CastQ(unit) myHero:Attack(unit) end if Config.combo.e.useE and not Q.ready then CastE(unit) end end end function Harass(unit) if ValidTarget(unit) and unit ~= nil and unit.type == myHero.type then if Config.harass.q.useQ then CastQ(unit) end if Config.harass.e.useE and not Q.ready then CastE(unit) end end end function LastHitMode() enemyMinions:update() for i, minion in pairs(enemyMinions.objects) do if minion ~= nil then if ValidTarget(minion, Q.range) and Config.farm.q.farmQ and Q.ready and GetDistance(minion) > E.range and not E.ready and getDmg("Q", minion, myHero) >= minion.health then CastSpell(_Q, minion) end if ValidTarget(minion, E.range) and Config.farm.e.farmE and E.ready and getDmg("E", minion, myHero) >= minion.health then CastSpell(_E) end end end end function LaneClearMode() enemyMinions:update() for i, minion in pairs(enemyMinions.objects) do if minion ~= nil and ValidTarget(minion, Q.range) then if Q.ready and Config.farm.q.clearQ then if getDmg("Q", minion, myHero) >= minion.health then CastSpell(_Q, minion) else CastSpell(_Q, minion) end end if ValidTarget(minion, E.range) and E.ready and Config.farm.e.clearE then if getDmg("E", minion, myHero) >= minion.health then CastSpell(_E, minion) else CastSpell(_E) end end end end end function JungleClearMode() local JungleMob = GetJungleMob() if JungleMob ~= nil then if Config.farm.q.jungleQ and GetDistance(JungleMob) <= Q.range and Q.ready then CastSpell(_Q, JungleMob) end if Config.farm.e.jungleE and GetDistance(JungleMob) <= E.range and E.ready and not Q.ready then CastSpell(_E) end end end function CastQ(unit) if unit ~= nil and GetDistance(unit) <= Q.range and Q.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _Q, targetNetworkId = unit.networkID}):send() else CastSpell(_Q, unit) end end end function AutoQ() for _, enemy in ipairs(GetEnemyHeroes()) do if enemy ~= nil and ValidTarget(enemy, Q.range) then if GetDistance(enemy) <= Q.range and Q.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _Q, targetNetworkId = enemy.networkID}):send() else CastSpell(_Q, enemy) end end end end end function FarmQ() enemyMinions:update() for i, minion in pairs(enemyMinions.objects) do if minion ~= nil then if ValidTarget(minion, Q.range) and Q.ready and getDmg("Q", minion, myHero) >= minion.health then CastSpell(_Q, minion) end end end end function CastE(unit) if unit ~= nil and GetDistance(unit) <= E.range and E.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _E, targetNetworkId = unit.networkID}):send() else CastSpell(_E) end end end function AutoE() for _, enemy in ipairs(GetEnemyHeroes()) do if enemy ~= nil and ValidTarget(enemy, E.range) then if GetDistance(enemy) <= E.range and E.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _E}):send() else CastSpell(_E) end end end end end function FarmE() enemyMinions:update() for i, minion in pairs(enemyMinions.objects) do if minion ~= nil then if ValidTarget(minion, E.range) and E.ready and getDmg("E", minion, myHero) >= minion.health then CastSpell(_E) end end end end function CastR(unit) if unit ~= nil and GetDistance(unit) <= R.range and R.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _R, targetNetworkId = unit.networkID}):send() else CastSpell(_R, unit) end end end function ChaseR(unit) if unit ~= nil and GetDistance(unit) >= Config.combo.r.chaseRange and R.ready then if VIP_USER and Config.misc.usePackets then Packet("S_CAST", {spellId = _R, targetNetworkId = unit.networkID}):send() else CastSpell(_R, unit) end end end function KillStealR(unit) if ((myHero.health/myHero.maxHealth)*100) <= Config.ks.KSRHP then if QRKill then if unit ~= nil and GetDistance(unit) < (R.range+Q.range) and GetDistance(unit) > R.range then local champ= GetHero() or GetMinion() if champ ~= nil and GetDistance(champ, unit) < Q.range then CastR(champ) DelayAction(function() CastQ(unit) end, 0.5) end end elseif ERKill then if unit ~= nil and GetDistance(unit) < (R.range+E.range) and GetDistance(unit) > R.range then local champ = GetHero() or GetMinion() if champ ~= nil and GetDistance(champ, unit) < Q.range then CastR(champ) DelayAction(function() CastE(unit) end, 0.5) end end elseif IRKill then if unit ~= nil and GetDistance(unit) (R.range+Ignite.range) and GetDistance(unit) > R.range then local champ = GetHero() or GetMinion() if champ ~= nil and GetDistance(champ, unit) > Q.range then CastR(champ) DelayAction(function() CastSpell(Ignite.slot, unit) end, 0.5) end end end end end function KillSteal() for _, enemy in ipairs(GetEnemyHeroes()) do local iDmg = (50 + (20 * myHero.level)) local qDmg = getDmg("Q", enemy, myHero) local eDmg = getDmg("E", enemy, myHero) local rDmg = getDmg("R", enemy, myHero) if enemy ~= nil and ValidTarget(enemy, R.range) then if enemy.health <= qDmg and ValidTarget(enemy, Q.range) and Q.ready then CastQ(enemy) elseif enemy.health <= (qDmg + eDmg) and ValidTarget(enemy, E.range) and Q.ready and E.ready then CastQ(enemy) CastE(enemy) elseif enemy.health <= (qDmg + rDmg) and ValidTarget(enemy, R.range) and Q.ready and R.ready and Config.ks.useR then CastR(enemy) CastQ(enemy) elseif enemy.health <= (qDmg + rDmg) and ValidTarget(enemy, R.range+Q.range) and GetDistance(enemy) > R.range and Q.ready and R.ready and Config.ks.useR and Config.ks.useR2 then KillStealR(enemy) QRKill = true ERKill = false IRKill = false elseif enemy.health <= (eDmg+rDmg) and ValidTarget(enemy, R.range+E.range) and GetDistance(enemy) > R.range and E.ready and R.ready and Config.ks.useR and Config.ks.useR2 then KillStealR(enemy) QRKill = false ERKill = true IRKill = false elseif enemy.health <= (iDmg+rDmg) and ValidTarget(enemy, R.range+Ignite.range) and GetDistance(enemy) > R.range and Igniteready and R.ready and Config.ks.useR and Config.ks.useR2 then KillStealR(enemy) QRKill = false ERKill = false IRKill = true elseif enemy.health <= (qDmg + iDmg) and ValidTarget(enemy, Q.range) and Q.ready and Igniteready then CastQ(enemy) CastSpell(Ignite.slot, enemy) elseif enemy.health <= eDmg and ValidTarget(enemy, E.range) and E.ready then CastE(enemy) elseif enemy.health <= (eDmg + rDmg) and ValidTarget(enemy, R.range) and R.ready and E.ready and Config.ks.useR then CastR(enemy) CastE(enemy) elseif enemy.health <= (eDmg + iDmg) and ValidTarget(enemy, E.range) and E.ready and Igniteready then CastE(enemy) CastSpell(Ignite.slot, enemy) elseif enemy.health <= rDmg and ValidTarget(enemy, R.range) and R.ready and Config.ks.useR then CastR(enemy) elseif enemy.health <= (rDmg + iDmg) and ValidTarget(enemy, R.range) and R.ready and Igniteready and Config.ks.useR then CastR(enemy) CastSpell(Ignite.slot, enemy) elseif enemy.health <= (qDmg + eDmg + rDmg + iDmg) and ValidTarget(enemy, R.range) and Q.ready and E.ready and R.ready and Config.ks.useR then CastR(enemy) CastQ(enemy) CastE(enemy) CastSpell(Ignite.slot, enemy) elseif enemy.health <= (qDmg + eDmg + rDmg) and ValidTarget(enemy, R.range) and Q.ready and E.ready and R.ready and Config.ks.useR then CastR(enemy) CastE(enemy) CastQ(enemy) end if Config.ks.autoignite then AutoIgnite(enemy) end end end end function DmgCalc() for i=1, heroManager.iCount do local enemy = heroManager:GetHero(i) if enemy ~= nil and ValidTarget(enemy) then local hp = enemy.health local iDmg = (50 + (20 * myHero.level)) local qDmg = getDmg("Q", enemy, myHero) local eDmg = getDmg("E", enemy, myHero) local rDmg = getDmg("R", enemy, myHero) if hp > (qDmg+eDmg+iDmg) then killstring[enemy.networkID] = "Harass Him!!!" elseif hp < qDmg then killstring[enemy.networkID] = "Q Kill!" elseif hp < eDmg then killstring[enemy.networkID] = "E Kill!" elseif hp < rDmg then killstring[enemy.networkID] = "R Kill!" elseif hp < (iDmg) then killstring[enemy.networkID] = "Ignite Kill!" elseif hp < (qDmg+iDmg) then killstring[enemy.networkID] = "Q+Ignite Kill!" elseif hp < (eDmg+iDmg) then killstring[enemy.networkID] = "E+Ignite Kill!" elseif hp < (rDmg+iDmg) then killstring[enemy.networkID] = "R+Ignite Kill!" elseif hp < (qDmg+eDmg) then killstring[enemy.networkID] = "Q+E Kill!" elseif hp < (qDmg+rDmg) then killstring[enemy.networkID] = "Q+R Kill!" elseif hp < (eDmg+rDmg) then killstring[enemy.networkID] = "E+R Kill!" elseif hp < (qDmg+eDmg+rDmg) then killstring[enemy.networkID] = "Q+E+R Kill!" elseif hp < (qDmg+eDmg+iDmg) then killstring[enemy.networkID] = "Q+E+Ignite Kill!" elseif hp < (qDmg+eDmg+rDmg+iDmg) then killstring[enemy.networkID] = "Q+E+R+Ignite Kill!" end end end end function AutoIgnite(unit) if ValidTarget(unit, 600) and unit.health <= 50 + (20 * myHero.level) then if Igniteready then CastSpell(Ignite.slot, unit) end end end function Zhonyas() local zSlot = GetInventorySlotItem(3157) if zSlot ~= nil and myHero:CanUseSpell(zSlot) == READY then local zRange = Config.misc.zhonyas.zRange local zAmount = Config.misc.zhonyas.zAmount local health = myHero.health local maxHealth = myHero.maxHealth if ((health/maxHealth)*100) <= Config.misc.zhonyas.zhonyasHP and CountEnemyHeroInRange(zRange) >= zAmount then CastSpell(zSlot) end end end function Checks() Q.ready = (myHero:CanUseSpell(_Q) == READY) W.ready = (myHero:CanUseSpell(_W) == READY) E.ready = (myHero:CanUseSpell(_E) == READY) R.ready = (myHero:CanUseSpell(_R) == READY) Igniteready = (Ignite.slot ~= nil and myHero:CanUseSpell(Ignite.slot) == READY) Target = GetCustomTarget() TargetSelector:update() if Sx then SxOrb:ForceTarget(Target) end if Config.draw.lfc.lfc then _G.DrawCircle = DrawCircle2 else _G.DrawCircle = _G.oldDrawCircle end end function Menu() Config = scriptConfig("Akali Elo Shower", "Akali1") Config:addSubMenu("[Akali Elo Shower]: Combo Settings", "combo") Config.combo:addParam("combomode", "Combo Mode List", SCRIPT_PARAM_LIST, 1, {"RQWE", "QRWE"}) Config.combo:addParam("useItems", "Use Items in Combo", SCRIPT_PARAM_ONOFF, true) Config.combo:addParam("focus", "Focus Selected Target", SCRIPT_PARAM_ONOFF, true) Config.combo:addSubMenu("Q Settings", "q") Config.combo.q:addParam("useQ", "Use Q in Combo", SCRIPT_PARAM_ONOFF, true) Config.combo:addSubMenu("W Settings", "w") Config.combo.w:addParam("useW", "Use W after ult", SCRIPT_PARAM_ONOFF, true) Config.combo:addSubMenu("E Settings", "e") Config.combo.e:addParam("useE", "Use E in Combo", SCRIPT_PARAM_ONOFF, true) Config.combo:addSubMenu("R Settings", "r") Config.combo.r:addParam("useR", "Use R in Combo", SCRIPT_PARAM_ONOFF, true) Config.combo.r:addParam("chaseR", "Use R to Chase", SCRIPT_PARAM_ONOFF, true) Config.combo.r:addParam("chaseRange", "Chase R Range", SCRIPT_PARAM_SLICE, 350, 0, 700, 0) Config:addSubMenu("[Akali Elo Shower]: Harass Settings", "harass") Config.harass:addSubMenu("Q Settings", "q") Config.harass.q:addParam("useQ", "Use Q to Harass", SCRIPT_PARAM_ONOFF, true) Config.harass.q:addParam("autoQ", "Auto Q to Harass", SCRIPT_PARAM_ONOFF, false) Config.harass:addSubMenu("E Settings", "e") Config.harass.e:addParam("useE", "Use E to Harass", SCRIPT_PARAM_ONOFF, true) Config.harass.e:addParam("autoE", "Auto E to Harass", SCRIPT_PARAM_ONOFF, true) Config:addSubMenu("[Akali Elo Shower]: Farm/Clear Settings", "farm") Config.farm:addSubMenu("Q Settings", "q") Config.farm.q:addParam("farmQ", "Use Q to Farm", SCRIPT_PARAM_ONOFF, true) Config.farm.q:addParam("clearQ", "Use Q to LaneClear", SCRIPT_PARAM_ONOFF, true) Config.farm.q:addParam("jungleQ", "Use Q to JungleClear", SCRIPT_PARAM_ONOFF, true) Config.farm.q:addParam("autoQ", "Use Q to AutoFarm", SCRIPT_PARAM_ONOFF, true) Config.farm:addSubMenu("E Settings", "e") Config.farm.e:addParam("farmE", "Use E to Farm", SCRIPT_PARAM_ONOFF, true) Config.farm.e:addParam("clearE", "Use E to LaneClear", SCRIPT_PARAM_ONOFF, true) Config.farm.e:addParam("jungleE", "Use E to JungleClear", SCRIPT_PARAM_ONOFF, true) Config.farm.e:addParam("autoE", "Use E to AutoFarm", SCRIPT_PARAM_ONOFF, true) Config:addSubMenu("[Akali Elo Shower]: Killsteal Settings", "ks") Config.ks:addParam("ks", "Use SmartKS", SCRIPT_PARAM_ONOFF, true) Config.ks:addParam("useR", "Use R to KS(Risky!)", SCRIPT_PARAM_ONOFF, true) Config.ks:addParam("useR2", "Use R on Minions/Enemies to KS", SCRIPT_PARAM_ONOFF, true) Config.ks:addParam("KSRHP", "Min. HP %", SCRIPT_PARAM_SLICE, 20, 0, 100, 0) Config.ks:addParam("autoignite", "Auto Ignite to KS", SCRIPT_PARAM_ONOFF, true) Config:addSubMenu("[Akali Elo Shower]: Draw Setttings", "draw") Config.draw:addParam("mdraw", "Disable all Drawings", SCRIPT_PARAM_ONOFF, false) Config.draw:addParam("drawDD", "Draw Dmg Text", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("drawHP", "Draw Damage on HPBar", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("Target2", "Draw Circle around Target", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("text", "Draw Current Target", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("myHero", "Draw AA Range", SCRIPT_PARAM_ONOFF, false) Config.draw:addParam("myColor", "AA Range Color", SCRIPT_PARAM_COLOR, {255, 255, 255, 255}) Config.draw:addParam("drawQ", "Draw Q Range", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("qColor", "Draw (Q) Color", SCRIPT_PARAM_COLOR, {255, 255, 255, 255}) Config.draw:addParam("drawE", "Draw E Range", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("eColor", "Draw (E) Color", SCRIPT_PARAM_COLOR, {255, 255, 255, 255}) Config.draw:addParam("drawR", "Draw R Range", SCRIPT_PARAM_ONOFF, true) Config.draw:addParam("rColor", "Draw (R) Color", SCRIPT_PARAM_COLOR, {255, 255, 255, 255}) Config.draw:addSubMenu("Lag Free Circles", "lfc") Config.draw.lfc:addParam("lfc", "Lag Free Circles", SCRIPT_PARAM_ONOFF, true) Config.draw.lfc:addParam("CL", "Quality", 4, 75, 75, 2000, 0) Config.draw.lfc:addParam("Width", "Width", 4, 1, 1, 10, 0) Config:addSubMenu("[Akali Elo Shower]: Misc Settings", "misc") Config.misc:addSubMenu("GapCloser Spells", "ES2") for i, enemy in ipairs(GetEnemyHeroes()) do for _, champ in pairs(GapCloserList) do if enemy.charName == champ.charName then Config.misc.ES2:addParam(champ.spellName, "GapCloser "..champ.charName.." "..champ.name, SCRIPT_PARAM_ONOFF, true) end end end Config.misc:addParam("UG", "Auto W on enemy GapCloser (W)", SCRIPT_PARAM_ONOFF, true) Config.misc:addParam("usePackets", "Use Packets (VIP Only!)", SCRIPT_PARAM_ONOFF, true) Config.misc:addSubMenu("W Settings", "w") Config.misc.w:addParam("autoW", "Use Auto W", SCRIPT_PARAM_ONOFF, false) Config.misc.w:addParam("wCount", "Auto W Enemies", SCRIPT_PARAM_SLICE, 2, 0, 5, 0) Config.misc.w:addParam("wRange", "Auto W Range", SCRIPT_PARAM_SLICE, 300, 0, 1200, 0) Config.misc.w:addParam("wHealth", "Auto W Health", SCRIPT_PARAM_SLICE, 15, 0, 100, 0) Config.misc.w:addParam("wCount2", "Auto LifeSafe W Enemies", SCRIPT_PARAM_SLICE, 2, 0, 5, 0) Config.misc:addSubMenu("Zhonyas", "zhonyas") Config.misc.zhonyas:addParam("zhonyas", "Auto Zhonyas", SCRIPT_PARAM_ONOFF, true) Config.misc.zhonyas:addParam("zhonyasHP", "Use Zhonyas at % health", SCRIPT_PARAM_SLICE, 20, 0, 100 , 0) Config.misc.zhonyas:addParam("zRange", "Zhonyas Range", SCRIPT_PARAM_SLICE, 500, 0, 800, 0) Config.misc.zhonyas:addParam("zAmount", "Use Zhonyas atx Enemies", SCRIPT_PARAM_SLICE, 1, 0, 5, 0) Config:addSubMenu("[Akali Elo Shower]: Key Settings", "keys") Config.keys:addParam("combo", "Combo Mode", SCRIPT_PARAM_ONKEYDOWN, false, 32) Config.keys:addParam("harass", "Harass Mode", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("V")) Config.keys:addParam("harass2", "Harass Toggle Mode", SCRIPT_PARAM_ONKEYTOGGLE, false, string.byte("V")) Config.keys:addParam("farmCS", "Farm Mode", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("C")) Config.keys:addParam("farmCS2", "Farm Toggle Mode", SCRIPT_PARAM_ONKEYTOGGLE, false, string.byte("C")) Config.keys:addParam("clearCS", "Clear Mode", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("M")) Config.keys:addParam("clearCS2", "Clear Toggle Mode", SCRIPT_PARAM_ONKEYTOGGLE, false, string.byte("M")) Config:addSubMenu("[Akali Elo Shower]: Orbwalker", "Orbwalking") if Sx then SxOrb:LoadToMenu(Config.Orbwalking) elseif SAC then Config.Orbwalking:addParam("qqq", "SAC Detected and Loaded!", SCRIPT_PARAM_INFO,"") end TargetSelector = TargetSelector(TARGET_LESS_CAST_PRIORITY, R.range, DAMAGE_MAGIC, true) TargetSelector.name = "Akali" Config:addTS(TargetSelector) Config:addParam("info", "Version:", SCRIPT_PARAM_INFO, ""..version.."") Config:addParam("info2", "Author:", SCRIPT_PARAM_INFO, ""..author.."") Config.keys:permaShow("combo") Config.keys:permaShow("harass") Config.keys:permaShow("harass2") Config.keys:permaShow("farmCS") Config.keys:permaShow("farmCS2") Config.keys:permaShow("clearCS") Config.keys:permaShow("clearCS2") end function Variables() Ignite = { name = "summonerdot", range = 600, slot = nil } enemyMinions = minionManager(MINION_ENEMY, Q.range, myHero, MINION_SORT_MAXHEALTH_DEC) if myHero:GetSpellData(SUMMONER_1).name:find(Ignite.name) then Ignite.slot = SUMMONER_1 elseif myHero:GetSpellData(SUMMONER_2).name:find(Ignite.name) then Ignite.slot = SUMMONER_2 end _G.oldDrawCircle = rawget(_G, 'DrawCircle') _G.DrawCircle = DrawCircle2 local ts if Sx then SxOrb = SxOrbWalk() end killstring = {} JungleMobs = {} JungleFocusMobs = {} if GetGame().map.shortName == "twistedTreeline" then TwistedTreeline = true else TwistedTreeline = false end priorityTable = { AP = { "Annie", "Ahri", "Akali", "Anivia", "Annie", "Brand", "Cassiopeia", "Diana", "Evelynn", "FiddleSticks", "Fizz", "Gragas", "Heimerdinger", "Karthus", "Kassadin", "Ezreal", "Kayle", "Kennen", "Leblanc", "Lissandra", "Lux", "Malzahar", "Mordekaiser", "Morgana", "Nidalee", "Orianna", "Ryze", "Sion", "Swain", "Syndra", "Teemo", "TwistedFate", "Veigar", "Viktor", "Vladimir", "Xerath", "Ziggs", "Zyra", "Velkoz" }, Support = { "Alistar", "Blitzcrank", "Janna", "Karma", "Leona", "Lulu", "Nami", "Nunu", "Sona", "Soraka", "Taric", "Thresh", "Zilean", "Braum" }, Tank = { "Amumu", "Chogath", "DrMundo", "Galio", "Hecarim", "Malphite", "Maokai", "Nasus", "Rammus", "Sejuani", "Nautilus", "Shen", "Singed", "Skarner", "Volibear", "Warwick", "Yorick", "Zac" }, AD_Carry = { "Ashe", "Caitlyn", "Corki", "Draven", "Ezreal", "Graves", "Jayce", "Jinx", "KogMaw", "Lucian", "MasterYi", "MissFortune", "Pantheon", "Quinn", "Shaco", "Sivir", "Talon","Tryndamere", "Tristana", "Twitch", "Urgot", "Varus", "Vayne", "Yasuo", "Zed" }, Bruiser = { "Aatrox", "Darius", "Elise", "Fiora", "Gangplank", "Garen", "Irelia", "JarvanIV", "Jax", "Khazix", "LeeSin", "Nocturne", "Olaf", "Poppy", "Renekton", "Rengar", "Riven", "Rumble", "Shyvana", "Trundle", "Udyr", "Vi", "MonkeyKing", "XinZhao" } } Items = { BRK = { id = 3153, range = 450, reqTarget = true, slot = nil }, BWC = { id = 3144, range = 400, reqTarget = true, slot = nil }, DFG = { id = 3128, range = 750, reqTarget = true, slot = nil }, HGB = { id = 3146, range = 400, reqTarget = true, slot = nil }, RSH = { id = 3074, range = 350, reqTarget = false, slot = nil }, STD = { id = 3131, range = 350, reqTarget = false, slot = nil }, TMT = { id = 3077, range = 350, reqTarget = false, slot = nil }, YGB = { id = 3142, range = 350, reqTarget = false, slot = nil }, BFT = { id = 3188, range = 750, reqTarget = true, slot = nil }, RND = { id = 3143, range = 275, reqTarget = false, slot = nil } } if not TwistedTreeline then JungleMobNames = { ["SRU_MurkwolfMini2.1.3"] = true, ["SRU_MurkwolfMini2.1.2"] = true, ["SRU_MurkwolfMini8.1.3"] = true, ["SRU_MurkwolfMini8.1.2"] = true, ["SRU_BlueMini1.1.2"] = true, ["SRU_BlueMini7.1.2"] = true, ["SRU_BlueMini21.1.3"] = true, ["SRU_BlueMini27.1.3"] = true, ["SRU_RedMini10.1.2"] = true, ["SRU_RedMini10.1.3"] = true, ["SRU_RedMini4.1.2"] = true, ["SRU_RedMini4.1.3"] = true, ["SRU_KrugMini11.1.1"] = true, ["SRU_KrugMini5.1.1"] = true, ["SRU_RazorbeakMini9.1.2"] = true, ["SRU_RazorbeakMini9.1.3"] = true, ["SRU_RazorbeakMini9.1.4"] = true, ["SRU_RazorbeakMini3.1.2"] = true, ["SRU_RazorbeakMini3.1.3"] = true, ["SRU_RazorbeakMini3.1.4"] = true } FocusJungleNames = { ["SRU_Blue1.1.1"] = true, ["SRU_Blue7.1.1"] = true, ["SRU_Murkwolf2.1.1"] = true, ["SRU_Murkwolf8.1.1"] = true, ["SRU_Gromp13.1.1"] = true, ["SRU_Gromp14.1.1"] = true, ["Sru_Crab16.1.1"] = true, ["Sru_Crab15.1.1"] = true, ["SRU_Red10.1.1"] = true, ["SRU_Red4.1.1"] = true, ["SRU_Krug11.1.2"] = true, ["SRU_Krug5.1.2"] = true, ["SRU_Razorbeak9.1.1"] = true, ["SRU_Razorbeak3.1.1"] = true, ["SRU_Dragon6.1.1"] = true, ["SRU_Baron12.1.1"] = true } else FocusJungleNames = { ["TT_NWraith1.1.1"] = true, ["TT_NGolem2.1.1"] = true, ["TT_NWolf3.1.1"] = true, ["TT_NWraith4.1.1"] = true, ["TT_NGolem5.1.1"] = true, ["TT_NWolf6.1.1"] = true, ["TT_Spiderboss8.1.1"] = true } JungleMobNames = { ["TT_NWraith21.1.2"] = true, ["TT_NWraith21.1.3"] = true, ["TT_NGolem22.1.2"] = true, ["TT_NWolf23.1.2"] = true, ["TT_NWolf23.1.3"] = true, ["TT_NWraith24.1.2"] = true, ["TT_NWraith24.1.3"] = true, ["TT_NGolem25.1.1"] = true, ["TT_NWolf26.1.2"] = true, ["TT_NWolf26.1.3"] = true } end for i = 0, objManager.maxObjects do local object = objManager:getObject(i) if object and object.valid and not object.dead then if FocusJungleNames[object.name] then JungleFocusMobs[#JungleFocusMobs+1] = object elseif JungleMobNames[object.name] then JungleMobs[#JungleMobs+1] = object end end end end function SetPriority(table, hero, priority) for i=1, #table, 1 do if hero.charName:find(table[i]) ~= nil then TS_SetHeroPriority(priority, hero.charName) end end end function arrangePrioritys() for i, enemy in ipairs(GetEnemyHeroes()) do SetPriority(priorityTable.AD_Carry, enemy, 1) SetPriority(priorityTable.AP, enemy, 2) SetPriority(priorityTable.Support, enemy, 3) SetPriority(priorityTable.Bruiser, enemy, 4) SetPriority(priorityTable.Tank, enemy, 5) end end function arrangePrioritysTT() for i, enemy in ipairs(GetEnemyHeroes()) do SetPriority(priorityTable.AD_Carry, enemy, 1) SetPriority(priorityTable.AP, enemy, 1) SetPriority(priorityTable.Support, enemy, 2) SetPriority(priorityTable.Bruiser, enemy, 2) SetPriority(priorityTable.Tank, enemy, 3) end end function PriorityOnLoad() if heroManager.iCount < 10 or (TwistedTreeline and heroManager.iCount < 6) then print("Akali Elo Shower: Too few champions to arrange priority.") elseif heroManager.iCount == 6 then arrangePrioritysTT() else arrangePrioritys() end end function GetJungleMob() for _, Mob in pairs(JungleFocusMobs) do if ValidTarget(Mob, Q.range) then return Mob end end for _, Mob in pairs(JungleMobs) do if ValidTarget(Mob, Q.range) then return Mob end end end function OnCreateObj(obj) if obj.valid then if FocusJungleNames[obj.name] then JungleFocusMobs[#JungleFocusMobs+1] = obj elseif JungleMobNames[obj.name] then JungleMobs[#JungleMobs+1] = obj end end end function OnDeleteObj(obj) for i, Mob in pairs(JungleMobs) do if obj.name == Mob.name then table.remove(JungleMobs, i) end end for i, Mob in pairs(JungleFocusMobs) do if obj.name == Mob.name then table.remove(JungleFocusMobs, i) end end end for i, enemy in ipairs(GetEnemyHeroes()) do enemy.barData = {PercentageOffset = {x = 0, y = 0} } end function GetEnemyHPBarPos(enemy) if not enemy.barData then return end local barPos = GetUnitHPBarPos(enemy) local barPosOffset = GetUnitHPBarOffset(enemy) local barOffset = Point(enemy.barData.PercentageOffset.x, enemy.barData.PercentageOffset.y) local barPosPercentageOffset = Point(enemy.barData.PercentageOffset.x, enemy.barData.PercentageOffset.y) local BarPosOffsetX = 169 local BarPosOffsetY = 47 local CorrectionX = 16 local CorrectionY = 4 barPos.x = barPos.x + (barPosOffset.x - 0.5 + barPosPercentageOffset.x) * BarPosOffsetX + CorrectionX barPos.y = barPos.y + (barPosOffset.y - 0.5 + barPosPercentageOffset.y) * BarPosOffsetY + CorrectionY local StartPos = Point(barPos.x, barPos.y) local EndPos = Point(barPos.x + 103, barPos.y) return Point(StartPos.x, StartPos.y), Point(EndPos.x, EndPos.y) end function DrawIndicator(enemy) local Qdmg, Edmg, Rdmg, AAdmg = getDmg("Q", enemy, myHero), getDmg("E", enemy, myHero), getDmg("R", enemy, myHero), getDmg("AD", enemy, myHero) Qdmg = ((Q.ready and Qdmg) or 0) Edmg = ((E.ready and Edmg) or 0) Rdmg = ((R.ready and Rdmg) or 0) AAdmg = ((AAdmg) or 0) local damage = Qdmg + Edmg + Rdmg + AAdmg local SPos, EPos = GetEnemyHPBarPos(enemy) if not SPos then return end local barwidth = EPos.x - SPos.x local Position = SPos.x + math.max(0, (enemy.health - damage) / enemy.maxHealth) * barwidth DrawText("|", 16, math.floor(Position), math.floor(SPos.y + 8), ARGB(255,0,255,0)) DrawText("HP: "..math.floor(enemy.health - damage), 12, math.floor(SPos.x + 25), math.floor(SPos.y - 15), (enemy.health - damage) > 0 and ARGB(255, 0, 255, 0) or ARGB(255, 255, 0, 0)) end function UseItems(unit) if unit ~= nil then for _, item in pairs(Items) do item.slot = GetInventorySlotItem(item.id) if item.slot ~= nil then if item.reqTarget and GetDistance(unit) < item.range then CastSpell(item.slot, unit) elseif not item.reqTarget then if (GetDistance(unit) - getHitBoxRadius(myHero) - getHitBoxRadius(unit)) < 50 then CastSpell(item.slot) end end end end end end function getHitBoxRadius(target) return GetDistance(target.minBBox, target.maxBBox)/2 end function TrueRange() return myHero.range + GetDistance(myHero, myHero.minBBox) end function GetHero() for i = 1, heroManager.iCount, 1 do local unit = heroManager:getHero(i) if not unit.dead and ValidTarget(unit) and ValidTarget(unit, E.range) and unit ~= myHero then return unit end end end function GetMinion() enemyMinions:update() for i, minion in pairs(enemyMinions.objects) do if minion ~= nil and not minion.dead and GetDistance(minion) <= E.range then return minion end end end function GetCustomTarget() TargetSelector:update() if SelectedTarget ~= nil and ValidTarget(SelectedTarget, 1500) and (Ignore == nil or (Ignore.networkID ~= SelectedTarget.networkID)) then return SelectedTarget end if _G.MMA_Target and _G.MMA_Target.type == myHero.type then return _G.MMA_Target end if _G.AutoCarry and _G.AutoCarry.Crosshair and _G.AutoCarry.Attack_Crosshair and _G.AutoCarry.Attack_Crosshair.target and _G.AutoCarry.Attack_Crosshair.target.type == myHero.type then return _G.AutoCarry.Attack_Crosshair.target end return TargetSelector.target end function CustomOnWndMsg(Msg, Key) if Msg == WM_LBUTTONDOWN then local minD = 0 local Target = nil for i, unit in ipairs(GetEnemyHeroes()) do if ValidTarget(unit) then if GetDistance(unit, mousePos) <= minD or Target == nil then minD = GetDistance(unit, mousePos) Target = unit end end end if Target and minD < 115 then if SelectedTarget and Target.charName == SelectedTarget.charName then SelectedTarget = nil else SelectedTarget = Target end end end end function DrawCircleNextLvl(x, y, z, radius, width, color, chordlength) radius = radius or 300 quality = math.max(8,round(180/math.deg((math.asin((chordlength/(2*radius))))))) quality = 2 * math.pi / quality radius = radius*.92 local points = {} for theta = 0, 2 * math.pi + quality, quality do local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta))) points[#points + 1] = D3DXVECTOR2(c.x, c.y) end DrawLines2(points, width or 1, color or 4294967295) end function round(num) if num >= 0 then return math.floor(num+.5) else return math.ceil(num-.5) end end function DrawCircle2(x, y, z, radius, color) local vPos1 = Vector(x, y, z) local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z) local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z)) if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then DrawCircleNextLvl(x, y, z, radius, Config.draw.lfc.Width, color, Config.draw.lfc.CL) end end function CustomOnProcessSpell(unit, spell) if Config.misc.UG and W.ready then for _, x in pairs(GapCloserList) do if unit and unit.team ~= myHero.team and unit.type == myHero.type and spell then if spell.name == x.spellName and Config.misc.ES2[x.spellName] and ValidTarget(unit, Config.misc.w.wRange) then if spell.target and spell.target.isMe then CastSpell(_W, myHero.x, myHero.z) elseif not spell.target then local endPos1 = Vector(unit.visionPos) + 300 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() local endPos2 = Vector(unit.visionPos) + 100 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() if (GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos1) or GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos2)) then CastSpell(_W, myHero.x, myHero.z) end end end end end end end assert(load(Base64Decode("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"), nil, "bt", _ENV))() ScriptStatus("REHFFJHDEJH")