-------------------------------------------------------------------------------------------------------------------------------------------------- -- -- -- ___________.__ _________ __ .__ .__.__ .___ -- -- \__ ___/| |__ ____ / _____// |______ _______ ____ | |__ |__| | __| _/ -- -- | | | | \_/ __ \ \_____ \\ __\__ \\_ __ \_/ ___\| | \| | | / __ | -- -- | | | Y \ ___/ / \| | / __ \| | \/\ \___| Y \ | |__/ /_/ | -- -- |____| |___| /\___ > /_______ /|__| (____ /__| \___ >___| /__|____/\____ | -- -- \/ \/ \/ \/ \/ \/ \/ -- -- ___. _________.__.__ __ _________ __ -- -- \_ |__ ___.__. / _____/|__| | ____ _____/ |_/ _____// |______ _______ -- -- | __ < | | \_____ \ | | | _/ __ \ / \ __\_____ \\ __\__ \\_ __ \ -- -- | \_\ \___ | / \| | |_\ ___/| | \ | / \| | / __ \| | \/ -- -- |___ / ____| /_______ /|__|____/\___ >___| /__|/_______ /|__| (____ /__| -- -- \/\/ \/ \/ \/ \/ \/ -- -------------------------------------------------------------------------------------------------------------------------------------------------- if myHero.charName ~= "Soraka" then return end local version = "1.7" local AUTOUPDATE = true local SCRIPT_NAME = "The Starchild" local SOURCELIB_URL = "https://raw.github.com/TheRealSource/public/master/common/SourceLib.lua" local SOURCELIB_PATH = LIB_PATH.."SourceLib.lua" if FileExist(SOURCELIB_PATH) then require("SourceLib") else DOWNLOADING_SOURCELIB = true DownloadFile(SOURCELIB_URL, SOURCELIB_PATH, function() print("Required libraries downloaded successfully, please reload") end) end if DOWNLOADING_SOURCELIB then print("Downloading required libraries, please wait...") return end if AUTOUPDATE then SourceUpdater(SCRIPT_NAME, version, "raw.github.com", "/SilentStar/BoLScripts/master/"..SCRIPT_NAME..".lua", SCRIPT_PATH .. GetCurrentEnv().FILE_NAME, "/SilentStar/BoLScripts/master/VersionFiles/"..SCRIPT_NAME..".version"):CheckUpdate() end local RequireI = Require("SourceLib") RequireI:Add("VPrediction", "https://raw.github.com/Hellsing/BoL/master/common/VPrediction.lua") RequireI:Add("SOW", "https://raw.github.com/Hellsing/BoL/master/common/SOW.lua") RequireI:Check() if RequireI.downloadNeeded == true then return end --ScriptStatus assert(load(Base64Decode("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"), nil, "bt", _ENV))() ScriptStatus("SFIFFKKNHIM") --ScriptStatus -------------------------------------------------------------------------------------------------------------------------------------------------- local Ranges = { AA = 550 } local Skills = { SkillQ = {name = myHero:GetSpellData(_Q).name, range = 900, delay = 0.5, speed = 1500, width = 110}, SkillW = {name = myHero:GetSpellData(_W).name, range = 450, delay = 0.5, speed = 1000, width = 0}, SkillE = {name = myHero:GetSpellData(_E).name, range = 875, delay = 0.5, speed = 2000, width = 25}, SkillR = {name = myHero:GetSpellData(_R).name, delay = 0.5} } -------------------------------------------------------------------------------------------------------------------------------------------------- local isSAC = false local isMMA = false local Target = nil -------------------------------------------------------------------------------------------------------------------------------------------------- function GetCustomTarget() ts:update() if _G.MMA_Target and _G.MMA_Target.type == myHero.type then return _G.MMA_Target end if _G.AutoCarry and _G.AutoCarry.Crosshair and _G.AutoCarry.Attack_Crosshair and _G.AutoCarry.Attack_Crosshair.target and _G.AutoCarry.Attack_Crosshair.target.type == myHero.type then return _G.AutoCarry.Attack_Crosshair.target end return ts.target end function OnLoad() if _G.ScriptLoaded then return end _G.ScriptLoaded = true initComponents() end function initComponents() SCConfig = scriptConfig("The Starchild", "Soraka") SCConfig:addSubMenu("[SC] Key Bindings", "Keys") SCConfig.Keys:addParam("Combo", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32) SCConfig.Keys:addParam("Harass", "Harass", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("C")) SCConfig:addSubMenu("[SC] Combo Settings", "CSet") SCConfig.CSet:addParam("UseQ", "Use Q in Combo", SCRIPT_PARAM_ONOFF, true) SCConfig.CSet:addParam("UseE", "Use E in Combo", SCRIPT_PARAM_ONOFF, true) SCConfig:addSubMenu("[SC] Harass Settings", "HSet") SCConfig.HSet:addParam("UseQ", "Use Q in Harass", SCRIPT_PARAM_ONOFF, true) SCConfig.HSet:addParam("UseE", "Use E in Harass", SCRIPT_PARAM_ONOFF, true) SCConfig:addSubMenu("[SC] Killsteal Settings", "KSSet") SCConfig.KSSet:addParam("KSQ", "Killsteal with Q", SCRIPT_PARAM_ONOFF, false) SCConfig.KSSet:addParam("KSE", "Killsteal with E", SCRIPT_PARAM_ONOFF, false) SCConfig:addSubMenu("[SC] Heal Settings", "HealSet") SCConfig.HealSet:addParam("UseHeal", "Auto Heal Allies", SCRIPT_PARAM_ONOFF, true) SCConfig.HealSet:addParam("HealManager", "Heal allies under", SCRIPT_PARAM_SLICE, 65, 0, 100, 0) SCConfig.HealSet:addParam("HPManager", "Don't heal under (my hp)", SCRIPT_PARAM_SLICE, 50, 0, 100, 0) SCConfig:addSubMenu("[SC] Ultimate Settings", "UltSet") SCConfig.UltSet:addParam("UseUlt", "Auto Ultimate Usage", SCRIPT_PARAM_ONOFF, true) SCConfig.UltSet:addParam("UltCast", "Auto Ultimate On: ", SCRIPT_PARAM_LIST, 3, {"Only Me", "Allies", "Both"}) SCConfig.UltSet:addParam("UltMode", "Auto Ultimate Mode: ", SCRIPT_PARAM_LIST, 1, {"Global", "In Range"}) SCConfig.UltSet:addParam("UltManager", "Ultimate allies under", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) SCConfig.UltSet:addParam("UltManager2", "Ultimate me under", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) SCConfig:addSubMenu("[SC] Additional Settings", "Ads") SCConfig.Ads:addParam("Packets", "Packet Usage", SCRIPT_PARAM_ONOFF, true) SCConfig:addSubMenu("[SC] Draw Settings", "DSet") SCConfig.DSet:addParam("DrawQ", "Draw Q Range", SCRIPT_PARAM_ONOFF, true) SCConfig.DSet:addParam("DrawW", "Draw W Range", SCRIPT_PARAM_ONOFF, true) SCConfig.DSet:addParam("DrawE", "Draw E Range", SCRIPT_PARAM_ONOFF, true) ts = TargetSelector(TARGET_LESS_CAST_PRIORITY, 1200) ts.name = "Focus" SCConfig:addTS(ts) VP = VPrediction() Orbwalker = SOW(VP) DelayAction(function() PrintChat("[The Starchild] Checking for external orbwalker: Please wait... ") end, 2.5) DelayAction(function() if _G.MMA_Loaded ~= nil then PrintChat("[The Starchild] MMA Status: Successfully integrated. ") isMMA = true elseif _G.AutoCarry ~= nil then PrintChat("[The Starchild] SAC Status: Successfully integrated. ") isSAC = true elseif _G.AutoCarry == nil and _G.MMA_Loaded == nil then PrintChat("[The Starchild] Orbwalker not found: SOW integrated. ") SCConfig:addSubMenu("[SC] Orbwalker", "SOWorb") Orbwalker:LoadToMenu(SCConfig.SOWorb) PrintChat("[The Starchild] Successfully loaded. ") end end, 10) end -------------------------------------------------------------------------------------------------------------------------------------------------- function OnTick() local Target = GetCustomTarget() Orbwalker:EnableAttacks() Orbwalker:ForceTarget(Target) QREADY = (myHero:CanUseSpell(_Q) == READY) WREADY = (myHero:CanUseSpell(_W) == READY) EREADY = (myHero:CanUseSpell(_E) == READY) RREADY = (myHero:CanUseSpell(_R) == READY) if SCConfig.Keys.Combo then if SCConfig.CSet.UseQ then if QREADY and ValidTarget(Target) and GetDistance(Target, myHero) then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillQ.delay, Skills.SkillQ.width, Skills.SkillQ.range, Skills.SkillQ.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _Q, toX = AOECastPosition.x, toY = AOECastPosition.z , fromX = AOECastPosition.x , fromY = AOECastPosition.z }):send() elseif not SCConfig.Ads.Packets then CastSpell(_Q, AOECastPosition.x, AOECastPosition.z) end end end end if SCConfig.CSet.UseE then if EREADY and ValidTarget(Target) and GetDistance(Target, myHero) then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillQ.delay, Skills.SkillQ.width, Skills.SkillQ.range, Skills.SkillQ.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _E, toX = AOECastPosition.x, toY = AOECastPosition.z , fromX = AOECastPosition.x , fromY = AOECastPosition.z }):send() elseif not SCConfig.Ads.Packets then CastSpell(_E, AOECastPosition.x, AOECastPosition.z) end end end end end if SCConfig.Keys.Harass then if SCConfig.HSet.UseQ then if QREADY and ValidTarget(Target) and GetDistance(Target, myHero) then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillQ.delay, Skills.SkillQ.width, Skills.SkillQ.range, Skills.SkillQ.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _Q, toX = AOECastPosition.x, toY = AOECastPosition.z , fromX = AOECastPosition.x , fromY = AOECastPosition.z }):send() elseif not SCConfig.Ads.Packets then CastSpell(_Q, AOECastPosition.x, AOECastPosition.z) end end end end if SCConfig.HSet.UseE then if EREADY and ValidTarget(Target) and GetDistance(Target, myHero) then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillQ.delay, Skills.SkillQ.width, Skills.SkillQ.range, Skills.SkillQ.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _E, toX = AOECastPosition.x, toY = AOECastPosition.z , fromX = AOECastPosition.x , fromY = AOECastPosition.z }):send() elseif not SCConfig.Ads.Packets then CastSpell(_E, AOECastPosition.x, AOECastPosition.z) end end end end end if SCConfig.HealSet.UseHeal then AutoHeal() end if SCConfig.UltSet.UseUlt then AutoUltimate() end if ValidTarget(Target) then if SCConfig.KSSet.KSQ then AutoQKS(Target) end end if ValidTarget(Target) then if SCConfig.KSSet.KSE then AutoEKS(Target) end end end -------------------------------------------------------------------------------------------------------------------------------------------------- function OnDraw() if SCConfig.DSet.DrawQ and QREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillQ.range, 0xFF008000) elseif SCConfig.DSet.DrawQ and not QREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillQ.range, 0xFFFF0000) end if SCConfig.DSet.DrawE and EREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillE.range, 0xFF008000) elseif SCConfig.DSet.DrawE and not EREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillE.range, 0xFFFF0000) end if SCConfig.DSet.DrawW and WREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillW.range, 0xFF008000) elseif SCConfig.DSet.DrawW and not QREADY and not myHero.dead then DrawCircle(myHero.x, myHero.y, myHero.z, Skills.SkillW.range, 0xFFFF0000) end end -------------------------------------------------------------------------------------------------------------------------------------------------- function AutoHeal() for i, ally in ipairs(GetAllyHeroes()) do if WREADY and SCConfig.HealSet.UseHeal then if (ally.health / ally.maxHealth < SCConfig.HealSet.HealManager /100) and (myHero.health / myHero.maxHealth > SCConfig.HealSet.HPManager /100) then if GetDistance(ally, myHero) <= Skills.SkillW.range then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _W, targetNetworkId = ally.networkID}):send() return end if not SCConfig.Ads.Packets then CastSpell(_W, ally) end end end end end end function AutoUltimate() for i, ally in ipairs(GetAllyHeroes()) do ------------------------------ if ally.dead then return end if myHero.dead then return end ------------------------------ if RREADY and SCConfig.UltSet.UseUlt then if SCConfig.UltSet.UltCast == 2 then if (ally.health / ally.maxHealth < SCConfig.UltSet.UltManager /100) then if SCConfig.UltSet.UltMode == 1 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _R, targetNetworkId = myHero.networkID}):send() elseif not SCConfig.Ads.Packets then CastSpell(_R) end elseif SCConfig.UltSet.UltMode == 2 then if GetDistance(ally, myHero) <= 1500 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _R, targetNetworkId = myHero.networkID}):send() elseif not SCConfig.Ads.Packets then CastSpell(_R) end end end end elseif SCConfig.UltSet.UltCast == 1 then if (myHero.health / myHero.maxHealth < SCConfig.UltSet.UltManager2 /100) then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _R, targetNetworkId = myHero.networkID}):send() elseif not SCConfig.Ads.Packets then CastSpell(_R) end end elseif SCConfig.UltSet.UltCast == 3 then if (ally.health / ally.maxHealth < SCConfig.UltSet.UltManager /100) or (myHero.health / myHero.maxHealth < SCConfig.UltSet.UltManager2 /100) then if SCConfig.UltSet.UltMode == 1 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _R, targetNetworkId = myHero.networkID}):send() elseif not SCConfig.Ads.Packets then CastSpell(_R) end elseif SCConfig.UltSet.UltMode == 2 then if GetDistance(ally, myHero) <= 1500 then if SCConfig.Ads.Packets then Packet("S_CAST", {spellId = _R, targetNetworkId = myHero.networkID}):send() elseif not SCConfig.Ads.Packets then CastSpell(_R) end end end end end end end end function AutoQKS(Target) if Target.health <= getDmg("Q", Target, myHero) and GetDistance(Target) <= Skills.SkillQ.range then if QREADY then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillQ.delay, Skills.SkillQ.width, Skills.SkillQ.range, Skills.SkillQ.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if GetDistance(Target, myHero) <= Skills.SkillQ.range then CastSpell(_Q, AOECastPosition.x, AOECastPosition.z) end end end end end function AutoEKS(Target) if Target.health <= getDmg("E", Target, myHero) and GetDistance(Target) <= Skills.SkillE.range then if QREADY then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetCircularAOECastPosition(Target, Skills.SkillE.delay, Skills.SkillE.width, Skills.SkillE.range, Skills.SkillE.speed, myHero) if nTargets >= 1 and MainTargetHitChance >= 2 then if GetDistance(Target, myHero) <= Skills.SkillE.range then CastSpell(_E, AOECastPosition.x, AOECastPosition.z) end end end end end --------------------------------------------------------------------------------------------------------------------------------------------------