local version = 2.22
--[[
Shadow Vayne Script by Superx321
Functions:
- AntiCapCloser with Settings
- AutoStunn with Settings
- Autotrinket on Stunn
- Draw E Range
- Interrupt Enemyspells
- Auto-E on Next Basicattack
Thx to Jus and Hellsing for helping
Thx to Manciuszz for his Vayne Script
Thx to Klokje for his interrupt Script
Changelog:
v1.0: -Release
v1.1: -Changed Maokai Capcloser Q -> W
-Changed Jayce Capcloser W -> Q
v1.2: -Added VPrediction for VIP
v1.3: -Fixed Bugsplat on AutoE Basicattack (hopefully)
v1.4: -Found the Bugsplat, Fixed
v1.5: -Autoupdate Added
v1.6: -Fixxed the field nil Error on line 298
v1.7: -Fixxed Autoupdate
v1.8: -Fixxed GetWebResult
v1.9: -Added AutoLevelSpell
v2.0: -Fixed Error on Line 298 (for the 3rd time)
-Changed the AutoUpdater, so u can name the Script whatever u want
-Fixed that it wont AutoE NonTarget Gapcloser (such as Shyvana R)
-Fixed that it wont AutoE LeeSin Second Q
-Fixed Gragas E
-Added Misc Settings Menu
-Added Using VPred to Misc Menu (VIP Only)
-Added Using Packets to Misc Menu (VIP Only)
-Added Kill-E with 3rd Ring
v2.1: -Fixed AutoUpdate
v2.11: -It will only E Champs now
v2.12: -Fixed Autotrinked (Typo)
v2.13: -Changed some Typo's
v2.20: -Changed Stunn-Code from OnTick -> Own Func, for later AddCallBack
-Changed Stunnratio and VP, should now stunn better
-Changed Search-For-Wall logic, should now take less fps
-Fixed Autotrinked complete
-Deactivated "Use E for 3rd Ring Proc Kill", since its Random E sometimes (will Reactivate in next updates)
-Added Misc -> Debug, if u get Random E's, activate it to see why my Script used Condemn
v2.21: -Added Debug for NonTargetGapCloser
v2.22: -Fixed a Bug in the AutoUpdate
]]
if myHero.charName ~= "Vayne" then return end
spellExpired = true
local informationTable = {}
local AAInfoTable = {}
local LastHittedTargetNetworkID, LastHittedTargetStacks, LastHittedTargetTick = nil, nil, 0
local VP = nil
local CastedLastE = 0
local AUTOUPDATE = true
local SHADOWVAYNE_SCRIPT_URL = "https://raw.github.com/Superx321/BoL/master/ShadowVayne.lua?rand="..tostring(math.random(1,10000))
local SHADOWVAYNE_PATH = SCRIPT_PATH..(GetCurrentEnv().FILE_NAME)
local NeedReload = false
if AUTOUPDATE then
math.randomseed(os.time())
local WebResult = GetWebResult("raw.github.com", "/Superx321/BoL/master/ShadowVayne.lua?rand="..tostring(math.random(1,10000)))
if WebResult then
local ServerVersionPos = string.find(WebResult, "local version =")
local ServerVersion = string.sub(WebResult, ServerVersionPos+16, ServerVersionPos+19)
local ServerVersionFinal = math.floor(tonumber(ServerVersion)*100)
local LocalVersionFinal = version*100
if LocalVersionFinal < ServerVersionFinal then
print("ShadowVayne: New Version available, dont press F9 until its finished")
DownloadFile(SHADOWVAYNE_SCRIPT_URL, SHADOWVAYNE_PATH, function () print("ShadowVayne: Updated to newest Version. Please reload with F9") end)
NeedReload = true
else
print("ShadowVayne: No Updates available. Loaded Version "..version.."")
end
end
end
if NeedReload then return end
if VIP_USER then
require "VPrediction"
end
local isAGapcloserUnitTarget = {
['Akali'] = {true, spell = "AkaliShadowDance", spellKey = "R"},
['Alistar'] = {true, spell = "Headbutt", spellKey = "W"},
['Diana'] = {true, spell = "DianaTeleport", spellKey = "R"},
['Irelia'] = {true, spell = "IreliaGatotsu", spellKey = "Q"},
['Jax'] = {true, spell = "JaxLeapStrike", spellKey = "Q"},
['Jayce'] = {true, spell = "JayceToTheSkies", spellKey = "Q"},
['Maokai'] = {true, spell = "MaokaiUnstableGrowth",spellKey = "W"},
['MonkeyKing'] = {true, spell = "MonkeyKingNimbus", spellKey = "E"},
['Pantheon'] = {true, spell = "Pantheon_LeapBash", spellKey = "W"},
['Poppy'] = {true, spell = "PoppyHeroicCharge", spellKey = "E"},
['Quinn'] = {true, spell = "QuinnE", spellKey = "E"},
['XinZhao'] = {true, spell = "XenZhaoSweep", spellKey = "E"},
['LeeSin'] = {true, spell = "blindmonkqtwo", spellKey = "Q"}
}
local isAGapcloserUnitNoTarget = {
["AatroxQ"] = {true, champ = "Aatrox", range = 1000, projSpeed = 1200, spellKey = "Q"},
["GragasE"] = {true, champ = "Gragas", range = 600, projSpeed = 2000, spellKey = "E"},
["GravesMove"] = {true, champ = "Graves", range = 425, projSpeed = 2000, spellKey = "E"},
["HecarimUlt"] = {true, champ = "Hecarim", range = 1000, projSpeed = 1200, spellKey = "R"},
["JarvanIVDragonStrike"] = {true, champ = "JarvanIV", range = 770, projSpeed = 2000, spellKey = "Q"},
["JarvanIVCataclysm"] = {true, champ = "JarvanIV", range = 650, projSpeed = 2000, spellKey = "R"},
["KhazixE"] = {true, champ = "Khazix", range = 900, projSpeed = 2000, spellKey = "E"},
["khazixelong"] = {true, champ = "Khazix", range = 900, projSpeed = 2000, spellKey = "E"},
["LeblancSlide"] = {true, champ = "Leblanc", range = 600, projSpeed = 2000, spellKey = "W"},
["LeblancSlideM"] = {true, champ = "Leblanc", range = 600, projSpeed = 2000, spellKey = "WMimic"},
["LeonaZenithBlade"] = {true, champ = "Leona", range = 900, projSpeed = 2000, spellKey = "E"},
["UFSlash"] = {true, champ = "Malphite", range = 1000, projSpeed = 1800, spellKey = "R"},
["RenektonSliceAndDice"] = {true, champ = "Renekton", range = 450, projSpeed = 2000, spellKey = "E"},
["SejuaniArcticAssault"] = {true, champ = "Sejuani", range = 650, projSpeed = 2000, spellKey = "Q"},
["ShenShadowDash"] = {true, champ = "Shen", range = 575, projSpeed = 2000, spellKey = "E"},
["RocketJump"] = {true, champ = "Tristana", range = 900, projSpeed = 2000, spellKey = "W"},
["slashCast"] = {true, champ = "Tryndamere", range = 650, projSpeed = 1450, spellKey = "E"}
}
local isAChampToInterrupt = {
["KatarinaR"] = {true, champ = "Katarina", spellKey = "R"},
["GalioIdolOfDurand"] = {true, champ = "Galio", spellKey = "R"},
["Crowstorm"] = {true, champ = "FiddleSticks",spellKey = "R"},
["Drain"] = {true, champ = "FiddleSticks",spellKey = "W"},
["AbsoluteZero"] = {true, champ = "Nunu", spellKey = "R"},
["ShenStandUnited"] = {true, champ = "Shen", spellKey = "R"},
["UrgotSwap2"] = {true, champ = "Urgot", spellKey = "R"},
["AlZaharNetherGrasp"] = {true, champ = "Malzahar", spellKey = "R"},
["FallenOne"] = {true, champ = "Karthus", spellKey = "R"},
["Pantheon_GrandSkyfall_Jump"] = {true, champ = "Pantheon", spellKey = "R"},
["VarusQ"] = {true, champ = "Varus", spellKey = "Q"},
["CaitlynAceintheHole"] = {true, champ = "Caitlyn", spellKey = "R"},
["MissFortuneBulletTime"] = {true, champ = "MissFortune", spellKey = "R"},
["InfiniteDuress"] = {true, champ = "Warwick", spellKey = "R"}
}
local AutoLevelSpellTable = {
["SpellOrder"] = {"QWE", "QEW", "WQE", "WEQ", "EQW", "EWQ"},
["QWE"] = {1,2,3,1,1,4,1,2,1,2,4,2,2,3,3,4,3,3},
["QEW"] = {1,3,2,1,1,4,1,3,1,3,4,3,3,2,2,4,2,2},
["WQE"] = {2,1,3,2,2,4,2,1,2,1,4,1,1,3,3,4,3,3},
["WEQ"] = {2,3,1,2,2,4,2,3,2,3,4,3,3,1,1,4,1,1},
["EQW"] = {3,1,2,3,3,4,3,1,3,1,4,1,1,2,2,4,2,2},
["EWQ"] = {3,2,1,3,3,4,3,2,3,2,4,2,2,1,1,4,1,1}
}
local VayneDamage = {
["0"] = {BaseDMG = 00, MaxHPDmg = 0},
["1"] = {BaseDMG = 20, MaxHPDmg = 4},
["2"] = {BaseDMG = 30, MaxHPDmg = 5},
["3"] = {BaseDMG = 40, MaxHPDmg = 6},
["4"] = {BaseDMG = 50, MaxHPDmg = 7},
["5"] = {BaseDMG = 60, MaxHPDmg = 8},
["Q"] = {30, 35, 40, 45, 50}
}
function OnLoad()
VayneMenu = scriptConfig("Shadow Vayne", "ShadowVayne")
VayneMenu:addSubMenu("Key Settings", "keysetting")
VayneMenu.keysetting:addParam("autocarry","Auto Carry Mode Key:", SCRIPT_PARAM_ONKEYDOWN, false, string.byte( "V" ))
VayneMenu.keysetting:addParam("mixedmode","Mixed Mode Key:", SCRIPT_PARAM_ONKEYDOWN, false, string.byte( "C" ))
VayneMenu.keysetting:addParam("laneclear","Lane Clear Mode Key:", SCRIPT_PARAM_ONKEYDOWN, false, string.byte( "M" ))
VayneMenu.keysetting:addParam("lasthit","Last Hit Mode Key:", SCRIPT_PARAM_ONKEYDOWN, false, string.byte( "N" ))
VayneMenu.keysetting:addParam("basiccondemn","Condemn on next BasicAttack:", SCRIPT_PARAM_ONKEYTOGGLE, false, string.byte( "E" ))
VayneMenu.keysetting.basiccondemn = false
VayneMenu.keysetting:permaShow("basiccondemn")
VayneMenu:addSubMenu("AntiGapCloser Settings", "anticapcloser")
for i, enemy in ipairs(GetEnemyHeroes()) do
if isAGapcloserUnitTarget[enemy.charName] then
VayneMenu.anticapcloser:addSubMenu((enemy.charName).." "..(isAGapcloserUnitTarget[enemy.charName].spellKey), (enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey))
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam("sep", "Interrupt "..(enemy.charName).." "..(isAGapcloserUnitTarget[enemy.charName].spellKey)..":", SCRIPT_PARAM_INFO, "")
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam((enemy.charName).."AutoCarry", "in AutoCarry", SCRIPT_PARAM_ONOFF, true)
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam((enemy.charName).."MixedMode", "in MixedMode", SCRIPT_PARAM_ONOFF, true)
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam((enemy.charName).."LaneClear", "in LaneClear", SCRIPT_PARAM_ONOFF, false)
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam((enemy.charName).."LastHit", "in LastHit", SCRIPT_PARAM_ONOFF, false)
VayneMenu.anticapcloser[(enemy.charName)..(isAGapcloserUnitTarget[enemy.charName].spellKey)]:addParam((enemy.charName).."Always", "Always", SCRIPT_PARAM_ONOFF, false)
end
for _, TableInfo in pairs(isAGapcloserUnitNoTarget) do
if TableInfo.champ == enemy.charName then
VayneMenu.anticapcloser:addSubMenu((enemy.charName).." "..(TableInfo.spellKey), (enemy.charName)..(TableInfo.spellKey))
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam("sep", "Interrupt "..(enemy.charName).." "..(TableInfo.spellKey)..":", SCRIPT_PARAM_INFO, "")
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."AutoCarry", "in AutoCarry", SCRIPT_PARAM_ONOFF, true)
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."MixedMode", "in MixedMode", SCRIPT_PARAM_ONOFF, true)
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."LaneClear", "in LaneClear", SCRIPT_PARAM_ONOFF, false)
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."LastHit", "in LastHit", SCRIPT_PARAM_ONOFF, false)
VayneMenu.anticapcloser[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."Always", "Always", SCRIPT_PARAM_ONOFF, false)
end
end
end
VayneMenu:addSubMenu("AutoStunn Settings", "autostunn")
VayneMenu.autostunn:addParam("pushDistance", "Push Distance", SCRIPT_PARAM_SLICE, 390, 0, 450, 0)
VayneMenu.autostunn:addParam("accuracy", "Accuracy", SCRIPT_PARAM_SLICE, 5, 1, 10, 0)
VayneMenu.autostunn:addParam("towerstunn", "Stunn if Enemy lands unter a Tower", SCRIPT_PARAM_ONOFF, false)
VayneMenu.autostunn:addParam("trinket", "Use Auto-Trinket Bush", SCRIPT_PARAM_ONOFF, true)
VayneMenu:addSubMenu("AutoStunn Targets", "targets")
for i, enemy in ipairs(GetEnemyHeroes()) do
VayneMenu.targets:addSubMenu(enemy.charName, enemy.charName)
VayneMenu.targets[enemy.charName]:addParam("sep", "Stunn "..(enemy.charName), SCRIPT_PARAM_INFO, "")
VayneMenu.targets[enemy.charName]:addParam((enemy.charName).."AutoCarry", "in AutoCarry", SCRIPT_PARAM_ONOFF, true)
VayneMenu.targets[enemy.charName]:addParam((enemy.charName).."MixedMode", "in MixedMode", SCRIPT_PARAM_ONOFF, true)
VayneMenu.targets[enemy.charName]:addParam((enemy.charName).."LaneClear", "in LaneClear", SCRIPT_PARAM_ONOFF, false)
VayneMenu.targets[enemy.charName]:addParam((enemy.charName).."LastHit", "in LastHit", SCRIPT_PARAM_ONOFF, false)
VayneMenu.targets[enemy.charName]:addParam((enemy.charName).."Always", "Always", SCRIPT_PARAM_ONOFF, false)
end
VayneMenu:addSubMenu("Interrupt Settings", "interrupt")
for i, enemy in ipairs(GetEnemyHeroes()) do
for _, TableInfo in pairs(isAChampToInterrupt) do
if TableInfo.champ == enemy.charName then
VayneMenu.interrupt:addSubMenu((enemy.charName).." "..(TableInfo.spellKey), (enemy.charName)..(TableInfo.spellKey))
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam("sep", "Interrupt "..(enemy.charName).." "..(TableInfo.spellKey), SCRIPT_PARAM_INFO, "")
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."AutoCarry", "in AutoCarry", SCRIPT_PARAM_ONOFF, true)
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."MixedMode", "in MixedMode", SCRIPT_PARAM_ONOFF, true)
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."LaneClear", "in LaneClear", SCRIPT_PARAM_ONOFF, true)
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."LastHit", "in LastHit", SCRIPT_PARAM_ONOFF, true)
VayneMenu.interrupt[(enemy.charName)..(TableInfo.spellKey)]:addParam((enemy.charName).."Always", "Always", SCRIPT_PARAM_ONOFF, true)
end
end
end
VayneMenu:addSubMenu("Draw Settings", "draw")
VayneMenu.draw:addParam("DrawERange", "Draw E Range", SCRIPT_PARAM_ONOFF, false)
VayneMenu.draw:addParam("DrawEColor", "E Range Color", SCRIPT_PARAM_LIST, 1, { "Riot standard", "Green", "Blue", "Red", "Purple" })
VayneMenu:addSubMenu("AutoLevelSpells Settings", "autolevel")
VayneMenu.autolevel:addParam("UseAutoLevelfirst", "Use AutoLevelSpells Level 1-3", SCRIPT_PARAM_ONOFF, false)
VayneMenu.autolevel:addParam("UseAutoLevelrest", "Use AutoLevelSpells Level 4-18", SCRIPT_PARAM_ONOFF, false)
VayneMenu.autolevel:addParam("first3level", "Level 1-3:", SCRIPT_PARAM_LIST, 1, { "Q-W-E", "Q-E-W", "W-Q-E", "W-E-Q", "E-Q-W", "E-W-Q" })
VayneMenu.autolevel:addParam("restlevel", "Level 4-18:", SCRIPT_PARAM_LIST, 1, { "Q-W-E", "Q-E-W", "W-Q-E", "W-E-Q", "E-Q-W", "E-W-Q" })
VayneMenu:addSubMenu("Misc Settings", "misc")
if VIP_USER then
VayneMenu.misc:addParam("EPackets", "Use Packets for E Cast", SCRIPT_PARAM_ONOFF, true)
VayneMenu.misc:addParam("vpred", "Use VPrediction", SCRIPT_PARAM_ONOFF, true)
end
--~ VayneMenu.misc:addParam("KS3rdW", "Use E for 3rd Ring Proc Kill", SCRIPT_PARAM_ONOFF, true)
VayneMenu.misc:addParam("debug", "Debug Print", SCRIPT_PARAM_ONOFF, false)
if VIP_USER then
VP = VPrediction()
end
local AutoLevelSpells = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
autoLevelSetFunction(AutoLevelSpell)
autoLevelSetSequence(AutoLevelSpells)
end
function CheckEnemyStunnAble()
if not myHero.dead and myHero:CanUseSpell(_E) == READY and CastedLastE < GetTickCount() then
for i, enemy in ipairs(GetEnemyHeroes()) do
if (VayneMenu.targets[enemy.charName][(enemy.charName).."AutoCarry"] and VayneMenu.keysetting.autocarry) or
(VayneMenu.targets[enemy.charName][(enemy.charName).."MixedMode"] and VayneMenu.keysetting.mixedmode) or
(VayneMenu.targets[enemy.charName][(enemy.charName).."LaneClear"] and VayneMenu.keysetting.laneclear) or
(VayneMenu.targets[enemy.charName][(enemy.charName).."LastHit"] and VayneMenu.keysetting.lasthit) or
(VayneMenu.targets[enemy.charName][(enemy.charName).."Always"]) then
if GetDistance(enemy) <= 715 and not enemy.dead and enemy.visible then
if VIP_USER and VayneMenu.misc.vpred then local CastPosition, HitChance, enemy = VP:GetLineCastPosition(enemy, 0.26, 0, (GetDistance(enemy)+VayneMenu.autostunn.pushDistance), VP:GetProjectileSpeed(myHero), myHero, false) end
for i = 1, VayneMenu.autostunn.accuracy do
local CheckWallPos = enemy + (Vector(enemy) - myHero):normalized()*math.floor((VayneMenu.autostunn.pushDistance/VayneMenu.autostunn.accuracy)*i)
if not BushFound and IsWallOfGrass(D3DXVECTOR3(CheckWallPos.x, CheckWallPos.y, CheckWallPos.z)) then
BushFound = true
BushPos = CheckWallPos
end
if IsWall(D3DXVECTOR3(CheckWallPos.x, CheckWallPos.y, CheckWallPos.z)) then
if UnderTurret(ChecksWallPos, true) then
if VayneMenu.autostunn.towerstunn then
CastESpell(enemy, "AutoStunn Undertower ("..(enemy.charName)..")")
if BushFound and VayneMenu.autostunn.trinket then DelayAction(function() CastSpell(ITEM_7, BushPos.x, BushPos.z) end, 0.25) else BushFound = false end
break
end
else
CastESpell(enemy, "AutoStunn Not Undertower ("..(enemy.charName)..")")
if BushFound and VayneMenu.autostunn.trinket then DelayAction(function() CastSpell(ITEM_7, BushPos.x, BushPos.z) end, 0.25) else BushFound = false end
break
end
end
end
end
end
end
end
end
function OnTick()
CheckEnemyStunnAble()
if not myHero.dead and myHero:CanUseSpell(_E) == READY then
if spellExpired == false 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 SkillShot = LineSegment(Point(spellStartPosition.x, spellStartPosition.y), Point(spellEndPosition.x, spellEndPosition.y))
if heroPosition:distance(SkillShot) <= 250 then
if VayneMenu.misc.EPackets then CastESpell(informationTable.spellSource, "Gapcloser NonTargeted ("..(informationTable.spellName)..")") end
end
else
spellExpired = true
informationTable = {}
end
end
--~ if (LastHittedTargetTick + 3000) < GetTickCount() and LastHittedTargetStacks ~= 0 then
--~ LastHittedTargetStacks = 0
--~ LastHittedTargetNetworkID = nil
--~ end
end
function OnDraw()
if VayneMenu.draw.DrawERange then
if VayneMenu.draw.DrawEColor == 1 then
DrawCircle(myHero.x, myHero.y, myHero.z, 715, 0x80FFFF)
elseif VayneMenu.draw.DrawEColor == 2 then
DrawCircle(myHero.x, myHero.y, myHero.z, 715, 0x0080FF)
elseif VayneMenu.draw.DrawEColor == 3 then
DrawCircle(myHero.x, myHero.y, myHero.z, 715, 0x5555FF)
elseif VayneMenu.draw.DrawEColor == 4 then
DrawCircle(myHero.x, myHero.y, myHero.z, 715, 0xFF2D2D)
elseif VayneMenu.draw.DrawEColor == 5 then
DrawCircle(myHero.x, myHero.y, myHero.z, 715, 0x8B42B3)
end
end
end
function OnProcessSpell(unit, spell)
if not myHero.dead then
if isAGapcloserUnitTarget[unit.charName] and spell.name == isAGapcloserUnitTarget[unit.charName].spell then
if spell.target ~= nil and spell.target.hash == myHero.hash then
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitTarget[unit.charName].spellKey)][(unit.charName).."AutoCarry"] and VayneMenu.keysetting.autocarry then CastESpell(unit, "Gapcloser Targeted ("..(spell.name)..") / AutoCarry Mode") end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitTarget[unit.charName].spellKey)][(unit.charName).."LastHit"] and VayneMenu.keysetting.mixedmode then CastESpell(unit, "Gapcloser Targeted ("..(spell.name)..") / Lasthit Mode") end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitTarget[unit.charName].spellKey)][(unit.charName).."MixedMode"] and VayneMenu.keysetting.laneclear then CastESpell(unit, "Gapcloser Targeted ("..(spell.name)..") / Mixed Mode") end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitTarget[unit.charName].spellKey)][(unit.charName).."LaneClear"] and VayneMenu.keysetting.lasthit then CastESpell(unit, "Gapcloser Targeted ("..(spell.name)..") / Laneclear Mode") end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitTarget[unit.charName].spellKey)][(unit.charName).."Always"] then CastESpell(unit, "Gapcloser Targeted ("..(spell.name)..") / Always") end
end
end
if isAChampToInterrupt[spell.name] and unit.charName == isAChampToInterrupt[spell.name].champ and GetDistance(unit) <= 715 then
if VayneMenu.interrupt[(unit.charName)..(isAChampToInterrupt[spell.name].spellKey)][(unit.charName).."AutoCarry"] and VayneMenu.keysetting.autocarry then CastESpell(unit, "Interrupt ("..(spell.name)..") / AutoCarry Mode") end
if VayneMenu.interrupt[(unit.charName)..(isAChampToInterrupt[spell.name].spellKey)][(unit.charName).."LastHit"] and VayneMenu.keysetting.mixedmode then CastESpell(unit, "Interrupt ("..(spell.name)..") / Lasthit Mode") end
if VayneMenu.interrupt[(unit.charName)..(isAChampToInterrupt[spell.name].spellKey)][(unit.charName).."MixedMode"] and VayneMenu.keysetting.laneclear then CastESpell(unit, "Interrupt ("..(spell.name)..") / Mixed Mode") end
if VayneMenu.interrupt[(unit.charName)..(isAChampToInterrupt[spell.name].spellKey)][(unit.charName).."LaneClear"] and VayneMenu.keysetting.lasthit then CastESpell(unit, "Interrupt ("..(spell.name)..") / Laneclear Mode") end
if VayneMenu.interrupt[(unit.charName)..(isAChampToInterrupt[spell.name].spellKey)][(unit.charName).."Always"] then CastESpell(unit, "Interrupt ("..(spell.name)..") / Always") end
end
if unit.hash == myHero.hash and spell.name:find("Attack") and VayneMenu.keysetting.basiccondemn and spell.target.type == myHero.type then
CastESpell(spell.target, "E After Autohit ("..(spell.target.charName)..")", (spell.windUpTime - GetLatency() / 2000))
VayneMenu.keysetting.basiccondemn = false
end
--~ if unit.hash == myHero.hash and spell.name:find("Attack") then
--~ if spell.name:find("Tumble") then TumbleDMG = (myHero.totalDamage)/(100/(VayneDamage["Q"][myHero:GetSpellData(_Q).level])) else TumbleDMG = 0 end
--~ AAInfoTable = {
--~ spellCastedTick = GetTickCount(),
--~ spellTarget = spell.target,
--~ spellTumbleDMG = TumbleDMG,
--~ spellwindUpTime = spell.windUpTime
--~ }
--~ end
--~ print(spell.name)
if unit.charName ~= nil and isAGapcloserUnitNoTarget[spell.name] and unit.charName == isAGapcloserUnitNoTarget[spell.name].champ and GetDistance(unit) <= 2000 and spellExpired == true then
if VayneMenu.misc.debug then
if spell.target == nil then SpellTargetName = "nil" else SpellTargetName = spell.target.charName end
print(" ")
print("Debug is on. Please Screen this and send it in the Thread")
print("SpellName: "..(spell.name).." SpellTarget: "..(SpellTargetName).."")
print("Distance: "..(math.round(GetDistance(unit))).." SpellExpired: "..tostring(spellExpired).."")
print("UnitName: "..(unit.charName).." IsGapCloser: "..tostring((isAGapcloserUnitNoTarget[spell.name][1])).."")
print("GapCloserName: "..(isAGapcloserUnitNoTarget[spell.name].champ).." GapCloseKey: "..(isAGapcloserUnitNoTarget[spell.name].spellKey).."")
print("VanyeMenu #1: "..((unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)).."")
print(" ")
end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."AutoCarry"] then
if VayneMenu.keysetting.autocarry then
spellExpired = false
end
end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."AutoCarry"] and VayneMenu.keysetting.autocarry then spellExpired = false end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."LastHit"] and VayneMenu.keysetting.mixedmode then spellExpired = false end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."MixedMode"] and VayneMenu.keysetting.laneclear then spellExpired = false end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."LaneClear"] and VayneMenu.keysetting.lasthit then spellExpired = false end
if VayneMenu.anticapcloser[(unit.charName)..(isAGapcloserUnitNoTarget[spell.name].spellKey)][(unit.charName).."Always"] then spellExpired = false end
informationTable = {
spellSource = unit,
spellCastedTick = GetTickCount(),
spellStartPos = Point(spell.startPos.x, spell.startPos.z),
spellEndPos = Point(spell.endPos.x, spell.endPos.z),
spellRange = isAGapcloserUnitNoTarget[spell.name].range,
spellSpeed = isAGapcloserUnitNoTarget[spell.name].projSpeed,
spellName = spell.name
}
end
end
end
--~ function OnCreateObj(obj)
--~ if obj.name == "vayne_basicAttack_mis.troy" or obj.name == "vayne_critAttack_mis.troy" then
--~ if AAInfoTable.spellTarget.type == myHero.type then
--~ if ((GetTickCount())- AAInfoTable.spellCastedTick) < 200 then
--~ if LastHittedTargetNetworkID == AAInfoTable.spellTarget.networkID then
--~ LastHittedTargetStacks = LastHittedTargetStacks + 1
--~ if LastHittedTargetStacks == 4 then
--~ LastHittedTargetStacks = 1
--~ end
--~ if LastHittedTargetStacks == 2 and (VayneMenu.misc.KS3rdW) and myHero:CanUseSpell(_E) == READY then
--~ TargetTrueDmg = math.floor((((AAInfoTable.spellTarget.maxHealth)/100)*(VayneDamage[tostring(myHero:GetSpellData(_W).level)].MaxHPDmg))+(VayneDamage[tostring(myHero:GetSpellData(_W).level)].BaseDMG))
--~ DMGThisAA = myHero:CalcDamage(AAInfoTable.spellTarget,myHero.totalDamage+AAInfoTable.spellTumbleDMG)
--~ SpellTarget = AAInfoTable.spellTarget
--~ if (TargetTrueDmg+DMGThisAA) > AAInfoTable.spellTarget.health+50 then
--~ CastESpell(_E, SpellTarget, AAInfoTable.spellwindUpTime - GetLatency() / 2000)
--~ if VIP_USER and VayneMenu.misc.EPackets then
--~ DelayAction(function() Packet('S_CAST', { spellId = _E, targetNetworkId = SpellTarget.networkID }):send() end, AAInfoTable.spellwindUpTime - GetLatency() / 2000)
--~ else
--~ CastESpell(_E, SpellTarget, AAInfoTable.spellwindUpTime - GetLatency() / 2000)
--~ DelayAction(function() CastESpell(_E, SpellTarget) end, AAInfoTable.spellwindUpTime - GetLatency() / 2000)
--~ end
--~ end
--~ end
--~ else
--~ LastHittedTargetNetworkID = AAInfoTable.spellTarget.networkID
--~ LastHittedTargetStacks = 1
--~ end
--~ end
--~ end
--~ end
--~ end
function CastESpell(Target, Reason, Delay)
CastedLastE = GetTickCount() + 500
if VIP_USER and VayneMenu.misc.EPackets then
DelayAction(function() Packet('S_CAST', { spellId = _E, targetNetworkId = Target.networkID }):send() end, Delay)
else
DelayAction(function() CastSpell(_E, Target) end, Delay)
end
if VayneMenu.misc.debug then
print("Casting E Spell")
print("Target: "..(Target.charName))
print("Reason: "..(Reason))
end
end
--~ function OnDeleteObj(obj)
--~ if obj.name == "vayne_basicAttack_mis.troy" or obj.name == "vayne_critAttack_mis.troy" then
--~ LastHittedTargetTick = GetTickCount()
--~ end
--~ end
function AutoLevelSpell()
if VayneMenu.autolevel.UseAutoLevelfirst and myHero.level < 4 then
return AutoLevelSpellTable[AutoLevelSpellTable["SpellOrder"][VayneMenu.autolevel.first3level]][myHero.level]
end
if VayneMenu.autolevel.UseAutoLevelrest and myHero.level > 3 then
return AutoLevelSpellTable[AutoLevelSpellTable["SpellOrder"][VayneMenu.autolevel.restlevel]][myHero.level]
end
end