if myHero.charName ~= "Darius" then return end local version = "1.004" -- BoL Tracker -- -- BoL Tracker -- if not _G.UPLloaded then if FileExist(LIB_PATH .. "/UPL.lua") then require("UPL") _G.UPL = UPL() else print("Downloading UPL, please don't press F9") DelayAction(function() DownloadFile("https://raw.github.com/nebelwolfi/BoL/master/Common/UPL.lua".."?rand="..math.random(1,10000), LIB_PATH.."UPL.lua", function () print("Successfully downloaded UPL. Press F9 twice.") end) end, 3) return end end if not _G.UOLloaded then if FileExist(LIB_PATH .. "/UOL.lua") then require("UOL") else print("Downloading UOL, please don't press F9") DelayAction(function() DownloadFile("https://raw.github.com/nebelwolfi/BoL/master/Common/UOL.lua".."?rand="..math.random(1,10000), LIB_PATH.."UOL.lua", function () print("Successfully downloaded UOL. Press F9 twice.") end) end, 3) return end end if FileExist(LIB_PATH .. "/CastItems.lua") then require "CastItems" else print("Downloading CastItems, please don't press F9") DelayAction(function() DownloadFile("https://raw.githubusercontent.com/Icesythe7/GOS/master/CastItems.lua".."?rand="..math.random(1,10000), LIB_PATH.."CastItems.lua", function () print("Successfully downloaded CastItems. Press F9 twice.") end) end, 3) return end if FileExist(LIB_PATH..'TRPrediction.lua') then require('TRPrediction') else print("Downloading TRPrediction, please don't press F9") DelayAction(function() DownloadFile("https://raw.githubusercontent.com/Project4706/BoL/master/TRPrediction.lua".."?rand="..math.random(1,10000), LIB_PATH.."TRPrediction.lua", function () print("Successfully downloaded TRPrediction. Press F9 twice.") end) end, 3) return end local TQ, TP function PrintMsg(msg) PrintChat("[Darius] "..msg.."") end local unitStacks = {} local lastCastQ = 0 local Q = {range = 425} local E = {range = 535, speed = 1500 , delay = 0.25, width = 535, angle = 50} local R = {range = 460} local ts = TargetSelector(TARGET_LESS_CAST_PRIORITY, 900, DAMAGE_PHYSICAL) local minions = minionManager(MINION_ENEMY, 1000, myHero, MINION_SORT_MAXHEALTH_ASC) local jungleMinions = minionManager(MINION_JUNGLE, 600, myHero, MINION_SORT_MAXHEALTH_DEC) local Ignite = nil if myHero:GetSpellData(SUMMONER_1).name:find("summonerdot") then Ignite = SUMMONER_1 elseif myHero:GetSpellData(SUMMONER_2).name:lower():find("summonerdot") then Ignite = SUMMONER_2 end local skins = { ["Darius"] = {"Default", "Lord", "Bioforge", "Woad King", "Dunkmaster", "Classic Chroma", "Classic Chroma", "Classic Chroma", "Academy", "Dunkmaster Chroma", "Dunkmaster Chroma", "Dunkmaster Chroma", "Dunkmaster Chroma", "Dunkmaster Chroma"} } UPL:AddSpell(_E, { speed = E.speed, delay = E.delay, range = E.range, width = E.width, collision = false, aoe = true, type = "cone" }) function Menu() Menu = scriptConfig("Darius", "Darius") --[[Combo]]-- Menu:addSubMenu("> Combo", "Combo") Menu.Combo:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.Combo:addParam("useItems", "Use Items", SCRIPT_PARAM_ONOFF, true) Menu.Combo:addParam("walker", "Auto Walk (Q)", SCRIPT_PARAM_ONOFF, true) Menu.Combo:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Combo:addParam("Mana", "> Manage your mana:", SCRIPT_PARAM_INFO, "") Menu.Combo:addParam("ManaCheck", "Check mana", SCRIPT_PARAM_ONOFF, false) Menu.Combo:addParam("ManaQ","Minimum % of mana (Q)", SCRIPT_PARAM_SLICE, 7, 0, 100, 0) Menu.Combo:addParam("ManaW","Minimum % of mana (W)", SCRIPT_PARAM_SLICE, 7, 0, 100, 0) Menu.Combo:addParam("ManaE","Minimum % of mana (E)", SCRIPT_PARAM_SLICE, 7, 0, 100, 0) Menu.Combo:addParam("ManaR","Minimum % of mana (R)", SCRIPT_PARAM_SLICE, 7, 0, 100, 0) Menu.Combo:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Combo:addParam("Spell", "> Choose your spells:", SCRIPT_PARAM_INFO, "") Menu.Combo:addParam("Q", "(Q) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Combo:addParam("W", "(W) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Combo:addParam("E", "(E) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Combo:addParam("R", "(R) - Use ", SCRIPT_PARAM_ONOFF, true) --[[Harass]]-- Menu:addSubMenu("> Harass", "Harass") Menu.Harass:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.Harass:addParam("useItems", "Use Items", SCRIPT_PARAM_ONOFF, true) Menu.Harass:addParam("walker", "Auto Walk (Q)", SCRIPT_PARAM_ONOFF, true) Menu.Harass:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Harass:addParam("Mana", "> Manage your mana:", SCRIPT_PARAM_INFO, "") Menu.Harass:addParam("ManaCheck", "Check mana", SCRIPT_PARAM_ONOFF, true) Menu.Harass:addParam("ManaQ","Minimum % of mana (Q)", SCRIPT_PARAM_SLICE, 15, 0, 100, 0) Menu.Harass:addParam("ManaW","Minimum % of mana (W)", SCRIPT_PARAM_SLICE, 15, 0, 100, 0) Menu.Harass:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Harass:addParam("Spell", "> Choose your spells:", SCRIPT_PARAM_INFO, "") Menu.Harass:addParam("Q", "(Q) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Harass:addParam("W", "(W) - Use ", SCRIPT_PARAM_ONOFF, true) --[[Killsteal]]-- Menu:addSubMenu("> Killsteal", "Killsteal") Menu.Killsteal:addParam("generalInfo", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.Killsteal:addParam("Killsteal", "Use Killsteal", SCRIPT_PARAM_ONOFF, true) Menu.Killsteal:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Killsteal:addParam("Spell", "> Choose your spells:", SCRIPT_PARAM_INFO, "") Menu.Killsteal:addParam("Q", "(Q) - Use ", SCRIPT_PARAM_ONOFF, false) Menu.Killsteal:addParam("W", "(W) - Use ", SCRIPT_PARAM_ONOFF, false) Menu.Killsteal:addParam("R", "(R) - Use ", SCRIPT_PARAM_ONOFF, false) --[[Laneclear]]-- Menu:addSubMenu("> Laneclear", "Laneclear") Menu.Laneclear:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.Laneclear:addParam("laneclearItems", "Use Items", SCRIPT_PARAM_ONOFF, true) Menu.Laneclear:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Laneclear:addParam("Mana", "> Manage your mana:", SCRIPT_PARAM_INFO, "") Menu.Laneclear:addParam("ManaCheck", "Check mana", SCRIPT_PARAM_ONOFF, true) Menu.Laneclear:addParam("ManaQ","Minimum % of mana (Q)", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) Menu.Laneclear:addParam("ManaW","Minimum % of mana (W)", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) Menu.Laneclear:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Laneclear:addParam("Spell", "> Choose your spells:", SCRIPT_PARAM_INFO, "") Menu.Laneclear:addParam("Q", "(Q) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Laneclear:addParam("W", "(W) - Use ", SCRIPT_PARAM_ONOFF, true) --[[Jungleclear]]-- Menu:addSubMenu("> Jungleclear", "Jungleclear") Menu.Jungleclear:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.Jungleclear:addParam("jungleItems", "Use Items", SCRIPT_PARAM_ONOFF, true) Menu.Jungleclear:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Jungleclear:addParam("Mana", "> Manage your mana:", SCRIPT_PARAM_INFO, "") Menu.Jungleclear:addParam("ManaCheck", "Check mana", SCRIPT_PARAM_ONOFF, true) Menu.Jungleclear:addParam("ManaQ","Minimum % of mana (Q)", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) Menu.Jungleclear:addParam("ManaW","Minimum % of mana (W)", SCRIPT_PARAM_SLICE, 25, 0, 100, 0) Menu.Jungleclear:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Jungleclear:addParam("Spell", "> Choose your spells:", SCRIPT_PARAM_INFO, "") Menu.Jungleclear:addParam("Q", "(Q) - Use ", SCRIPT_PARAM_ONOFF, true) Menu.Jungleclear:addParam("W", "(W) - Use ", SCRIPT_PARAM_ONOFF, true) --[[Def Item Settings]] Menu:addSubMenu("> QSS Settings", "ItemsSettings") Menu.ItemsSettings:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "") Menu.ItemsSettings:addParam("ItemsSettings", "Use Def Item", SCRIPT_PARAM_ONOFF, true) Menu.ItemsSettings:addParam("Humanizer", "Humanizer", SCRIPT_PARAM_SLICE, 250, 0, 500, 0) Menu.ItemsSettings:addSubMenu("QSS","QSS") Menu.ItemsSettings.QSS:addParam("Stun", "Remove stun", SCRIPT_PARAM_ONOFF, true) --5 Menu.ItemsSettings.QSS:addParam("Silence", "Remove silence", SCRIPT_PARAM_ONOFF, true)--7 Menu.ItemsSettings.QSS:addParam("Taunt", "Remove taunt", SCRIPT_PARAM_ONOFF, true)--8 Menu.ItemsSettings.QSS:addParam("Root", "Remove root", SCRIPT_PARAM_ONOFF, true)--11 Menu.ItemsSettings.QSS:addParam("Fear", "Remove fear", SCRIPT_PARAM_ONOFF, true)--10 Menu.ItemsSettings.QSS:addParam("Charm", "Remove charm", SCRIPT_PARAM_ONOFF, true)--21 Menu.ItemsSettings.QSS:addParam("Suppression", "Remove suppression", SCRIPT_PARAM_ONOFF, true)--24 Menu.ItemsSettings.QSS:addParam("Blind", "Remove blind", SCRIPT_PARAM_ONOFF, true)--25 Menu.ItemsSettings.QSS:addParam("KnockUp", "Remove knock up", SCRIPT_PARAM_ONOFF, true)--29 --[[Misc]]-- Menu:addSubMenu("> Skin SkinChanger", "Misc") Menu.Misc:addParam("SkinChanger", "> SkinChanger:", SCRIPT_PARAM_INFO, "") Menu.Misc:addParam("UseSkin", "Use Skin", SCRIPT_PARAM_ONOFF, true) Menu.Misc:setCallback("UseSkin", StartSkin) Menu.Misc:addParam("SetSkin", myHero.charName.. " Skins", SCRIPT_PARAM_LIST, 1, skins[myHero.charName]) Menu.Misc:setCallback("SetSkin", StartSkin) --[[Drawings]]-- Menu:addSubMenu("> Drawings", "Draw") Menu.Draw:addParam("lfps", "Low Fps Circles", SCRIPT_PARAM_ONOFF, true) Menu.Draw:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Draw:addParam("Spell", "> Draw range of spell:", SCRIPT_PARAM_INFO, "") Menu.Draw:addParam("drawQrange", "(Q) - Draw ", SCRIPT_PARAM_ONOFF, true) Menu.Draw:addParam("Qcolor", "(Q) Color", SCRIPT_PARAM_COLOR, {255, 186, 85, 211}) Menu.Draw:addParam("drawErange", "(E) - Draw ", SCRIPT_PARAM_ONOFF, true) Menu.Draw:addParam("Ecolor", "(E) Color", SCRIPT_PARAM_COLOR, {255, 186, 85, 211}) Menu.Draw:addParam("drawRrange", "(R) - Draw ", SCRIPT_PARAM_ONOFF, true) Menu.Draw:addParam("Rcolor", "(R) Color", SCRIPT_PARAM_COLOR, {255, 186, 85, 211}) Menu.Draw:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Draw:addParam("extra", "> Extra:", SCRIPT_PARAM_INFO, "") Menu.Draw:addParam("drawInnate", "(Innate Stacks) - Draw ", SCRIPT_PARAM_ONOFF, true) Menu.Draw:addParam("drawInnateColor", "(Innate) Text Color", SCRIPT_PARAM_COLOR, {255, 186, 85, 211}) Menu.Draw:addParam("divider", "", SCRIPT_PARAM_INFO, "") Menu.Draw:addParam("UltDamage", "Ultimate Damage in Chat", SCRIPT_PARAM_ONOFF, true) Menu:addSubMenu("> Prediction", "pred") UPL:AddToMenu(Menu.pred) Menu:addSubMenu("> Orbwalker", "Orbwalker") UOL:AddToMenu(Menu.Orbwalker) Menu:addParam("space", "", 5, "") Menu:addParam("signature0", " [Darius] v"..version, 5, "") Menu:addParam("space1", "", 5, "") Menu:addParam("signature1", " by sYREXx ", 5, "") end function isReady(slot) return myHero:CanUseSpell(slot) == READY end function isLevel(slot) if myHero:GetSpellData(slot).level > 0 then return true else return false end end function Level(slot) if isLevel(slot) then return myHero:GetSpellData(slot).level end end function GetDamage(spell, unit) local truedamage = 0 local AD = myHero.totalDamage local bAD = myHero.addDamage if spell == _Q and isReady(_Q) then truedamage = myHero:CalcDamage(unit, (((Level(_Q) * 30) + 10) + (AD * (((Level(_Q) * 10) + 90) / 100)))) elseif spell == _W and isReady(_W) then truedamage = myHero:CalcDamage(unit, (bAD * 0.4)) elseif spell == _R and isReady(_R) then damage = ((Level(_R) * 100) + (bAD * 0.75)) truedamage = damage + (damage * 0.2 * GetStacks()) end return truedamage end function ManaCheck(ManaValue, ManaMenu) if not ManaMenu then return true else if ManaValue <= 100 * myHero.mana / myHero.maxMana then return true else return false end end end --------------------------------------------------------------------------------- --[[Cast Spell's]]-- --------------------------------------------------------------------------------- function CastQ() if isReady(_Q) then CastSpell(_Q) end end function CalcVector(source,target) if not target then return end local V = Vector(source.x, source.y, source.z) local V2 = Vector(target.x, target.y, target.z) local vec = V-V2 local vec2 = vec:normalized() return vec2 end function QWalker() local target = ts.target local Blade = (Q.range + 205) / 2 if target ~= nil then if (os.clock() - lastCastQ) < 0.75 then local PredictedPosition = TRPrediction:GetUnitPosition(ts.target, 0.75, true) local E = myHero - (Vector(PredictedPosition) - myHero): normalized() * Blade if GetDistanceSqr(target) > Blade * Blade then myHero:MoveTo(target.x, target.z) elseif GetDistance(target) < Blade * Blade then myHero:MoveTo(E.x, E.z) end end end end function CastW() if isReady(_W) then CastSpell(_W) end end function CastE(unit) if ValidTarget(unit) and isReady(_E) and GetDistanceSqr(unit) < E.range * E.range then local CastPosition, HitChance, HeroPosition = UPL:Predict(_E, myHero, unit) if CastPosition and HitChance > 0 then CastSpell(_E, CastPosition.x, CastPosition.z) end end end function CastR(unit) if ValidTarget(unit) and isReady(_R) and GetDistanceSqr(unit) < R.range * R.range then CastSpell(_R, unit) end end --------------------------------------------------------------------------------- --[[Mode's]]-- --------------------------------------------------------------------------------- function GetCustomTarget() ts:update() if ValidTarget(ts.target) and ts.target.type == myHero.type then return ts.target else return nil end end function Combo() local target = ts.target if ValidTarget(target) then local Distance = GetDistanceSqr(target) if Menu.Combo.R and target.health <= GetDamage(_R, target) then CastR(target) end if Menu.Combo.E and Distance > Q.range * Q.range then CastE(target) end if Menu.Combo.W and Distance < 200 * 200 then CastW() end if Menu.Combo.useItems then if Distance <= 200 * 200 then CastItem(3077) CastItem(3074) CastItem(3748) end if Distance <= 1000 * 1000 then CastItem(3142) end end if Menu.Combo.Q and Distance < Q.range * Q.range then CastQ() end end end function Harass() local target = ts.target if ValidTarget(target) then local Distance = GetDistanceSqr(target) if Menu.Harass.W and Distance < 200 * 200 and ManaCheck(Menu.Harass.ManaW, Menu.Harass.ManaCheck) then CastW() end if Menu.Harass.Q and Distance < Q.range * Q.range and ManaCheck(Menu.Harass.ManaQ, Menu.Harass.ManaCheck) then CastQ() end end end function Laneclear() minions:update() for _, minions in pairs(minions.objects) do if minions and ValidTarget(minions) then local Distance = GetDistanceSqr(minions) if Menu.Laneclear.W and Distance < 200 * 200 and ManaCheck(Menu.Laneclear.ManaW, Menu.Laneclear.ManaCheck) then CastW() end if Menu.Laneclear.Q and Distance < Q.range * Q.range and ManaCheck(Menu.Laneclear.ManaQ, Menu.Laneclear.ManaCheck) then CastQ() end if Menu.Laneclear.laneclearItems then if GetDistanceSqr(minions) <= 189 * 189 then CastItem(3077) CastItem(3074) CastItem(3748) end end end end end function Jungleclear() jungleMinions:update() for _, minions in pairs(jungleMinions.objects) do local Distance = GetDistanceSqr(minions) if minions.name:find("Plant") then return end if minions and ValidTarget(minions) then if Menu.Jungleclear.W and Distance < 200 * 200 and ManaCheck(Menu.Jungleclear.ManaW, Menu.Jungleclear.ManaCheck) then CastW() end if Menu.Jungleclear.Q and Distance < Q.range * Q.range and ManaCheck(Menu.Jungleclear.ManaQ, Menu.Jungleclear.ManaCheck) then CastQ() end if Menu.Jungleclear.jungleItems then if GetDistanceSqr(minions) <= 189 * 189 then CastItem(3077) CastItem(3074) CastItem(3748) end end end end end function Killsteal() for _, enemy in pairs(GetEnemyHeroes()) do local realHPi = (enemy.health + (enemy.hpRegen * 0.01)) local Distance = GetDistanceSqr(enemy) if enemy ~= nil and ValidTarget(enemy) then if Ignite and isReady(Ignite) then local iDamage = (50 + (20 * myHero.level)) if Distance < 600 * 600 and realHPi <= iDamage then CastSpell(Ignite, enemy) end elseif Menu.Killsteal.R and isReady(_R) then if Distance < R.range * R.range and realHPi <= GetDamage(_R, enemy) then CastR(enemy) end elseif Menu.Killsteal.Q and isReady(_Q) then if Distance < Q.range * Q.range and realHPi <= GetDamage(_Q, enemy) then CastQ() end elseif Menu.Killsteal.W and isReady(_W) then if Distance < 200 * 200 and realHPi <= GetDamage(_W, enemy) then CastE(enemy) CastW() end end end end end --------------------------------------------------------------------------------- --[[Check's]]-- --------------------------------------------------------------------------------- function CC() if Menu.ItemsSettings.QSS.Stun then buffs[5] = true else buffs[5] = false end if Menu.ItemsSettings.QSS.Silence then buffs[7] = true else buffs[7] = false end if Menu.ItemsSettings.QSS.Taunt then buffs[8] = true else buffs[8] = false end if Menu.ItemsSettings.QSS.Fear then buffs[10] = true else buffs[10] = false end if Menu.ItemsSettings.QSS.Roat then buffs[11] = true else buffs[11] = false end if Menu.ItemsSettings.QSS.Charm then buffs[21] = true else buffs[21] = false end if Menu.ItemsSettings.QSS.Suppression then buffs[24] = true else buffs[24] = false end if Menu.ItemsSettings.QSS.Blind then buffs[25] = true else buffs[25] = false end if Menu.ItemsSettings.QSS.KnockUp then buffs[29] = true else buffs[29] = false end end function OnUpdateBuff(Unit, Buff, Stacks) if Unit and Buff and Unit.team ~= myHero.team and Unit.type == myHero.type and Buff.name == "DariusHemo" then unitStacks[Unit.networkID] = Stacks end if unit and unit.isMe and buff and buff.valid then if Menu.ItemsSettings.ItemsSettings and buffs[buff.type] == true then CastItem(3137) CastItem(3140) CastItem(3139) end end end function OnRemoveBuff(Unit, Buff) if Unit and Buff and Unit.team ~= myHero.team and Unit.type == myHero.type and Buff.name == "DariusHemo" then unitStacks[Unit.networkID] = 0 end end function GetStacks(unit) for _, s in pairs(GetEnemyHeroes()) do if s and ValidTarget(s) then return unitStacks[s.networkID] or 0 elseif not unit and ValidTarget(units) then return unitStacks[s.networkID] or 0 end end end function OnProcessSpell(unit, spell) if unit == myHero and spell.name:find("DariusCleave") and ((Menu.Combo.walker and UOL:GetOrbWalkMode() == "Combo") or (Menu.Harass.walker and UOL:GetOrbWalkMode() == "Harass")) then UOL:SetMovement(false) DelayAction(function() UOL:SetMovement(true) end, 0.75) lastCastQ = os.clock() end if Menu.Draw.UltDamage then if unit == myHero and spell.name:find("DariusExecute") then PrintMsg("Ultimate Damage =" ..GetDamage(_R, target).."") end end end --------------------------------------------------------------------------------- --[[OnLoad]]-- --------------------------------------------------------------------------------- function OnLoad() DelayAction(function()PrintMsg("Welcome "..GetUser()..", Have Fun and Good Luck !") end, 0.5) Menu() target = GetCustomTarget() StartSkin() if TRPrediction then TP = TRPrediction() TQ = TR_BindSS({type = 'IsConic', delay = E.delay, range = E.range, angle = E.angle, speed = E.speed, allowedCollisionCount = 0}) end end --------------------------------------------------------------------------------- --[[OnTick]]-- --------------------------------------------------------------------------------- function OnTick() if myHero.dead then return end GetCustomTarget() GetStacks() QWalker() if Menu.Killsteal.Killsteal then Killsteal() end if UOL:GetOrbWalkMode() == "Combo" then Combo() end if UOL:GetOrbWalkMode() == "Harass" then Harass() end if UOL:GetOrbWalkMode() == "LaneClear" then Laneclear() Jungleclear() end buffs = {[5]=Menu.ItemsSettings.QSS.Stun, [7]=Menu.ItemsSettings.QSS.Silence, [8]=Menu.ItemsSettings.QSS.Taunt, [10]=Menu.ItemsSettings.QSS.Fear, [11]=Menu.ItemsSettings.QSS.Roat, [21]=Menu.ItemsSettings.QSS.Charm, [24]=Menu.ItemsSettings.QSS.Suppression, [25]=Menu.ItemsSettings.QSS.Blind, [29]=Menu.ItemsSettings.QSS.KnockUp} end --------------------------------------------------------------------------------- --[[Draw Stuff]]-- --------------------------------------------------------------------------------- function GetHPBarPos(enemy) enemy.barData = {PercentageOffset = {x = -0.05, y = 0}} local barPos = GetUnitHPBarPos(enemy) local barPosOffset = GetUnitHPBarOffset(enemy) local barOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y } local barPosPercentageOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y } local BarPosOffsetX = 171 local BarPosOffsetY = 46 local CorrectionY = 39 local StartHpPos = 31 barPos.x = math.floor(barPos.x + (barPosOffset.x - 0.5 + barPosPercentageOffset.x) * BarPosOffsetX + StartHpPos) barPos.y = math.floor(barPos.y + (barPosOffset.y - 0.5 + barPosPercentageOffset.y) * BarPosOffsetY + CorrectionY) local StartPos = Vector(barPos.x , barPos.y, 0) local EndPos = Vector(barPos.x + 108 , barPos.y , 0) return Vector(StartPos.x, StartPos.y, 0), Vector(EndPos.x, EndPos.y, 0) end function DrawCircleNextLvl(x, y, z, radius, width, color, chordlength) radius = radius or 300 quality = math.max(8,math.floor(180/math.deg((math.asin((chordlength/(2*radius))))))) quality = 2 * math.pi / quality local points = {} for theta = 0, 2 * math.pi + quality, quality do local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta))) points[#points + 1] = D3DXVECTOR2(c.x, c.y) end DrawLines2(points, width or 1, color or 4294967295) end function DrawCircle2(x, y, z, radius, color) local vPos1 = Vector(x, y, z) local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z) local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z)) if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then DrawCircleNextLvl(x, y, z, radius, 1, color, 75) end end function OnDraw() if myHero.dead then return end if Menu.Draw.lfps then if Menu.Draw.drawQrange and isReady(_Q) then DrawCircle2(myHero.x, myHero.y, myHero.z, Q.range, ARGB(Menu.Draw.Qcolor[1], Menu.Draw.Qcolor[2], Menu.Draw.Qcolor[3], Menu.Draw.Qcolor[4])) elseif Menu.Draw.drawQrange and not isReady(_Q) and isLevel(_Q) then DrawCircle2(myHero.x, myHero.y, myHero.z, Q.range, ARGB(255, 255, 0, 0)) end if Menu.Draw.drawErange and isReady(_E) then DrawCircle2(myHero.x, myHero.y, myHero.z, E.range, ARGB(Menu.Draw.Ecolor[1], Menu.Draw.Ecolor[2], Menu.Draw.Ecolor[3], Menu.Draw.Ecolor[4])) elseif Menu.Draw.drawErange and not isReady(_E) and isLevel(_E) then DrawCircle2(myHero.x, myHero.y, myHero.z, E.range, ARGB(255, 255, 0, 0)) end if Menu.Draw.drawRrange and isReady(_R) then DrawCircle2(myHero.x, myHero.y, myHero.z, R.range, ARGB(Menu.Draw.Rcolor[1], Menu.Draw.Rcolor[2], Menu.Draw.Rcolor[3], Menu.Draw.Rcolor[4])) elseif Menu.Draw.drawRrange and not isReady(_R) and isLevel(_R) then DrawCircle2(myHero.x, myHero.y, myHero.z, R.range, ARGB(255, 255, 0, 0)) end else if Menu.Draw.drawQrange and isReady(_Q) then DrawCircle(myHero.x, myHero.y, myHero.z, Q.range, ARGB(Menu.Draw.Qcolor[1], Menu.Draw.Qcolor[2], Menu.Draw.Qcolor[3], Menu.Draw.Qcolor[4])) elseif Menu.Draw.drawQrange and not isReady(_Q) and isLevel(_Q) then DrawCircle(myHero.x, myHero.y, myHero.z, Q.range, ARGB(255, 255, 0, 0)) end if Menu.Draw.drawErange and isReady(_E) then DrawCircle(myHero.x, myHero.y, myHero.z, E.range, ARGB(Menu.Draw.Ecolor[1], Menu.Draw.Ecolor[2], Menu.Draw.Ecolor[3], Menu.Draw.Ecolor[4])) elseif Menu.Draw.drawErange and not isReady(_E) and isLevel(_E) then DrawCircle(myHero.x, myHero.y, myHero.z, E.range, ARGB(255, 255, 0, 0)) end if Menu.Draw.drawRrange and isReady(_R) then DrawCircle(myHero.x, myHero.y, myHero.z, R.range, ARGB(Menu.Draw.Rcolor[1], Menu.Draw.Rcolor[2], Menu.Draw.Rcolor[3], Menu.Draw.Rcolor[4])) elseif Menu.Draw.drawRrange and not isReady(_R) and isLevel(_R) then DrawCircle(myHero.x, myHero.y, myHero.z, R.range, ARGB(255, 255, 0, 0)) end end for _, unit in pairs(GetEnemyHeroes()) do if ValidTarget(unit, 1500) then local barPos = GetHPBarPos(unit) if Menu.Draw.drawInnate then if unitStacks[unit.networkID] == nil or unitStacks[unit.networkID] == 0 then return end if GetStacks(unit) < 5 then DrawTextA(""..GetStacks(unit).."", 25, barPos.x+135, barPos.y-23, ARGB(Menu.Draw.drawInnateColor[1], Menu.Draw.drawInnateColor[2], Menu.Draw.drawInnateColor[3], Menu.Draw.drawInnateColor[4])) elseif GetStacks(unit) >= 5 then DrawTextA("FULL STACKS", 25, barPos.x+135, barPos.y-23, ARGB(Menu.Draw.drawInnateColor[1], Menu.Draw.drawInnateColor[2], Menu.Draw.drawInnateColor[3], Menu.Draw.drawInnateColor[4])) end end end end end --------------------------------------------------------------------------------- --[[Skin]]-- --------------------------------------------------------------------------------- function StartSkin() if Menu.Misc.UseSkin then local id = Menu.Misc.SetSkin-1 SetSkin(myHero, id) else SetSkin(myHero, -1) end end