if myHero.charName ~= "Sivir" then return end --[[ /$$$$$$$$ /$$ /$$ /$$ /$$ /$$$$$$ /$$ /$$ | $$_____/ | $$ | $$ |__/| $$ /$$__ $$|__/ |__/ | $$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$| $$ /$$ | $$ \__/ /$$ /$$ /$$ /$$ /$$$$$$ | $$$$$|____ $$| $$__ $$|_ $$_/ |____ $$ /$$_____/|_ $$_/ | $$| $$ /$$/ | $$$$$$ | $$| $$ /$$/| $$ /$$__ $$ | $$__/ /$$$$$$$| $$ \ $$ | $$ /$$$$$$$| $$$$$$ | $$ | $$| $$$$$$/ \____ $$| $$ \ $$/$$/ | $$| $$ \__/ | $$ /$$__ $$| $$ | $$ | $$ /$$ /$$__ $$ \____ $$ | $$ /$$| $$| $$_ $$ /$$ \ $$| $$ \ $$$/ | $$| $$ | $$ | $$$$$$$| $$ | $$ | $$$$/| $$$$$$$ /$$$$$$$/ | $$$$/| $$| $$ \ $$ | $$$$$$/| $$ \ $/ | $$| $$ |__/ \_______/|__/ |__/ \___/ \_______/|_______/ \___/ |__/|__/ \__/ \______/ |__/ \_/ |__/|__/ Credits: Fantastik - Scripting the most parts, original creator CrazyDud - Ideas, helping me to create QQQ - Also helping, fixing problems and teaching me stuff Honda7 - Common Honda7 stuff Anyone else that I might have forgotten How to install: Go to Custom Scripts tab and press New Script. Paste the script inside there and click Save Script. !ATTENTION!: Name it exactly "Fantastik Sivir". Features: Key | What it does ------------------------------------------------------------------------------------ Spacebar | Combo key - Uses Q, W and R. Spell usage can be disabled. ------------------------------------------------------------------------------------ C | Poke key - Uses Q to poke the enemy. Can be disabled. ------------------------------------------------------------------------------------ X | Last Hit - Last hits the minions with AA. ------------------------------------------------------------------------------------ C | Mixed Mode - Both last hit and poke. ------------------------------------------------------------------------------------ V | Lane Clear - Lane clear with AA, Q and W. ------------------------------------------------------------------------------------ Other features: * Free users & VIP users support! * Slice for minimum amount of enemies for R! * Slice for Q range! * Slice for mana manager for combo! * Smart lane clear using Q! * Slice for mana manager for farm! * Evadeee integration for E! * Auto Ignite in combo and if killable(KS)! * Auto Q kill if killable! * In-Game skin changer(Sadly VIP only)! * Auto level spells! * Text Drawing for targets * More to come soon! Changelog: * v 2.8 Fixed random spam on load Added Pewalk & MMA support Added Click target select Fixed minor bugs * v 2.73 FHPrediction support! * v 2.72 Removed Skin hacks * v 2.7 Fixed W usage Fixed Auto-E hopefully * v 2.5 Fixed AA cancel Perfected Auto-E usage. * v 2.25 Added SxOrb instead of SOW Removed level spell for now * v 2.2 Removed Skin Hack Added tracker * v 2 Added Auto-E shield * v 1.1 Removed BoL Tracker Added HitChance for Q Poke Added choose Q target * v 1 Added Packet casting for VIP users Improved hitchance, it shall be working better * v 0.97 Fixed Auto Ignite for 4.15 Now can name the script file however you like * v 0.96 Added Mana slider for Poke Changed Poke key to C * v 0.95 Added SAC and MMA support! Fixed Q not casting through minions! * v 0.94 Added In-Game announcer! * v 0.93 Added BoL Tracker, will check script runs. * v 0.9 Added text drawing for targets * v 0.82 Fixed a mistype error. * v 0.81 Remade Auto Level Spell function to a better one. * v 0.8 Added Manual HitChance settings Added use W on Lane Clear Fixed a little mistype on Poke * v 0.65 Fixed the range of Q which would change instead of only Combo Minor improvements * v 0.6 Added In-Game skin changer, thanks to shalzuth Added Auto spell leveler * v 0.5 Added Q for farm, will check for best pos to Q Added Q farm mana manager * v 0.4 Added AA reset with W * v 0.3 Combo Q fix for free users. Added reqiured Libs download. * v 0.2: Added Auto Update Minor fixes Improvements * v 0.1: Release ]] assert(load(Base64Decode("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"), nil, "bt", _ENV))() ScriptStatus("WJMKLIOPPQL") --[[ Auto Update ]] require "VPrediction" local sversion = "2.8" local AUTOUPDATE = true local UPDATE_HOST = "raw.github.com" local UPDATE_PATH = "/BoLFantastik/BoL/master/Fantastik Sivir.lua".."?rand="..math.random(1,10000) local UPDATE_FILE_PATH = SCRIPT_PATH..GetCurrentEnv().FILE_NAME local UPDATE_URL = "https://"..UPDATE_HOST..UPDATE_PATH function AutoupdaterMsg(msg) print("Fantastik Sivir: "..msg..".") end if AUTOUPDATE then local ServerData = GetWebResult(UPDATE_HOST, "/BoLFantastik/BoL/master/version/Fantastik Sivir.version") if ServerData then ServerVersion = type(tonumber(ServerData)) == "number" and tonumber(ServerData) or nil if ServerVersion then if tonumber(sversion) < ServerVersion then AutoupdaterMsg("New version available"..ServerVersion) AutoupdaterMsg("Updating, please don't press F9") DelayAction(function() DownloadFile(UPDATE_URL, UPDATE_FILE_PATH, function () AutoupdaterMsg("Successfully updated. ("..sversion.." => "..ServerVersion.."), press F9 twice to load the updated version.") end) end, 3) else AutoupdaterMsg("You have got the latest version ("..ServerVersion..")") end end else AutoupdaterMsg("Error downloading version info") end end --[[ Code ]] local sauthor = "Fantastik" local QREADY, WREADY, EREADY, RREADY = false local Qrange, Qwidth, Qspeed, Qdelay = 1075, 85, 1350, 0.250 local Rrange = 1000 local ignite = nil local iDmg = 0 local target = nil local ts local ts = TargetSelector(TARGET_LESS_CAST_PRIORITY, Qrange, DAMAGE_PHYSICAL, true) local Announcer = "" local isSX = false local isSAC = false local isPEW = false local isMMA = false local Spells = {_Q,_W,_E,_R} local Spells2 = {"Q","W","E","R"} local informationTable = {} local spellExpired = true local SelectedTarget = nil --[[ Drawings ]] TextList = {"Poke", "1 AA kill!", "2 AA kill!", "3 AA kill!", "Q kill!", "Q + 1 AA kill!", "Q + 2 AA kill!", "Q + 3 AA kill!", "Q + 4 AA kill!"} KillText = {} colorText = ARGB(255,255,204,0) ---------------------------------------------- function GetCustomTarget() ts:update() if SelectedTarget ~= nil and ValidTarget(SelectedTarget, 1200) then return SelectedTarget elseif _G.Reborn_Loaded and _G.AutoCarry and _G.AutoCarry.Crosshair and ValidTarget(_G.AutoCarry.Crosshair:GetTarget()) then return _G.AutoCarry.Crosshair:GetTarget(1200) elseif _G.MMA_IsLoaded and ValidTarget(_G.MMA_Target()) then return _G.MMA_Target(1200) elseif _Pewalk and ValidTarget(_Pewalk.GetTarget()) then return _Pewalk.GetTarget(1200) elseif not _G.Reborn_Loaded or not _G.MMA_IsLoaded or not _Pewalk then return ts.target end --end end function OnLoad() PrintChat("Fantastik Sivir version ["..sversion.."] by Fantastik loaded.") DelayAction(function() if _G.Reborn_Loaded then PrintChat("[Fantastik Sivir] SAC Status: Successfully integrated. ") SivMenu:addParam("SACON","[Sivir] SAC:R support is active.", 5, "") isSAC = true elseif _G.MMA_IsLoaded then PrintChat("[Fantastik Sivir] MMA Status: Successfully integrated. ") SivMenu:addParam("MMAON","[Sivir] MMA support is active.", 5, "") isMMA = true elseif _Pewalk then PrintChat("[Fantastik Sivir] Pewalk Status: Successfully integrated. ") SivMenu:addParam("PEWON","[Sivir] Pewalk support is active.", 5, "") isPEW = true elseif not _G.Reborn_Loaded or not _G.MMA_IsLoaded or not _Pewalk then require "SxOrbwalk" PrintChat("[Fantastik Sivir] Orbwalker not found: SxOrbWalk integrated. ") SivMenu:addSubMenu("Orbwalker", "SxOrb") SxOrb:LoadToMenu(SivMenu.SxOrb) isSX = true end end, 10) if _G.Evadeee_Loaded then PrintChat("Evadeee found! You can use Evadeee integration!") _G.Evadeee_Enabled = true end IgniteCheck() SLoadLib() Announcer() end function OnTick() target = GetCustomTarget() if isSX then SxOrb:ForceTarget(target) end Checks() if ValidTarget(target) and target.type == myHero.type then if SivMenu.Extra.KS then KS(target) end if SivMenu.Extra.Ignite then AutoIgnite(target) end end if SivMenu.combokey then Combo() end if SivMenu.pokekey then Poke() end if SivMenu.farmkey then FarmQ() FarmW() end if SivMenu.Extra.Evade then EvadeeeHelper() end end function Checks() QREADY = (myHero:CanUseSpell(_Q) == READY) WREADY = (myHero:CanUseSpell(_W) == READY) EREADY = (myHero:CanUseSpell(_E) == READY) RREADY = (myHero:CanUseSpell(_R) == READY) IREADY = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY) Qrangec = SivMenu.Combo.Qrangemin SpellExpired() if SivMenu.Extra.autolev.enabled then -- AutoLevel() end calcDmg() end function IgniteCheck() if myHero:GetSpellData(SUMMONER_1).name:find("summonerdot") then ignite = SUMMONER_1 elseif myHero:GetSpellData(SUMMONER_2).name:find("summonerdot") then ignite = SUMMONER_2 end end function SLoadLib() EnemyMinions = minionManager(MINION_ENEMY, Qrange, myHero, MINION_SORT_MAXHEALTH_DEC) VP = VPrediction(true) SMenu() CurSkin = 0 end function SMenu() SivMenu = scriptConfig("Fantastik Sivir", "Sivir") SivMenu:addParam("combokey", "Combo key(Space)", SCRIPT_PARAM_ONKEYDOWN, false, 32) SivMenu:addParam("pokekey", "Poke key(C)", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("C")) SivMenu:addParam("farmkey", "Farm key(V)", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("V")) SivMenu:addParam("Version", "Version", SCRIPT_PARAM_INFO, sversion) SivMenu:addParam("Author", "Author", SCRIPT_PARAM_INFO, sauthor) SivMenu:addTS(ts) SivMenu:addSubMenu("Combo", "Combo") SivMenu.Combo:addParam("comboQ", "Use Q", SCRIPT_PARAM_ONOFF, true) SivMenu.Combo:addSubMenu("Use Q on:", "targets") for _, enemy in ipairs(GetEnemyHeroes()) do SivMenu.Combo.targets:addParam(enemy.charName, enemy.charName, SCRIPT_PARAM_ONOFF, true) end SivMenu.Combo:addParam("Qrangemin", "Min. range for Q ", SCRIPT_PARAM_SLICE, 950, 600, 1075, 0) SivMenu.Combo:addParam("comboW", "Use W", SCRIPT_PARAM_ONOFF, true) SivMenu.Combo:addParam("comboR", "Use R", SCRIPT_PARAM_ONOFF, true) SivMenu.Combo:addParam("minEnemiesR", "Min. no. of enemies for R ", SCRIPT_PARAM_SLICE, 1, 1, 5, 0) SivMenu.Combo:addParam("manapls", "Min. % mana for spells ", SCRIPT_PARAM_SLICE, 30, 1, 100, 0) SivMenu:addSubMenu("Poke", "Poke") SivMenu.Poke:addParam("pokeQ", "Use Q", SCRIPT_PARAM_ONOFF, true) SivMenu.Poke:addParam("manapls", "Min. % mana for spells ", SCRIPT_PARAM_SLICE, 30, 1, 100, 0) SivMenu:addSubMenu("Farm", "Farm") SivMenu.Farm:addParam("farmQ", "Use Q", SCRIPT_PARAM_ONOFF, true) SivMenu.Farm:addParam("farmW", "Use W", SCRIPT_PARAM_ONOFF, true) SivMenu.Farm:addParam("manafarm", "Min. % mana to farm", SCRIPT_PARAM_SLICE, 30, 1, 100, 0) SivMenu:addSubMenu("Drawing", "Drawing") SivMenu.Drawing:addParam("DrawQ", "Draw Q Range", SCRIPT_PARAM_ONOFF, true) SivMenu.Drawing:addParam("DrawT", "Draw Text", SCRIPT_PARAM_ONOFF, true) if isSX then SivMenu:addSubMenu("Orbwalker", "SxOrb") SxOrb:LoadToMenu(SivMenu.SxOrb) end SivMenu:addSubMenu("Extra", "Extra") SivMenu.Extra:addParam("KS", "Auto Killsteal", SCRIPT_PARAM_ONOFF, true) SivMenu.Extra:addParam("Ignite", "Use Auto Ignite", SCRIPT_PARAM_ONOFF, true) SivMenu.Extra:addParam("Hitchance", "Hitchance Combo", SCRIPT_PARAM_LIST, 2, {"LOW", "MEDIUM"}) SivMenu.Extra:addParam("HitchanceP", "Hitchance Poke", SCRIPT_PARAM_LIST, 2, {"LOW", "MEDIUM"}) if FHPrediction then SivMenu.Extra:addParam("Prediction", "Prediction", SCRIPT_PARAM_LIST, 2, {"VPrediction", "FHPrediction"}) end SivMenu.Extra:addParam("Target", "Use Click target lock", SCRIPT_PARAM_ONOFF, true) SivMenu.Extra:addSubMenu("Auto level spells", "autolev") SivMenu.Extra.autolev:addParam("enabled", "Enable auto level spells", SCRIPT_PARAM_ONOFF, false) SivMenu.Extra.autolev:addParam("lvlseq", "Select your auto level sequence: ", SCRIPT_PARAM_LIST, 1, {"R>Q>W>E", "R>W>Q>E", "R>E>Q>W"}) -- SivMenu.Extra:addSubMenu("Skin Hack - VIP ONLY/Not Working", "skinhax") -- SivMenu.Extra.skinhax:addParam("enabled", "Enable Skin Hack", SCRIPT_PARAM_ONOFF, false) -- SivMenu.Extra.skinhax:addParam("skinid", "Choose skin: ", SCRIPT_PARAM_LIST, 1, {"No Skin", "Warrior Princess", "Spectacular", "Huntress", "Bandit", "PAX", "Snowstorm"}) if _G.Evadeee_Loaded then SivMenu.Extra:addParam("Evade", "Use Evadeee Integration", SCRIPT_PARAM_ONOFF, true) end SivMenu.Extra:addSubMenu("Auto E settings", "ESet") SivMenu.Extra.ESet:addParam("enabled", "Use Auto E", SCRIPT_PARAM_ONOFF, true) SivMenu:permaShow("combokey") SivMenu:permaShow("pokekey") SivMenu:permaShow("farmkey") end function KS(Target) if QREADY and getDmg("Q", Target, myHero) > Target.health then local CastPos = VP:GetLineCastPosition(Target, Qdelay, Qwidth, Qrange, Qspeed, myHero, false) if GetDistance(Target) <= Qrange and QREADY and ValidTarget(Target) then if FHPrediction and SivMenu.Extra.Prediction == 2 then local pos, hc, info = FHPrediction.GetPrediction("Q", target) if hc > 0 then CastSpell(_Q, pos.x, pos.z) end else CastSpell(_Q, CastPos.x, CastPos.z) end end end end function AutoIgnite(enemy) iDmg = ((IREADY and getDmg("IGNITE", enemy, myHero)) or 0) if enemy.health <= iDmg and GetDistance(enemy) <= 600 and ignite ~= nil then if IREADY then CastSpell(ignite, enemy) end end end function EvadeeeHelper() if _G.Evadeee_impossibleToEvade then CastSpell(_E) end end function Combo() if ValidTarget(target) and ManaManager() then if QREADY and SivMenu.Combo.comboQ and SivMenu.Combo.targets[target.charName] then local CastPosition, HitChance, CastPos = VP:GetLineCastPosition(target, Qdelay, Qwidth, Qrangec, Qspeed, myHero, false) if HitChance >= SivMenu.Extra.Hitchance and GetDistance(CastPosition) <= Qrangec and QREADY then if FHPrediction and SivMenu.Extra.Prediction == 2 then local pos, hc, info = FHPrediction.GetPrediction("Q", target) if hc > 0 then CastSpell(_Q, pos.x, pos.z) end else CastSpell(_Q, CastPosition.x, CastPosition.z) end end end if RREADY and SivMenu.Combo.comboR and GetDistance(target) <= 600 then CastR() end end end function Poke() if ValidTarget(target) and ManaManagerPoke() then if SivMenu.Poke.pokeQ and QREADY and SivMenu.Combo.targets[target.charName] then local CastPosition, HitChance, CastPos = VP:GetLineCastPosition(target, Qdelay, Qwidth, Qrange, Qspeed, myHero, false) if HitChance >= SivMenu.Extra.HitchanceP and GetDistance(CastPosition) <= Qrange and QREADY then if FHPrediction and SivMenu.Extra.Prediction == 2 then local pos, hc, info = FHPrediction.GetPrediction("Q", target) if hc > 0 then CastSpell(_Q, pos.x, pos.z) end else CastSpell(_Q, CastPosition.x, CastPosition.z) end end end end end function GetBestQPositionFarm() local MaxQPos local MaxQ = 0 for i, minion in pairs(EnemyMinions.objects) do local hitQ = CountMinionsHit(minion) if hitQ > MaxQ or MaxQPos == nil then MaxQPos = minion MaxQ = hitQ end end if MaxQPos then return MaxQPos else return nil end end function CastQFarm(to) CastSpell(_Q, to.x, to.z) end function FarmQ() if ManaManagerFarm() then EnemyMinions:update() if SivMenu.Farm.farmQ then if QREADY and #EnemyMinions.objects > 3 then for i, minion in pairs(EnemyMinions.objects) do if GetDistance(minion) < Qrange then local QPos = GetBestQPositionFarm() if QPos then CastQFarm(QPos) end end end end end end end function FarmW() if ManaManagerFarm() then EnemyMinions:update() if SivMenu.Farm.farmW then if WREADY and #EnemyMinions.objects > 3 then for i, minion in pairs(EnemyMinions.objects) do if GetDistance(minion) < 500 then CastSpell(_W) end end end end end end function OnProcessAttack(unit, spell) if unit == myHero and spell.name:lower():find("attack") then if SivMenu.combokey and WREADY and SivMenu.Combo.comboW and GetDistance(target) <= 600 then DelayAction(function() CastSpell(_W) end, spell.windUpTime + GetLatency() / 2000) end end end function OnProcessSpell(unit, spell) if SivMenu.Extra.ESet.enabled and EREADY then local jarvanAddition = unit.charName == "JarvanIV" and unit:CanUseSpell(_Q) ~= READY and _R or _Q local isUnit = { ['Aatrox'] = {true, spell = _Q, range = 1000, projSpeed = 1200, }, ['Aatrox'] = {true, spell = _E, range = 1000, projSpeed = 1000, }, ['Ahri'] = {true, spell = _E, range = 950, projSpeed = 1500, }, ['Amumu'] = {true, spell = _Q, range = 1100, projSpeed = 2000, }, ['Amumu'] = {true, spell = _R, range = 550, projSpeed = math.huge, }, ['Anivia'] = {true, spell = _Q, range = 1075, projSpeed = 850, }, ['Annie'] = {true, spell = _Q, range = 625, projSpeed = math.huge, }, ['Annie'] = {true, spell = _W, range = 625, projSpeed = math.huge, }, ['Akali'] = {true, spell = _R, range = 800, projSpeed = 2200, }, ['Alistar'] = {true, spell = _W, range = 650, projSpeed = 2000, }, ['Ashe'] = {true, spell = _R, range = 20000, projSpeed = 1600, }, ['Azir'] = {true, spell = _R, range = 500, projSpeed = 1600, }, ['Blitzcrank'] = {true, spell = _Q, range = 925, projSpeed = 1800, }, ['Brand'] = {true, spell = _R, range = 750, projSpeed = 780, }, ['Braum'] = {true, spell = _R, range = 1250, projSpeed = 1600, }, ['Caitlyn'] = {true, spell = _R, range = 3000, projSpeed = math.huge, }, ['Cassiopeia'] = {true, spell = _R, range = 825, projSpeed = math.huge, }, ['Chogath'] = {true, spell = _Q, range = 950, projSpeed = math.huge, }, ['Corki'] = {true, spell = _Q, range = 825, projSpeed = 1125, }, ['Diana'] = {true, spell = _R, range = 825, projSpeed = 2000, }, ['Darius'] = {true, spell = _E, range = 540, projSpeed = 1500, }, ['Darius'] = {true, spell = _R, range = 480, projSpeed = math.huge, }, ['Ezrael'] = {true, spell = _R, range = 20000, projSpeed = 2000, }, ['Fiora'] = {true, spell = _R, range = 400, projSpeed = math.huge, }, ['Fizz'] = {true, spell = _R, range = 1200, projSpeed = 1200, }, ['Gangplank'] = {true, spell = _Q, range = 620, projSpeed = math.huge, }, ['Gragas'] = {true, spell = _E, range = 600, projSpeed = 2000, }, ['Gragas'] = {true, spell = _R, range = 800, projSpeed = 1300, }, ['Graves'] = {true, spell = _R, range = 1100, projSpeed = 2100, }, ['Hecarim'] = {true, spell = _R, range = 1000, projSpeed = 1200, }, --['Irelia'] = {true, spell = _Q, range = 650, projSpeed = 2200, }, ['Irelia'] = {true, spell = _E, range = 425, projSpeed = math.huge, }, ['JarvanIV'] = {true, spell = jarvanAddition, range = 770, projSpeed = 2000, }, ['Jax'] = {true, spell = _E, range = 250, projSpeed = math.huge, }, ['Jayce'] = {true, spell = 'JayceToTheSkies', range = 600, projSpeed = 2000, }, ['Jinx'] = {true, spell = _R, range = 20000, projSpeed = 1700, }, ['Kayle'] = {true, spell = _Q, range = 600, projSpeed = math.huge, }, ['Kennen'] = {true, spell = _Q, range = 1000, projSpeed = 1700, }, ['Khazix'] = {true, spell = _E, range = 900, projSpeed = 2000, }, ['Leblanc'] = {true, spell = _W, range = 600, projSpeed = 2000, }, ['LeeSin'] = {true, spell = 'blindmonkqtwo', range = 1300, projSpeed = 1800, }, ['Leona'] = {true, spell = _E, range = 900, projSpeed = 2000, }, ['Leona'] = {true, spell = _R, range = 1100, projSpeed = math.huge, }, ['Lulu'] = {true, spell = _Q, range = 950, projSpeed = 1600, }, ['Lux'] = {true, spell = _Q, range = 1300, projSpeed = 1200, }, ['Malphite'] = {true, spell = _R, range = 1000, projSpeed = 1500 + unit.ms}, ['Maokai'] = {true, spell = _Q, range = 600, projSpeed = 1200, }, ['MonkeyKing'] = {true, spell = _E, range = 650, projSpeed = 2200, }, ['Morgana'] = {true, spell = _Q, range = 1175, projSpeed = 1200, }, ['Nocturne'] = {true, spell = _R, range = 2000, projSpeed = 500, }, ['Orianna'] = {true, spell = _Q, range = 825, projSpeed = 1200, }, ['Pantheon'] = {true, spell = _W, range = 600, projSpeed = 2000, }, ['Poppy'] = {true, spell = _E, range = 525, projSpeed = 2000, }, ['Renekton'] = {true, spell = _E, range = 450, projSpeed = 2000, }, ['Sejuani'] = {true, spell = _Q, range = 650, projSpeed = 2000, }, ['Shen'] = {true, spell = _E, range = 575, projSpeed = 2000, }, ['Tristana'] = {true, spell = _W, range = 900, projSpeed = 2000, }, ['Tryndamere'] = {true, spell = 'Slash', range = 650, projSpeed = 1450, }, ['Twistedfate'] = {true, spell = _W, range = 525, projSpeed = math.huge, }, ['Vayne'] = {true, spell = _E, range = 550, projSpeed = math.huge, }, ['Veigar'] = {true, spell = _R, range = 700, projSpeed = math.huge, }, ['Vi'] = {true, spell = _R, range = 600, projSpeed = 1200, }, ['Xerath'] = {true, spell = _E, range = 1000, projSpeed = 1200, }, ['XinZhao'] = {true, spell = _E, range = 650, projSpeed = 2000, }, ['Zyra'] = {true, spell = _E, range = 1175, projSpeed = 1400, }, ['Swain'] = {true, spell = _W, range = 900, projSpeed = math.huge, }, } if unit.type == myHero.type and unit.team ~= myHero.team and isUnit[unit.charName] and GetDistance(unit) < 2000 and spell ~= nil then if spell.name == (type(isUnit[unit.charName].spell) == 'number' and unit:GetSpellData(isUnit[unit.charName].spell).name or isUnit[unit.charName].spell) then if spell.target ~= nil and spell.target.isMe or isUnit[unit.charName].spell == 'blindmonkqtwo' then if EREADY then CastSpell(_E) end else spellExpired = false informationTable = { spellSource = unit, spellCastedTick = GetTickCount(), spellStartPos = Point(spell.startPos.x, spell.startPos.z), spellEndPos = Point(spell.endPos.x, spell.endPos.z), spellRange = isUnit[unit.charName].range, spellSpeed = isUnit[unit.charName].projSpeed } end end end end end function SpellExpired() if ValidTarget(target) then if SivMenu.Extra.ESet.enabled and not spellExpired and (GetTickCount() - informationTable.spellCastedTick) <= (informationTable.spellRange / informationTable.spellSpeed) * 1000 then local spellDirection = (informationTable.spellEndPos - informationTable.spellStartPos):normalized() local spellStartPosition = informationTable.spellStartPos + spellDirection local spellEndPosition = informationTable.spellStartPos + spellDirection * informationTable.spellRange local heroPosition = Point(myHero.x, myHero.z) local lineSegment = LineSegment(Point(spellStartPosition.x, spellStartPosition.y), Point(spellEndPosition.x, spellEndPosition.y)) local lineSegment = LineSegment(Point(spellStartPosition.x, spellStartPosition.y), Point(spellEndPosition.x, spellEndPosition.y)) if lineSegment:distance(heroPosition) <= 350 and EREADY then CastSpell(_E) end else spellExpired = true informationTable = {} end end end function ManaManagerFarm() if myHero.mana >= myHero.maxMana * (SivMenu.Farm.manafarm / 100) then return true else return false end end function ManaManager() if myHero.mana >= myHero.maxMana * (SivMenu.Combo.manapls / 100) then return true else return false end end function ManaManagerPoke() if myHero.mana >= myHero.maxMana * (SivMenu.Poke.manapls / 100) then return true else return false end end function CastR() if SivMenu.Combo.minEnemiesR <= CountEnemyHeroInRange(600) then CastSpell(_R) end end function CountMinionsHit(QPos) local LineEnd = Vector(myHero) + Qrange * (Vector(QPos) - Vector(myHero)):normalized() local n = 0 for i, minion in pairs(EnemyMinions.objects) do local pointSegment, pointLine, isOnSegment = VectorPointProjectionOnLineSegment(Vector(myHero), LineEnd, minion) if isOnSegment and GetDistance(minion, pointSegment) <= 85*1.25 then n = n + 1 end end return n end function AutoLevel() if SivMenu.Extra.autolev.lvlseq == 1 then seq = {1, 2, 1, 3, 1, 4, 1, 2, 1, 2, 4, 2, 2, 3, 3, 4, 3, 3} elseif SivMenu.Extra.autolev.lvlseq == 2 then seq = {2, 1, 2, 3, 2, 4, 2, 1, 2, 1, 4, 1, 1, 3, 3, 4, 3, 3} elseif SivMenu.Extra.autolev.lvlseq == 3 then seq = {3, 1, 3, 2, 3, 4, 3, 1, 3, 1, 4, 1, 1, 2, 2, 4, 2, 2,} end autoLevelSetSequence(seq) end function SkinHack() if SivMenu.Extra.skinhax.enabled and CurSkin ~= SivMenu.Extra.skinhax.skinid then local SkinIdSwap = { [1] = 7, [2] = 1, [3] = 2, [4] = 3, [5] = 4, [6] = 5, [7] = 6 } CurSkin = SivMenu.Extra.skinhax.skinid SkinChanger(myHero.charName, SkinIdSwap[CurSkin]) end end function SkinChanger(champ, skinId) -- Credits to shalzuth p = CLoLPacket(0x97) p:EncodeF(myHero.networkID) p.pos = 1 t1 = p:Decode1() t2 = p:Decode1() t3 = p:Decode1() t4 = p:Decode1() p:Encode1(t1) p:Encode1(t2) p:Encode1(t3) p:Encode1(bit32.band(t4,0xB)) p:Encode1(1) p:Encode4(skinId) for i = 1, #champ do p:Encode1(string.byte(champ:sub(i,i))) end for i = #champ + 1, 64 do p:Encode1(0) end p:Hide() RecvPacket(p) end function calcDmg() for i=1, heroManager.iCount do local target = heroManager:GetHero(i) if ValidTarget(target) and target ~= nil then qDmg = ((QREADY and getDmg("Q", target, myHero)) or 0) aDmg = ((getDmg("AD", target, myHero)) or 0) aDmg2 = (aDmg * 2) aDmg3 = (aDmg * 3) aDmg4 = (aDmg * 4) if target.health > (qDmg + aDmg4) then KillText[i] = 1 elseif target.health <= aDmg then KillText[i] = 2 elseif target.health <= aDmg2 then KillText[i] = 3 elseif target.health <= aDmg3 then KillText[i] = 4 elseif target.health <= qDmg then KillText[i] = 5 elseif target.health <= (qDmg + aDmg) then KillText[i] = 6 elseif target.health <= (qDmg + aDmg2) then KillText[i] = 7 elseif target.health <= (qDmg + aDmg3) then KillText[i] = 8 elseif target.health <= (qDmg + aDmg4) then KillText[i] = 9 end end end end -- Oldschool function DrawCircleNextLvl(x, y, z, radius, width, color, chordlength) radius = radius or 300 quality = math.max(8,round(180/math.deg((math.asin((chordlength/(2*radius))))))) quality = 2 * math.pi / quality radius = radius*.92 local points = {} for theta = 0, 2 * math.pi + quality, quality do local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta))) points[#points + 1] = D3DXVECTOR2(c.x, c.y) end DrawLines2(points, width or 1, color or 4294967295) end function round(num) if num >= 0 then return math.floor(num+.5) else return math.ceil(num-.5) end end function DrawCircle2(x, y, z, radius, color) local vPos1 = Vector(x, y, z) local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z) local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z)) if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then DrawCircleNextLvl(x, y, z, radius, 1, color, 80) end end function OnWndMsg(Msg, Key) if Msg == WM_LBUTTONDOWN and SivMenu.Extra.Target then local dist = 0 local Selecttarget = nil for i, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy) and enemy.type == myHero.type then if GetDistance(enemy, mousePos) <= dist or Selecttarget == nil then dist = GetDistance(enemy, mousePos) Selecttarget = enemy end end end if Selecttarget and dist < 300 then if SelectedTarget and Selecttarget.charName == SelectedTarget.charName then if SivMenu.Extra.Target then PrintChat("[Fantastik Sivir] Target Selector Status: New Target DESELECTED: "..SelectedTarget.charName.." ") end SelectedTarget = nil else SelectedTarget = Selecttarget if SivMenu.Extra.Target then PrintChat("[Fantastik Sivir] Target Selector Status: New Target SELECTED: "..SelectedTarget.charName.." ") end end end end end function OnDraw() if SivMenu.Drawing.DrawQ then if QREADY then DrawCircle2(myHero.x, myHero.y, myHero.z, Qrangec, ARGB(0, 0, 255, 0)) end end if SivMenu.Drawing.DrawT then for i = 1, heroManager.iCount do local target = heroManager:GetHero(i) if ValidTarget(target) and target ~= nil then local barPos = WorldToScreen(D3DXVECTOR3(target.x, target.y, target.z)) local PosX = barPos.x - 35 local PosY = barPos.y - 10 DrawText(TextList[KillText[i]], 16, PosX, PosY, colorText) end end end if ValidTarget(SelectedTarget) then DrawCircle(SelectedTarget.x, SelectedTarget.y, SelectedTarget.z, 100, 0xFFFFFF00) end end --[[ Announcer ]] function AnnouncerMsg(msg) print("Fantastik Sivir Announce: "..msg.."") end function Announcer() local Announce local AnnouncerData = GetWebResult(UPDATE_HOST, "/BoLFantastik/BoL/master/Announcer/Fantastik Sivir") if AnnouncerData then Announcer = AnnouncerData or nil if Announcer then AnnouncerMsg(""..Announcer.."") end end end