if myHero.charName ~= "Khazix" then
return
end
local version = "1.000"
-- BoL Tracker --
assert(load(Base64Decode("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"), nil, "bt", _ENV))()
TrackerLoad("2SprgUKdBqtw5R3O")
-- BoL Tracker --
function TCPGetRequest(server, path, data, port)
local start_t = os.clock()
local port = port or 80
local data = data or {}
local lua_socket = require("socket")
local connection_tcp = lua_socket.connect(server,port)
local requeststring = "GET "..path
local first = true
for i,v in pairs(data)do
requeststring = requeststring..(first and "?" or "&")..i.."="..v
first = false
end
requeststring = requeststring.. " HTTP/1.0\r\nHost: "..server.."\r\n\r\n"
connection_tcp:send(requeststring)
local response = ""
local status
while true do
s,status, partial = connection_tcp:receive('*a')
response = response..(s or partial)
if(status == "closed" or status == "timeout")then
break
end
end
local end_t = os.clock()
local start_content = response:find("\r\n\r\n")+4
response = response:sub(start_content)
return response, status, end_t-start_t
end
function update()
local host = "s1mplescripts.de"
local web_path = "/S1mple/Scripts/BolStudio/s1mple_ingame_bol_tools/getGit.php"
local version_url_b64 = "aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NZUkVYeEJvTC9Cb0wvbWFzdGVyL0toYVppeCUyMC0lMjBUaGUlMjBCdWcudmVyc2lvbg=="
local file_url_b64 = "aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NZUkVYeEJvTC9Cb0wvbWFzdGVyL0toYVppeCUyMC0lMjBUaGUlMjBCdWc="
local resp, st, t = TCPGetRequest(host, web_path, {url = version_url_b64})
local server_version = tonumber(Base64Decode(resp))
if (server_version > version) then
local file,st,t = TCPGetRequest(host, web_path, {url = file_url_b64})
local f = io.open(FILE_NAME, "wb")
f:write(Base64Decode(file))
f:close()
end
end
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
function PrintMsg(msg)
PrintChat("[KhaZix] "..msg.."")
end
local Passiv = {ready = false}
local Q = {range = 325, evo = false}
local W = {range = 1000, speed = 1700, delay = 0.25, width = 70, evo = false}
local E = {range = 700, speed = 400 , delay = 0.25, width = 300, evo = false}
local R = {evo = false}
local mylvl = myHero.level
local qlvl = myHero:GetSpellData(_Q).level
local wlvl = myHero:GetSpellData(_W).level
local elvl = myHero:GetSpellData(_E).level
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 Smite = nil
if myHero:GetSpellData(SUMMONER_1).name:find("smite") then
Smite = SUMMONER_1
elseif myHero:GetSpellData(SUMMONER_2).name:lower():find("smite") then
Smite = SUMMONER_2
end
local OutOfCombat = false
local ultPassiveAvailable = true
local jungleitem =
{
SR = { id = 3715, slot = nil }, -- Red Smite
SB = { id = 3706, slot = nil }, -- Blue Smite
SRW = { id = 1412, slot = nil }, -- Red Warrior
SBW = { id = 1400, slot = nil }, -- Blue Warrior
}
local buffs =
{
[5]=nil, [7]=nil, [8]=nil, [10]=nil, [11]=nil, [21]=nil, [24]=nil, [25]=nil, [29]=nil
}
local skins =
{
["Khazix"] = {"Default", "Mecha", "Guardian of the Sand", "Death Blossom"}
}
local bushList =
{
["BlueSideBotJungleTribrush"] = { x = 10350, y = 51, z = 3100, cd = 0 },
["BlueSideBotJungleBanana"] = { x = 6850, y = 51, z = 3150, cd = 0 },
["BlueSideBotJungleBrambleback"] = { x = 8000, y = 51, z = 3550, cd = 0 },
["BlueSideBotJungleBramblebackCross"] = { x = 8600, y = 51, z = 4800, cd = 0 },
["BlueSideBotJungleRaptor"] = { x = 6550, y = 51, z = 4750, cd = 0 },
["BlueSideBotJungleKrug"] = { x = 9200, y = 51, z = 2200, cd = 0 },
["BlueSideBotJungleGate"] = { x = 5550, y = 51, z = 3550, cd = 0 },
["BlueSideBotJungleLane"] = { x = 7775, y = 51, z = 900, cd = 0 },
["BlueSideTopJungleBanana"] = { x = 5000, y = 51, z = 8500, cd = 0 },
["BlueSideTopJungleSentinel"] = { x = 3375, y = 51, z = 7850, cd = 0 },
["BlueSideTopJungleWolf"] = { x = 4800, y = 51, z = 7175 , cd = 0 },
["BlueSideTopJungleTriTower"] = { x = 2300, y = 51, z = 9800, cd = 0 },
["BlueSideTopJungleLane"] = { x = 816, y = 51, z = 8200, cd = 0 },
["RedSideTopJungleTribrush"] = { x = 4450, y = 51, z = 11850, cd = 0 },
["RedSideTopJungleBanana"] = { x = 8000, y = 51, z = 11900, cd = 0 },
["RedSideTopJungleBrambleback"] = { x = 6750, y = 51, z = 11600, cd = 0 },
["RedSideTopJungleBramblebackCross"] = { x = 6200, y = 51, z = 10350, cd = 0 },
["RedSideTopJungleRaptor"] = { x = 8250, y = 51, z = 10300, cd = 0 },
["RedSideTopJungleKrug"] = { x = 5650, y = 51, z = 12800, cd = 0 },
["RedSideTopJungleGate"] = { x = 9200, y = 51, z = 11450, cd = 0 },
["RedSideTopJungleLane"] = { x = 7150, y = 51, z = 14150, cd = 0 },
["RedSideBotJungleBanana"] = { x = 9800, y = 51, z = 6500, cd = 0 },
["RedSideBotJungleSentinel"] = { x = 11450, y = 51, z = 7200, cd = 0 },
["RedSideBotJungleWolf"] = { x = 9950, y = 51, z = 7950, cd = 0 },
["RedSideBotJungleTriTower"] = { x = 12500, y = 51, z = 5250, cd = 0 },
["RedSideBotJungleLane"] = { x = 14100, y = 51, z = 7075, cd = 0 },
["TopJungleRiverTop"] = { x = 3000, y = 51, z = 11050, cd = 0 },
["TopJungleRiverCenter"] = { x = 5200, y = 51, z = 9100, cd = 0 },
["TopJungleRiverMid"] = { x = 6500, y = 51, z = 8300, cd = 0 },
["BotJungleRiverMid"] = { x = 8350, y = 51, z = 6450, cd = 0 },
["BotJungleRiverCenter"] = { x = 9400, y = 51, z = 5650, cd = 0 },
["BotJungleRiverBot"] = { x = 11850, y = 51, z = 3900, cd = 0 },
["LaneBrushesTopBlue"] = { x = 1150, y = 51, z = 12350, cd = 0 },
["LaneBrushesTopCenter"] = { x = 1650, y = 51, z = 13100, cd = 0 },
["LaneBrushesTopRed"] = { x = 2400, y = 51, z = 13600, cd = 0 },
["LaneBrushesBotBlue"] = { x = 12500, y = 51, z = 1575, cd = 0 },
["LaneBrushesBotRed"] = { x = 13350, y = 51, z = 2550, cd = 0 }
}
UPL:AddSpell(_W, { speed = W.speed, delay = W.delay, range = W.range, width = W.width, collision = true, aoe = false, type = "linear" })
UPL:AddSpell(_E, { speed = E.speed, delay = E.delay, range = E.range, width = E.width, collision = false, aoe = true, type = "circular" })
---------------------------------------------------------------------------------
--[[Menu]]--
---------------------------------------------------------------------------------
local Menu
function Menu()
Menu = scriptConfig("KhaZix", "KhaZix")
--[[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("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("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("E", "(E) - 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("> Item 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
--[[Smite]]--
if Smite then
Menu:addSubMenu("> Smite", "SmiteUse")
Menu.SmiteUse:addParam("General", "> General settings:", SCRIPT_PARAM_INFO, "")
Menu.SmiteUse:addParam("UseSmite", "Smite neutral monster", SCRIPT_PARAM_ONOFF, true)
Menu.SmiteUse:addParam("UseSmiteT", "Use Smite on Target", SCRIPT_PARAM_ONOFF, true)
end
--[[Misc]]--
Menu:addSubMenu("> Misc", "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("drawWrange", "(W) - Draw ", SCRIPT_PARAM_ONOFF, true)
Menu.Draw:addParam("Wcolor", "(W) 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("divider", "", SCRIPT_PARAM_INFO, "")
Menu.Draw:addParam("extra", "> Extra:", SCRIPT_PARAM_INFO, "")
Menu.Draw:addParam("drawBrush", "(Brush Text) - Draw ", SCRIPT_PARAM_ONOFF, true)
Menu.Draw:addParam("drawBrushColor", "(Brush) Text Color", SCRIPT_PARAM_COLOR, {255, 186, 85, 211})
Menu:addSubMenu("> Prediction", "pred")
UPL:AddToMenu(Menu.pred)
Menu:addSubMenu("> Orbwalker", "Orbwalker")
UOL:AddToMenu(Menu.Orbwalker)
Menu:addParam("space", "", 5, "")
Menu:addParam("signature0", " [KhaZix] v"..version, 5, "")
Menu:addParam("space1", "", 5, "")
Menu:addParam("signature1", " by sYREXx ", 5, "")
end
---------------------------------------------------------------------------------
--[[Spell Check's]]--
---------------------------------------------------------------------------------
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 GetDamage(spell, unit)
local truedamage = 0
if spell == _Passiv and Passiv.ready then
truedamage = myHero:CalcDamage(unit, (((mylvl * 8) + 2) + (bAD * 0.4)))
elseif spell == _Q and Q.ready then
truedamage = myHero:CalcDamage(unit, (((qlvl * 25) + 45) + (bAD * 1.4)))
elseif spell == _W and W.ready then
truedamage = myHero:CalcDamage(unit, (((wlvl * 30) + 50) + (bAD * 1)))
elseif spell == _E and E.ready then
truedamage = myHero:CalcDamage(unit, (((elvl * 35) + 30) + (bAD * 0.2)))
end
return truedamage
end
function GetSmiteDamage()
if myHero.level <= 4 then
SmiteDamage = 370 + (myHero.level*20)
end
if myHero.level > 4 and myHero.level <= 9 then
SmiteDamage = 330 + (myHero.level*30)
end
if myHero.level > 9 and myHero.level <= 14 then
SmiteDamage = 240 + (myHero.level*40)
end
if myHero.level > 14 then
SmiteDamage = 100 + (myHero.level*50)
end
return SmiteDamage
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(unit)
if ValidTarget(unit) and isReady(_Q) and GetDistanceSqr(unit) < Q.range * Q.range then
CastSpell(_Q, unit)
end
end
function CastW(unit)
if ValidTarget(unit) and isReady(_W) and GetDistanceSqr(unit) < W.range * W.range then
local CastPosition, HitChance, HeroPosition = UPL:Predict(_W, myHero, unit)
if CastPosition and HitChance > 0 then
CastSpell(_W, CastPosition.x, CastPosition.z)
end
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()
if isReady(_R) then
CastSpell(_R)
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 Smite then
if Menu.SmiteUse.UseSmiteT and distance <= 560 * 560 then
for _, item in pairs (jungleitem) do
item.slot = GetInventorySlotItem(item.id)
if item.slot then
if item.id == 3715 or item.id == 3706 or item.id == 1412 or item.id == 1400 then
CastSpell(Smite, target)
end
end
end
end
end
if Menu.Combo.E and distance > Q.range * Q.range then
CastE(target)
end
if Menu.Combo.Q then
CastQ(target)
end
if Menu.Combo.W then
CastW(target)
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.R and not Passiv.ready then
CastR()
end
end
end
function Harass()
local target = ts.target
if Menu.Harass.W and ManaCheck(Menu.Harass.ManaW, Menu.Harass.ManaCheck) then
CastW(target)
end
if Menu.Harass.Q and ManaCheck(Menu.Harass.ManaQ, Menu.Harass.ManaCheck) then
CastQ(target)
end
end
function Laneclear()
minions:update()
for _, minions in pairs(minions.objects) do
if minions and ValidTarget(minions) then
if Menu.Laneclear.W and ManaCheck(Menu.Laneclear.ManaW, Menu.Laneclear.ManaCheck) then
CastW(minions)
end
if Menu.Laneclear.Q and ManaCheck(Menu.Laneclear.ManaQ, Menu.Laneclear.ManaCheck) then
CastQ(minions)
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
if minions.name:find("Plant") then
return
end
if minions and ValidTarget(minions) then
if Menu.Jungleclear.W and ManaCheck(Menu.Jungleclear.ManaW, Menu.Jungleclear.ManaCheck) then
CastW(minions)
end
if Menu.Jungleclear.Q and ManaCheck(Menu.Jungleclear.ManaQ, Menu.Jungleclear.ManaCheck) then
CastQ(minions)
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.05))
if Ignite and isReady(Ignite) then
local iDamage = (50 + (20 * mylvl))
if enemy ~= nil and enemy.valid and GetDistanceSqr(enemy) < 600 * 600 and realHPi <= iDamage then
CastSpell(Ignite, enemy)
end
elseif Menu.Killsteal.Q and isReady(_Q) then
if enemy ~= nil and enemy.valid and GetDistanceSqr(enemy) < Q.range * Q.range and realHPi <= GetDamage(_Q, enemy) then
CastQ(enemy)
end
elseif Menu.Killsteal.W and isReady(_W) then
if enemy ~= nil and enemy.valid and GetDistanceSqr(enemy) < W.range * W.range and realHPi <= GetDamage(_W, enemy) then
CastW(enemy)
end
elseif Menu.Killsteal.E and isReady(_E) then
if enemy ~= nil and enemy.valid and GetDistanceSqr(enemy) < E.range * E.range and realHPi <= GetDamage(_E, enemy) then
CastE(enemy)
end
end
end
end
function CheckJungle()
if Smite then
if Menu.SmiteUse.UseSmite then
if isReady(Smite) then
jungleMinions:update()
for _, monster in pairs(jungleMinions.objects) do
if monster.charName == "SRU_Baron" or monster.charName == "SRU_Dragon_Water" or monster.charName == "SRU_Dragon_Fire" or monster.charName == "SRU_Dragon_Earth" or monster.charName == "SRU_Dragon_Air" or monster.charName == "SRU_Dragon_Elder" or monster.charName == "SRU_RiftHerald" then
if monster ~= nil and GetDistanceSqr(monster) <= 560 * 560 and monster.health <= GetSmiteDamage() then
CastSpell(Smite, monster)
end
end
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 CheckBush()
if IsGrass(D3DXVECTOR3(myHero.x, myHero.y, myHero.z)) and R.evo then
local bushID = nil
local bushDistance = math.huge
for i, bush in pairs(bushList) do
local localDistance = GetDistance(D3DXVECTOR3(bush.x, bush.y, bush.z))
if localDistance < bushDistance then
bushID = i
bushDistance = localDistance
end
end
if bushList[bushID] and bushList[bushID].cd < GetGameTimer() then
bushList[bushID].cd = GetGameTimer() + 10
end
end
end
function OnUpdateBuff(unit, buff)
if unit and unit.isMe and buff and buff.valid then
if buff.name == "KhazixQEvo" then
Q.evo = true
Q.range = 375
DelayAction(function()PrintMsg("Reaper Claws Evolved!") end, 2)
elseif buff.name == "KhazixWEvo" then
W.evo = true
DelayAction(function()PrintMsg("Spike Racks Evolved!") end, 2)
elseif buff.name == "KhazixEEvo" then
E.evo = true
E.range = 900
DelayAction(function()PrintMsg("Wings Evolved!") end, 2)
DelayAction(function()UPL:AddSpell(_E, { speed = E.speed, delay = E.delay, range = E.range, width = E.width, collision = false, aoe = true, type = "circular" }) end, 0.5)
elseif buff.name == "KhazixREvo" then
R.evo = true
DelayAction(function()PrintMsg("Adaptive Cloaking Evolved!") end, 2)
elseif buff.name == "khazixrevostealth" then
OutOfCombat = true
end
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 unit.isMe then
if buff.name == "KhazixPDamage" then
Passiv.ready = false
elseif buff.name == "khazixrevostealth" then
OutOfCombat = false
end
end
end
---------------------------------------------------------------------------------
--[[OnLoad]]--
---------------------------------------------------------------------------------
function OnLoad()
DelayAction(function()PrintMsg("Welcome "..GetUser()..", Have Fun and Good Luck !") end, 0.5)
Menu()
StartSkin()
target = GetCustomTarget()
for i = 1, myHero.buffCount do
local buff = myHero:getBuff(i)
if buff and buff.valid then
if buff.name == "KhazixQEvo" then
Q.evo = true
Q.range = 375
DelayAction(function()PrintMsg("Reaper Claws Evolved!") end, 0.5)
elseif buff.name == "KhazixWEvo" then
W.evo = true
DelayAction(function()PrintMsg("Spike Racks Evolved!") end, 0.5)
elseif buff.name == "KhazixEEvo" then
E.evo = true
E.range = 900
DelayAction(function()PrintMsg("Wings Evolved!") end, 0.5)
DelayAction(function()UPL:AddSpell(_E, { speed = E.speed, delay = E.delay, range = E.range, width = E.width, collision = false, aoe = true, type = "circular" }) end, 0.5)
elseif buff.name == "KhazixREvo" then
R.evo = true
DelayAction(function()PrintMsg("Adaptive Cloaking Evolved!") end, 0.5)
elseif buff.name == "khazixrevostealth" then
OutOfCombat = true
end
end
end
end
---------------------------------------------------------------------------------
--[[OnTick]]--
---------------------------------------------------------------------------------
function OnTick()
if myHero.dead then
return
end
CheckJungle()
GetCustomTarget()
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
if ultPassiveAvailable then
CheckBush()
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 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.drawWrange and isReady(_W) then
DrawCircle2(myHero.x, myHero.y, myHero.z, W.range, ARGB(Menu.Draw.Wcolor[1], Menu.Draw.Wcolor[2], Menu.Draw.Wcolor[3], Menu.Draw.Wcolor[4]))
elseif Menu.Draw.drawWrange and not isReady(_W) and isLevel(_W) then
DrawCircle2(myHero.x, myHero.y, myHero.z, W.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
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.drawWrange and isReady(_W) then
DrawCircle(myHero.x, myHero.y, myHero.z, W.range, ARGB(Menu.Draw.Wcolor[1], Menu.Draw.Wcolor[2], Menu.Draw.Wcolor[3], Menu.Draw.Wcolor[4]))
elseif Menu.Draw.drawWrange and not isReady(_W) and isLevel(_W) then
DrawCircle(myHero.x, myHero.y, myHero.z, W.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
end
if R.evo and Menu.Draw.drawBrush then
for _, bush in pairs(bushList) do
local bushCd = (bush.cd - GetGameTimer())
if bushCd > 0 and OutOfCombat then
DrawText3D("Ready in "..math.floor(bushCd).."s", bush.x-50, bush.y, bush.z, 25, ARGB(Menu.Draw.drawBrushColor[1], Menu.Draw.drawBrushColor[2], Menu.Draw.drawBrushColor[3], Menu.Draw.drawBrushColor[4]))
elseif not OutOfCombat then
DrawText3D("Get Out of Combat", bush.x-50, bush.y, bush.z, 25, ARGB(Menu.Draw.drawBrushColor[1], Menu.Draw.drawBrushColor[2], Menu.Draw.drawBrushColor[3], Menu.Draw.drawBrushColor[4]))
else
DrawText3D("Ready", bush.x-50, bush.y, bush.z, 25, ARGB(Menu.Draw.drawBrushColor[1], Menu.Draw.drawBrushColor[2], Menu.Draw.drawBrushColor[3], Menu.Draw.drawBrushColor[4]))
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