OnProcessSpell(function(unit, spell)
if not callback or not unit or GetObjectType(unit) ~= Obj_AI_Hero or GetTeam(unit) == GetTeam(GetMyHero()) then return end
local unitChanellingSpells = CHANELLING_SPELLS[GetObjectName(unit)]
if unitChanellingSpells then
for _, spellSlot in pairs(unitChanellingSpells) do
if spell.name == GetCastName(unit, spellSlot) then callback(unit, CHANELLING_SPELLS) end
end
end
end)
function addInterrupterCallback( callback0 )
callback = callback0
end
OnLoop(function(myHero)
if IOW:Mode() == "Combo" then
local target = GetCurrentTarget()
if GetItemSlot(myHero,3153) > 0 and VayneMenu.Combo.Items:Value() and GoS:ValidTarget(target, 550) and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < 50 and 100*GetCurrentHP(target)/GetMaxHP(target) > 20 then
CastTargetSpell(target, GetItemSlot(myHero,3153))
end
if GetItemSlot(myHero,3144) > 0 and VayneMenu.Combo.Items:Value() and GoS:ValidTarget(target, 550) and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < 50 and 100*GetCurrentHP(target)/GetMaxHP(target) > 20 then
CastTargetSpell(target, GetItemSlot(myHero,3144))
end
if GetItemSlot(myHero,3142) > 0 and VayneMenu.Combo.Items:Value() and GoS:ValidTarget(target, 600) then
CastTargetSpell(myHero, GetItemSlot(myHero,3142))
end
if GetItemSlot(myHero,3140) > 0 and VayneMenu.Combo.QSS:Value() and GotBuff(myHero, "rocketgrab2") > 0 or GotBuff(myHero, "charm") > 0 or GotBuff(myHero, "fear") > 0 or GotBuff(myHero, "flee") > 0 or GotBuff(myHero, "snare") > 0 or GotBuff(myHero, "taunt") > 0 or GotBuff(myHero, "suppression") > 0 or GotBuff(myHero, "stun") > 0 or GotBuff(myHero, "zedultexecute") > 0 or GotBuff(myHero, "summonerexhaust") > 0 and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < VayneMenu.Combo.QSSHP:Value() then
CastTargetSpell(myHero, GetItemSlot(myHero,3140))
end
if GetItemSlot(myHero,3139) > 0 and VayneMenu.Combo.QSS:Value() and GotBuff(myHero, "rocketgrab2") > 0 or GotBuff(myHero, "charm") > 0 or GotBuff(myHero, "fear") > 0 or GotBuff(myHero, "flee") > 0 or GotBuff(myHero, "snare") > 0 or GotBuff(myHero, "taunt") > 0 or GotBuff(myHero, "suppression") > 0 or GotBuff(myHero, "stun") > 0 or GotBuff(myHero, "zedultexecute") > 0 or GotBuff(myHero, "summonerexhaust") > 0 and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < VayneMenu.Combo.QSSHP:Value() then
CastTargetSpell(myHero, GetItemSlot(myHero,3139))
end
if VayneMenu.Combo.E:Value() then
AutoE()
end
if CanUseSpell(myHero, _R) == READY and IOW:Mode() == "Combo" and GoS:ValidTarget(target, VayneMenu.Combo.R.Renemyrange:Value()) and 100*GetCurrentHP(target)/GetMaxHP(target) <= VayneMenu.Combo.R.Rifthp:Value() and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) <= VayneMenu.Combo.R.Rifhp:Value() and GoS:EnemiesAround(GoS:myHeroPos(), VayneMenu.Combo.R.Renemyrange:Value()) >= VayneMenu.Combo.R.Rminenemy:Value() and GoS:AlliesAround(GoS:myHeroPos(), VayneMenu.Combo.R.Rallyrange:Value()) >= VayneMenu.Combo.R.Rminally:Value() then
CastSpell(_R)
end
if GotBuff(myHero, "vaynetumblefade") > 0 and GoS:ValidTarget(target, 550) and GoS:GetDistance(target) > VayneMenu.Combo.R.KeepInvisdis:Value() then
IOW:EnableAutoAttacks()
elseif GotBuff(myHero, "vaynetumblefade") < 1 then
IOW:EnableAutoAttacks()
elseif GotBuff(myHero, "vaynetumblefade") > 0 and VayneMenu.Combo.R.KeepInvis:Value() and GoS:ValidTarget(target, VayneMenu.Combo.R.KeepInvisdis:Value()) and GoS:GetDistance(myHero, target) < VayneMenu.Combo.R.KeepInvisdis:Value() then
IOWisableAutoAttacks()
end
end
for i,enemy in pairs(GoS:GetEnemyHeroes()) do
if Ignite and VayneMenu.Misc.AutoIgnite:Value() then
if CanUseSpell(myHero, Ignite) == READY and 20*GetLevel(myHero)+50 > GetCurrentHP(enemy)+GetDmgShield(enemy)+GetHPRegen(enemy)*2.5 and GoS:ValidTarget(enemy, 900) then
CastTargetSpell(enemy, Ignite)
end
end
end
if VayneMenu.Misc.AutoE:Value() then
AutoE()
end
if VayneMenu.Misc.WallTumble1:Value() and GetOrigin(myHero).x == 6962 and GetOrigin(myHero).z == 8952 then
CastSkillShot(_Q,6667.3271484375, 51, 8794.64453125)
elseif VayneMenu.Misc.WallTumble1:Value() then
MoveToXYZ(6962, 51, 8952)
end
if VayneMenu.Misc.WallTumble2:Value() and GetOrigin(myHero).x == 12060 and GetOrigin(myHero).z == 4806 then
CastSkillShot(_Q,11745.198242188, 51, 4625.4379882813)
elseif VayneMenu.Misc.WallTumble2:Value() then
MoveToXYZ(12060, 51, 4806)
end
if VayneMenu.Drawings.Q:Value() then DrawCircle(GoS:myHeroPos().x,GoS:myHeroPos().y,GoS:myHeroPos().z,GetCastRange(myHero,_Q),3,100,0xff00ff00) end
if VayneMenu.Drawings.E:Value() then DrawCircle(GoS:myHeroPos().x,GoS:myHeroPos().y,GoS:myHeroPos().z,GetCastRange(myHero,_E),3,100,0xff00ff00) end
if VayneMenu.Drawings.WT:Value() then
DrawCircle(6962, 51, 8952,80,1,1,0xffffffff)
DrawCircle(12060, 51, 4806,80,1,1,0xffffffff)
end
end)
OnProcessSpell(function(unit, spell)
local target = GetCurrentTarget()
if unit and spell and spell.name then
if unit == myHero then
if spell.name:lower():find("attack") then
GoSelayAction(function()
if IOW:Mode() == "Combo" and GoS:ValidTarget(target, 850) and VayneMenu.Combo.Q:Value() then
local HeroPos = GetOrigin(myHero)
local mousePos = GetMousePos()
local AfterTumblePos = HeroPos + (Vector(mousePos) - HeroPos):normalized() * 300
local DistanceAfterTumble = GoS:GetDistance(AfterTumblePos, target)
if DistanceAfterTumble < 630 and DistanceAfterTumble > 200 then
CastSkillShot(_Q, mousePos.x, mousePos.y, mousePos.z)
end
if GoS:GetDistance(myHero, target) > 630 and DistanceAfterTumble < 630 then
CastSkillShot(_Q, mousePos.x, mousePos.y, mousePos.z)
end
end
end, spell.windUpTime*1000)
end
end
end
end)
function AutoE()
for _,target in pairs(Gos:GetEnemyHeroes()) do
if GoS:ValidTarget(target,1000) then
local enemyposx,enemyposy,enemypoz,selfx,selfy,selfz
local distance1=24
local distance2=118
local distance3=212
local distance4=306
local distance5=400
local enemyposition = GetOrigin(target)
enemyposx=enemyposition.x
enemyposy=enemyposition.y
enemyposz=enemyposition.z
local TargetPos = Vector(enemyposx,enemyposy,enemyposz)
local self=GetOrigin(myHero)
selfx = self.x
selfy = self.y
selfz = self.z
local HeroPos = Vector(selfx, selfy, selfz)
local Pos1 = TargetPos-(TargetPos-HeroPos)*(-distance1/GoS:GetDistance(target))
local Pos2 = TargetPos-(TargetPos-HeroPos)*(-distance2/GoS:GetDistance(target))
local Pos3 = TargetPos-(TargetPos-HeroPos)*(-distance3/GoS:GetDistance(target))
local Pos4 = TargetPos-(TargetPos-HeroPos)*(-distance4/GoS:GetDistance(target))
local Pos5 = TargetPos-(TargetPos-HeroPos)*(-distance5/GoS:GetDistance(target))
if MapPosition:inWall(Pos1)==true then
if GoS:GetDistance(target)<=550 then
CastTargetSpell(target, _E)
end
end
if MapPosition:inWall(Pos2)==true then
if GoS:GetDistance(target)<=550 then
CastTargetSpell(target, _E)
end
end
if MapPosition:inWall(Pos3)==true then
if GoS:GetDistance(target)<=550 then
CastTargetSpell(target, _E)
end
end
if MapPosition:inWall(Pos4)==true then
if GoS:GetDistance(target)<=550 then
CastTargetSpell(target, _E)
end
end
if MapPosition:inWall(Pos5)==true then
if GoS:GetDistance(target)<=550 then
CastTargetSpell(target, _E)
end
end
end
end
end
if VayneMenu.Misc.Autolvl:Value() then
if GetLevel(myHero) >= 1 and GetLevel(myHero) < 2 then
LevelSpell(_Q)
elseif GetLevel(myHero) >= 2 and GetLevel(myHero) < 3 then
LevelSpell(_E)
elseif GetLevel(myHero) >= 3 and GetLevel(myHero) < 4 then
LevelSpell(_W)
elseif GetLevel(myHero) >= 4 and GetLevel(myHero) < 5 then
LevelSpell(_Q)
elseif GetLevel(myHero) >= 5 and GetLevel(myHero) < 6 then
LevelSpell(_Q)
elseif GetLevel(myHero) >= 6 and GetLevel(myHero) < 7 then
LevelSpell(_R)
elseif GetLevel(myHero) >= 7 and GetLevel(myHero) < 8 then
LevelSpell(_Q)
elseif GetLevel(myHero) >= 8 and GetLevel(myHero) < 9 then
LevelSpell(_E)
elseif GetLevel(myHero) >= 9 and GetLevel(myHero) < 10 then
LevelSpell(_Q)
elseif GetLevel(myHero) >= 10 and GetLevel(myHero) < 11 then
LevelSpell(_E)
elseif GetLevel(myHero) >= 11 and GetLevel(myHero) < 12 then
LevelSpell(_R)
elseif GetLevel(myHero) >= 12 and GetLevel(myHero) < 13 then
LevelSpell(_E)
elseif GetLevel(myHero) >= 13 and GetLevel(myHero) < 14 then
LevelSpell(_E)
elseif GetLevel(myHero) >= 14 and GetLevel(myHero) < 15 then
LevelSpell(_W)
elseif GetLevel(myHero) >= 15 and GetLevel(myHero) < 16 then
LevelSpell(_W)
elseif GetLevel(myHero) >= 16 and GetLevel(myHero) < 17 then
LevelSpell(_R)
elseif GetLevel(myHero) >= 17 and GetLevel(myHero) < 18 then
LevelSpell(_W)
elseif GetLevel(myHero) == 18 then
LevelSpell(_W)
end
end
addInterrupterCallback(function(target, spellType)
if GoS:IsInDistance(target, GetCastRange(myHero,_E)) and CanUseSpell(myHero,_E) == READY and spellType == CHANELLING_SPELLS and VayneMenu.Misc.Interrupt:Value() then
CastTargetSpell(target, _E)
end
end)