local SxcSAIOVersion = 0.2583 local SxcSAIOChangelog1 = 'Added Jinx' local SxcSAIOChangelog2 = 'Bug fixes' local SxcSAIOChangelog3 = '' require 'Inspired' require 'DamageLib' local ToUpdate = {} ToUpdate.Version = SxcSAIOVersion ToUpdate.UseHttps = true ToUpdate.Host = "raw.githubusercontent.com" ToUpdate.VersionPath = "/xSxcSx/Gaming-On-Steroids/master/SxcSAIO.version" ToUpdate.ScriptPath = "/xSxcSx/Gaming-On-Steroids/master/SxcSAIO.lua" ToUpdate.SavePath = SCRIPT_PATH.."SxcSAIO.lua" ToUpdate.CallbackUpdate = function(NewVersion,OldVersion) PrintChat("{SxcSAIOUpdater} ::: Updated to ::: "..NewVersion..". Please Reload with 2x F6") end ToUpdate.CallbackNoUpdate = function(OldVersion) PrintChat("{SxcSAIOUpdater} ::: No Updates Found") end ToUpdate.CallbackNewVersion = function(NewVersion) PrintChat("{SxcSAIOUpdater} ::: New Version found ::: "..NewVersion..". Please wait until its downloaded") end ToUpdate.CallbackError = function(NewVersion) PrintChat("{SxcSAIOUpdater} ::: Error while Downloading. Please try again.") end local SxcSAIOChamps = { ["Vayne"] = true, ["Garen"] = true, ["Soraka"] = true, ["DrMundo"] = true, ["Blitzcrank"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Rumble"] = true, ["Swain"] = true, ["Thresh"] = true, ["Kalista"] = true, ["Poppy"] = true, ["Nami"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true, } local SxcSAIOSkin = { --Credits to Icesythe7 ["Vayne"] = {"Normal", "Vindicator", "Aristocrat", "Dragonslayer", "Heartseeker", "Skt T1", "Arclight", "Chroma Pack: Green", "Chroma Pack: Red", "Chroma Pack: Silver"}, ["Garen"] = {"Normal", "Sanguine", "Desert Trooper", "Commando", "Dreadknight", "Rugged", "Steel Legion", "Chroma Pack: Garnet", "Chroma Pack: Plum", "Chroma Pack: Ivory", "Rogue Admiral"}, ["Soraka"] = {"Normal", "Dryad", "Divine", "Celestine", "Reaper", "Order of the Banana"}, ["DrMundo"] = {"Normal", "Toxic", "Mr. Mundoverse", "Corporate Mundo", "Mundo Mundo", "Executioner Mundo", "Rageborn Mundo", "TPA Mundo", "Pool Party"}, ["Blitzcrank"] = {"Normal", "Rusty", "Goalkeeper", "Boom Boom", "Piltover Customs", "Definitely Not", "iBlitzcrank", "Riot", "Chroma Pack: Molten", "Chroma Pack: Cobalt", "Chroma Pack: Gunmetal", "Battle Boss"}, ["Leona"] = {"Normal", "Valkyrie", "Defender", "Iron Solari", "Pool Party", "Chroma Pack: Pink", "Chroma Pack: Azure", "Chroma Pack: Lemon", "PROJECT"}, ["Ezreal"] = {"Normal", "Nottingham", "Striker", "Frosted", "Explorer", "Pulsefire", "TPA", "Debonair", "Ace of Spades"}, ["Lux"] = {"Normal", "Sorceress", "Spellthief", "Commando", "Imperial", "Steel Legion", "Star Guardian"}, ["Rumble"] = {"Normal", "Rumble in the Jungle", "Bilgerat", "Super Galaxy"}, ["Swain"] = {"Normal", "Northern Front", "Bilgewater", "Tyrant"}, ["Thresh"] = {"Normal", "Deep Terror", "Championship", "Blood Moon", "SSW"}, ["Kalista"] = {"Normal", "Blood Moon", "Championship"}, ["Poppy"] = {"Normal", "Noxus", "Lollipoppy", "Blacksmith", "Ragdoll", "Battle Regalia", "Scarlet Hammer"}, ["Nami"] = {"Normal", "Koi", "River Spirit", "Urf", "Chroma Pack: Sunbeam", "Chroma Pack: Smoke", "Chroma Pack: Twilight"}, ["Corki"] = {"Normal", "UFO", "Ice Toboggan", "Red Baron", "Hot Rod", "Urfrider", "Dragonwing", "Fnatic"}, ["KogMaw"] = {"Normal", "Caterpillar", "Sonoran", "Monarch", "Reindeer", "Lion Dance", "Deep Sea", "Jurassic", "Battlecast"}, ["Nasus"] = {"Normal", "Galactic", "Pharaoh", "Dreadknight", "Riot K-9", "Infernal", "Archduke", "Chroma Pack: Burn", "Chroma Pack: Blight", "Chroma Pack: Frostbite"}, ["Jinx"] = {"Normal", "Mafia", "Firecracker", "Slayer"}, } function OnLoad() end local Name = GetMyHero() local ChampName = myHero.charName if not SxcSAIOChamps[ChampName] then PrintChat("{SxcSAIO} ::: " .. ChampName .. " is not supported!") return end if not FileExist(COMMON_PATH .. "OpenPredict.lua") then PrintChat("{LibraryManager} ::: Missing Library ::: OpenPredict.lua ::: Go download it and safe it to common folder!") return end if not FileExist(COMMON_PATH .. "MapPositionGOS.lua") then PrintChat("{LibraryManager} ::: Missing Library ::: MapPositionGOS.lua ::: Go download it and safe it to common folder!") return end if not FileExist(COMMON_PATH .. "DamageLib.lua") then PrintChat("{LibraryManager} ::: Missing Library ::: DamageLib.lua ::: Go download it and safe it to common folder!") return end if FileExist(COMMON_PATH .. "OpenPredict.lua") or FileExist(COMMON_PATH .. "MapPositionGOS") or FileExist(COMMON_PATH .. "DamageLib.lua") and SxcSAIOChamps[ChampName] == true then PrintChat("{SxcSAIO} ::: Version: " .. SxcSAIOVersion .. " ::: " .. ChampName .. " ::: has been loaded! ") end local AntiGapCloser = {["Vayne"] = true, ["Lux"] = true, ["Thresh"] = true, ["Poppy"] = true, ["Nami"] = true,} local Last = {} local Lane = {["Vayne"] = true, ["Garen"] = true, ["Soraka"] = true, ["DrMundo"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Rumble"] = true, ["Swain"] = true, ["Poppy"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Jinx"] = true,} local Harass = {["Soraka"] = true, ["DrMundo"] = true, ["Blitzcrank"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Rumble"] = true, ["Swain"] = true, ["Thresh"] = true, ["Kalista"] = true, ["Poppy"] = true, ["Nami"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true,} local Jungle = {["Vayne"] = true, ["Garen"] = true, ["Soraka"] = true, ["DrMundo"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Rumble"] = true, ["Swain"] = true, ["Poppy"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true,} local Kill = {["Vayne"] = true, ["Garen"] = true, ["DrMundo"] = true, ["Blitzcrank"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Rumble"] = true, ["Swain"] = true, ["Thresh"] = true, ["Kalista"] = true, ["Poppy"] = true, ["Nami"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true,} local AutoQ = {["Nasus"] = true,} local AutoW = {["Soraka"] = true, ["Nami"] = true,} local AutoE = {["Kalista"] = true, ["Nami"] = true,} local AutoR = {["Soraka"] = true, ["Kalista"] = true,} local Prediction = {["Soraka"] = true, ["DrMundo"] = true, ["Blitzcrank"] = true, ["Leona"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Rumble"] = true, ["Swain"] = true, ["Thresh"] = true, ["Kalista"] = true, ["Poppy"] = true, ["Nami"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true,} local ManaManager = {["Vayne"] = true, ["Ezreal"] = true, ["Lux"] = true, ["Swain"] = true, ["Thresh"] = true, ["Kalista"] = true, ["Poppy"] = true, ["Corki"] = true, ["KogMaw"] = true, ["Nasus"] = true, ["Jinx"] = true,} local GapCloser = {} local MapPositionGOS = {["Vayne"] = true, ["Poppy"] = true,} local SxcSAIO = MenuConfig("SxcSAIO", "SxcSAIO") --Scriptlogy SxcSAIO:Menu("Loader", "Loader") L = SxcSAIO["Loader"] L:Boolean("LC", "Load Champion", true) L:Boolean("LD", "Load Drawings", true) L:Boolean("LSK", "Load SkinChanger", true) L:Info("516", "You will have to press 2f6") L:Info("546", "to apply the changes") if L.LSK:Value() then SxcSAIO:Menu("SC", "SkinChanger") SKCH = SxcSAIO["SC"] SKCH:DropDown('Skins', "Skins for "..ChampName.." -->", 1, SxcSAIOSkin[ChampName]) end if L.LD:Value() then SxcSAIO:Menu("D", "Drawings") D = SxcSAIO["D"] D:Boolean("LastHitMarker", "LastHitMarker", true) D:Boolean("DrawQ", "Draw Q", true) D:Boolean("DrawW", "Draw W", true) D:Boolean("DrawE", "Draw E", true) D:Boolean("DrawR", "Draw R", true) D:ColorPick("ColorPick", "Circle color", {255,102,102,102}) end SxcSAIO:Info("511a", "") SxcSAIO:Info("512a", "Changelog :::") SxcSAIO:Info("513a", SxcSAIOChangelog1) SxcSAIO:Info("531a", SxcSAIOChangelog2) SxcSAIO:Info("535a", SxcSAIOChangelog3) if L.LC:Value() then SxcSAIO:Menu(ChampName, ChampName) BM = SxcSAIO[ChampName] BM:Menu("C", "Combo") BM:Menu("M", "Misc") BM.M:Menu("AL", "Auto Level") BM.M.AL:DropDown("AL", "Auto Level -->", 1, {"Disabled", "Q-W-E", "Q-E-W", "W-Q-E", "W-E-Q", "E-Q-W", "E-W-Q"}) BM.M.AL:Slider("ALH", "Auto Level Humanizer", 1500, 0, 3000, 5) if AntiGapCloser[ChampName] == true then BM.M:Menu("AGP", "AntiGapCloser") end if Harass[ChampName] == true then BM:Menu("H", "Harass") end if Last[ChampName] == true then BM:Menu("LH", "LastHit") end if Lane[ChampName] == true then BM:Menu("LC", "LaneClear") end if Jungle[ChampName] == true then BM:Menu("JC", "JungleClear") end if Kill[ChampName] == true then BM:Menu("KS", "KillSteal") end if AutoQ[ChampName] == true then BM:Menu("AQ", "Auto Q") end if AutoW[ChampName] == true then BM:Menu("AW", "Auto W") end if AutoE[ChampName] == true then BM:Menu("AE", "Auto E") end if AutoR[ChampName] == true then BM:Menu("AR", "Auto R") end if Prediction[ChampName] == true then BM.M:Menu("P", "Prediction") BM.M.P:Slider("QHC", "Q HitChance", 40, 1, 100, 10) BM.M.P:Slider("WHC", "W HitChance", 40, 1, 100, 10) BM.M.P:Slider("EHC", "E HitChance", 40, 1, 100, 10) BM.M.P:Slider("RHC", "R HitChance", 65, 1, 100, 10) end if ManaManager[ChampName] == true then BM.M:Menu("MM", "ManaManager") BM.M.MM:Slider("MQ", "Mana to use Q >= x ", 10, 1, 100, 10) BM.M.MM:Slider("MW", "Mana to use W >= x ", 10, 1, 100, 10) BM.M.MM:Slider("ME", "Mana to use E >= x ", 10, 1, 100, 10) BM.M.MM:Slider("MR", "Mana to use R >= x ", 10, 1, 100, 10) end if GapCloser[ChampName] == true then BM.M:Menu("GC", "GapCloser") end end if MapPositionGOS[ChampName] == true and FileExist(COMMON_PATH .. "MapPositionGOS.lua") then require 'MapPositionGOS' end if Prediction[ChampName] == true and FileExist(COMMON_PATH .. "OpenPredict.lua") then require 'OpenPredict' elseif ChampName == "Vayne" and FileExist(COMMON_PATH .. "OpenPredict.lua") then require 'OpenPredict' end -- Vayne class 'Vayne' local E = { delay = 0.250, speed = 3000, width = 1, range = 590 } function Vayne:__init() self:Load() end function Vayne:Load() OnTick(function() self:Tick() end) self:Menu() end function Vayne:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Slider("a", "accuracy", 15, 1, 50, 10) BM.C:Slider("pd", "Push distance", 590, 1, 590, 10) ------------------------------------------ BM.LC:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) ------------------------------------------ BM.KS:Boolean("UseE", "Use E", true) AddGapcloseEvent(_E, 550, true, BM.M.AGP) end function Vayne:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:KillSteal() self:AutoLevel() end function Vayne:UseQ(unit) if IsReady(_Q) and GetDistance(unit) <= 1000 and ValidTarget(unit, 1000) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, GetMousePos()) end end function Vayne:UseE(unit) if not unit or IsDead(unit) or not IsVisible(unit) or not IsReady(_E) then return end if GetPercentMP(myHero) >= BM.M.MM.MQ:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) then local e = GetPrediction(unit, E) local ePos = Vector(e.castPos) local c = math.ceil(BM.C.a:Value()) local cd = math.ceil(BM.C.pd:Value()/c) for rekt = 1, c, 1 do local PP = Vector(ePos) + Vector(Vector(ePos) - Vector(myHero)):normalized()*(cd*rekt) if MapPosition:inWall(PP) == true and GotBuff(unit,"BlackShield") ~= 1 then CastTargetSpell(unit, _E) end end end end function Vayne:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Vayne:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end end end end function Vayne:JungleClear() for i, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Vayne:KillSteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseE:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and GotBuff(unit, "vaynesilveredbolts") >= 2 and GetHP(unit) < CalcDamage(myHero, unit, 70*GetCastLevel(myHero,_E)+70+GetBaseDamage(myHero)+GetBonusDmg(myHero),0) then CastTargetSpell(unit, _E) end if BM.KS.UseE:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and GotBuff(unit, "vaynesilveredbolts") >= 0 and GetHP(unit) < CalcDamage(myHero, unit, 35*GetCastLevel(myHero,_E)+35+GetBaseDamage(myHero)+GetBonusDmg(myHero),0) then CastTargetSpell(unit,_E) end end end function Vayne:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Garen class 'Garen' function Garen:__init() self:Load() end function Garen:Load() self:Menu() OnTick(function() self:Tick() end) end function Garen:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("W", "W") BM.C.W:Boolean("UseW", "Use W", true) BM.C.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.C:Boolean("UseE", "Use E", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseR", "Use R", true) end function Garen:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:KillSteal() self:AutoLevel() end function Garen:UseQ(unit) if IsReady(_Q) and ValidTarget(unit, 500) then CastSpell(_Q) end end function Garen:UseW(unit) if IsReady(_W) and ValidTarget(unit, 500) and GetPercentHP(myHero) <= BM.C.W.myHeroHP:Value() then CastSpell(_W) end end function Garen:UseE(unit) if IsReady(_E) and ValidTarget(unit, 450) and GetCastName(myHero, _E) == "GarenE" then CastSpell(_E) end end function Garen:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.W.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Garen:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end end end end function Garen:JungleClear() for i, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Garen:KillSteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and IsReady(_Q) and ValidTarget(unit, 500) and GetHP(unit) < getdmg("Q", unit) then CastSpell(_Q) elseif BM.KS.UseR:Value() and IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) and GetHP(unit) < getdmg("R", unit) then CastTargetSpell(unit,_R) end end end function Garen:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Soraka class 'Soraka' local Q = { delay = 0.250, speed = 1000, width = 260, range = 900 } local E = { delay = 1.75, speed = math.huge, width = 310, range = 900 } function Soraka:__init() self:Load() end function Soraka:Load() OnTick(function() self:Tick() end) self:Menu() end function Soraka:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseE", "Use E", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.AW:Boolean("Enabled", "Enabled", true) BM.AW:Info("1", "myHeroHP ::: To Heal ally") BM.AW:Slider("myHeroHP", "myHeroHP >= X", 5, 1, 100, 10) BM.AW:Slider("allyHP", "AllyHP <= X", 85, 1, 100, 10) BM.AW:Slider("ATRR", "Ally To Enemy Range", 1500, 500, 3000, 10) ----------------------------------------- BM.AR:Boolean("Enabled", "Enabled", true) BM.AR:Info("2", "myHeroHP ::: to Heal me with ult") BM.AR:Slider("myHeroHP", "myHeroHP <= X", 8, 1, 100, 10) BM.AR:Slider("allyHP", "AllyHP <= X", 8, 1, 100, 10) BM.AR:Slider("ATRR", "Ally To Enemy Range", 1500, 500, 3000, 10) end function Soraka:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:AutoW() self:AutoR() self:AutoLevel() end function Soraka:UseQ(unit) if unit ~= nil then local QpI = GetCircularAOEPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) then CastSkillShot(_Q, QpI.castPos) end end end function Soraka:UseE(unit) if unit ~= nil then local EpI = GetCircularAOEPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero, _E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) then CastSkillShot(_E, EpI.castPos) end end end function Soraka:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Soraka:Harass(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end end function Soraka:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end end end end function Soraka:JungleClear() for i, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Soraka:AutoW() for _,ally in pairs(GetAllyHeroes()) do if GetDistance(myHero,ally)= BM.AW.myHeroHP:Value() and GetPercentHP(ally) <= BM.AW.allyHP:Value() and BM.AW.Enabled:Value() and EnemiesAround(GetOrigin(ally), BM.AW.ATRR:Value()) >= 1 then CastTargetSpell(ally, _W) end end end function Soraka:AutoR() for _,ally in pairs(GetAllyHeroes()) do if IsReady(_R) and not IsDead(ally) and GetPercentHP(ally) <= BM.AR.allyHP:Value() and BM.AR.Enabled:Value() and EnemiesAround(GetOrigin(ally), BM.AR.ATRR:Value()) >= 1 then CastSpell(_R) elseif IsReady(_R) and not IsDead(myHero) and GetPercentHP(myHero) <= BM.AR.myHeroHP:Value() and BM.AR.Enabled:Value() and EnemiesAround(GetOrigin(myHero), BM.AR.ATRR:Value()) >= 1 then CastSpell(_R) end end end function Soraka:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --DrMundo class 'DrMundo' function DrMundo:__init() self:Load() end function DrMundo:Load() OnTick(function() self:Tick() end) self:Menu() end local Q = { delay = 0.250, speed = 2000, width = 75, range = 1050 } function DrMundo:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("W", "W") BM.C.W:Boolean("Enabled", "Enabled", true) BM.C.W:Slider("myHeroHP", "myHeroHP >= x ", 10, 1, 100, 10) BM.C:Boolean("UseE", "Use E", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("enemies", "Enemies Around", 2, 1, 5, 1) BM.C.R:Slider("allies", "Allies Around", 1, 0, 5, 1) BM.C.R:Slider("myHeroHP", "myHeroHP <= x ", 30, 1, 100, 10) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Menu("W", "W") BM.LC.W:Boolean("Enabled", "Enabled", true) BM.LC.W:Slider("myHeroHP", "myHeroHP >= x ", 10, 1, 100, 10) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Menu("W", "W") BM.JC.W:Boolean("Enabled", "Enabled", true) BM.JC.W:Slider("myHeroHP", "myHeroHP >= x ", 10, 1, 100, 10) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) end function DrMundo:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function DrMundo:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(1) then CastSkillShot(_Q, QpI.castPos) end end end function DrMundo:UseQminion(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) then CastSkillShot(_Q, QpI.castPos) end end end function DrMundo:UseW(unit) if IsReady(_W) and GotBuff(myHero, "BurningAgony") ~= 1 and ValidTarget(unit, 700) and GetDistance(unit) <= 700 then CastSpell(_W) elseif IsReady(_W) and GotBuff(myHero, "BurningAgony") == 1 and ValidTarget(unit, 800) and GetDistance(unit) >= 700 then CastSpell(_W) end end function DrMundo:UseE(unit) if IsReady(_E) and ValidTarget(unit, 300) then CastSpell(_E) end end function DrMundo:UseR(unit) if IsReady(_R) and ValidTarget(unit, 500) and EnemiesAround(GetOrigin(myHero), 675) >= BM.C.R.enemies:Value() and AlliesAround(GetOrigin(myHero), 675) >= BM.C.R.allies:Value() and GetPercentHP(myHero) <= BM.C.R.myHeroHP:Value() and BM.C.R.Enabled:Value() then CastSpell(_R) end end function DrMundo:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.W.Enabled:Value() and GetPercentHP(myHero) >= BM.C.W.myHeroHP:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() then self:UseR(unit) end end function DrMundo:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end end function DrMundo:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQminion(minion) end if BM.LC.W.Enabled:Value() and GetPercentHP(myHero) >= BM.LC.W.myHeroHP:Value() then self:UseW(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end end end end function DrMundo:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.LC.UseQ:Value() then self:UseQminion(mob) end if BM.LC.W.Enabled:Value() and GetPercentHP(myHero) >= BM.LC.W.myHeroHP:Value() then self:UseW(mob) end if BM.LC.UseE:Value() then self:UseE(mob) end end end end function DrMundo:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) end end end function DrMundo:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Blitzcrank class 'Blitzcrank' local Q = { delay = 0.250, speed = 1800, width = 70, range = 900 } local QT = TargetSelector(900,TARGET_PRIORITY,DAMAGE_PHYSICAL,true,false) function Blitzcrank:__init() self:Load() end function Blitzcrank:Load() OnTick(function() self:Tick() end) self:Menu() end function Blitzcrank:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseW", "Use W", true) BM.C:Boolean("UseE", "Use E", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseR", "Use R", true) end function Blitzcrank:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) self:CastQ() end if IOW:Mode() == "Harass" then self:Harass(Target) self:CastQ1() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) self:CastQ() end if DAC:Mode() == "Harass" then self:Harass(Target) self:CastQ1() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) self:CastQ() end if PW:Mode() == "Harass" then self:Harass(Target) self:CastQ1() end end self:Killsteal() self:AutoLevel() end function Blitzcrank:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.HC:Value()/100) and not QpI:mCollision(1) then CastSkillShot(_Q, QpI.castPos) end end end function Blitzcrank:UseQ1() local QT = QT:GetTarget() if QT ~= nil then local QpI = GetPrediction(QT, Q) if IsReady(_Q) and ValidTarget(QT, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(1) then CastSkillShot(_Q, QpI.castPos) end end end function Blitzcrank:UseW(unit) if IsReady(_W) and IsReady(_Q) and ValidTarget(unit, 701) and GetDistance(unit) <= 700 then CastSpell(_W) end end function Blitzcrank:UseE(unit) if IsReady(_E) and ValidTarget(unit, 300) then CastSpell(_E) end end function Blitzcrank:UseR(unit) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) then CastSpell(_R) end end function Blitzcrank:Combo(unit) if BM.C.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Blitzcrank:CastQ() if BM.C.UseQ:Value() then self:UseQ1(unit) end end function Blitzcrank:CastQ1() if BM.H.UseQ:Value() then self:UseQ1(unit) end end function Blitzcrank:Harass(unit) if BM.H.UseQ:Value() then self:UseQ1(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Blitzcrank:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) elseif BM.KS.UseR:Value() and GetHP2(unit) < getdmg("R", unit) then self:UseR(unit) end end end function Blitzcrank:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Leona class 'Leona' local ET = TargetSelector(875,TARGET_PRIORITY,DAMAGE_PHYSICAL,true,false) local RT = TargetSelector(1200,TARGET_PRIORITY,DAMAGE_PHYSICAL,true,false) local E = { delay = 0.250, speed = 2000, width = 80, range = 875} local R = { delay = 0.250, speed = math.huge, width = 300, range = 1200} function Leona:__init() self:Load() end function Leona:Load() OnTick(function() self:Tick() end) self:Menu() end function Leona:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("W", "W") BM.C.W:Boolean("Enabled", "Enabled", true) BM.C.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.C:Boolean("UseE", "Use E", true) BM.C:Boolean("UseR", "Use R", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Menu("W", "W") BM.LC.W:Boolean("Enabled", "Enabled", true) BM.LC.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Menu("W", "W") BM.JC.W:Boolean("Enabled", "Enabled", true) BM.JC.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Menu("W", "W") BM.H.W:Boolean("Enabled", "Enabled", true) BM.H.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.H:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", false) end function Leona:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) self:CastER() end if IOW:Mode() == "Harass" then self:Harass(Target) self:CastE() end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) self:CastER() end if DAC:Mode() == "Harass" then self:Harass(Target) self:CastE() end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) self:CastER() end if PW:Mode() == "Harass" then self:Harass(Target) self:CastE() end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Leona:UseQ(unit) if IsReady(_Q) and ValidTarget(unit, 300) then CastSpell(_Q) end end function Leona:UseW(unit) if IsReady(_W) and ValidTarget(unit, 500) then CastSpell(_W) end end function Leona:UseE() local ET = ET:GetTarget() if ET ~= nil then local EpI = GetPrediction(ET, E) if IsReady(_E) and ValidTarget(ET, GetCastRange(myHero, _E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) then CastSkillShot(_E, EpI.castPos) end end end function Leona:UseE1(unit) if unit ~= nil then local EpI = GetPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero, _E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) then CastSkillShot(_E, EpI.castPos) end end end function Leona:UseR() local RT = RT:GetTarget() if RT ~= nil then local RpI = GetCircularAOEPrediction(RT, R) if IsReady(_R) and ValidTarget(RT, GetCastRange(myHero, _R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) then CastSkillShot(_R, RpI.castPos) end end end function Leona:UseR1(unit) if unit ~= nil then local RpI = GetCircularAOEPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero, _R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) then CastSkillShot(_R, RpI.castPos) end end end function Leona:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.W.Enabled:Value() and GetPercentHP(myHero) <= BM.C.W.myHeroHP:Value() then self:UseW(unit) end end function Leona:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.W.Enabled:Value() and GetPercentHP(myHero) <= BM.JC.W.myHeroHP:Value() then self:UseW(unit) end if BM.LC.UseE:Value() then self:UseE1(minion) end end end end function Leona:JungleClear() for i, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.W.Enabled:Value() and GetPercentHP(myHero) <= BM.JC.W.myHeroHP:Value() then self:UseW(unit) end if BM.JC.UseE:Value() then self:UseE1(mob) end end end end function Leona:CastER() if BM.C.UseE:Value() then self:UseE() end if BM.C.UseR:Value() then self:UseR() end end function Leona:CastE() if BM.H.UseE:Value() then self:UseE() end end function Leona:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.W.Enabled:Value() and GetPercentHP(myHero) <= BM.H.W.myHeroHP:Value() then self:UseW(unit) end end function Leona:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) elseif BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E", unit) then self:UseE1(unit) elseif BM.KS.UseR:Value() and GetHP2(unit) < getdmg("R", unit) then self:UseR1(unit) end end end function Leona:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Ezreal class 'Ezreal' function Ezreal:__init() self:Load() end function Ezreal:Load() OnTick(function() self:Tick() end) self:Menu() end local Q = { delay = 0.250, speed = 2000, width = 65, range = 1200 } local W = { delay = 0.250, speed = 1200, width = 90, range = 900 } local R = { delay = 1, speed = 2000, width = 160, range = 20000 } function Ezreal:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseW", "Use W", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseW", "Use W", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseW", "Use W", true) BM.KS:Menu("R", "R") BM.KS.R:Boolean("Enabled", "Enabled", true) BM.KS.R:Slider("mDTT", "max Distance to target", 3000, 675, 20000, 10) BM.KS.R:Slider("DTT", "min Distance to target", 1000, 675, 20000, 10) end function Ezreal:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Ezreal:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and not QpI:mCollision(1) and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Ezreal:UseQminion(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Ezreal:UseW(unit) if unit ~= nil then local WpI = GetPrediction(unit, W) if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and WpI and WpI.hitChance >= (BM.M.P.WHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, WpI.castPos) end end end function Ezreal:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, BM.KS.R.mDTT:Value()) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and GetDistance(unit) >= BM.KS.R.DTT:Value() and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function Ezreal:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseW:Value() then self:UseW(unit) end end function Ezreal:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.UseW:Value() then self:UseW(unit) end end function Ezreal:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQminion(unit) end end end end function Ezreal:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.LC.UseQ:Value() then self:UseQminion(unit) end end end end function Ezreal:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) end if BM.KS.UseW:Value() and GetHP2(unit) < getdmg("W", unit) then self:UseW(unit) end if BM.KS.R.Enabled:Value() and GetHP2(unit) < getdmg("R", unit) then self:UseR(unit) end end end function Ezreal:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Lux class 'Lux' function Lux:__init() self:Load() end function Lux:Load() OnTick(function() self:Tick() end) self:Menu() end local Q = { delay = 0.250, speed = 1200, width = 70 , range = 1300 } local W = { delay = 0.250, speed = 1630, width = 210, range = 1250 } local E = { delay = 0.250, speed = 1300, width = 345, range = 1100 } local R = { delay = 0.250, speed = math.huge, width = 200, range = 3340} local ally = TargetSelector(1250,TARGET_LESS_CAST_PRIORITY,DAMAGE_MAGIC,true,true) function Lux:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("W", "W") BM.C.W:Boolean("Enabled", "Enabled", true) BM.C.W:DropDown("M", "Mode", 1 , {"on ally", "Only on myHero"}) BM.C.W:Slider("myHeroHP", "myHeroHP <= x ", 60, 1, 100, 10) BM.C.W:Slider("allyHP", "allyHP <= x ", 60, 1, 100, 10) BM.C.W:Slider("Enemies", "Enemies Around", 1, 0, 5, 1) BM.C:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", true) BM.KS:Slider("DTT", "min Distance to target", 300, 200, 3340, 10) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseW", "Use W", true) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- AddGapcloseEvent(_Q, 1200, false, BM.M.AGP) end function Lux:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) self:CastW() end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) self:CastW() end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) self:CastW() end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Lux:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(2) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Lux:UseQminion(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Lux:UseW() local WT = ally:GetTarget() if IsReady(_W) and WT ~= nil and GetDistance(WT)= BM.C.W.Enemies:Value() and GetPercentHP(WT) <= BM.C.W.allyHP:Value() and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, GetOrigin(WT)) end end function Lux:UseW2() if IsReady(_W) and GetPercentHP(myHero) <= BM.C.W.myHeroHP:Value() and EnemiesAround(GetOrigin(myHero), 1000) >= BM.C.W.Enemies:Value() and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, GetMousePos()) end end function Lux:UseWminion(unit) if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, GetMousePos()) end end function Lux:UseE(unit) if unit ~= nil then local EpI = GetCircularAOEPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, EpI.castPos) end end end function Lux:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and GetDistance(unit) >= BM.KS.DTT:Value() and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function Lux:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Lux:CastW() if BM.C.W.Enabled:Value() and BM.C.W.M:Value() == 1 then self:UseW() end if BM.C.W.Enabled:Value() and BM.C.W.M:Value() == 2 then self:UseW2() end end function Lux:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQminion(mob) end if BM.JC.UseW:Value() then self:UseWminion(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Lux:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.JC.UseQ:Value() then self:UseQminion(minion) end if BM.JC.UseE:Value() then self:UseE(minion) end end end end function Lux:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E", unit) then self:UseE(unit) end if BM.KS.UseR:Value() and GetHP2(unit) < getdmg("R", unit) then self:UseR(unit) end end end function Lux:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Rumble class 'Rumble' function Rumble:__init() self:Load() end local E = { delay = 0.250, speed = 1200, width = 90, range = 850 } function Rumble:Load() OnTick(function() self:Tick() end) self:Menu() end function Rumble:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("W", "W") BM.C.W:Boolean("Enabled", "Enabled", true) BM.C.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.C:Boolean("UseE", "Use E", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP >= x ", 20, 1, 100, 10) BM.C.R:Slider("enemyHP", "EnemyHP <= x ", 95, 1, 100, 10) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Menu("W", "W") BM.H.W:Boolean("Enabled", "Enabled", true) BM.H.W:Slider("myHeroHP", "myHeroHP <= x ", 95, 1, 100, 10) BM.H:Boolean("UseE", "Use E", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Menu("W", "W") BM.JC.W:Boolean("Enabled", "Enabled", true) BM.JC.W:Slider("myHeroHP", "myHeroHP <= x ", 100, 1, 100, 10) BM.JC:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", true) end function Rumble:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Rumble:UseQ(unit) if IsReady(_Q) and ValidTarget(unit, 350) then CastSkillShot(_Q, GetMousePos()) end end function Rumble:UseW(unit) if IsReady(_W) and ValidTarget(unit, 500) then CastSpell(_W) end end function Rumble:UseE(unit) if unit ~= nil then local EpI = GetPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) and not EpI:mCollision(1) then CastSkillShot(_E, EpI.castPos) end end end function Rumble:UseEminion(unit) if unit ~= nil then local EpI = GetPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) then CastSkillShot(_E, EpI.castPos) end end end function Rumble:UseR(unit) if unit ~= nil then local SP = Vector(myHero) - 525 * (Vector(myHero) - Vector(unit)):normalized() -- copy from deftsu(viktor code) local R = GetPredictionForPlayer(SP,unit,GetMoveSpeed(unit),1200,250,1700,100,false,true) if IsReady(_R) and ValidTarget(unit, 1700) and R.HitChance == 1 then CastSkillShot3(_E,SP,R.PredPos) end end end function Rumble:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.W.Enabled:Value() and GetPercentHP(myHero) <= BM.C.W.myHeroHP:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() and GetPercentHP(myHero) >= BM.C.R.myHeroHP:Value() and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() then self:UseR(unit) end end function Rumble:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.W.Enabled and GetPercentHP(myHero) <= BM.H.W.myHeroHP:Value() then self:UseW(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Rumble:LaneClear() for _,minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.UseE:Value() then self:UseEminion(minion) end end end end function Rumble:JungleClear() for _,mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.W.Enabled and GetPercentHP(myHero) <= BM.JC.W.myHeroHP:Value() then self:UseW(mob) end if BM.JC.UseE:Value() then self:UseEminion(mob) end end end end function Rumble:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E", unit) then self:UseE(unit) end if BM.KS.UseR:Value() and GetHP2(unit) < getdmg("R", unit) then self:UseR(unit) end end end function Rumble:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Swain class 'Swain' function Swain:__init() self:Load() end function Swain:Load() OnTick(function() self:Tick() end) self:Menu() end local W = { delay = 0.850, speed = math.huge, width = 125, range = 900 } function Swain:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseW", "Use W", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP <= x ", 85, 1, 100, 10) BM.C.R:Slider("enemyHP", "EnemyHP <= x ", 100, 1, 100, 10) BM.C.R:Slider("aa", "Allies Around", 0, 0, 5, 1) BM.C.R:Slider("ea", "Enemyies Around", 1, 1, 5, 1) BM.C.R:Slider("dt", "target distance to use R", 700, 500, 1200, 10) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseW", "Use W", true) BM.H:Boolean("UseE", "Use E", true) BM.LC:Boolean("UseQ", "Use Q", false) BM.LC:Boolean("UseW", "Use W", true) BM.LC:Boolean("UseE", "Use E", false) BM.LC:Menu("R", "R") BM.LC.R:Boolean("Enabled", "Enabled", true) BM.LC.R:Slider("myHeroHP", "myHeroHP <= x ", 85, 1, 100, 10) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseW", "Use W", true) BM.JC:Boolean("UseE", "Use E", true) BM.JC:Menu("R", "R") BM.JC.R:Boolean("Enabled", "Enabled", true) BM.JC.R:Slider("myHeroHP", "myHeroHP <= x ", 85, 1, 100, 10) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseW", "Use W", true) BM.KS:Boolean("UseE", "Use E", true) end function Swain:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Swain:UseQ(unit) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastTargetSpell(unit, _Q) end end function Swain:UseW(unit) if unit ~= nil then local WpI = GetCircularAOEPrediction(unit, W) if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and WpI and WpI.hitChance >= (BM.M.P.WHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, WpI.castPos) end end end function Swain:UseE(unit) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastTargetSpell(unit, _E) end end function Swain:UseR(unit) if IsReady(_R) and ValidTarget(unit, 1200) and GetDistance(unit) <= BM.C.R.dt:Value() and GotBuff(myHero, "SwainMetamorphism") ~= 1 and GetPercentMP(myHero) >= BM.M.MM.MR:Value() and GetPercentHP(myHero) >= BM.C.R.myHeroHP:Value() and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() and AlliesAround(GetOrigin(myHero), BM.C.R.dt:Value()) >= BM.C.R.aa:Value() and EnemiesAround(GetOrigin(myHero), BM.C.R.dt:Value()) >= BM.C.R.ea:Value() then CastSpell(_R) elseif IsReady(_R) and ValidTarget(unit, 1300) and GetDistance(unit) >= BM.C.R.dt:Value() and GotBuff(myHero, "SwainMetamorphism") == 1 then CastSpell(_R) elseif IsReady(_R) and GotBuff(myHero, "SwainMetamorphism") == 1 and GetPercentMP(myHero) <= BM.M.MM.MR:Value() then CastSpell(_R) end end function Swain:UseRm(unit) if IsReady(_R) and ValidTarget(unit, 700) and GetDistance(unit) <= 700 and GotBuff(myHero, "SwainMetamorphism") ~= 1 and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSpell(_R) elseif IsReady(_R) and ValidTarget(unit, 800) and GetDistance(unit) >= 700 and GotBuff(myHero, "SwainMetamorphism") == 1 then CastSpell(_R) elseif IsReady(_R) and GotBuff(myHero, "SwainMetamorphism") == 1 and GetPercentMP(myHero) <= BM.M.MM.MR:Value() then CastSpell(_R) end end function Swain:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() then self:UseR(unit) end end function Swain:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.UseW:Value() then self:UseW(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Swain:LaneClear() for _,minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.UseW:Value() then self:UseW(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end if BM.LC.R.Enabled:Value() and GetPercentHP(myHero) >= BM.LC.R.myHeroHP:Value() then self:UseRm(minion) end end end end function Swain:JungleClear() for _,mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseW:Value() then self:UseW(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end if BM.JC.R.Enabled:Value() and GetPercentHP(myHero) >= BM.JC.R.myHeroHP:Value() then self:UseRm(mob) end end end end function Swain:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q", unit) then self:UseQ(unit) end if BM.KS.UseW:Value() and GetHP2(unit) < getdmg("W", unit) then self:UseW(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E", unit) then self:UseE(unit) end end end function Swain:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Thresh class 'Thresh' function Thresh:__init() self:Load() end local pulltime = 0 local flytime = 0 local flylength = 0 local ally = TargetSelector(950,TARGET_LESS_CAST_PRIORITY,DAMAGE_PHYSICAL,true,true) local Q = { delay = 0.25, speed = 1150, width = 70, range = 1075 } function Thresh:Load() OnTick(function() self:Tick() end) self:Menu() end function Thresh:Menu() BM.C:Boolean("UseQH", "Use Q Hook", true) BM.C:Boolean("UseQD", "Use Q Dash", true) BM.C:Menu("W", "W") BM.C.W:Boolean("Enabled", "Enabled", true) BM.C.W:Slider("myHeroHP", "myHeroHP <= x ", 60, 1, 100, 10) BM.C.W:Slider("allyHP", "allyHP <= x ", 60, 1, 100, 10) BM.C.W:Slider("Enemies", "Enemies Around", 1, 0, 5, 1) BM.C:Boolean("UseE", "Use E", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP <= x", 100, 1, 100, 10) BM.C.R:Slider("enemyHP", "EnemyHP <= x", 80, 1, 100, 10) BM.C.R:Slider("ea", "Enemies can hit >= x", 1, 1, 5, 1) BM.C.R:Slider("aa", "Allies Around >= x", 1, 0, 5, 1) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q Hook", true) BM.H:Boolean("UseE", "Use E", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", true) AddGapcloseEvent(_E, 500, false, BM.M.AGP) end function Thresh:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) self:CastW() end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) self:CastW() end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) self:CastW() end if PW:Mode() == "Harass" then self:Harass(Target) end end self:Killsteal() self:AutoLevel() end function Thresh:UseQH(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and GotBuff(unit, "ThreshQ") ~= 1 and ValidTarget(unit, 1075) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(1) and GetCastName(myHero,_Q) ~= "threshqleap" and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Thresh:UseQD(unit) if IsReady(_Q) and GotBuff(unit, "ThreshQ") == 1 and GetCastName(myHero,_Q) ~= "threshqleap" then CastSpell(_Q) end end function Thresh:UseW() local WT = ally:GetTarget() if IsReady(_W) and WT ~= nil and GetDistance(WT)= BM.C.W.Enemies:Value() and GetPercentHP(WT) <= BM.C.W.allyHP:Value() and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, GetOrigin(WT)) end end function Thresh:UseE(unit) -- ported from Tones of Misery if (GetGameTimer() > pulltime + 2) and (GetGameTimer() > flytime + flylength) then local xz = Vector(myHero) + (Vector(myHero) - Vector(unit)) if ValidTarget(unit, 475) and IsReady(_E) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, xz) end end end function Thresh:UseR(unit) if IsReady(_R) and ValidTarget(unit, 425) and EnemiesAround(GetOrigin(myHero), 425) >= BM.C.R.ea:Value() and AlliesAround(GetOrigin(myHero), 850) >= BM.C.R.aa:Value() and GetPercentHP(myHero) <= BM.C.R.myHeroHP:Value() and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSpell(_R) end end function Thresh:CastW() if BM.C.W.Enabled:Value() then self:UseW() end end function Thresh:Combo(unit) if BM.C.UseQH:Value() then self:UseQH(unit) end if BM.C.UseQD:Value() then self:UseQD(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() then self:UseR(unit) end end function Thresh:Harass(unit) if BM.H.UseQ:Value() then self:UseQH(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Thresh:Killsteal() for _,unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q",unit) then self:UseQH(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E",unit) then self:UseE(unit) end if BM.KS.UseR:Value() and GetHP2(unit) < getdmg("R",unit) and ValidTarget(unit, 425) then CastSpell(_R) end end end function Thresh:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Kalista class 'Kalista' function Kalista:__init() self:Load() end local Q = { delay = 0.25, speed = 2000, width = 50, range = GetCastRange(myHero,_Q) } function Kalista:Load() OnTick(function() self:Tick() end) OnDraw(function() self:Draw() end) self:Menu() end function Kalista:Menu() BM.C:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.H:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.AE:Boolean("UseJ", "Use on Jungle mobs", true) BM.AE:Boolean("UseM", "Use on Minions", true) BM.AE:Boolean("UseC", "Use on Champs", true) BM.AE:Slider("OK", "Over kill", 50, 0, 250, 10) BM.AE:Slider("D", "Delay to use E", 10, 0, 50, 5) ------------------------------------------ BM.KS:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.AR:Boolean("Enabled", "Enabled", true) BM.AR:Slider("myHeroHP", "myHeroHP", 100, 1, 100, 10) BM.AR:Slider("allyHP", "myHeroHP", 5, 1, 100, 5) ------------------------------------------ if L.LD:Value() then D:Boolean("DD", "Draw E Damage", true) end end function Kalista:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end end self:AutoEM() self:AutoEJM() self:AutoEC() self:Killsteal() self:UseR() self:AutoLevel() end function Kalista:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, 1075) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(1) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Kalista:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end end function Kalista:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end end function Kalista:AutoEC() for _, unit in pairs(GetEnemyHeroes()) do --*(GotBuff(unit,"kalistaexpungemarker")-1) copied from noddy ( kalista code ) if GetCastLevel(myHero,_E) == 1 and not IsDead(unit) and GetHP(unit) + BM.AE.OK:Value() < CalcDamage(myHero, unit, (24*GetCastLevel(myHero,_E)+24+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and BM.AE.UseC:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 2 and not IsDead(unit) and GetHP(unit) + BM.AE.OK:Value() < CalcDamage(myHero, unit, (29*GetCastLevel(myHero,_E)+29+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and BM.AE.UseC:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 3 and not IsDead(unit) and GetHP(unit) + BM.AE.OK:Value() < CalcDamage(myHero, unit, (34*GetCastLevel(myHero,_E)+34+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and BM.AE.UseC:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 4 and not IsDead(unit) and GetHP(unit) + BM.AE.OK:Value() < CalcDamage(myHero, unit, (39*GetCastLevel(myHero,_E)+39+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and BM.AE.UseC:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 5 and not IsDead(unit) and GetHP(unit) + BM.AE.OK:Value() < CalcDamage(myHero, unit, (46*GetCastLevel(myHero,_E)+46+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(unit, GetCastRange(myHero,_E)) and BM.AE.UseC:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) end end end function Kalista:AutoEM() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if GetCastLevel(myHero,_E) == 1 and not IsDead(minion) and GetHP(minion) + BM.AE.OK:Value() < CalcDamage(myHero, minion, (24*GetCastLevel(myHero,_E)+24+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(minion, GetCastRange(myHero,_E)) and BM.AE.UseM:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 2 and not IsDead(minion) and GetHP(minion) + BM.AE.OK:Value() < CalcDamage(myHero, minion, (29*GetCastLevel(myHero,_E)+29+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(minion, GetCastRange(myHero,_E)) and BM.AE.UseM:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 3 and not IsDead(minion) and GetHP(minion) + BM.AE.OK:Value() < CalcDamage(myHero, minion, (34*GetCastLevel(myHero,_E)+34+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(minion, GetCastRange(myHero,_E)) and BM.AE.UseM:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 4 and not IsDead(minion) and GetHP(minion) + BM.AE.OK:Value() < CalcDamage(myHero, minion, (39*GetCastLevel(myHero,_E)+39+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(minion, GetCastRange(myHero,_E)) and BM.AE.UseM:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 5 and not IsDead(minion) and GetHP(minion) + BM.AE.OK:Value() < CalcDamage(myHero, minion, (46*GetCastLevel(myHero,_E)+46+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(minion, GetCastRange(myHero,_E)) and BM.AE.UseM:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) end end end end function Kalista:AutoEJM() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if GetCastLevel(myHero,_E) == 1 and not IsDead(mob) and GetHP(mob) + BM.AE.OK:Value() < CalcDamage(myHero, mob, (24*GetCastLevel(myHero,_E)+24+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(mob,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(mob, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(mob, GetCastRange(myHero,_E)) and BM.AE.UseJ:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 2 and not IsDead(mob) and GetHP(mob) + BM.AE.OK:Value() < CalcDamage(myHero, mob, (29*GetCastLevel(myHero,_E)+29+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(mob,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(mob, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(mob, GetCastRange(myHero,_E)) and BM.AE.UseJ:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 3 and not IsDead(mob) and GetHP(mob) + BM.AE.OK:Value() < CalcDamage(myHero, mob, (34*GetCastLevel(myHero,_E)+34+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(mob,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(mob, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(mob, GetCastRange(myHero,_E)) and BM.AE.UseJ:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 4 and not IsDead(mob) and GetHP(mob) + BM.AE.OK:Value() < CalcDamage(myHero, mob, (39*GetCastLevel(myHero,_E)+39+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(mob,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(mob, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(mob, GetCastRange(myHero,_E)) and BM.AE.UseJ:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) elseif GetCastLevel(myHero,_E) == 5 and not IsDead(mob) and GetHP(mob) + BM.AE.OK:Value() < CalcDamage(myHero, mob, (46*GetCastLevel(myHero,_E)+46+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(mob,"kalistaexpungemarker")-1),0) and IsReady(_E) and GotBuff(mob, "kalistaexpungemarker") >= 1 and GetPercentMP(myHero) >= BM.M.MM.ME:Value() and ValidTarget(mob, GetCastRange(myHero,_E)) and BM.AE.UseJ:Value() then DelayAction(function() CastSpell(_E) end,BM.AE.D:Value()/100) end end end end function Kalista:Draw() if L.LD:Value() then for _, unit in pairs(GetEnemyHeroes()) do if D.DD:Value() and IsReady(_E) and IsObjectAlive(unit) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 1 then DrawDmgOverHpBar(unit,GetHP(unit) + BM.AE.OK:Value(),CalcDamage(myHero, unit, (24*GetCastLevel(myHero,_E)+24+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(unit) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 2 then DrawDmgOverHpBar(unit,GetHP(unit) + BM.AE.OK:Value(),CalcDamage(myHero, unit, (29*GetCastLevel(myHero,_E)+29+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(unit) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 3 then DrawDmgOverHpBar(unit,GetHP(unit) + BM.AE.OK:Value(),CalcDamage(myHero, unit, (34*GetCastLevel(myHero,_E)+34+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(unit) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 4 then DrawDmgOverHpBar(unit,GetHP(unit) + BM.AE.OK:Value(),CalcDamage(myHero, unit, (39*GetCastLevel(myHero,_E)+39+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(unit) and GotBuff(unit, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 5 then DrawDmgOverHpBar(unit,GetHP(unit) + BM.AE.OK:Value(),CalcDamage(myHero, unit, (46*GetCastLevel(myHero,_E)+46+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(unit,"kalistaexpungemarker")-1),0),0,GoS.Red) end end for _, minion in pairs(minionManager.objects) do if D.DD:Value() and IsReady(_E) and IsObjectAlive(minion) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 1 then DrawDmgOverHpBar(minion,GetHP(minion) + BM.AE.OK:Value(),CalcDamage(myHero, minion, (24*GetCastLevel(myHero,_E)+24+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(minion) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 2 then DrawDmgOverHpBar(minion,GetHP(minion) + BM.AE.OK:Value(),CalcDamage(myHero, minion, (29*GetCastLevel(myHero,_E)+29+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(minion) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 3 then DrawDmgOverHpBar(minion,GetHP(minion) + BM.AE.OK:Value(),CalcDamage(myHero, minion, (34*GetCastLevel(myHero,_E)+34+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(minion) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 4 then DrawDmgOverHpBar(minion,GetHP(minion) + BM.AE.OK:Value(),CalcDamage(myHero, minion, (39*GetCastLevel(myHero,_E)+39+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0),0,GoS.Red) end if D.DD:Value() and IsReady(_E) and IsObjectAlive(minion) and GotBuff(minion, "kalistaexpungemarker") >= 1 and GetCastLevel(myHero,_E) == 5 then DrawDmgOverHpBar(minion,GetHP(minion) + BM.AE.OK:Value(),CalcDamage(myHero, minion, (46*GetCastLevel(myHero,_E)+46+((GetBaseDamage(myHero)+GetBonusDmg(myHero))*0.6)) + ((((0.175+GetCastLevel(myHero,_E))*0.025)*(GetBaseDamage(myHero)+GetBonusDmg(myHero))))*(GotBuff(minion,"kalistaexpungemarker")-1),0),0,GoS.Red) end end end end function Kalista:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and GetHP(unit) < getdmg("Q",unit) then self:UseQ(unit) end end end function Kalista:UseR() for _, ally in pairs(GetAllyHeroes()) do if GotBuff(ally,"kalistacoopstrikeally") == 1 and BM.AR.Enabled:Value() and GetDistance(ally,myHero)= BM.M.MM.MR:Value() and EnemiesAround(GetOrigin(ally), 800) >= 1 then CastSpell(_R) end end end function Kalista:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end --Poppy class 'Poppy' function Poppy:__init() self:Load() end local Q = { delay = 0.25, speed = 2000, width = 50, range = 430 } local E = { delay = 0.25, speed = 1700, width = 1, range = 525 } local RTime = 0 if RCharge and (1000 + (GetTickCount() - RTime) * 0.4) < 1900 then RRange = 1000 + (GetTickCount() - RTime) * 0.4 elseif not RCharge then RRange = 500 end local R = { delay = 0.25, speed = 1300, width = 120, range = RRange} function Poppy:Load() OnTick(function() self:Tick() end) OnUpdateBuff(function(unit, buff) self:UpdateBuff(unit, buff) end) OnRemoveBuff(function(unit, buff) self:RemoveBuff(unit, buff) end) self:Menu() end function Poppy:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Slider("a", "accuracy", 15, 1, 50, 10) BM.C:Slider("pd", "Push distance", 450, 1, 475, 10) BM.C:Menu("R", "R") BM.C.R:DropDown("RM", "R Mode", 1, {"If Killable", "Always"}) BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP <= x ", 75, 1, 100, 10) BM.C.R:Slider("ea", "Enemies Around", 2, 1, 5, 1) BM.C.R:Slider("aa", "Allies Around", 1, 0, 5, 1) BM.C.R:Slider("enemyHP", "EnemyHP <= x ", 50, 1, 100, 10) ------------------------------------------ BM.H:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.LC:Boolean("UseQ", "Use Q", true) ------------------------------------------ BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) ------------------------------------------ BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) AddGapcloseEvent(_W, 400, true, BM.M.AGP) end function Poppy:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if PW:Mode() == "Harass" then self:Harass(Target) end end self:Killsteal() self:AutoLevel() end function Poppy:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, 430) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Poppy:UseE(unit) if not unit or IsDead(unit) or not IsVisible(unit) or not IsReady(_E) then return end if ValidTarget(unit, GetCastRange(myHero,_E)) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then local e = GetPrediction(unit, E) local ePos = Vector(e.castPos) local c = math.ceil(BM.C.a:Value()) local cd = math.ceil(BM.C.pd:Value()/c) for rekt = 1, c, 1 do local PP = Vector(ePos) + Vector(Vector(ePos) - Vector(myHero)):normalized()*(cd*rekt) if MapPosition:inWall(PP) == true and GotBuff(unit,"BlackShield") ~= 1 then CastTargetSpell(unit, _E) end end end end function Poppy:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, RRange) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() and GetPercentHP(myHero) <= BM.C.R.myHeroHP:Value() and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() and not RCharge and AlliesAround(GetOrigin(myHero), RRange) >= BM.C.R.aa:Value() and EnemiesAround(GetOrigin(myHero), RRange) >= BM.C.R.ea:Value() then CastSkillShot(_R,GetOrigin(myHero)) end if RCharge and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and IsReady(_R) and ValidTarget(unit, 1900) then CastSkillShot2(_R, RpI.castPos) end end end function Poppy:UseR2(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, RRange) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() and not RCharge then CastSkillShot(_R,GetOrigin(myHero)) end if RCharge and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and IsReady(_R) and ValidTarget(unit, 1900) then CastSkillShot2(_R, RpI.castPos) end end end function Poppy:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() and BM.C.R.RM:Value() == 2 then self:UseR(unit) end end function Poppy:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end end function Poppy:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end end end end function Poppy:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Poppy:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP(unit) < CalcDamage(myHero, unit, 30*GetCastLevel(myHero,_Q)+30+GetBaseDamage(myHero)+GetBonusDmg(myHero),0) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < CalcDamage(myHero, unit, 20*GetCastLevel(myHero,_E)+20+GetBaseDamage(myHero)+GetBonusDmg(myHero),0) then self:UseE(unit) end if BM.C.R.Enabled:Value() and BM.C.R.RM:Value() == 1 and GetHP(unit) < CalcDamage(myHero, unit, 100*GetCastLevel(myHero,_R)+100+GetBaseDamage(myHero)+GetBonusDmg(myHero),0) then self:UseR2(unit) end end end function Poppy:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end function Poppy:UpdateBuff(unit,buff) if unit == myHero and buff.Name == "PoppyR" then RCharge = true RTime = GetTickCount() end end function Poppy:RemoveBuff(unit,buff) if unit == myHero and buff.Name == "PoppyR" then RCharge = false end end class 'Nami' local Q = { delay = 0.95, speed = math.huge, width = 150, range = 1625 } local R = { delay = 0.5, speed = 850, width = 260, range = 2750 } function Nami:__init() self:Load() end function Nami:Load() OnTick(function() self:Tick() end) self:Menu() end function Nami:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP <= x ", 75, 1, 100, 10) BM.C.R:Slider("ea", "Enemies Around", 2, 1, 5, 1) BM.C.R:Slider("aa", "Allies Around", 1, 0, 5, 1) BM.C.R:Slider("enemyHP", "EnemyHP <= x ", 90, 1, 100, 10) BM.C.R:Slider("MER", "Max Enemy range", 1500, 500, 2750) BM.C.R:Slider("MAR", "Max Ally range", 1500, 500, 2750) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) ----------------------------------------- BM.AW:Boolean("Enabled", "Enabled", true) BM.AW:DropDown("WM", "W Mode", 1, {"OnAlly", "OnMyself", "OnEnemy"}) BM.AW:Info("1", "myHeroHP to heal myself") BM.AW:Slider("myHeroHP", "myHeroHP <= X", 85, 1, 100, 10) BM.AW:Info("5321", "EnemyHP to Damage him") BM.AW:Slider("enemyHP", "EnemyHP <= X", 85, 1, 100, 10) BM.AW:Info("5322", "AllyHP to heal him") BM.AW:Slider("allyHP", "AllyHP <= X", 85, 1, 100, 10) BM.AW:Slider("ea", "Enemies Around", 1, 1, 5, 1) BM.AW:Slider("aa", "Allies Around", 1, 1, 5, 1) ----------------------------------------- BM.AE:Boolean("Enabled", "Enabled", true) BM.AE:Slider("myHeroHP", "myHeroHP <= X", 8, 1, 100, 10) BM.AE:Slider("allyHP", "AllyHP <= X", 70, 1, 100, 10) BM.AE:Slider("ea", "Enemies Around", 1, 1, 5, 1) BM.AE:Slider("aa", "Allies Around", 1, 1, 5, 1) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseW", "Use W", true) AddGapcloseEvent(_Q, 1625, false, BM.M.AGP) end function Nami:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end end self:Killsteal() self:AutoW() self:AutoE() self:AutoLevel() end function Nami:UseQ(unit) if unit ~= nil then local QpI = GetCircularAOEPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) then CastSkillShot(_Q, QpI.castPos) end end end function Nami:UseW(unit) if unit ~= nil then if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero, _W)) then CastTargetSpell(unit,_W) end end end function Nami:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero, _R)) and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() and GetPercentHP(myHero) <= BM.C.R.myHeroHP:Value() and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and EnemiesAround(GetOrigin(myHero), BM.C.R.MER:Value()) >= BM.C.R.ea:Value() and AlliesAround(GetOrigin(myHero), BM.C.R.MAR:Value()) >= BM.C.R.aa:Value() then CastSkillShot(_R, RpI.castPos) end end end function Nami:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.R.Enabled:Value() then self:UseR(unit) end end function Nami:Harass(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end end function Nami:AutoW() for _,ally in pairs(GetAllyHeroes()) do if BM.AW.WM:Value() == 1 and GetDistance(myHero,ally)= BM.AW.ea:Value() and AlliesAround(GetOrigin(myHero), 1000) >= BM.AW.aa:Value() then CastTargetSpell(ally, _W) end if BM.AW.WM:Value() == 2 and IsReady(_W) and GetPercentHP(myHero) <= BM.AW.myHeroHP:Value() and BM.AW.Enabled:Value() and EnemiesAround(GetOrigin(myHero), 1000) >= BM.AW.ea:Value() and AlliesAround(GetOrigin(myHero), 1000) >= BM.AW.aa:Value() then CastTargetSpell(myHero, _W) end end for _,unit in pairs(GetEnemyHeroes()) do if BM.AW.WM:Value() == 3 and IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and GetPercentHP(unit) <= BM.AW.enemyHP:Value() and BM.AW.Enabled:Value() and EnemiesAround(GetOrigin(myHero), 1000) >= BM.AW.ea:Value() and AlliesAround(GetOrigin(myHero), 1000) >= BM.AW.aa:Value() then CastTargetSpell(unit, _W) end end end function Nami:AutoE() for _,ally in pairs(GetAllyHeroes()) do if GetDistance(myHero,ally)= 1 then CastTargetSpell(ally,_E) end end end function Nami:Killsteal() for _,unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP2(unit) < getdmg("Q",unit) then self:UseQ(unit) end if BM.KS.UseW:Value() and GetHP2(unit) < getdmg("W",unit) then self:UseW(unit) end end end function Nami:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end class 'Corki' local Q = { delay = 0.4, speed = 700, width = 250, range = 825 } local R = { delay = 0.2, speed = 2000, width = 60, range = GetCastRange(myHero,_R) } function Corki:__init() self:Load() end function Corki:Load() OnTick(function() self:Tick() end) self:Menu() end function Corki:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Boolean("UseR", "Use R", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseE", "Use E", true) BM.H:Boolean("UseR", "Use R", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseE", "Use E", true) BM.LC:Boolean("UseR", "Use R", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) BM.JC:Boolean("UseR", "Use R", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", true) end function Corki:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if PW:Mode() == "Harass" then self:Harass(Target) end end self:Killsteal() self:AutoLevel() end function Corki:UseQ(unit) if unit ~= nil then local QpI = GetCircularAOEPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero, _Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function Corki:UseE(unit) if IsReady(_E) and ValidTarget(unit, 350) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, GetMousePos()) end end function Corki:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and not RpI:mCollision(1) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function Corki:UseRm(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function Corki:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.UseR:Value() then self:UseR(unit) end end function Corki:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.UseE:Value() then self:UseE(unit) end if BM.H.UseR:Value() then self:UseR(unit) end end function Corki:LaneClear() for _,minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQ(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end if BM.LC.UseR:Value() then self:UseRm(minion) end end end end function Corki:JungleClear() for _,mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value()then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end if BM.JC.UseR:Value() then self:UseRm(mob) end end end end function Corki:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP(unit) < getdmg("Q",unit) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP(unit) < getdmg("E",unit) then self:UseE(unit) end if BM.KS.UseR:Value() and GetHP(unit) < getdmg("R",unit) then self:UseR(unit) end end end function Corki:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end class 'KogMaw' local Q = { delay = 0.25, speed = 1600, width = 80, range = 975 } local E = { delay = 0.25, speed = 1200, width = 120, range = 1200 } local R = { delay = 1.1, speed = math.huge, width = 250, range = 2200 } function KogMaw:__init() self:Load() end function KogMaw:Load() OnTick(function() self:Tick() end) self:Menu() end function KogMaw:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseW", "Use W", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Boolean("UseR", "Use R", true) ----------------------------------------- BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseW", "Use W", true) BM.H:Boolean("UseE", "Use E", true) BM.H:Boolean("UseR", "Use R", true) ----------------------------------------- BM.LC:Boolean("UseQ", "Use Q", true) BM.LC:Boolean("UseW", "Use W", true) BM.LC:Boolean("UseE", "Use E", true) BM.LC:Boolean("UseR", "Use R", true) ----------------------------------------- BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseW", "Use W", true) BM.JC:Boolean("UseE", "Use E", true) BM.JC:Boolean("UseR", "Use R", true) ----------------------------------------- BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) BM.KS:Boolean("UseR", "Use R", true) end function KogMaw:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if IOW:Mode() == "Harass" then self:Harass(Target) end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if DAC:Mode() == "Harass" then self:Harass(Target) end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end if PW:Mode() == "Harass" then self:Harass(Target) end end self:Killsteal() self:AutoLevel() end function KogMaw:UseQ(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and not QpI:mCollision(1) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function KogMaw:UseQm(unit) if unit ~= nil then local QpI = GetPrediction(unit, Q) if IsReady(_Q) and ValidTarget(unit, GetCastRange(myHero,_Q)) and QpI and QpI.hitChance >= (BM.M.P.QHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSkillShot(_Q, QpI.castPos) end end end function KogMaw:UseW(unit) if unit ~= nil then if IsReady(_W) and ValidTarget(unit, GetRange(myHero)) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSpell(_W) end end end function KogMaw:UseE(unit) if unit ~= nil then local EpI = GetPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, EpI.castPos) end end end function KogMaw:UseR(unit) if unit ~= nil then local RpI = GetCircularAOEPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, GetCastRange(myHero,_R)) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function KogMaw:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.UseR:Value() then self:UseR(unit) end end function KogMaw:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.UseW:Value() then self:UseW(unit) end if BM.H.UseE:Value() then self:UseE(unit) end if BM.H.UseR:Value() then self:UseR(unit) end end function KogMaw:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.UseQ:Value() then self:UseQm(minion) end if BM.LC.UseW:Value() then self:UseW(minion) end if BM.LC.UseE:Value() then self:UseE(minion) end if BM.LC.UseR:Value() then self:UseR(minion) end end end end function KogMaw:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQm(mob) end if BM.JC.UseW:Value() then self:UseW(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end if BM.JC.UseR:Value() then self:UseR(mob) end end end end function KogMaw:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP(unit) < getdmg("Q",unit) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP(unit) < getdmg("E",unit) then self:UseE(unit) end if BM.KS.UseR:Value() and GetHP(unit) < getdmg("R",unit) then self:UseR(unit) end end end function KogMaw:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end class 'Nasus' local E = { delay = 0.1, speed = math.huge, width = 390, range = GetCastRange(myHero,_E)} local qdmg = 10 + 20*GetCastLevel(myHero,_Q) + GetBonusDmg(myHero) + GetBaseDamage(myHero) + GetBuffData(myHero,"nasusqstacks").Stacks - 5 -- thanks zwei function Nasus:__init() self:Load() end function Nasus:Load() OnTick(function() self:Tick() end) self:Menu() end function Nasus:Menu() BM.C:Boolean("UseQ", "Use Q", true) BM.C:Boolean("UseW", "Use W", true) BM.C:Boolean("UseE", "Use E", true) BM.C:Menu("R", "R") BM.C.R:Boolean("Enabled", "Enabled", true) BM.C.R:Slider("myHeroHP", "myHeroHP <= x ", 75, 1, 100, 10) BM.C.R:Slider("ea", "Enemies Around", 2, 1, 5, 1) BM.C.R:Slider("aa", "Allies Around", 1, 0, 5, 1) BM.C.R:Slider("enemyHP", "EnemyHP <= x ", 50, 1, 100, 10) ------------------------------------------ BM.H:Boolean("UseQ", "Use Q", true) BM.H:Boolean("UseW", "Use W", true) BM.H:Boolean("UseE", "Use E", true) ------------------------------------------ BM.JC:Boolean("UseQ", "Use Q", true) BM.JC:Boolean("UseE", "Use E", true) ------------------------------------------ BM.KS:Boolean("UseQ", "Use Q", true) BM.KS:Boolean("UseE", "Use E", true) ------------------------------------------ BM.AQ:Boolean("Enabled", "Enabled", true) BM.AQ:Boolean("UseLH", "Use in LastHit", true) BM.AQ:Boolean("UseLC", "Use in LaneClear", true) BM.AQ:Boolean("UseA", "Use if no mode is active", true) end function Nasus:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "LaneClear" then if BM.AQ.UseLC:Value() then self:AutoQ() end self:JungleClear() end if IOW:Mode() == "LastHit" then if BM.AQ.UseLH:Value() then self:AutoQ() end end if IOW:Mode() == "Harass" then self:Harass(Target) end if BM.AQ.UseA:Value() then self:AutoQ2() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "LaneClear" then if BM.AQ.UseLC:Value() then self:AutoQ() end self:JungleClear() end if DAC:Mode() == "LastHit" then if BM.AQ.UseLH:Value() then self:AutoQ() end end if DAC:Mode() == "Harass" then self:Harass(Target) end if BM.AQ.UseA:Value() then self:AutoQ3() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "LaneClear" then if BM.AQ.UseLC:Value() then self:AutoQ() end self:JungleClear() end if PW:Mode() == "LastHit" then if BM.AQ.UseLH:Value() then self:AutoQ() end end if PW:Mode() == "Harass" then self:Harass(Target) end if BM.AQ.UseA:Value() then self:AutoQ4() end end self:Killsteal() self:AutoLevel() end function Nasus:UseQ(unit) if unit ~= nil then if IsReady(_Q) and ValidTarget(unit, 350) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) end end end function Nasus:UseW(unit) if unit ~= nil then if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastTargetSpell(unit, _W) end end end function Nasus:UseE(unit) if unit ~= nil then local EpI = GetCircularAOEPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, EpI.castPos) end end end function Nasus:UseR(unit) if unit ~= nil then if IsReady(_R) and ValidTarget(unit, 675) and GetPercentMP(myHero) >= BM.M.MM.MR:Value() and GetPercentHP(myHero) <= BM.C.R.myHeroHP:Value() and GetPercentHP(unit) <= BM.C.R.enemyHP:Value() and AlliesAround(GetOrigin(myHero), 1000) >= BM.C.R.aa:Value() and EnemiesAround(GetOrigin(myHero), 1000) >= BM.C.R.ea:Value() then CastSpell(_R) end end end function Nasus:Combo(unit) if BM.C.UseQ:Value() then self:UseQ(unit) end if BM.C.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end if BM.C.R.Enabled:Value() then self:UseR(unit) end end function Nasus:Harass(unit) if BM.H.UseQ:Value() then self:UseQ(unit) end if BM.H.UseW:Value() then self:UseW(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Nasus:AutoQ() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.AQ.Enabled:Value() and GetHP(minion) < CalcDamage(myHero, minion, qdmg,0) then self:UseQ(minion) end end end end function Nasus:AutoQ2() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if IOW:Mode() ~= "Harass" and IOW:Mode() ~= "Combo" and IOW:Mode() ~= "LaneClear" and IOW:Mode() ~= "LastHit" and BM.AQ.Enabled:Value() and GetHP(minion) - GetDamagePrediction(minion, GetWindUp(myHero)) < CalcDamage(myHero, minion, qdmg,0) and ValidTarget(minion, 500) and IsReady(_Q) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) AttackUnit(minion) end end end end function Nasus:AutoQ3() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if DAC:Mode() ~= "Harass" and DAC:Mode() ~= "Combo" and DAC:Mode() ~= "LaneClear" and DAC:Mode() ~= "LastHit" and BM.AQ.Enabled:Value() and GetHP(minion) - GetDamagePrediction(minion, GetWindUp(myHero)) < CalcDamage(myHero, minion, qdmg,0) and ValidTarget(minion, 500) and IsReady(_Q) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) AttackUnit(minion) end end end end function Nasus:AutoQ4() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if PW:Mode() ~= "Harass" and PW:Mode() ~= "Combo" and PW:Mode() ~= "LaneClear" and PW:Mode() ~= "LastHit" and BM.AQ.Enabled:Value() and GetHP(minion) - GetDamagePrediction(minion, GetWindUp(myHero)) < CalcDamage(myHero, minion, qdmg,0) and ValidTarget(minion, 500) and IsReady(_Q) and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) AttackUnit(minion) end end end end function Nasus:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.UseQ:Value() then self:UseQ(mob) end if BM.JC.UseE:Value() then self:UseE(mob) end end end end function Nasus:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseQ:Value() and GetHP(unit) < CalcDamage(myHero, unit, qdmg,0) then self:UseQ(unit) end if BM.KS.UseE:Value() and GetHP2(unit) < getdmg("E",unit) then self:UseE(unit) end end end function Nasus:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end class 'Jinx' function Jinx:__init() self:Load() end local W = { delay = 0.6, speed = 3000, width = 55, range = GetCastRange(myHero,_W)} local E = { delay = 0.5, speed = 887, width = 120, range = GetCastRange(myHero,_E)} local R = { delay = 0.6, speed = 1700, width = 140, range = GetCastRange(myHero,_R)} function Jinx:Load() OnTick(function() self:Tick() end) OnUpdateBuff(function(unit, buff) self:UpdateBuff(unit, buff) end) OnRemoveBuff(function(unit, buff) self:RemoveBuff(unit, buff) end) self:Menu() end function Jinx:Menu() BM.C:Menu("Q", "Q") BM.C.Q:DropDown("QL", "Q-Logic", 1, {"Advanced", "Simple"}) BM.C.Q:Boolean("Enabled", "Enabled", true) BM.C:Boolean("UseW", "Use W", true) BM.C:Boolean("UseE", "Use E", true) BM.H:Menu("Q", "Q") BM.H.Q:DropDown("QL", "Q-Logic", 1, {"Advanced", "Simple"}) BM.H.Q:Boolean("Enabled", "Enabled", true) BM.H:Boolean("UseW", "Use W", true) BM.H:Boolean("UseE", "Use E", true) BM.LC:Menu("Q", "Q") BM.LC.Q:DropDown("QM", "Q-Mode", 1, {"Use only Minigun", "Use only Rockets"}) BM.LC.Q:Boolean("Enabled", "Enabled", true) BM.LC:Boolean("UseW", "Use W", true) BM.JC:Menu("Q", "Q") BM.JC.Q:DropDown("QM", "Q-Mode", 1, {"Use only Minigun", "Use only Rockets"}) BM.JC.Q:Boolean("Enabled", "Enabled", true) BM.JC:Boolean("UseW", "Use W", true) BM.KS:Boolean("UseW", "Use W", true) BM.KS:Menu("R", "R") BM.KS.R:Boolean("Enabled", "Enabled", true) BM.KS.R:Slider("mDTT", "max Distance to target", 3000, 675, 20000, 10) BM.KS.R:Slider("DTT", "min Distance to target", 1000, 675, 20000, 10) end function Jinx:Tick() if IsDead(myHero) then return end local Target = GetCurrentTarget() if _G.IOW then if IOW:Mode() == "Combo" then self:Combo(Target) end if IOW:Mode() == "Harass" then self:Harass(Target) end if IOW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.DAC_Loaded then if DAC:Mode() == "Combo" then self:Combo(Target) end if DAC:Mode() == "Harass" then self:Harass(Target) end if DAC:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end elseif _G.PW then if PW:Mode() == "Combo" then self:Combo(Target) end if PW:Mode() == "Harass" then self:Harass(Target) end if PW:Mode() == "LaneClear" then self:LaneClear() self:JungleClear() end end self:Killsteal() self:AutoLevel() end function Jinx:QAdvanced(unit) if unit ~= nil then if IsReady(_Q) and ValidTarget(unit, 800) and minigun and GetDistance(unit) >= 550 and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) elseif IsReady(_Q) and ValidTarget(unit, 800) and minigun and GetDistance(unit) >= 550 and EnemiesAround(unit, 150) >= 2 and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) elseif IsReady(_Q) and ValidTarget(unit, 800) and not minigun and GetDistance(unit) <= 550 and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) elseif IsReady(_Q) and ValidTarget(unit, 800) and not minigun and GetPercentMP(myHero) <= BM.M.MM.MQ:Value() then CastSpell(_Q) end end end function Jinx:QSimple(unit) if unit ~= nil then if IsReady(_Q) and ValidTarget(unit, 800) and minigun and GetDistance(unit) >= 550 and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) elseif IsReady(_Q) and ValidTarget(unit, 800) and not minigun and GetDistance(unit) <= 550 and GetPercentMP(myHero) >= BM.M.MM.MQ:Value() then CastSpell(_Q) elseif IsReady(_Q) and ValidTarget(unit, 800) and not minigun and GetPercentMP(myHero) <= BM.M.MM.MQ:Value() then CastSpell(_Q) end end end function Jinx:Qonlyminigun(unit) if unit ~= nil then if IsReady(_Q) and ValidTarget(unit, 800) and not minigun then CastSpell(_Q) end end end function Jinx:Qonlyrockets(unit) if unit ~= nil then if IsReady(_Q) and ValidTarget(unit, 800) and minigun then CastSpell(_Q) end end end function Jinx:UseW(unit) if unit ~= nil then local WpI = GetPrediction(unit, W) if IsReady(_W) and ValidTarget(unit, GetCastRange(myHero,_W)) and WpI and WpI.hitChance >= (BM.M.P.WHC:Value()/100) and not WpI:mCollision(1) and GetPercentMP(myHero) >= BM.M.MM.MW:Value() then CastSkillShot(_W, WpI.castPos) end end end function Jinx:UseE(unit) if unit ~= nil then local EpI = GetPrediction(unit, E) if IsReady(_E) and ValidTarget(unit, GetCastRange(myHero,_E)) and EpI and EpI.hitChance >= (BM.M.P.EHC:Value()/100) and GetPercentMP(myHero) >= BM.M.MM.ME:Value() then CastSkillShot(_E, EpI.castPos) end end end function Jinx:UseR(unit) if unit ~= nil then local RpI = GetPrediction(unit, R) if IsReady(_R) and ValidTarget(unit, BM.KS.R.mDTT:Value()) and RpI and RpI.hitChance >= (BM.M.P.RHC:Value()/100) and GetDistance(unit) >= BM.KS.R.DTT:Value() and GetPercentMP(myHero) >= BM.M.MM.MR:Value() then CastSkillShot(_R, RpI.castPos) end end end function Jinx:Combo(unit) if BM.C.Q.QL:Value() == 1 and BM.C.Q.Enabled:Value() then self:QAdvanced(unit) end if BM.C.Q.QL:Value() == 2 and BM.C.Q.Enabled:Value() then self:QSimple(unit) end if BM.C.UseW:Value() then self:UseW(unit) end if BM.C.UseE:Value() then self:UseE(unit) end end function Jinx:Harass(unit) if BM.H.Q.QL:Value() == 1 and BM.C.Q.Enabled:Value() then self:QAdvanced(unit) end if BM.H.Q.QL:Value() == 2 and BM.C.Q.Enabled:Value() then self:QSimple(unit) end if BM.H.UseW:Value() then self:UseW(unit) end if BM.H.UseE:Value() then self:UseE(unit) end end function Jinx:LaneClear() for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == MINION_ENEMY then if BM.LC.Q.QM:Value() == 1 and BM.LC.Q.Enabled:Value() then self:Qonlyminigun(minion) end if BM.LC.Q.QM:Value() == 2 and BM.LC.Q.Enabled:Value() then self:Qonlyrockets(minion) end if BM.LC.UseW:Value() then self:UseW(minion) end end end end function Jinx:JungleClear() for _, mob in pairs(minionManager.objects) do if GetTeam(mob) == MINION_JUNGLE then if BM.JC.Q.QM:Value() == 1 and BM.JC.Q.Enabled:Value() then self:Qonlyminigun(mob) end if BM.JC.Q.QM:Value() == 2 and BM.JC.Q.Enabled:Value() then self:Qonlyrockets(mob) end if BM.JC.UseW:Value() then self:UseW(mob) end end end end function Jinx:Killsteal() for _, unit in pairs(GetEnemyHeroes()) do if BM.KS.UseW:Value() and GetHP(unit) < getdmg("W", unit) then self:UseW(unit) end if BM.KS.R.Enabled:Value() and GetHP(unit) < getdmg("R", unit) then self:UseR(unit) end end end function Jinx:AutoLevel() if BM.M.AL.AL:Value() == 2 then SxcSAIOLevel = {_Q,_W,_E,_Q,_Q,_R,_Q,_W,_Q,_W,_R,_W,_W,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 3 then SxcSAIOLevel = {_Q,_E,_W,_Q,_Q,_R,_Q,_E,_Q,_E,_R,_E,_E,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 4 then SxcSAIOLevel = {_W,_Q,_E,_W,_W,_R,_W,_Q,_W,_Q,_R,_Q,_Q,_E,_E,_R,_E,_E} elseif BM.M.AL.AL:Value() == 5 then SxcSAIOLevel = {_W,_E,_Q,_W,_W,_R,_W,_E,_W,_E,_R,_E,_E,_Q,_Q,_R,_Q,_Q} elseif BM.M.AL.AL:Value() == 6 then SxcSAIOLevel = {_E,_Q,_W,_E,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W} elseif BM.M.AL.AL:Value() == 7 then SxcSAIOLevel = {_E,_W,_Q,_E,_E,_R,_E,_W,_E,_W,_R,_W,_W,_Q,_Q,_R,_Q,_Q} end DelayAction(function() if BM.M.AL.AL:Value() ~= 1 then LevelSpell(SxcSAIOLevel[GetLevel(myHero)]) end end, math.random(1,BM.M.AL.ALH:Value())) end function Jinx:UpdateBuff(unit, buff) if unit == myHero and buff.Name == "jinxqicon" then minigun = true end end function Jinx:RemoveBuff(unit, buff) if unit == myHero and buff.Name == "jinxqicon" then minigun = false end end class 'Drawings' function Drawings:__init() self:Load() end function Drawings:Load() OnDraw(function() self:Draw() end) OnCreateObj(function(Object) self:CreateObj(Object) end) OnDeleteObj(function(Object) self:DeleteObj(Object) end) end if L.LD:Value() and ChampName == "Thresh" then D:Boolean("DS", "Draw Souls", true) end function Drawings:CreateObj(Object) if GetObjectBaseName(Object) == "Thresh_Base_soul.troy" and ChampName == "Thresh" then table.insert(souls, Object) end end function Drawings:DeleteObj(Object) myHer0 = GetOrigin(myHero) if GetObjectBaseName(Object) == "Thresh_Base_soul.troy" and ChampName == "Thresh" then table.remove(souls, 1) end end souls = {} function Drawings:Draw() if L.LD:Value() then for _, minion in pairs(minionManager.objects) do if GetTeam(minion) == (MINION_ENEMY) or (MINION_JUNGLE) then if _G.IOW and IOW:Mode() ~= "Harass" and IOW:Mode() ~= "Combo" and ValidTarget(minion, GetRange(myHero)) and not IsDead(minion) and D.LastHitMarker:Value() and GetCurrentHP(minion) < CalcDamage(myHero, minion, GetBaseDamage(myHero), GetBonusDmg(myHero), 0) then DrawCircle(GetOrigin(minion), GetHitBox(minion), 2, 40, ARGB(255, 255, 255, 255)) end end if _G.DAC_Loaded and DAC:Mode() ~= "Harass" and DAC:Mode() ~= "Combo" and ValidTarget(minion, GetRange(myHero)) and not IsDead(minion) and D.LastHitMarker:Value() and GetCurrentHP(minion) < CalcDamage(myHero, minion, GetBaseDamage(myHero), GetBonusDmg(myHero), 0) then DrawCircle(GetOrigin(minion), GetHitBox(minion), 2, 40, ARGB(255, 255, 255, 255)) end end if _G.PW then end for _, s in pairs(souls) do if s ~= nil then if ChampName == "Thresh" and D.DS:Value() and IsObjectAlive(s) then DrawCircle(GetOrigin(s), GetHitBox(s), 2, 40, ARGB(255, 255, 255, 255)) end end end if IsReady(_Q) and D.DrawQ:Value() then DrawCircle(GetOrigin(myHero), GetCastRange(myHero,_Q), 1, 40, D.ColorPick:Value()) end if IsReady(_W) and D.DrawW:Value() then DrawCircle(GetOrigin(myHero), GetCastRange(myHero,_W), 1, 40, D.ColorPick:Value()) end if IsReady(_E) and D.DrawE:Value() then DrawCircle(GetOrigin(myHero), GetCastRange(myHero,_E), 1, 40, D.ColorPick:Value()) end if IsReady(_R) and D.DrawR:Value() then DrawCircle(GetOrigin(myHero), GetCastRange(myHero,_R), 1, 40, D.ColorPick:Value()) end end end class 'SkinChanger' function SkinChanger:__init() self:Load() end function SkinChanger:Load() OnDraw(function() self:Draw() end) end function SkinChanger:Draw() if L.LSK:Value() then if SKCH.Skins:Value() ~= 1 then HeroSkinChanger(Name, SKCH.Skins:Value() - 1) elseif SKCH.Skins:Value() == 1 then HeroSkinChanger(Name, 0) end end end if SxcSAIOChamps[ChampName] == true and SxcSAIO.Loader.LC:Value() then _G[ChampName]() end if SxcSAIOChamps[ChampName] == true and SxcSAIO.Loader.LD:Value() then Drawings() end if SxcSAIOChamps[ChampName] == true and SxcSAIO.Loader.LSK:Value() then SkinChanger() end function math.round(num, idp) assert(type(num) == "number", "math.round: wrong argument types ( expected for num)") assert(type(idp) == "number" or idp == nil, "math.round: wrong argument types ( expected for idp)") local mult = 10 ^ (idp or 0) if num >= 0 then return math.floor(num * mult + 0.5) / mult else return math.ceil(num * mult - 0.5) / mult end end function string.split(str, delim, maxNb) if not delim or delim == "" or string.find(str, delim) == nil then return { str } end maxNb = (maxNb and maxNb >= 1) and maxNb or 0 local result = {} local pat = "(.-)" .. delim .. "()" local nb = 0 local lastPos for part, pos in string.gmatch(str, pat) do nb = nb + 1 if nb == maxNb then result[nb] = lastPos and string.sub(str, lastPos, #str) or str break end result[nb] = part lastPos = pos end if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end return result end class "SxcSAIOUpdater" -- { function SxcSAIOUpdater:__init(LocalVersion,UseHttps, Host, VersionPath, ScriptPath, SavePath, CallbackUpdate, CallbackNoUpdate, CallbackNewVersion, CallbackError) self.LocalVersion = LocalVersion self.Host = Host self.VersionPath = '/GOS/TCPUpdater/GetScript'..(UseHttps and '5' or '6')..'.php?script='..self:Base64Encode(self.Host..VersionPath)..'&rand='..math.random(99999999) self.ScriptPath = '/GOS/TCPUpdater/GetScript'..(UseHttps and '5' or '6')..'.php?script='..self:Base64Encode(self.Host..ScriptPath)..'&rand='..math.random(99999999) self.SavePath = SavePath self.CallbackUpdate = CallbackUpdate self.CallbackNoUpdate = CallbackNoUpdate self.CallbackNewVersion = CallbackNewVersion self.CallbackError = CallbackError self:CreateSocket(self.VersionPath) self.DownloadStatus = 'Connect to Server for VersionInfo' OnTick(function() self:GetOnlineVersion() end) OnDraw(function() self:OnDraw() end) return self end function SxcSAIOUpdater:print(str) print(''..os.clock()..': '..str) end function SxcSAIOUpdater:OnDraw() local res = GetResolution() if self.DownloadStatus ~= 'Downloading Script (100%)' and self.DownloadStatus ~= 'Downloading VersionInfo (100%)'then local bP = {['x1'] = res.x - (res.x - 390),['x2'] = res.x - (res.x - 20),['y1'] = res.y / 2,['y2'] = (res.y / 2) + 20,} local content = '{SxcSAIOUpdater} ::: Download Status ::: '..(self.DownloadStatus or 'Unknown') DrawLine(bP.x1, bP.y1 + 20, bP.x2, bP.y1 + 20, 20, ARGB(125, 255, 255, 255)) local op if self.File and self.Size then op = math.round(100/self.Size*self.File:len(),2)/100 < 1 and math.ceil(370 * math.round(100/self.Size*self.File:len(),2)/100) or 370 else op = 1 end DrawLine(bP.x2 + op, bP.y1 + 20, bP.x2, bP.y1 + 20, 20, GoS.Yellow) DrawLines2({{x=bP.x1, y=bP.y1}, {x=bP.x2, y=bP.y1}, {x=bP.x2, y=bP.y2}, {x=bP.x1, y=bP.y2}, {x=bP.x1, y=bP.y1}, }, 3, GoS.White) DrawText(content, 12, res.x - (res.x - 250) - (GetTextArea(content, 17).x / 2 + 75), bP.y1 + 1, ARGB(255,0,0,0)) end end function SxcSAIOUpdater:CreateSocket(url) if not self.LuaSocket then self.LuaSocket = require("socket") else self.Socket:close() self.Socket = nil self.Size = nil self.RecvStarted = false end self.LuaSocket = require("socket") self.Socket = self.LuaSocket.tcp() self.Socket:settimeout(0, 'b') self.Socket:settimeout(99999999, 't') self.Socket:connect('GamingOnSteroids.com', 80) self.Url = url self.Started = false self.LastPrint = "" self.File = "" end function SxcSAIOUpdater:Base64Encode(data) local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' return ((data:gsub('.', function(x) local r,b='',x:byte() for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end return r; end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) if (#x < 6) then return '' end local c=0 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end return b:sub(c+1,c+1) end)..({ '', '==', '=' })[#data%3+1]) end function SxcSAIOUpdater:Base64Decode(data) local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' data = string.gsub(data, '[^'..b..'=]', '') return (data:gsub('.', function(x) if (x == '=') then return '' end local r,f='',(b:find(x)-1) for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end return r; end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) if (#x ~= 8) then return '' end local c=0 for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end return string.char(c) end)) end function SxcSAIOUpdater:GetOnlineVersion() if self.GotScriptVersion then return end self.Receive, self.Status, self.Snipped = self.Socket:receive(1024) if self.Status == 'timeout' and not self.Started then self.Started = true self.Socket:send("GET "..self.Url.." HTTP/1.1\r\nHost: GamingOnSteroids.com\r\n\r\n") end if (self.Receive or (#self.Snipped > 0)) and not self.RecvStarted then self.RecvStarted = true self.DownloadStatus = 'Downloading VersionInfo (0%)' end self.File = self.File .. (self.Receive or self.Snipped) if self.File:find('') then if not self.Size then self.Size = tonumber(self.File:sub(self.File:find('')+6,self.File:find('')-1)) end if self.File:find('') then local _,ScriptFind = self.File:find('') local ScriptEnd = self.File:find('') if ScriptEnd then ScriptEnd = ScriptEnd - 1 end local DownloadedSize = self.File:sub(ScriptFind+1,ScriptEnd or -1):len() self.DownloadStatus = 'Downloading VersionInfo ('..math.round(100/self.Size*DownloadedSize,2)..'%)' end end if self.File:find('') then self.DownloadStatus = 'Downloading VersionInfo (100%)' local a,b = self.File:find('\r\n\r\n') self.File = self.File:sub(a,-1) self.NewFile = '' for line,content in ipairs(self.File:split('\n')) do if content:len() > 5 then self.NewFile = self.NewFile .. content end end local HeaderEnd, ContentStart = self.File:find('') local ContentEnd, _ = self.File:find('') if not ContentStart or not ContentEnd then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end else self.OnlineVersion = (self:Base64Decode(self.File:sub(ContentStart + 1,ContentEnd-1))) self.OnlineVersion = tonumber(self.OnlineVersion) if self.OnlineVersion > self.LocalVersion then if self.CallbackNewVersion and type(self.CallbackNewVersion) == 'function' then self.CallbackNewVersion(self.OnlineVersion,self.LocalVersion) end self:CreateSocket(self.ScriptPath) self.DownloadStatus = 'Connect to Server for ScriptDownload' OnTick(function() self:DownloadUpdate() end) else if self.CallbackNoUpdate and type(self.CallbackNoUpdate) == 'function' then self.CallbackNoUpdate(self.LocalVersion) end end end self.GotScriptVersion = true end end function SxcSAIOUpdater:DownloadUpdate() if self.GotAutoUpdater then return end self.Receive, self.Status, self.Snipped = self.Socket:receive(1024) if self.Status == 'timeout' and not self.Started then self.Started = true self.Socket:send("GET "..self.Url.." HTTP/1.1\r\nHost: GamingOnSteroids.com\r\n\r\n") end if (self.Receive or (#self.Snipped > 0)) and not self.RecvStarted then self.RecvStarted = true self.DownloadStatus = 'Downloading Script (0%)' end self.File = self.File .. (self.Receive or self.Snipped) if self.File:find('') then if not self.Size then self.Size = tonumber(self.File:sub(self.File:find('')+6,self.File:find('')-1)) end if self.File:find('') then local _,ScriptFind = self.File:find('') local ScriptEnd = self.File:find('') if ScriptEnd then ScriptEnd = ScriptEnd - 1 end local DownloadedSize = self.File:sub(ScriptFind+1,ScriptEnd or -1):len() self.DownloadStatus = 'Downloading Script ('..math.round(100/self.Size*DownloadedSize,2)..'%)' end end if self.File:find('') then self.DownloadStatus = 'Downloading Script (100%)' local a,b = self.File:find('\r\n\r\n') self.File = self.File:sub(a,-1) self.NewFile = '' for line,content in ipairs(self.File:split('\n')) do if content:len() > 5 then self.NewFile = self.NewFile .. content end end local HeaderEnd, ContentStart = self.NewFile:find('') local ContentEnd, _ = self.NewFile:find('') if not ContentStart or not ContentEnd then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end else local newf = self.NewFile:sub(ContentStart+1,ContentEnd-1) local newf = newf:gsub('\r','') if newf:len() ~= self.Size then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end return end local f = io.open(self.SavePath,"w+b") f:write(self:Base64Decode(newf)) f:close() if self.CallbackUpdate and type(self.CallbackUpdate) == 'function' then self.CallbackUpdate(self.OnlineVersion,self.LocalVersion) end end self.GotAutoUpdater = true end end SxcSAIOUpdater(SxcSAIOVersion,ToUpdate.UseHttps, ToUpdate.Host, ToUpdate.VersionPath, ToUpdate.ScriptPath, ToUpdate.SavePath, ToUpdate.CallbackUpdate,ToUpdate.CallbackNoUpdate, ToUpdate.CallbackNewVersion,ToUpdate.CallbackError)