if myHero.charName ~= "Aatrox" then return end --[[ /$$$$$$$$ /$$ /$$ /$$ /$$ /$$$$$$ /$$ | $$_____/ | $$ | $$ |__/| $$ /$$__ $$ | $$ | $$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$| $$ /$$ | $$ \ $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$ | $$$$$|____ $$| $$__ $$|_ $$_/ |____ $$ /$$_____/|_ $$_/ | $$| $$ /$$/ | $$$$$$$$ |____ $$|_ $$_/ /$$__ $$ /$$__ $$| $$ /$$/ | $$__/ /$$$$$$$| $$ \ $$ | $$ /$$$$$$$| $$$$$$ | $$ | $$| $$$$$$/ | $$__ $$ /$$$$$$$ | $$ | $$ \__/| $$ \ $$ \ $$$$/ | $$ /$$__ $$| $$ | $$ | $$ /$$ /$$__ $$ \____ $$ | $$ /$$| $$| $$_ $$ | $$ | $$ /$$__ $$ | $$ /$$| $$ | $$ | $$ >$$ $$ | $$ | $$$$$$$| $$ | $$ | $$$$/| $$$$$$$ /$$$$$$$/ | $$$$/| $$| $$ \ $$ | $$ | $$| $$$$$$$ | $$$$/| $$ | $$$$$$/ /$$/\ $$ |__/ \_______/|__/ |__/ \___/ \_______/|_______/ \___/ |__/|__/ \__/ |__/ |__/ \_______/ \___/ |__/ \______/ |__/ \__/ ]]-- require "VPrediction" assert(load(Base64Decode("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"), nil, "bt", _ENV))() ScriptStatus("WJMLJKNPMMN") local sversion = "0.3" local sauthor = "Fantastik" local AUTOUPDATE = true local UPDATE_HOST = "raw.github.com" local UPDATE_PATH = "/BoLFantastik/BoL/master/Fantastik Aatrox.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("[Fantastik Aatrox] "..msg.."") end if AUTOUPDATE then local ServerData = GetWebResult(UPDATE_HOST, "/BoLFantastik/BoL/master/version/Fantastik Aatrox.version") if ServerData then ServerVersion = type(tonumber(ServerData)) == "number" and tonumber(ServerData) or nil if ServerVersion then if tonumber(sversion) < ServerVersion then AutoupdaterMsg("New version available"..ServerVersion) AutoupdaterMsg("Updating, please don't press F9") DelayAction(function() DownloadFile(UPDATE_URL, UPDATE_FILE_PATH, function () AutoupdaterMsg("Successfully updated. ("..sversion.." => "..ServerVersion.."), press F9 twice to load the updated version.") end) end, 3) else AutoupdaterMsg("You have got the latest version ("..ServerVersion..")") end end else AutoupdaterMsg("Error downloading version info") end end local Q = {range = 650, delay = 0.5, speed = 1800, width = 140,IsReady = function() return myHero:CanUseSpell(_Q) == READY end} local W = {range = 125, IsReady = function() return myHero:CanUseSpell(_W) == READY end} local E = {range = 1000, delay = 0.25, speed = 1000, width = 80,IsReady = function() return myHero:CanUseSpell(_E) == READY end} local R = {range = 300, delay = 0.25, speed = math.huge, width = 100,IsReady = function() return myHero:CanUseSpell(_R) == READY end} local ignite = nil local iDmg = 0 local target = nil local ts = TargetSelector(TARGET_LESS_CAST_PRIORITY, 750, DAMAGE_PHISICAL, true) local isSX = false local isSAC = false local isPEW = false local isNEB = false local ToInterrupt = {} local InterruptList = { { charName = "Caitlyn", spellName = "CaitlynAceintheHole"}, { charName = "FiddleSticks", spellName = "Crowstorm"}, { charName = "FiddleSticks", spellName = "DrainChannel"}, { charName = "Galio", spellName = "GalioIdolOfDurand"}, { charName = "Karthus", spellName = "FallenOne"}, { charName = "Katarina", spellName = "KatarinaR"}, { charName = "Lucian", spellName = "LucianR"}, { charName = "Malzahar", spellName = "AlZaharNetherGrasp"}, { charName = "MissFortune", spellName = "MissFortuneBulletTime"}, { charName = "Nunu", spellName = "AbsoluteZero"}, { charName = "Pantheon", spellName = "Pantheon_GrandSkyfall_Jump"}, { charName = "Shen", spellName = "ShenStandUnited"}, { charName = "Urgot", spellName = "UrgotSwap2"}, { charName = "Varus", spellName = "VarusQ"}, { charName = "Warwick", spellName = "InfiniteDuress"}, { charName = "Velkoz", spellName = "VelkozR"} } function GetCustomTarget() ts:update() if _G.AutoCarry and ValidTarget(_G.AutoCarry.Crosshair:GetTarget()) then return _G.AutoCarry.Crosshair:GetTarget() end if _Pewalk and ValidTarget(_Pewalk.GetTarget()) then return _Pewalk.GetTarget() end if not _G.Reborn_Loaded then return ts.target end return ts.target end function OnLoad() print("Fantastik Aatrox by Fantastik v"..sversion.." loaded.") ALoadLib() IgniteCheck() end function OnTick() ts:update() target = GetCustomTarget() if isSX then SxOrb:ForceTarget(target) end Checks() SmartW() if ValidTarget(target) then if AMenu.Extra.KS then KS(target) end if AMenu.Extra.Ignite then AutoIgnite(target) end end if AMenu.combokey then Combo() end if AMenu.harasskey then Harass() end if AMenu.farmkey then Laneclear() Jungleclear() end end function OnDraw() if AMenu.Drawing.LFC then if EREADY and not myHero.dead then if AMenu.Drawing.DrawE then DrawCircle2(myHero.x, myHero.y, myHero.z, E.range, 0xFF008000) end end if QREADY and not myHero.dead then if AMenu.Drawing.DrawQ then DrawCircle2(myHero.x, myHero.y, myHero.z, Q.range, 0xFF008000) end end else if EREADY and not myHero.dead then if AMenu.Drawing.DrawE then DrawCircle(myHero.x, myHero.y, myHero.z, E.range, 0xFF008000) end end if QREADY and not myHero.dead then if AMenu.Drawing.DrawQ then DrawCircle(myHero.x, myHero.y, myHero.z, Q.range, 0xFF008000) end end end end function ALoadLib() Minions = minionManager(MINION_ENEMY, E.range, myHero, MINION_SORT_MAXHEALTH_DEC) JMinions = minionManager(MINION_JUNGLE, E.range, myHero, MINION_SORT_MAXHEALTH_DEC) VP = VPrediction(true) AMenu() for i = 1, heroManager.iCount, 1 do local enemy = heroManager:getHero(i) if enemy.team ~= myHero.team then for _, champ in pairs(InterruptList) do if enemy.charName == champ.charName then table.insert(ToInterrupt, champ.spellName) end end end end end function IgniteCheck() 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 end function AutoIgnite(enemy) iDmg = ((IREADY and getDmg("IGNITE", enemy, myHero)) or 0) if enemy.health <= iDmg and GetDistance(enemy) <= 600 and ignite ~= nil then if IREADY then CastSpell(ignite, enemy) end end end function Checks() QREADY = (myHero:CanUseSpell(_Q) == READY) WREADY = (myHero:CanUseSpell(_W) == READY) EREADY = (myHero:CanUseSpell(_E) == READY) RREADY = (myHero:CanUseSpell(_R) == READY) IREADY = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY) end function AMenu() AMenu = scriptConfig("Fantastik Aatrox", "Aatrox") AMenu:addParam("combokey", "Combo key(Space)", SCRIPT_PARAM_ONKEYDOWN, false, 32) AMenu:addParam("harasskey", "Harass key(C)", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("C")) AMenu:addParam("farmkey", "Farm key(V)", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("V")) AMenu:addParam("Version", "Version", SCRIPT_PARAM_INFO, sversion) AMenu:addParam("Author", "Author", SCRIPT_PARAM_INFO, sauthor) AMenu:addTS(ts) AMenu:addSubMenu("Combo", "Combo") AMenu.Combo:addParam("comboQ", "Use Q", SCRIPT_PARAM_ONOFF, true) AMenu.Combo:addParam("comboE", "Use E", SCRIPT_PARAM_ONOFF, true) AMenu.Combo:addParam("comboR", "Use R", SCRIPT_PARAM_ONOFF, true) AMenu.Combo:addParam("minEnemiesR", "Min. no. of enemies for R ", SCRIPT_PARAM_SLICE, 1, 1, 5, 0) AMenu:addSubMenu("Harass", "Harass") AMenu.Harass:addParam("harassQ", "Use Q", SCRIPT_PARAM_ONOFF, true) AMenu.Harass:addParam("harassE", "Use E", SCRIPT_PARAM_ONOFF, true) AMenu:addSubMenu("Farm", "Farm") AMenu.Farm:addParam("farmQ", "Use Q", SCRIPT_PARAM_ONOFF, true) AMenu.Farm:addParam("farmE", "Use E", SCRIPT_PARAM_ONOFF, true) AMenu:addSubMenu("Drawing", "Drawing") AMenu.Drawing:addParam("DrawQ", "Draw Q Range", SCRIPT_PARAM_ONOFF, true) AMenu.Drawing:addParam("DrawE", "Draw E Range", SCRIPT_PARAM_ONOFF, true) AMenu.Drawing:addParam("LFC", "Use Lag-Free circles", SCRIPT_PARAM_ONOFF, true) AMenu:addSubMenu("Extra", "Extra") AMenu.Extra:addParam("KS", "Auto Killsteal", SCRIPT_PARAM_ONOFF, true) AMenu.Extra:addParam("Ignite", "Use Auto Ignite", SCRIPT_PARAM_ONOFF, true) AMenu.Extra:addParam("Int", "Auto Interrupt with Q", SCRIPT_PARAM_ONOFF, true) AMenu.Extra:addParam("useW", "Use W switch", SCRIPT_PARAM_ONOFF, true) AMenu.Extra:addParam("minHealthW", "Min. % health for W", SCRIPT_PARAM_SLICE, 60, 1, 100, 0) if _G.Reborn_Loaded then DelayAction(function() PrintChat("[Fantastik Aatrox] SAC Status: Successfully integrated. ") AMenu:addParam("SACON","[Aatrox] SAC:R support is active.", 5, "") isSAC = true end, 10) elseif _Pewalk then PrintChat("[Fantastik Aatrox] Pewalk Status: Successfully integrated. ") AMenu:addParam("PEWON","[Aatrox] Pewalk support is active.", 5, "") isPEW = true elseif not _G.Reborn_Loaded and not _Pewalk then require "SxOrbWalk" PrintChat("[Fantastik Aatrox] Orbwalker not found: SxOrbWalk integrated. ") AMenu:addSubMenu("Orbwalker", "SxOrb") SxOrb:LoadToMenu(AMenu.SxOrb) isSX = true end AMenu:permaShow("combokey") AMenu:permaShow("harasskey") AMenu:permaShow("farmkey") end function KS(Target) if QREADY and getDmg("Q", Target, myHero) > Target.health then local CastPos = VP:GetCircularAOECastPosition(Target, Q.delay, Q.width, Q.range, Q.speed, myHero) if GetDistance(Target) <= Q.range and QREADY then CastSpell(_Q, CastPos.x, CastPos.z) end end if EREADY and getDmg("E", Target, myHero) > Target.health then local CastPos = VP:GetLineCastPosition(Target, E.delay, E.width, E.range, E.speed, myHero) if GetDistance(Target) <= E.range and EREADY then CastSpell(_E, CastPos.x, CastPos.z) end end end function Combo() if ValidTarget(target) then if QREADY and AMenu.Combo.comboQ then local CastPosition, HitChance, CastPos = VP:GetCircularAOECastPosition(target, Q.delay, Q.width, Q.range, Q.speed, myHero) if HitChance >= 2 and GetDistance(CastPosition) <= Q.range and QREADY then CastSpell(_Q, CastPosition.x, CastPosition.z) end end if EREADY and AMenu.Combo.comboE then local CastPosition, HitChance, CastPos = VP:GetLineCastPosition(target, E.delay, E.width, E.range, E.speed, myHero) if HitChance >= 2 and GetDistance(CastPosition) <= E.range and EREADY then CastSpell(_E, CastPosition.x, CastPosition.z) end end if RREADY and AMenu.Combo.comboR then CastR() end end end function Harass() if ValidTarget(target) then if QREADY and AMenu.Harass.harassQ then local CastPosition, HitChance, CastPos = VP:GetCircularAOECastPosition(target, Q.delay, Q.width, Q.range, Q.speed, myHero) if HitChance >= 2 and GetDistance(CastPosition) <= Q.range and QREADY then CastSpell(_Q, CastPosition.x, CastPosition.z) end end if EREADY and AMenu.Harass.harassE then local CastPosition, HitChance, CastPos = VP:GetLineCastPosition(target, E.delay, E.width, E.range, E.speed, myHero) if HitChance >= 2 and GetDistance(CastPosition) <= E.range and EREADY then CastSpell(_E, CastPosition.x, CastPosition.z) end end end end function Laneclear() Minions:update() for i, Minion in pairs(Minions.objects) do if AMenu.Farm.farmQ and QREADY then CastSpell(_Q, Minion.x, Minion.z) end if AMenu.Farm.farmE and EREADY then CastSpell(_E, Minion.x, Minion.z) end end end function Jungleclear() JMinions:update() for i, Minion in pairs(JMinions.objects) do if AMenu.Farm.farmQ and QREADY then CastSpell(_Q, Minion.x, Minion.z) end if AMenu.Farm.farmE and EREADY then CastSpell(_E, Minion.x, Minion.z) end end end function CastR() if AMenu.Combo.minEnemiesR <= CountEnemyHeroInRange(500) then CastSpell(_R) end end function OnProcessSpell(unit, spell) if AMenu.Interrupt and QREADY and #ToInterrupt > 0 then for _, ability in pairs(ToInterrupt) do if spell.name == ability and unit.team ~= myHero.team then if GetDistance(unit) <= Q.range then local CastPosition, HitChance, CastPos = VP:GetCircularAOECastPosition(target, Q.delay, Q.width, Q.range, Q.speed, myHero, false) if HitChance >= 2 and GetDistance(CastPosition) <= Q.range and QREADY then CastSpell(_Q, CastPosition.x, CastPosition.z) end end end end end end function HealthWManager() if myHero.health >= myHero.maxHealth * (AMenu.Extra.minHealthW / 100) then return true else return false end end function SmartW() if AMenu.Extra.useW then if not HealthWManager() and isWOn() then CastSpell(_W) end if HealthWManager() and not isWOn() then CastSpell(_W) end end end function isWOn() if myHero:GetSpellData(_W).name == "AatroxW2" then return true else return false end end -- Barasia, vadash, viseversa 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, 1, color, 80) end end