Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Sida's Auto Carry: Revamped, VIP Collision Edition
- v4.4
- ]]--
- if VIP_USER then
- require "Collision"
- PrintChat("<font color='#CCCCCC'> >> VIP - Sida's Auto Carry loaded! <<</font>")
- else
- PrintChat("<font color='#CCCCCC'> >> Basic - Sida's Auto Carry loaded! <<</font>")
- end
- --[[ Configuration ]]--
- local AutoCarryKey = 32
- local LastHitKey = string.byte("X")
- local MixedModeKey = string.byte("C")
- local LaneClearKey = string.byte("V")
- ------------ > Don't touch anything below here < --------------
- --[[ Vars ]] --
- local projSpeed = 0
- local startAttackSpeed = 0.665
- local attackDelayOffset = 600
- local lastAttack = 0
- local projAt = 0
- local Skills
- local enemyMinions
- local allyMinions
- local lastEnemy
- local lastRange
- local killableMinion
- local minionInfo = {}
- local incomingDamage = {}
- local jungleMobs = {}
- local turretMinion = {timeToHit = 0, obj = nil}
- local isMelee = myHero.range < 300
- local movementStopped = false
- local hasPlugin = false
- local nextClick = 500
- local TimedMode = false
- local Tristana = false
- local hudDisabled = false
- local ChampInfo = {}
- _G.AutoCarry = _G
- --[[ Global Vars : Can be used by plugins ]]--
- AutoCarry.Orbwalker = nil
- AutoCarry.SkillsCrosshair = nil
- AutoCarry.CanMove = true
- AutoCarry.CanAttack = true
- AutoCarry.MainMenu = nil
- AutoCarry.PluginMenu = nil
- AutoCarry.EnemyTable = nil
- AutoCarry.shotFired = false
- --[[ Global Functions ]]--
- function getTrueRange()
- return myHero.range + GetDistance(myHero.minBBox)
- end
- function attackEnemy(enemy)
- if CustomAttackEnemy then CustomAttackEnemy(enemy) return end
- if enemy.dead or not enemy.valid or not AutoCarry.CanAttack then return end
- myHero:Attack(enemy)
- AutoCarry.shotFired = true
- end
- function getHitBoxRadius(target)
- return GetDistance(target.minBBox, target.maxBBox)/2
- end
- function timeToShoot()
- if GetTickCount() > getNextAttackTime() then
- return true
- end
- return false
- end
- function getAttackSpeed()
- return myHero.attackSpeed/(1/startAttackSpeed)
- end
- function getNextAttackTime()
- return lastAttack + (1000 * ( -0.375 + (0.625 / startAttackSpeed))) / getAttackSpeed()
- end
- function attackedSuccessfully()
- AutoCarry.shotFired = false
- lastAttack = GetTickCount()
- projAt = GetTickCount()
- if OnAttacked then OnAttacked() end
- end
- function heroCanMove()
- if AutoCarry.shotFired == false or timeToShoot() then
- return true
- end
- return false
- end
- function setMovement()
- if GetDistance(mousePos) <= AutoCarry.MainMenu.HoldZone and (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.LastHit or AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear) then
- if not movementStopped then
- myHero:HoldPosition()
- movementStopped = true
- end
- AutoCarry.CanMove = false
- else
- movementStopped = false
- AutoCarry.CanMove = true
- end
- end
- function moveToCursor(range)
- if not disableMovement and AutoCarry.CanMove then
- local moveDist = 480 + (GetLatency()/10)
- if not range then
- if isMelee and AutoCarry.Orbwalker.target and AutoCarry.Orbwalker.type == myHero.type and GetDistance(AutoCarry.Orbwalker.target) < 150 then
- return
- elseif GetDistance(mousePos) < moveDist then
- moveDist = GetDistance(mousePos)
- end
- end
- local moveSqr = math.sqrt((mousePos.x - myHero.x)^2+(mousePos.z - myHero.z)^2)
- local moveX = myHero.x + (range and range or moveDist)*((mousePos.x - myHero.x)/moveSqr)
- local moveZ = myHero.z + (range and range or moveDist)*((mousePos.z - myHero.z)/moveSqr)
- if StreamingMenu.MinRand > StreamingMenu.MaxRand then
- PrintChat("You must set Max higher than Min in streaming menu")
- elseif StreamingMenu.ShowClick and GetTickCount() > nextClick then
- if StreamingMenu.Colour == 0 then
- ShowGreenClick(mousePos)
- else
- ShowRedClick(mousePos)
- end
- nextClick = GetTickCount() + math.random(StreamingMenu.MinRand, StreamingMenu.MaxRand)
- end
- myHero:MoveTo(moveX, moveZ)
- end
- end
- --[[ Orbwalking ]]--
- function OrbwalkingOnLoad()
- AutoCarry.Orbwalker = TargetSelector(TARGET_LOW_HP_PRIORITY, getTrueRange(), DAMAGE_PHYSICAL, false)
- AutoCarry.Orbwalker:SetBBoxMode(true)
- AutoCarry.Orbwalker:SetDamages(0, myHero.totalDamage, 0)
- AutoCarry.Orbwalker.name = "AutoCarry"
- lastRange = getTrueRange()
- if myHero.charName == "Tristana" then Tristana = true end
- if ChampInfo ~= nil then
- if ChampInfo.projSpeed ~= nil then
- projSpeed = ChampInfo.projSpeed
- end
- if ChampInfo.startAttackSpeed ~= nil then
- startAttackSpeed = ChampInfo.startAttackSpeed
- end
- end
- end
- function OrbwalkingOnTick()
- if AutoCarry.MainMenu.Focused then AutoCarry.Orbwalker.targetSelected = true else AutoCarry.Orbwalker.targetSelected = false end
- if TimedMode and ChampInfo.AttackDelayCastOffsetPercent and GetTickCount() > NextTimedMove then attackedSuccessfully() NextTimedMove = 1/0 end
- isMelee = myHero.range < 300
- if (isMelee or Tristana or AutoCarry.MainMenu.TimedMode) and ChampInfo.AttackDelayCastOffsetPercent then TimedMode = true else TimedMode = false end
- if myHero.range ~= lastRange then
- AutoCarry.Orbwalker.range = myHero.range
- lastRange = myHero.range
- end
- AutoCarry.Orbwalker:update()
- end
- function OrbwalkingOnProcessSpell(unit, spell)
- if myHero.dead then return end
- if unit ~= nil and spell ~= nil then
- if unit.isMe then
- if spell.name:find("Attack") then lastAttack = GetTickCount() end
- if isAttackResetSpell(spell) then
- lastAttack = lastAttack - (attackDelayOffset / getAttackSpeed())
- end
- end
- end
- end
- function TimedMoveOnProcessSpell(unit, spell)
- for spells = 0,3 do
- if unit.isMe and spell.name == GetSpellData(spells).name then return end
- end
- if unit.isMe then
- NextTimedMove = GetTickCount() + GetNextTimedAttack()
- end
- end
- function GetNextTimedAttack()
- local delayFromAttack
- AttackDelayCastOffsetPercent = ChampInfo.AttackDelayCastOffsetPercent
- currentAttackSpeed = myHero.attackSpeed/(1/ChampInfo.startAttackSpeed)
- delayFromAttack = 1000 * (0.3 - GetLatency()/2000 + AttackDelayCastOffsetPercent) / currentAttackSpeed
- return delayFromAttack
- end
- function isAttackResetSpell(spell)
- if --Sivir
- spell.name == "Ricochet"
- --Vayne
- or spell.name == "VayneTumble"
- or spell.name == "VayneTumbleUltAttack"
- --Darius
- or spell.name == "DariusNoxianTacticsONH"
- --Nidalee
- or spell.name == "Takedown"
- or myHero.charName == "XinZhao" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Blitzcrank" and spell.name == GetSpellData(_E).name
- or myHero.charName == "Poppy" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Talon" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Vi" and spell.name == GetSpellData(_E).name
- or myHero.charName == "Gangplank" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Nautilus" and spell.name == GetSpellData(_W).name
- or myHero.charName == "Trundle" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Leona" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Fiora" and spell.name == GetSpellData(_E).name
- or myHero.charName == "Rengar" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Shyvana" and spell.name == GetSpellData(_Q).name
- or myHero.charName == "Renekton" and spell.name == GetSpellData(_W).name
- or myHero.charName == "MonkeyKing" and spell.name == GetSpellData(_Q).name
- --Teemo
- -- or spell.name == "BlindingDart" -- Pretty sure this is a lie
- then
- return true
- end
- return false
- end
- function OrbwalkingOnDraw()
- if DisplayMenu.target and AutoCarry.Orbwalker.target ~= nil then
- for j=0, 5 do
- DrawCircle(AutoCarry.Orbwalker.target.x, AutoCarry.Orbwalker.target.y, AutoCarry.Orbwalker.target.z, 100 + j, 0x00FF00)
- end
- DrawCircle(AutoCarry.Orbwalker.target.x, AutoCarry.Orbwalker.target.y, AutoCarry.Orbwalker.target.z, GetDistance(AutoCarry.Orbwalker.target, AutoCarry.Orbwalker.target.minBBox), 0xFFFFFF)
- elseif DisplayMenu.target and AutoCarry.SkillsCrosshair.target then
- for j=0, 5 do
- DrawCircle(AutoCarry.SkillsCrosshair.target.x, AutoCarry.SkillsCrosshair.target.y, AutoCarry.SkillsCrosshair.target.z, 100 + j, 0x990000)
- end
- DrawCircle(AutoCarry.SkillsCrosshair.target.x, AutoCarry.SkillsCrosshair.target.y, AutoCarry.SkillsCrosshair.target.z, GetDistance(AutoCarry.SkillsCrosshair.target, AutoCarry.SkillsCrosshair.target.minBBox), 0xFFFFFF)
- end
- end
- function EnemyInRange(enemy)
- if ValidBBoxTarget(enemy, getTrueRange()) then
- return true
- end
- return false
- end
- --[[ Last Hitting ]]--
- function LastHitOnLoad()
- minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Basic"] = { aaDelay = 400, projSpeed = 0 }
- minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Caster"] = { aaDelay = 484, projSpeed = 0.68 }
- minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Wizard"] = { aaDelay = 484, projSpeed = 0.68 }
- minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_MechCannon"] = { aaDelay = 365, projSpeed = 1.18 }
- minionInfo.obj_AI_Turret = { aaDelay = 150, projSpeed = 1.14 }
- for i = 0, objManager.maxObjects do
- local obj = objManager:getObject(i)
- for _, mob in pairs(getJungleMobs()) do
- if obj and obj.valid and obj.name:find(mob) then
- table.insert(jungleMobs, obj)
- end
- end
- end
- end
- function LastHitOnTick()
- if AutoCarry.MainMenu.LastHit or AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear then
- enemyMinions:update()
- allyMinions:update()
- end
- end
- function LastHitOnProcessSpell(object, spell)
- if not isMelee and isAllyMinionInRange(object) then
- for i,minion in pairs(enemyMinions.objects) do
- if ValidTarget(minion) and minion ~= nil and GetDistance(minion, spell.endPos) < 3 then
- if object ~= nil and (minionInfo[object.charName] or object.type == "obj_AI_turret") then
- incomingDamage[object.name] = getNewAttackDetails(object, minion)
- end
- if object.type == "obj_AI_Turret" and object.team == myHero.team then
- if FarmMenu.Predict then
- --handleTurretShot(object, minion)
- end
- end
- end
- end
- end
- end
- function LastHitOnCreateObj(obj)
- for _, mob in pairs(getJungleMobs()) do
- if obj.name:find(mob) then
- table.insert(jungleMobs, obj)
- end
- end
- end
- function LastHitOnDeleteObj(obj)
- for i, mob in pairs(getJungleMobs()) do
- if obj and obj.valid and mob and mob.valid and obj.name:find(mob.name) then
- table.remove(jungleMobs, i)
- end
- end
- end
- function getJungleMinion()
- for _, mob in pairs(jungleMobs) do
- if ValidTarget(mob) and GetDistance(mob) <= getTrueRange() then return mob end
- end
- return nil
- end
- function LastHitOnDraw()
- if DisplayMenu.minion and enemyMinions.objects[1] and ValidTarget(enemyMinions.objects[1]) and not isMelee then
- DrawCircle(enemyMinions.objects[1].x, enemyMinions.objects[1].y, enemyMinions.objects[1].z, 100, 0x19A712)
- end
- end
- function getTimeToHit(enemy, speed)
- return (( GetDistance(enemy) / speed ) + GetLatency()/2)
- end
- function isAllyMinionInRange(minion)
- if minion ~= nil and minion.team == myHero.team
- and (minion.type == "obj_AI_Minion" or minion.type == "obj_AI_Turret")
- and GetDistance(minion) <= 2000 then return true
- else return false end
- end
- function getMinionDelay(minion)
- return ( minion.type == "obj_AI_Turret" and minionInfo.obj_AI_Turret.aaDelay or minionInfo[minion.charName].aaDelay )
- end
- function getMinionProjSpeed(minion)
- return ( minion.type == "obj_AI_Turret" and minionInfo.obj_AI_Turret.projSpeed or minionInfo[minion.charName].projSpeed )
- end
- function minionSpellStillViable(attack)
- if attack == nil then return false end
- local sourceMinion = getAllyMinion(attack.sourceName)
- local targetMinion = getEnemyMinion(attack.targetName)
- if sourceMinion == nil or targetMinion == nil then return false end
- if sourceMinion.dead or targetMinion.dead or GetDistance(sourceMinion, attack.origin) > 3 then return false else return true end
- end
- function getAllyMinion(name)
- for i, minion in pairs(allyMinions.objects) do
- if minion ~= nil and minion.valid and minion.name == name then
- return minion
- end
- end
- return nil
- end
- function getEnemyMinion(name)
- for i, minion in pairs(enemyMinions.objects) do
- if minion ~= nil and ValidTarget(minion) and minion.name == name then
- return minion
- end
- end
- return nil
- end
- function isSameMinion(minion1, minion2)
- if minion1.networkID == minion2.networkID then return true
- else return false end
- end
- function getMinionTimeToHit(minion, attack)
- local sourceMinion = getAllyMinion(attack.sourceName)
- return ( attack.speed == 0 and ( attack.delay ) or ( attack.delay + GetDistance(sourceMinion, minion) / attack.speed ) )
- end
- function getNewAttackDetails(source, target)
- return {
- sourceName = source.name,
- targetName = target.name,
- damage = source:CalcDamage(target),
- started = GetTickCount(),
- origin = { x = source.x, z = source.z },
- delay = getMinionDelay(source),
- speed = getMinionProjSpeed(source),
- sourceType = source.type}
- end
- function getPredictedDamage(counter, minion, attack)
- if not minionSpellStillViable(attack) then
- incomingDamage[counter] = nil
- elseif isSameMinion(minion, getEnemyMinion(attack.targetName)) then
- local myTimeToHit = getTimeToHit(minion, projSpeed)
- minionTimeToHit = getMinionTimeToHit(minion, attack)
- if GetTickCount() >= (attack.started + minionTimeToHit) then
- incomingDamage[counter] = nil
- elseif GetTickCount() + myTimeToHit > attack.started + minionTimeToHit then
- return attack.damage
- end
- end
- return 0
- end
- function getKillableCreep(iteration)
- if isMelee then return meleeLastHit() end
- local minion = enemyMinions.objects[iteration]
- if minion ~= nil then
- local distanceToMinion = GetDistance(minion)
- local predictedDamage = 0
- if distanceToMinion < getTrueRange() then
- if FarmMenu.Predict then
- for l, attack in pairs(incomingDamage) do
- predictedDamage = predictedDamage + getPredictedDamage(l, minion, attack)
- end
- end
- local myDamage = myHero:CalcDamage(minion, myHero.totalDamage) + (BonusLastHitDamage and BonusLastHitDamage(minion) or 0) + LastHitPassiveDamage()
- myDamage = (MasteryMenu.Executioner and myDamage * 1.05 or myDamage)
- myDamage = myDamage - 10 -- added as a Sida test
- if minion.health - predictedDamage <= 0 then
- return getKillableCreep(iteration + 1)
- elseif minion.health + 1.2 - predictedDamage < myDamage then
- return minion
- elseif minion.health + 1.2 - predictedDamage < myDamage + (0.5 * predictedDamage) then
- return nil
- end
- end
- end
- return nil
- end
- function meleeLastHit()
- for _, minion in pairs(enemyMinions.objects) do
- local aDmg = getDmg("AD", minion, myHero)
- if GetDistance(minion) <= (myHero.range + 75) then
- if minion.health < aDmg then
- return minion
- end
- end
- end
- end
- function LastHitPassiveDamage(minion)
- local bonus = 0
- if GetInventoryHaveItem(3153) then
- if ValidTarget(minion) then
- bonus = minion.health / 20
- if bonus >= 60 then
- bonus = 60
- end
- end
- end
- bonus = bonus + (MasteryMenu.Butcher * 2)
- bonus = (MasteryMenu.Spellblade and bonus + (myHero.ap * 0.05) or 0)
- return bonus
- end
- function getHighestMinion()
- local highestHp = {obj = nil, hp = 0}
- for _, tMinion in pairs(enemyMinions.objects) do
- if GetDistance(tMinion) <= getTrueRange() and tMinion.health > highestHp.hp then
- highestHp = {obj = tMinion, hp = tMinion.health}
- end
- end
- return highestHp.obj
- end
- function getPredictedDamageOnMinion(minion)
- local predictedDamage = 0
- if minion ~= nil then
- local distanceToMinion = GetDistance(minion)
- if distanceToMinion < getTrueRange() then
- for l, attack in pairs(incomingDamage) do
- if attack.sourceType ~= "obj_AI_Turret" then
- predictedDamage = predictedDamage + getPredictedDamage(l, minion, attack)
- end
- end
- end
- end
- return predictedDamage
- end
- function handleTurretShot(turret, minion)
- local dmg = turret:CalcDamage(minion)
- local myDmg = myHero:CalcDamage(minion, myHero.totalDamage) + (BonusLastHitDamage and BonusLastHitDamage(minion) or 0) + LastHitPassiveDamage()
- myDmg = (MasteryMenu.Executioner and myDmg * 1.05 or myDmg)
- local predic = getPredictedDamageOnMinion(minion)
- if minion.health > myDmg + dmg + predic and minion.health < (myDmg * 2) + dmg + predic then
- turretMinion = {timeToHit = minionInfo.obj_AI_Turret.aaDelay + GetDistance(turret, minion) / minionInfo.obj_AI_Turret.projSpeed, obj = minion }
- end
- end
- --[[ Abilities ]]--
- function SkillsOnLoad()
- Skills = getSpellList()
- if Skills == nil then
- AutoCarry.SkillsCrosshair = TargetSelector(TARGET_LOW_HP_PRIORITY, 0, DAMAGE_PHYSICAL, false)
- return
- end
- local maxRange = 0
- for _, skill in pairs(Skills) do
- if skill.range > maxRange then maxRange = skill.range end
- end
- AutoCarry.SkillsCrosshair = TargetSelector(TARGET_LOW_HP_PRIORITY, maxRange, DAMAGE_PHYSICAL, false)
- end
- function SkillsOnTick()
- if Skills == nil then return end
- local target = AutoCarry.GetAttackTarget()
- if ValidTarget(target) and target.type == myHero.type then
- for _, skill in pairs(Skills) do
- if (AutoCarry.MainMenu.AutoCarry and SkillsMenu[skill.configName.."AutoCarry"]) or
- (AutoCarry.MainMenu.LastHit and SkillsMenu[skill.configName.."LastHit"]) or
- (AutoCarry.MainMenu.MixedMode and SkillsMenu[skill.configName.."MixedMode"]) then
- if not skill.reset or (skill.reset and projAt + 500 > GetTickCount()) then
- if skill.skillShot then
- AutoCarry.CastSkillshot(skill, target)
- elseif skill.reqTarget == false and not skill.atMouse then
- CastSelf(skill, target)
- elseif skill.reqTarget == false and skill.atMouse then
- CastMouse(skill)
- else
- CastTargettedSpell(skill, target)
- end
- end
- end
- end
- end
- end
- AutoCarry.GetCollision = function (skill, source, destination)
- if VIP_USER then
- --local col = Collision(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
- --return col:GetMinionCollision(source, destination)
- return willHitMinion(destination, skill.width)
- else
- return willHitMinion(destination, skill.width)
- end
- end
- AutoCarry.CastSkillshot = function (skill, target)
- if VIP_USER then
- pred = TargetPredictionVIP(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
- elseif not VIP_USER then
- pred = TargetPrediction(skill.range, skill.speed, skill.delay, skill.width)
- end
- local predPos = pred:GetPrediction(target)
- if predPos and GetDistance(predPos) <= skill.range then
- if VIP_USER and SkillsMenu.useVIPCollision and pred:GetHitChance(target) > SkillsMenu.hitChance/100 then
- local col = Collision(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
- if not skill.minions or not col:GetMinionCollision(myHero, predPos) then
- CastSpell(skill.spellKey, predPos.x, predPos.z)
- end
- elseif not VIP_USER or not SkillsMenu.useVIPCollision then
- if not skill.minions or not AutoCarry.GetCollision(skill, myHero, predPos) then
- CastSpell(skill.spellKey, predPos.x, predPos.z)
- end
- end
- end
- end
- function CastTargettedSpell(skill, target)
- if GetDistance(target) <= skill.range then
- CastSpell(skill.spellKey, target)
- end
- end
- function CastMouse(skill)
- CastSpell(skill.spellKey, mousePos.x, mousePos.z)
- end
- function CastSelf(skill, target)
- if not skill.forceRange or (skill.forceRange and GetDistance(target) - (skill.forceToHitBox and GetDistance(target, target.minBBox) or 0) <= skill.range) then
- CastSpell(skill.spellKey)
- end
- end
- function getPrediction(speed, delay, target)
- if target == nil then return nil end
- local travelDuration = (delay + GetDistance(myHero, target)/speed)
- travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
- travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
- travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
- return GetPredictionPos(target, travelDuration)
- end
- function willHitMinion(predic, width)
- for _, minion in pairs(enemyMinions.objects) do
- if minion ~= nil and minion.valid and string.find(minion.name,"Minion_") == 1 and minion.team ~= player.team and minion.dead == false then
- if predic ~= nil then
- ex = player.x
- ez = player.z
- tx = predic.x
- tz = predic.z
- dx = ex - tx
- dz = ez - tz
- if dx ~= 0 then
- m = dz/dx
- c = ez - m*ex
- end
- mx = minion.x
- mz = minion.z
- distanc = (math.abs(mz - m*mx - c))/(math.sqrt(m*m+1))
- if distanc < width and math.sqrt((tx - ex)*(tx - ex) + (tz - ez)*(tz - ez)) > math.sqrt((tx - mx)*(tx - mx) + (tz - mz)*(tz - mz)) then
- return true
- end
- end
- end
- end
- return false
- end
- --[[ Champion Specific ]]--
- -- >> Vayne << --
- if myHero.charName == "Vayne" then
- function BonusLastHitDamage()
- if myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED then
- return math.round( ((0.05*myHero:GetSpellData(_Q).level) + 0.25 )*myHero.totalDamage )
- end
- return 0
- end
- -- >> Teemo << --
- elseif myHero.charName == "Teemo" then
- function BonusLastHitDamage()
- if myHero:GetSpellData(_E).level > 0 then
- return math.floor( (myHero:GetSpellData(_E).level * 10) + (myHero.ap * 0.3) )
- end
- return 0
- end
- -- >> Corki << --
- elseif myHero.charName == "Corki" then
- function BonusLastHitDamage()
- return myHero.totalDamage/10
- end
- -- >> Miss Fortune << --
- elseif myHero.charName == "MissFortune" then
- function BonusLastHitDamage()
- if myHero:GetSpellData(_W).level > 0 then
- return (4+2*myHero:GetSpellData(_W).level) + (myHero.ap/20)
- end
- return 0
- end
- -- >> Varus << --
- elseif myHero.charName == "Varus" then
- function BonusLastHitDamage()
- if myHero:GetSpellData(_W).level > 0 then
- return (6 + (myHero:GetSpellData(_W).level * 4) + (myHero.ap * 0.25))
- end
- return 0
- end
- -- >> Caitlyn << --
- elseif myHero.charName == "Caitlyn" then
- local headShotPart
- function CustomOnCreateObj(obj)
- if GetDistance(obj) < 100 and obj.name:lower():find("caitlyn_headshot_rdy") then
- headShotPart = obj
- end
- end
- function BonusLastHitDamage(minion)
- if headShotPart and headShotPart.valid and minion and ValidTarget(minion) then
- return myHero:CalcDamage(minion, myHero.totalDamage) * 1.5
- end
- return 0
- end
- -- >> Tristana << --
- elseif myHero.charName == "Tristana" then
- function CustomOnTick()
- Skills[2].range = myHero.range
- end
- -- >> KogMaw << --
- elseif myHero.charName == "KogMaw" then
- function CustomOnTick()
- Skills[2].range = getTrueRange() + 110 + (myHero:GetSpellData(_W).level * 20)
- if myHero:GetSpellData(_R).level == 1 then
- Skills[4].range = 1400
- elseif myHero:GetSpellData(_R).level == 2 then
- Skills[4].range = 1700
- elseif myHero:GetSpellData(_R).level == 3 then
- Skills[4].range = 2200
- end
- end
- -- >> Twisted Fate << --
- elseif myHero.charName == "TwistedFate" then
- local tfLastUse = 0
- TFConfig = scriptConfig("Sida's Auto Carry: Twisted Fate Edition", "autocarrytf")
- TFConfig:addParam("selectgold", "Select Gold", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("W"))
- TFConfig:addParam("selectblue", "Select Blue", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("E"))
- TFConfig:addParam("selectred", "Select Red", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("V"))
- TFConfig:addParam("qStunned", "Auto Q Stunned Enemies", SCRIPT_PARAM_ONOFF, true)
- function CustomOnTick()
- PickACard()
- if TFConfig.qStunned then
- for _, enemy in pairs(AutoCarry.EnemyTable) do
- if ValidTarget(enemy) and not enemy.canMove and GetDistance(enemy) < 1350 then
- CastSpell(_Q, enemy.x, enemy.z)
- end
- end
- end
- end
- function PickACard()
- if myHero:CanUseSpell(_W) == READY and GetTickCount()-tfLastUse <= 2300 then
- if myHero:GetSpellData(_W).name == selected then CastSpellEx(_W) end
- end
- if myHero:CanUseSpell(_W) == READY and GetTickCount()-tfLastUse >= 2400 then
- if TFConfig.selectgold then selected = "goldcardlock"
- elseif TFConfig.selectblue then selected = "bluecardlock"
- elseif TFConfig.selectred then selected = "redcardlock"
- else return end
- CastSpellEx(_W)
- tfLastUse = GetTickCount()
- end
- end
- -- >> Draven << --
- elseif myHero.charName == "Draven" then
- local reticles = {}
- local qStacks = 0
- local closestReticle
- local qBuff = 0
- local stopped = false
- local qRad = 150
- disableRangeDraw = true
- local qParticles = {"Draven_Q_mis",
- "Draven_Q_mis_bloodless",
- "Draven_Q_mis_shadow",
- "Draven_Q_mis_shadow_bloodless",
- "Draven_Qcrit_mis",
- "Draven_Qcrit_mis_bloodless",
- "Draven_Qcrit_mis_shadow",
- "Draven_Qcrit_mis_shadow_bloodless" }
- DravenConfig = scriptConfig("Sida's Auto Carry: Draven Edition", "autocarrdraven")
- DravenConfig:addParam("HoldRange", "Stand Zone", SCRIPT_PARAM_SLICE, 130, 0, 450, 0)
- DravenConfig:addParam("CatchRange", "Catch Axe Range", SCRIPT_PARAM_SLICE, 575, 0, 2000, 0)
- DravenConfig:addParam("AutoW", "Keep W Buff Active Against Enemy", SCRIPT_PARAM_ONOFF, true)
- DravenConfig:addParam("AutoCarry", "Use / Catch Axes: Auto Carry Mode", SCRIPT_PARAM_ONOFF, true)
- DravenConfig:addParam("LastHit", "Use / Catch Axes: Last Hit Mode", SCRIPT_PARAM_ONOFF, true)
- DravenConfig:addParam("LaneClear", "Use / Catch Axes: Lane Clear Mode", SCRIPT_PARAM_ONOFF, true)
- DravenConfig:addParam("MixedMode", "Use / Catch Axes: Mixed Mode Mode", SCRIPT_PARAM_ONOFF, true)
- DravenConfig:addParam("Reminder", "Display Reminder Text", SCRIPT_PARAM_ONOFF, true)
- function Move(pos)
- local moveSqr = math.sqrt((pos.x - myHero.x)^2+(pos.z - myHero.z)^2)
- local moveX = myHero.x + 200*((pos.x - myHero.x)/moveSqr)
- local moveZ = myHero.z + 200*((pos.z - myHero.z)/moveSqr)
- myHero:MoveTo(moveX, moveZ)
- end
- function CustomOnProcessSpell(unit, spell)
- if unit.isMe and spell.name == "dravenspinning" then
- qStacks = qStacks + 1
- end
- end
- function CustomOnCreateObj(obj)
- if obj.name == "Draven_Q_buf.troy" then
- qBuff = qBuff + 1
- end
- for _, particle in pairs(qParticles) do
- if obj ~= nil and obj.valid and obj.name:lower():find(particle:lower()) and GetDistance(obj) < 333 then
- attackedSuccessfully()
- end
- end
- if obj ~= nil and obj.name ~= nil and obj.x ~= nil and obj.z ~= nil then
- if obj.name == "Draven_Q_reticle_self.troy" then
- table.insert(reticles, {object = obj, created = GetTickCount()})
- elseif obj.name == "draven_spinning_buff_end_sound.troy" then
- qStacks = 0
- end
- end
- end
- function CustomOnDeleteObj(obj)
- if obj.name == "Draven_Q_reticle_self.troy" then
- if GetDistance(obj) > qRad then
- qStacks = qStacks - 1
- end
- for i, reticle in ipairs(reticles) do
- if obj and obj.valid and reticle.object and reticle.object.valid and obj.x == reticle.object.x and obj.z == reticle.object.z then
- table.remove(reticles, i)
- end
- end
- elseif obj.name == "Draven_Q_buf.troy" then
- qBuff = qBuff - 1
- end
- end
- function axesActive()
- if (AutoCarry.MainMenu.AutoCarry and DravenConfig.AutoCarry)
- or (AutoCarry.MainMenu.LastHit and DravenConfig.LastHit)
- or (AutoCarry.MainMenu.MixedMode and DravenConfig.MixedMode)
- or (AutoCarry.MainMenu.LaneClear and DravenConfig.LaneClear) then
- return true
- end
- return false
- end
- function CustomAttackEnemy(enemy)
- if enemy.dead or not enemy.valid or disableAttacks then return end
- if axesActive() and GetDistance(mousePos) <= DravenConfig.CatchRange then
- if qStacks < 2 then CastSpell(_Q) end
- end
- myHero:Attack(enemy)
- AutoCarry.shotFired = true
- end
- function CustomOnTick()
- if myHero.dead then return end
- if (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.MixedMode) and DravenConfig.AutoW and ValidTarget(AutoCarry.Orbwalker.target) and not TargetHaveBuff("dravenfurybuff" , myHero) then
- CastSpell(_W)
- end
- for _, particle in pairs(reticles) do
- if closestReticle and closestReticle.object.valid and particle.object and particle.object.valid then
- if GetDistance(particle.object) > GetDistance(closestReticle.object) then
- closestReticle = particle
- end
- else
- closestReticle = particle
- end
- end
- if GetDistance(mousePos) <= DravenConfig.HoldRange and axesActive() then
- if not stopped then
- myHero:HoldPosition()
- stopped = true
- end
- disableMovement = true
- else
- stopped = false
- end
- function doMovement()
- disableMovement = true
- disableAttacks = true
- if myHero.canMove then Move({x = closestReticle.object.x, z = closestReticle.object.z}) end
- end
- if axesActive() and closestReticle and closestReticle.object and closestReticle.object.valid then
- if GetDistance(mousePos) <= DravenConfig.CatchRange and ((AutoCarry.MainMenu.AutoCarry and ShouldCatch(closestReticle.object)) or (not AutoCarry.MainMenu.AutoCarry)) then
- if GetDistance(closestReticle.object) > qRad then
- doMovement()
- else
- disableMovement = true
- disableAttacks = false
- end
- else
- disableMovement = false
- disableAttacks = false
- end
- elseif GetDistance(mousePos) <= DravenConfig.HoldRange then
- disableMovement = true
- disableAttacks = false
- else
- disableMovement = false
- disableAttacks = false
- end
- end
- function ShouldCatch(reticle)
- local enemy
- if AutoCarry.Orbwalker.target ~= nil then enemy = AutoCarry.Orbwalker.target
- elseif AutoCarry.SkillsCrosshair.target ~= nil then enemy = AutoCarry.SkillsCrosshair.target
- else return true end
- if not reticle then return false end
- if GetDistance(mousePos, enemy) > GetDistance(enemy) then
- if GetDistance(reticle, enemy) < GetDistance(enemy) then
- return false
- end
- return true
- else
- local closestEnemy
- for _, thisEnemy in pairs(AutoCarry.EnemyTable) do
- if not closestEnemy then closestEnemy = thisEnemy
- elseif GetDistance(thisEnemy) < GetDistance(closestEnemy) then closestEnemy = thisEnemy end
- end
- if closestEnemy then
- local predPos = getPrediction(1.9, 100, closestEnemy)
- if not predPos then return true end
- if GetDistance(reticle, predPos) > getTrueRange() + getHitBoxRadius(closestEnemy) then
- return false
- end
- return true
- else
- return true
- end
- end
- end
- function BonusLastHitDamage(minion)
- if myHero:GetSpellData(_Q).level > 0 and qBuff > 0 then
- return ((myHero.damage + myHero.addDamage) * (0.35 + (0.1 * myHero:GetSpellData(_Q).level)))
- end
- end
- function CustomOnDraw()
- DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.HoldRange, 0xFFFFFF)
- DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.HoldRange-1, 0xFFFFFF)
- DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.CatchRange-1, 0x19A712)
- if axesActive() and DravenConfig.Reminder then
- if GetDistance(mousePos) <= DravenConfig.HoldRange then
- DrawText("Holding Position & Catching",16,100, 100, 0xFF00FF00)
- elseif GetDistance(mousePos) <= DravenConfig.CatchRange then
- DrawText("Orbwalking & Catching",16,100, 100, 0xFF00FF00)
- else
- DrawText("Only Orbwalking",16,100, 100, 0xFF00FF00)
- end
- end
- end
- end
- --[[ Items ]]--
- local items =
- {
- {name = "Blade of the Ruined King", menu = "BRK", id=3153, range = 500, reqTarget = true, slot = nil },
- {name = "Bilgewater Cutlass", menu = "BWC", id=3144, range = 500, reqTarget = true, slot = nil },
- {name = "Deathfire Grasp", menu = "DFG", id=3128, range = 750, reqTarget = true, slot = nil },
- {name = "Hextech Gunblade", menu = "HGB", id=3146, range = 400, reqTarget = true, slot = nil },
- {name = "Ravenous Hydra", menu = "RSH", id=3074, range = 350, reqTarget = false, slot = nil},
- {name = "Sword of the Divine", menu = "STD", id=3131, range = 350, reqTarget = false, slot = nil},
- {name = "Tiamat", menu = "TMT", id=3077, range = 350, reqTarget = false, slot = nil},
- {name = "Entropy", menu = "ETR", id=3184, range = 350, reqTarget = false, slot = nil},
- {name = "Youmuu's Ghostblade", menu = "YGB", id=3142, range = 350, reqTarget = false, slot = nil}
- }
- function UseItemsOnTick()
- if AutoCarry.Orbwalker.target then
- for _,item in pairs(items) do
- item.slot = GetInventorySlotItem(item.id)
- if item.slot ~= nil then
- if item.reqTarget and GetDistance(AutoCarry.Orbwalker.target) <= item.range and item.menu ~= "BRK" then
- CastSpell(item.slot, AutoCarry.Orbwalker.target)
- elseif item.reqTarget and GetDistance(AutoCarry.Orbwalker.target) <= item.range and item.menu == "BRK" then
- if myHero.health <= myHero.maxHealth*0.65 or GetDistance(AutoCarry.Orbwalker.target) > 400 then
- CastSpell(item.slot, AutoCarry.Orbwalker.target)
- end
- elseif not item.reqTarget then
- CastSpell(item.slot)
- end
- end
- end
- end
- end
- function SetMuramana()
- if AutoCarry.Orbwalker.target ~= nil and ItemMenu.muraMana and not MuramanaIsActive() and (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.MixedMode) then
- MuramanaOn()
- elseif AutoCarry.Orbwalker.target == nil and ItemMenu.muraMana and MuramanaIsActive() then
- MuramanaOff()
- end
- end
- --[[ Summoner Spells ]]--
- local ignite, barrier, healthBefore, healthBeforeTimer, nextUpdate, nextCheck = nil, nil, 0, 0, 0, 0, 0
- function SummonerOnLoad()
- ignite = (player:GetSpellData(SUMMONER_1).name == "SummonerDot" and SUMMONER_1 or (player:GetSpellData(SUMMONER_2).name == "SummonerDot" and SUMMONER_2 or nil))
- barrier = (player:GetSpellData(SUMMONER_1).name == "SummonerBarrier" and SUMMONER_1 or (player:GetSpellData(SUMMONER_2).name == "SummonerBarrier" and SUMMONER_2 or nil))
- end
- function SummonerOnTick()
- if ignite and SummonerMenu.Ignite and myHero:CanUseSpell(ignite) == READY then
- for _, enemy in pairs(GetEnemyHeroes()) do
- if ValidTarget(enemy, 600) and enemy.health <= 50 + (20 * player.level) then
- CastSpell(ignite, enemy)
- end
- end
- end
- if barrier and SummonerMenu.Barrier and myHero:CanUseSpell(barrier) == READY then
- if GetTickCount() >= nextCheck then
- local co = ((myHero.health / myHero.maxHealth * 100) - 20)*(0.3-0.1)/(100-20)+0.1
- local proc = myHero.maxHealth * co
- if healthBefore - myHero.health > proc and myHero.health < myHero.maxHealth * 0.3 then
- CastSpell(barrier)
- end
- nextCheck = GetTickCount() + 100
- if GetTickCount() >= nextUpdate then
- healthBefore = myHero.health
- healthBeforeTimer = GetTickCount()
- nextUpdate = GetTickCount() + 1000
- end
- end
- end
- end
- --[[ Plugins ]]--
- if FileExist(LIB_PATH .."SidasAutoCarryPlugin - "..myHero.charName..".lua") then
- hasPlugin = true
- end
- AutoCarry.GetAttackTarget = function()
- if ValidTarget(AutoCarry.Orbwalker.target) then
- return AutoCarry.Orbwalker.target
- else
- AutoCarry.SkillsCrosshair:update()
- return AutoCarry.SkillsCrosshair.target
- end
- end
- --[[ Callbacks ]]--
- function OnLoad()
- enemyMinions = minionManager(MINION_ENEMY, 2000, player, MINION_SORT_HEALTH_ASC)
- allyMinions = minionManager(MINION_ALLY, 2000, player, MINION_SORT_HEALTH_ASC)
- if getChampTable()[myHero.charName] then
- ChampInfo = getChampTable()[myHero.charName]
- else
- PrintChat(" >> Sida's Auto Carry: "..myHero.charName.." is not fully supported yet! Using default attack values")
- ChampInfo = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.050905797" }
- end
- OrbwalkingOnLoad()
- SkillsOnLoad()
- LastHitOnLoad()
- SummonerOnLoad()
- AutoCarry.EnemyTable = GetEnemyHeroes()
- PriorityOnLoad()
- setMenus()
- if ChampInfo.AttackDelayCastOffsetPercent then NextTimedMove = 1/0 end
- StreamingMenu.DisableDrawing = false
- --if VIP_USER then require "Collision" end
- if CustomOnLoad then CustomOnLoad() end
- if PluginOnLoad then PluginOnLoad() end
- PrintChat(">> Sida's Auto Carry: Revamped!")
- end
- function OnTick()
- OrbwalkingOnTick()
- LastHitOnTick()
- SkillsOnTick()
- SummonerOnTick()
- setMovement()
- SetMuramana()
- if PluginOnTick then PluginOnTick() end
- if StreamingMenu.DisableDrawing and not hudDisabled then
- for i = 0, 10 do
- PrintChat("")
- end
- hudDisabled = true
- DisableOverlay()
- end
- if (AutoCarry.MainMenu.AutoCarry and ItemMenu.UseItemsAC) or (AutoCarry.MainMenu.LastHit and ItemMenu.UseItemsLastHit) or (AutoCarry.MainMenu.MixedMode and ItemMenu.UseItemsMixed) then
- UseItemsOnTick()
- end
- if AutoCarry.MainMenu.AutoCarry then
- if AutoCarry.Orbwalker.target ~= nil and EnemyInRange(AutoCarry.Orbwalker.target) then
- if timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(AutoCarry.Orbwalker.target)
- elseif heroCanMove() then
- moveToCursor()
- end
- elseif heroCanMove() then
- moveToCursor()
- end
- end
- if AutoCarry.MainMenu.LastHit then
- if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
- if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(killableMinion)
- elseif ValidTarget(turretMinion.obj) and timeToShoot() and AutoCarry.CanAttack and turretMinion.timeToHit > getTimeToHit(turretMinion.obj, projSpeed) then
- attackEnemy(turretMinion.obj)
- elseif heroCanMove() and FarmMenu.moveLastHit then
- moveToCursor()
- end
- end
- if AutoCarry.MainMenu.MixedMode then
- if AutoCarry.Orbwalker.target ~= nil and EnemyInRange(AutoCarry.Orbwalker.target) then
- if timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(AutoCarry.Orbwalker.target)
- elseif heroCanMove() then
- moveToCursor()
- end
- else
- if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
- if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(killableMinion)
- elseif heroCanMove() and FarmMenu.moveMixed then
- moveToCursor()
- end
- end
- end
- if AutoCarry.MainMenu.LaneClear then
- if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
- if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(killableMinion)
- else
- local tMinion = getHighestMinion()
- if tMinion and ValidTarget(tMinion) and timeToShoot() and AutoCarry.CanAttack then
- attackEnemy(tMinion)
- else
- -- local tMinion = getJungleMinion()
- -- if tMinion and ValidTarget(tMinion) and timeToShoot() and AutoCarry.CanAttack then
- -- attackEnemy(tMinion)
- if heroCanMove() and FarmMenu.moveClear then
- moveToCursor()
- end
- end
- end
- end
- if CustomOnTick then CustomOnTick() end
- end
- function OnProcessSpell(unit, spell)
- OrbwalkingOnProcessSpell(unit, spell)
- LastHitOnProcessSpell(unit, spell)
- if TimedMode and ChampInfo.AttackDelayCastOffsetPercent then TimedMoveOnProcessSpell(unit,spell) end
- if CustomOnProcessSpell then CustomOnProcessSpell(unit, spell) end
- if PluginOnProcessSpell then PluginOnProcessSpell(unit, spell) end
- end
- function OnCreateObj(obj)
- if myHero.dead or ChampInfo == nil then return end
- if not TimedMode then
- for _, v in pairs(ChampInfo.aaParticles) do
- if obj ~= nil and obj.valid and obj.name:lower():find(v:lower()) then
- if obj.name:lower():find("tristanna") then
- if GetDistance(obj) > 100 then return end
- end
- attackedSuccessfully()
- end
- end
- end
- --LastHitOnCreateObj(obj)
- if CustomOnCreateObj then CustomOnCreateObj(obj) end
- if PluginOnCreateObj then PluginOnCreateObj(obj) end
- end
- function OnDeleteObj(obj)
- --LastHitOnDeleteObj(obj)
- if CustomOnDeleteObj then CustomOnDeleteObj(obj) end
- if PluginOnDeleteObj then PluginOnDeleteObj(obj) end
- end
- function OnDraw()
- if DisplayMenu.myRange and not disableRangeDraw then
- DrawCircle(myHero.x, myHero.y, myHero.z, getTrueRange(), 0x19A712)
- end
- DrawCircle(myHero.x, myHero.y, myHero.z, AutoCarry.MainMenu.HoldZone, 0xFFFFFF)
- OrbwalkingOnDraw()
- LastHitOnDraw()
- if CustomOnDraw then CustomOnDraw() end
- if PluginOnDraw then PluginOnDraw() end
- end
- function OnWndMsg(msg, key)
- if PluginOnWndMsg then PluginOnWndMsg(msg, key) end
- end
- --[[ Data ]]--
- function getChampTable()
- return {
- Aatrox = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.651", AttackDelayCastOffsetPercent = "-0.095" },
- Ahri = { projSpeed = 1.6, aaParticles = {"Ahri_BasicAttack_mis", "Ahri_BasicAttack_tar"}, aaSpellName = "ahribasicattack", startAttackSpeed = "0.668", AttackDelayCastOffsetPercent = "-0.099465" },
- Akali = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.694", AttackDelayCastOffsetPercent = "-0.080701754" },
- Alistar = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.110855263" },
- Amumu = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.638", AttackDelayCastOffsetPercent = "-0.066156463" },
- Anivia = { projSpeed = 1.05, aaParticles = {"cryo_BasicAttack_mis", "cryo_BasicAttack_tar"}, aaSpellName = "aniviabasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.00833" },
- Annie = { projSpeed = 1.0, aaParticles = {"AnnieBasicAttack_tar", "AnnieBasicAttack_tar_frost", "AnnieBasicAttack2_mis", "AnnieBasicAttack3_mis"}, aaSpellName = "anniebasicattack", startAttackSpeed = "0.579", AttackDelayCastOffsetPercent = "-0.104205247" },
- Ashe = { projSpeed = 2.0, aaParticles = {"bowmaster_frostShot_mis", "bowmasterbasicattack_mis"}, aaSpellName = "ashebasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.080701754" },
- Blitzcrank = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.03" },
- Brand = { projSpeed = 1.975, aaParticles = {"BrandBasicAttack_cas", "BrandBasicAttack_Frost_tar", "BrandBasicAttack_mis", "BrandBasicAttack_tar", "BrandCritAttack_mis", "BrandCritAttack_tar", "BrandCritAttack_tar"}, aaSpellName = "brandbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.1125" },
- Caitlyn = { projSpeed = 2.5, aaParticles = {"caitlyn_basicAttack_cas", "caitlyn_headshot_tar", "caitlyn_mis_04"}, aaSpellName = "caitlynbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.122916667" },
- Cassiopeia = { projSpeed = 1.22, aaParticles = {"CassBasicAttack_mis"}, aaSpellName = "cassiopeiabasicattack", startAttackSpeed = "0.644", AttackDelayCastOffsetPercent = "-0.108" },
- Corki = { projSpeed = 2.0, aaParticles = {"corki_basicAttack_mis", "Corki_crit_mis"}, aaSpellName = "CorkiBasicAttack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.2" },
- Darius = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.050905797" },
- Draven = { projSpeed = 1.4, aaParticles = {"Draven_BasicAttackAlt_mis", "Draven_BasicAttack_mis", "Draven_BasicAttack_mis_bloodless", "Draven_BasicAttack_mis_shadow", "Draven_BasicAttack_mis_shadow_bloodless", "Draven_crit_mis", "Draven_crit_mis_bloodless", "Draven_crit_mis_shadow", "Draven_crit_mis_shadow_bloodless" } , aaSpellName = "dravenbasicattack", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.11884058" },
- Ezreal = { projSpeed = 2.0, aaParticles = {"Ezreal_basicattack_mis", "Ezreal_critattack_mis"}, aaSpellName = "ezrealbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.111613475"},
- FiddleSticks = { projSpeed = 1.75, aaParticles = {"FiddleSticks_cas", "FiddleSticks_mis", "FiddleSticksBasicAttack_tar"}, aaSpellName = "fiddlesticksbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.070833333" },
- Fiora = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.672", AttackDelayCastOffsetPercent = "-0.080701754" },
- Garen = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.091666667" },
- Graves = { projSpeed = 3.0, aaParticles = {"Graves_BasicAttack_mis",}, aaSpellName = "gravesbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.154166667" },
- Gangplank = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.651", AttackDelayCastOffsetPercent = "-0.110980903" },
- Hecarim = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.670", AttackDelayCastOffsetPercent = "-0.05" },
- Heimerdinger = { projSpeed = 1.4, aaParticles = {"heimerdinger_basicAttack_mis", "heimerdinger_basicAttack_tar"}, aaSpellName = "heimerdingerbasicAttack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.069921875" },
- Janna = { projSpeed = 1.2, aaParticles = {"JannaBasicAttack_mis", "JannaBasicAttack_tar", "JannaBasicAttackFrost_tar"}, aaSpellName = "jannabasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.08" },
- JarvanIV = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.12456" },
- Jayce = { projSpeed = 2.2, aaParticles = {"Jayce_Range_Basic_mis", "Jayce_Range_Basic_Crit"}, aaSpellName = "jaycebasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.1" },
- Jax = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.638", AttackDelayCastOffsetPercent = "-0.05255" },
- Karma = { projSpeed = nil, aaParticles = {"karma_basicAttack_cas", "karma_basicAttack_mis", "karma_crit_mis"}, aaSpellName = "karmabasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.138541667" },
- Karthus = { projSpeed = 1.25, aaParticles = {"LichBasicAttack_cas", "LichBasicAttack_glow", "LichBasicAttack_mis", "LichBasicAttack_tar"}, aaSpellName = "karthusbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "0.04375" },
- Kayle = { projSpeed = 1.8, aaParticles = {"RighteousFury_nova"}, aaSpellName = "KayleBasicAttack", startAttackSpeed = "0.638", AttackDelayCastOffsetPercent = "-0.087414966"},
- Kennen = { projSpeed = 1.35, aaParticles = {"KennenBasicAttack_mis", "kennen_ds_mis" }, aaSpellName = "kennenbasicattack", startAttackSpeed = "0.690", AttackDelayCastOffsetPercent = "-0.1" },
- Khazix = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.665", AttackDelayCastOffsetPercent = "-0.099465241" },
- KogMaw = { projSpeed = 1.8, aaParticles = {"KogMawBasicAttack_mis", "KogMawBioArcaneBarrage_mis"}, aaSpellName = "kogmawbasicattack", startAttackSpeed = "0.665", AttackDelayCastOffsetPercent = "-0.133776596"},
- Leblanc = { projSpeed = 1.7, aaParticles = {"leBlanc_basicAttack_cas", "leBlancBasicAttack_mis"}, aaSpellName = "leblancbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.133333333" },
- LeeSin = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.651", AttackDelayCastOffsetPercent = "-0.10469" },
- Leona = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.07083" },
- Lulu = { projSpeed = 2.5, aaParticles = {"lulu_attack_cas", "LuluBasicAttack", "LuluBasicAttack_tar"}, aaSpellName = "LuluBasicAttack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.1125" },
- Lux = { projSpeed = 1.55, aaParticles = {"LuxBasicAttack_mis", "LuxBasicAttack_tar", "LuxBasicAttack01"}, aaSpellName = "luxbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.14375" },
- MasterYi = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.05625" },
- Malzahar = { projSpeed = 1.5, aaParticles = {"AlzaharBasicAttack_cas", "AlZaharBasicAttack_mis"}, aaSpellName = "malzaharbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.02926" },
- Malphite = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.638", AttackDelayCastOffsetPercent = "-0.050318878" },
- MissFortune = { projSpeed = 2.0, aaParticles = {"missFortune_basicAttack_mis", "missFortune_crit_mis"}, aaSpellName = "missfortunebasicattack", startAttackSpeed = "0.656", AttackDelayCastOffsetPercent = "-0.151993366" },
- Morgana = { projSpeed = 1.6, aaParticles = {"FallenAngelBasicAttack_mis", "FallenAngelBasicAttack_tar", "FallenAngelBasicAttack2_mis"}, aaSpellName = "Morganabasicattack", startAttackSpeed = "0.579", AttackDelayCastOffsetPercent = "-0.145679012" },
- MonkeyKing = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.091666667" },
- Nautilus = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.613", AttackDelayCastOffsetPercent = "0.00637" },
- Nidalee = { projSpeed = 1.7, aaParticles = {"nidalee_javelin_mis"}, aaSpellName = "nidaleebasicattack", startAttackSpeed = "0.670", AttackDelayCastOffsetPercent = "-0.092292024" },
- Nocturne = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.668", AttackDelayCastOffsetPercent = "-0.099465241" },
- Nunu = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.10641" },
- Orianna = { projSpeed = 1.4, aaParticles = {"OrianaBasicAttack_mis", "OrianaBasicAttack_tar"}, aaSpellName = "oriannabasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.124561404" },
- Pantheon = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.09687" },
- Poppy = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.638", AttackDelayCastOffsetPercent = "-0.08316" },
- Rengar = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.11" },
- Quinn = { projSpeed = 1.85, aaParticles = {"Quinn_basicattack_mis", "QuinnValor_BasicAttack_01", "QuinnValor_BasicAttack_02", "QuinnValor_BasicAttack_03", "Quinn_W_mis"}, aaSpellName = "QuinnBasicAttack", startAttackSpeed = "0.668", AttackDelayCastOffsetPercent = "-0.124561404" },
- Renekton = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.665", AttackDelayCastOffsetPercent = "-0.122695035" },
- Ryze = { projSpeed = 2.4, aaParticles = {"ManaLeach_mis"}, aaSpellName = {"RyzeBasicAttack"}, startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.039453125" },
- Shyvana = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.102631579" },
- Shen = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.651", AttackDelayCastOffsetPercent = "-0.126388889" },
- Singed = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.613", AttackDelayCastOffsetPercent = "-0.063851264" },
- Sivir = { projSpeed = 1.4, aaParticles = {"sivirbasicattack_mis", "sivirbasicattack2_mis", "SivirRicochetAttack_mis"}, aaSpellName = "sivirbasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.108998302" },
- Sona = { projSpeed = 1.6, aaParticles = {"SonaBasicAttack_mis", "SonaBasicAttack_tar", "SonaCritAttack_mis", "SonaPowerChord_AriaofPerseverance_mis", "SonaPowerChord_AriaofPerseverance_tar", "SonaPowerChord_HymnofValor_mis", "SonaPowerChord_HymnofValor_tar", "SonaPowerChord_SongOfSelerity_mis", "SonaPowerChord_SongOfSelerity_tar", "SonaPowerChord_mis", "SonaPowerChord_tar"}, aaSpellName = "sonabasicattack", startAttackSpeed = "0.644", AttackDelayCastOffsetPercent = "-0.128178694" },
- Soraka = { projSpeed = 1.0, aaParticles = {"SorakaBasicAttack_mis", "SorakaBasicAttack_tar"}, aaSpellName = "sorakabasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.1125" },
- Swain = { projSpeed = 1.6, aaParticles = {"swain_basicAttack_bird_cas", "swain_basicAttack_cas", "swainBasicAttack_mis"}, aaSpellName = "swainbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.173333333" },
- Syndra = { projSpeed = 1.2, aaParticles = {"Syndra_attack_hit", "Syndra_attack_mis"}, aaSpellName = "sorakabasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.1125" },
- Talon = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.668", AttackDelayCastOffsetPercent = "-0.099465241" },
- Teemo = { projSpeed = 1.3, aaParticles = {"TeemoBasicAttack_mis", "Toxicshot_mis"}, aaSpellName = "teemobasicattack", startAttackSpeed = "0.690", AttackDelayCastOffsetPercent = "-0.08426" },
- Trundle = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.672", AttackDelayCastOffsetPercent = "-0.091666667" },
- Tristana = { projSpeed = 2.25, aaParticles = {"TristannaBasicAttack_mis"}, aaSpellName = "tristanabasicattack", startAttackSpeed = "0.656", AttackDelayCastOffsetPercent = "-0.151993366" },
- TwistedFate = { projSpeed = 1.5, aaParticles = {"TwistedFateBasicAttack_mis", "TwistedFateStackAttack_mis", "PickaCard_blue_mis", "PickaCard_red_mis", "PickaCard_yellow_mis"}, aaSpellName = "twistedfatebasicattack", startAttackSpeed = "0.651", AttackDelayCastOffsetPercent = "-0.055964382" },
- Twitch = { projSpeed = 2.5, aaParticles = {"twitch_basicAttack_mis", "twitch_sprayandPray_mis"}, aaSpellName = "twitchbasicattack", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.098084019" },
- Tryndamere = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.670", AttackDelayCastOffsetPercent = "-0.08" },
- Urgot = { projSpeed = 1.3, aaParticles = {"UrgotBasicAttack_mis"}, aaSpellName = "urgotbasicattack", startAttackSpeed = "0.644", AttackDelayCastOffsetPercent = "-0.171134021" },
- Udyr = { projSpeed = 0, aaParticles = {""}, aaSpellName = "", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.10158" },
- Vayne = { projSpeed = 2.0, aaParticles = {"vayne_basicAttack_mis", "vayne_critAttack_mis", "vayne_ult_mis" }, aaSpellName = "vaynebasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.124561404" },
- Varus = { projSpeed = 2.0, aaParticles = {"varus_basicAttack_mis", "varus_critAttack_mis" }, aaSpellName = "varusbasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.124561404" },
- Veigar = { projSpeed = 1.05, aaParticles = {"ahri_basicattack_mis"}, aaSpellName = "veigarbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.10906" },
- Vi = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.643", AttackDelayCastOffsetPercent = "-0.07" },
- Viktor = { projSpeed = 2.25, aaParticles = {"ViktorBasicAttack_cas", "ViktorBasicAttack_mis", "ViktorBasicAttack_tar"}, aaSpellName = "viktorbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.091666667" },
- Volibear = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.07" },
- Vladimir = { projSpeed = 1.4, aaParticles = {"VladBasicAttack_mis", "VladBasicAttack_mis_bloodless", "VladBasicAttack_tar", "VladBasicAttack_tar_bloodless"}, aaSpellName = "vladimirbasicattack", startAttackSpeed = "0.658", AttackDelayCastOffsetPercent = "-0.07211" },
- Warwick = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.679", AttackDelayCastOffsetPercent = "-0.0047" },
- Xerath = { projSpeed = 1.2, aaParticles = {"XerathBasicAttack_mis", "XerathBasicAttack_tar"}, aaSpellName = "xerathbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.02926" },
- XinZhao = { projSpeed = 0, aaParticles = {"", ""}, aaSpellName = "", startAttackSpeed = "0.672", AttackDelayCastOffsetPercent = "-0.09687" },
- Ziggs = { projSpeed = 1.5, aaParticles = {"ZiggsBasicAttack_mis", "ZiggsPassive_mis"}, aaSpellName = "ziggsbasicattack", startAttackSpeed = "0.656", AttackDelayCastOffsetPercent = "-0.091666667" },
- Zilean = { projSpeed = 1.25, aaParticles = {"ChronoBasicAttack_mis"}, aaSpellName = "zileanbasicattack", AttackDelayCastOffsetPercent = "-0.02826" },
- Zyra = { projSpeed = 1.7, aaParticles = {"Zyra_basicAttack_cas", "Zyra_basicAttack_cas_02", "Zyra_basicAttack_mis", "Zyra_basicAttack_tar", "Zyra_basicAttack_tar_hellvine"}, aaSpellName = "zileanbasicattack", startAttackSpeed = "0.625", AttackDelayCastOffsetPercent = "-0.154166667"},
- }
- end
- function getSpellList()
- local spellArray = nil
- if myHero.charName == "Ezreal" then
- spellArray = {
- { spellKey = _Q, range = 1100, speed = 2.0, delay = 250, width = 70, configName = "mysticShot", displayName = "Q (Mystic Shot)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- { spellKey = _W, range = 1050, speed = 1.6, delay = 250, width = 90, configName = "essenceFlux", displayName = "W (Essence Flux)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "KogMaw" then
- spellArray = {
- { spellKey = _Q, range = 625, speed = 1.3, delay = 260, width = 200, configName = "causticSpittle", displayName = "Q (Caustic Spittle)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = true },
- { spellKey = _W, range = 625, speed = 1.3, delay = 260, width = 200, configName = "bioArcaneBarrage", displayName = "W (Bio-Arcane Barrage)", enabled = true, forceRange = true, forceToHitBox = true, skillShot = false, minions = false, reset = false, reqTarget = false },
- { spellKey = _E, range = 850, speed = 1.3, delay = 260, width = 200, configName = "voidOoze", displayName = "E (Void Ooze)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- { spellKey = _R, range = 1700, speed = math.huge, delay = 1000, width = 200, configName = "livingArtillery", displayName = "R (Living Artillery)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Sivir" then
- spellArray = {
- { spellKey = _Q, range = 1000, speed = 1.33, delay = 250, width = 120, configName = "boomerangBlade", displayName = "Q (Boomerang Blade)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- { spellKey = _W, range = getTrueRange(), speed = 1, delay = 0, width = 200, configName = "Ricochet", displayName = "W (Ricochet)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = true },
- }
- elseif myHero.charName == "Graves" then
- spellArray = {
- { spellKey = _Q, range = 750, speed = 2, delay = 250, width = 200, configName = "buckShot", displayName = "Q (Buck Shot)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- { spellKey = _W, range = 700, speed = 1400, delay = 300, width = 500, configName = "smokeScreen", displayName = "W (Smoke Screen)", enabled = false, skillShot = true, minions = false, reset = false, reqTarget = true },
- { spellKey = _E, range = 580, speed = 1450, delay = 250, width = 200, configName = "quickDraw", displayName = "E (Quick Draw)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = false, atMouse = true },
- }
- elseif myHero.charName == "Caitlyn" then
- spellArray = {
- { spellKey = _Q, range = 1300, speed = 2.1, delay = 625, width = 100, configName = "piltoverPeacemaker", displayName = "Q (Piltover Peacemaker)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Corki" then
- spellArray = {
- { spellKey = _Q, range = 600, speed = 2, delay = 200, width = 500, configName = "phosphorusBomb", displayName = "Q (Phosphorus Bomb)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- { spellKey = _R, range = 1225, speed = 2, delay = 200, width = 50, configName = "missileBarrage", displayName = "R (Missile Barrage)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Teemo" then
- spellArray = {
- { spellKey = _Q, range = 580, speed = 2, delay = 0, width = 200, configName = "blindingDart", displayName = "Q (Blinding Dart)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "TwistedFate" then
- spellArray = {
- { spellKey = _Q, range = 1200, speed = 1.45, delay = 250, width = 200, configName = "wildCards", displayName = "Q (Wild Cards)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Vayne" then
- spellArray = {
- { spellKey = _Q, range = 580, speed = 1.45, delay = 250, width = 200, configName = "tumble", displayName = "Q (Tumble)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = false, atMouse = true },
- { spellKey = _R, range = 580, speed = 1.45, delay = 250, width = 200, configName = "finalHour", displayName = "R (Final Hour)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = false},
- }
- elseif myHero.charName == "MissFortune" then
- spellArray = {
- { spellKey = _Q, range = 650, speed = 1.45, delay = 250, width = 200, configName = "doubleUp", displayName = "Q (Double Up)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = true},
- { spellKey = _W, range = 580, speed = 1.45, delay = 250, width = 200, configName = "impureShots", displayName = "W (Impure Shots)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = false},
- { spellKey = _E, range = 800, speed = math.huge, delay = 500, width = 500, configName = "makeItRain", displayName = "E (Make It Rain)", enabled = false, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Tristana" then
- spellArray = {
- { spellKey = _Q, range = 580, speed = 1.45, delay = 250, width = 200, configName = "rapidFire", displayName = "Q (Rapid Fire)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = false},
- { spellKey = _E, range = 550, speed = 1.45, delay = 250, width = 200, configName = "explosiveShot", displayName = "E (Explosive Shot)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true},
- }
- elseif myHero.charName == "Draven" then
- spellArray = {
- { spellKey = _E, range = 950, speed = 1.37, delay = 300, width = 130, configName = "standAside", displayName = "E (Stand Aside)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true},
- }
- --[[ Added Champs ]]
- elseif myHero.charName == "Kennen" then
- spellArray = {
- { spellKey = _Q, range = 1050, speed = 1.65, delay = 180, width = 80, configName = "thunderingShuriken", displayName = "Q (Thundering Shuriken)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Ashe" then
- spellArray = {
- { spellKey = _W, range = 1200, speed = 2.0, delay = 120, width = 85, configName = "Volley", displayName = "W (Volley)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Syndra" then
- spellArray = {
- { spellKey = _Q, range = 800, speed = math.huge, delay = 400, width = 100, configName = "darkSphere", displayName = "Q (Dark Sphere)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Jayce" then
- spellArray = {
- { spellKey = _Q, range = 1600, speed = 2.0, delay = 350, width = 90, configName = "shockBlast", displayName = "Q (Shock Blast)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Nidalee" then
- spellArray = {
- { spellKey = _Q, range = 1500, speed = 1.3, delay = 125, width = 80, configName = "javelinToss", displayName = "Q (Javelin Toss)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- --[[elseif myHero.charName == "Varus" then
- spellArray = {
- { spellKey = _E, range = 925, speed = 1.75, delay = 240, width = 235, configName = "hailofArrows", displayName = "E (Hail of Arrows)", enabled = true, skillShot = true, minions = false, reset = false, reqTarget = true },
- }]]
- elseif myHero.charName == "Quinn" then
- spellArray = {
- { spellKey = _Q, range = 1050, speed = 1.55, delay = 220, width = 90, configName = "blindingAssault", displayName = "Q (Blinding Assault)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- --{ spellKey = _E, range = 725, speed = 1.45, delay = 250, width = nil, configName = "vault", displayName = "E (Vault)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = true},
- }
- elseif myHero.charName == "LeeSin" then
- spellArray = {
- { spellKey = _Q, range = 975, speed = 1.5, delay = 250, width = 70, configName = "sonicWave", displayName = "Q (Sonic Wave)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Gangplank" then
- spellArray = {
- { spellKey = _Q, range = 625, speed = 1.45, delay = 250, width = 200, configName = "parley", displayName = "Q (Parley)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true},
- }
- elseif myHero.charName == "Twitch" then
- spellArray = {
- { spellKey = _W, range = 950, speed = 1.75, delay = 180, width = 275, configName = "venomCask", displayName = "W (Venom Cask)", enabled = false, skillShot = true, minions = false, reset = false, reqTarget = true },
- }
- elseif myHero.charName == "Darius" then
- spellArray = {
- { spellKey = _W, range = 300, speed = 2, delay = 0, width = 200, configName = "cripplingStrike", displayName = "W (Crippling Strike)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Hecarim" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "rampage", displayName = "Q (Rampage)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Warwick" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "hungeringStrike", displayName = "Q (Hungering Strike)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = true },
- }
- elseif myHero.charName == "MonkeyKing" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "crushingBlow", displayName = "Q (Crushing Blow)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Poppy" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "devastatingBlow", displayName = "Q (Devastating Blow)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Talon" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "noxianDiplomacy", displayName = "Q (Noxian Diplomacy)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Nautilus" then
- spellArray = {
- { spellKey = _W, range = 300, speed = 2, delay = 0, width = 200, configName = "titansWrath", displayName = "W (Titans Wrath)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Gangplank" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "parlay", displayName = "Q (Parlay)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = true },
- }
- elseif myHero.charName == "Vi" then
- spellArray = {
- { spellKey = _E, range = 300, speed = 2, delay = 0, width = 200, configName = "excessiveForce", displayName = "E (Excessive Force)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Rengar" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "savagery", displayName = "Q (Savagery)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Trundle" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "chomp", displayName = "Q (Chomp)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Leona" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "shieldOfDaybreak", displayName = "Q (Shield Of Daybreak)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Fiora" then
- spellArray = {
- { spellKey = _E, range = 300, speed = 2, delay = 0, width = 200, configName = "burstOfSpeed", displayName = "E (Burst Of Speed)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Blitzcrank" then
- spellArray = {
- { spellKey = _E, range = 300, speed = 2, delay = 0, width = 200, configName = "powerFist", displayName = "E (Power Fist)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Shyvana" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "twinBlade", displayName = "Q (Twin Blade)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Renekton" then
- spellArray = {
- { spellKey = _W, range = 300, speed = 2, delay = 0, width = 200, configName = "ruthless Predator", displayName = "W (Ruthless Predator)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Jax" then
- spellArray = {
- { spellKey = _W, range = 300, speed = 2, delay = 0, width = 200, configName = "empower", displayName = "W (Empower)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "XinZhao" then
- spellArray = {
- { spellKey = _Q, range = 300, speed = 2, delay = 0, width = 200, configName = "threeTalonStrike", displayName = "Q (Three Talon Strike)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
- }
- elseif myHero.charName == "Nunu" then
- spellArray = {
- { spellKey = _E, range = GetSpellData(_E).range, speed = 1.45, delay = 250, width = 200, configName = "showball", displayName = "E (Snowball)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true},
- }
- elseif myHero.charName == "Khazix" then
- spellArray = {
- { spellKey = _Q, range = GetSpellData(_Q).range, speed = 1.45, delay = 250, width = 200, configName = "tasteTheirFear", displayName = "Q (Taste Their Fear)", enabled = true, skillShot = false, minions = false, reset = true, reqTarget = true},
- }
- elseif myHero.charName == "Shen" then
- spellArray = {
- { spellKey = _Q, range = GetSpellData(_Q).range, speed = 1.45, delay = 250, width = 200, configName = "vorpalBlade", displayName = "Q (Vorpal Blade)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true},
- }
- end
- return spellArray
- end
- local priorityTable = {
- AP = {
- "Annie", "Ahri", "Akali", "Anivia", "Annie", "Brand", "Cassiopeia", "Diana", "Evelynn", "FiddleSticks", "Fizz", "Gragas", "Heimerdinger", "Karthus",
- "Kassadin", "Katarina", "Kayle", "Kennen", "Leblanc", "Lissandra", "Lux", "Malzahar", "Mordekaiser", "Morgana", "Nidalee", "Orianna",
- "Rumble", "Ryze", "Sion", "Swain", "Syndra", "Teemo", "TwistedFate", "Veigar", "Viktor", "Vladimir", "Xerath", "Ziggs", "Zyra", "MasterYi",
- },
- Support = {
- "Alistar", "Blitzcrank", "Janna", "Karma", "Leona", "Lulu", "Nami", "Nunu", "Sona", "Soraka", "Taric", "Thresh", "Zilean",
- },
- Tank = {
- "Amumu", "Chogath", "DrMundo", "Galio", "Hecarim", "Malphite", "Maokai", "Nasus", "Rammus", "Sejuani", "Shen", "Singed", "Skarner", "Volibear",
- "Warwick", "Yorick", "Zac",
- },
- AD_Carry = {
- "Ashe", "Caitlyn", "Corki", "Draven", "Ezreal", "Graves", "Jayce", "KogMaw", "MissFortune", "Pantheon", "Quinn", "Shaco", "Sivir",
- "Talon", "Tristana", "Twitch", "Urgot", "Varus", "Vayne", "Zed",
- },
- Bruiser = {
- "Darius", "Elise", "Fiora", "Gangplank", "Garen", "Irelia", "JarvanIV", "Jax", "Khazix", "LeeSin", "Nautilus", "Nocturne", "Olaf", "Poppy",
- "Renekton", "Rengar", "Riven", "Shyvana", "Trundle", "Tryndamere", "Udyr", "Vi", "MonkeyKing", "XinZhao",
- },
- }
- function SetPriority(table, hero, priority)
- for i=1, #table, 1 do
- if hero.charName:find(table[i]) ~= nil then
- TS_SetHeroPriority(priority, hero.charName)
- end
- end
- end
- function arrangePrioritys()
- for i, enemy in ipairs(AutoCarry.EnemyTable) do
- SetPriority(priorityTable.AD_Carry, enemy, 1)
- SetPriority(priorityTable.AP, enemy, 2)
- SetPriority(priorityTable.Support, enemy, 3)
- SetPriority(priorityTable.Bruiser, enemy, 4)
- SetPriority(priorityTable.Tank, enemy, 5)
- end
- end
- function PriorityOnLoad()
- if heroManager.iCount < 10 then
- PrintChat(" >> Too few champions to arrange priority")
- else
- TargetSelector(TARGET_LOW_HP_PRIORITY, 0)
- arrangePrioritys()
- end
- end
- function getJungleMobs()
- return {"Dragon6.1.1", "Worm12.1.1", "GiantWolf8.1.3", "wolf8.1.1", "wolf8.1.2", "AncientGolem7.1.1", "YoungLizard7.1.2", "YoungLizard7.1.3", "Wraith9.1.3", "LesserWraith9.1.1", "LesserWraith9.1.2",
- "LesserWraith9.1.4", "LizardElder10.1.1", "YoungLizard10.1.2", "YoungLizard10.1.3", "Golem11.1.2", "SmallGolem11.1.1", "GiantWolf2.1.3", "wolf2.1.1",
- "wolf2.1.2", "AncientGolem1.1.1", "YoungLizard1.1.2", "YoungLizard1.1.3", "Wraith3.1.3", "LesserWraith3.1.1", "LesserWraith3.1.2", "LesserWraith3.1.4",
- "LizardElder4.1.1", "YoungLizard4.1.2", "YoungLizard4.1.3", "Golem5.1.2", "SmallGolem5.1.1"}
- end
- --[[ Menus ]]--
- function setMenus()
- mainMenu()
- skillsMenu()
- itemMenu()
- displayMenu()
- permaMenu()
- masteryMenu()
- farmMenu()
- summonerMenu()
- streamingMenu()
- pluginMenu()
- end
- function itemMenu()
- ItemMenu = scriptConfig("Sida's Auto Carry: Items", "sidasacitems")
- ItemMenu:addParam("sep", "-- Settings --", SCRIPT_PARAM_INFO, "")
- ItemMenu:addParam("UseItemsAC", "Use Items With AutoCarry", SCRIPT_PARAM_ONOFF, true)
- ItemMenu:addParam("UseItemsLastHit", "Use Items With Harass", SCRIPT_PARAM_ONOFF, true)
- ItemMenu:addParam("UseItemsMixed", "Use Items With Mixed Mode", SCRIPT_PARAM_ONOFF, true)
- ItemMenu:addParam("sep2", "-- Items --", SCRIPT_PARAM_INFO, "")
- for _, item in ipairs(items) do
- ItemMenu:addParam(item.menu, "Use "..item.name, SCRIPT_PARAM_ONOFF, true)
- end
- ItemMenu:addParam("muraMana", "Use Muramana", SCRIPT_PARAM_ONOFF, true)
- end
- function mainMenu()
- AutoCarry.MainMenu = scriptConfig("Sida's Auto Carry: Settings", "sidasacmain")
- AutoCarry.MainMenu:addParam("AutoCarry", "Auto Carry", SCRIPT_PARAM_ONKEYDOWN, false, AutoCarryKey)
- AutoCarry.MainMenu:addParam("LastHit", "Last Hit", SCRIPT_PARAM_ONKEYDOWN, false, LastHitKey)
- AutoCarry.MainMenu:addParam("MixedMode", "Mixed Mode", SCRIPT_PARAM_ONKEYDOWN, false, MixedModeKey)
- AutoCarry.MainMenu:addParam("LaneClear", "Lane Clear", SCRIPT_PARAM_ONKEYDOWN, false, LaneClearKey)
- AutoCarry.MainMenu:addParam("Focused", "Prioritise Selected Target", SCRIPT_PARAM_ONOFF, false)
- AutoCarry.MainMenu:addParam("HoldZone", "Stand Still And Shoot Range", SCRIPT_PARAM_SLICE, 0, 0, getTrueRange(), 0)
- AutoCarry.MainMenu:addParam("TimedMode", "Timed Mode (Only disable if stuttering)", SCRIPT_PARAM_ONOFF, true)
- AutoCarry.MainMenu:addTS(AutoCarry.Orbwalker)
- end
- function skillsMenu()
- SkillsMenu = scriptConfig("Sida's Auto Carry: Skills", "sidasacskills")
- if Skills then
- SkillsMenu:addParam("sep", "-- Auto Carry Skills --", SCRIPT_PARAM_INFO, "")
- for _, skill in ipairs(Skills) do
- SkillsMenu:addParam(skill.configName.."AutoCarry", "Use "..skill.displayName, SCRIPT_PARAM_ONOFF, true)
- end
- SkillsMenu:addParam("sep1", "-- Last Hit Skills --", SCRIPT_PARAM_INFO, "")
- for _, skill in ipairs(Skills) do
- SkillsMenu:addParam(skill.configName.."LastHit", "Use "..skill.displayName, SCRIPT_PARAM_ONOFF, true)
- end
- SkillsMenu:addParam("sep2", "-- Mixed Mode Skills --", SCRIPT_PARAM_INFO, "")
- for _, skill in ipairs(Skills) do
- SkillsMenu:addParam(skill.configName.."MixedMode", "Use "..skill.displayName, SCRIPT_PARAM_ONOFF, true)
- end
- else
- SkillsMenu:addParam("sep", myHero.charName.." does not have any supported skills", SCRIPT_PARAM_INFO, "")
- end
- if VIP_USER then
- SkillsMenu:addParam("hitChance", "Ability Hitchance", SCRIPT_PARAM_SLICE, 60, 0, 100, 0)
- SkillsMenu:addParam("useVIPCollision", "Use VIP Collision (FPS Drop)", SCRIPT_PARAM_ONOFF, true)
- end
- end
- function displayMenu()
- DisplayMenu = scriptConfig("Sida's Auto Carry: Display", "sidasacdisplay")
- DisplayMenu:addParam("myRange", "Attack Range Circle", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("target", "Circle Around Target", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("minion", "Circle Next Minion To Last Hit", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("sep", "-- Always Display (Requires Reload) --", SCRIPT_PARAM_INFO, "")
- DisplayMenu:addParam("AutoCarry", "Auto Carry Hotkey Status", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("LastHit", "Last Hit Hotkey Status", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("MixedMode", "Mixed Mode Hotkey Status", SCRIPT_PARAM_ONOFF, true)
- DisplayMenu:addParam("LaneClear", "Lane Clear Hotkey Status", SCRIPT_PARAM_ONOFF, true)
- end
- function permaMenu()
- if DisplayMenu.AutoCarry then AutoCarry.MainMenu:permaShow("AutoCarry") end
- if DisplayMenu.LastHit then AutoCarry.MainMenu:permaShow("LastHit") end
- if DisplayMenu.MixedMode then AutoCarry.MainMenu:permaShow("MixedMode") end
- if DisplayMenu.LaneClear then AutoCarry.MainMenu:permaShow("LaneClear") end
- end
- function masteryMenu()
- MasteryMenu = scriptConfig("Sida's Auto Carry: Masteries", "sidasacmasteries")
- MasteryMenu:addParam("Butcher", "Butcher", SCRIPT_PARAM_SLICE, 0, 0, 2, 0)
- MasteryMenu:addParam("Spellblade", "Spellblade", SCRIPT_PARAM_ONOFF, false)
- MasteryMenu:addParam("Executioner", "Executioner", SCRIPT_PARAM_ONOFF, false)
- end
- function farmMenu()
- FarmMenu = scriptConfig("Sida's Auto Carry: Farming", "sidasacfarming")
- FarmMenu:addParam("Predict", "Predict Minion Damage", SCRIPT_PARAM_ONOFF, true)
- FarmMenu:addParam("moveLastHit", "Move To Mouse Last Hit Farming", SCRIPT_PARAM_ONOFF, true)
- FarmMenu:addParam("moveMixed", "Move To Mouse Mixed Mode Farming", SCRIPT_PARAM_ONOFF, true)
- FarmMenu:addParam("moveClear", "Move To Mouse Lane Clear Farming", SCRIPT_PARAM_ONOFF, true)
- end
- function summonerMenu()
- SummonerMenu = scriptConfig("Sida's Auto Carry: Summoner Spells", "sidasacsummoner")
- SummonerMenu:addParam("Ignite", "Ignite Killable Enemies", SCRIPT_PARAM_ONOFF, true)
- SummonerMenu:addParam("Barrier", "Auto Barrier Upon High Damage", SCRIPT_PARAM_ONOFF, true)
- end
- function streamingMenu()
- StreamingMenu = scriptConfig("Sida's Auto Carry: Streaming", "sidasacstreaming")
- StreamingMenu:addParam("ShowClick", "Show Click Marker", SCRIPT_PARAM_ONOFF, true)
- StreamingMenu:addParam("MinRand", "Minimum Time Between Clicks", SCRIPT_PARAM_SLICE, 150, 0, 1000, 0)
- StreamingMenu:addParam("MaxRand", "Maximum Time Between Clicks", SCRIPT_PARAM_SLICE, 650, 0, 1000, 0)
- StreamingMenu:addParam("Colour", "0 = Green, 1 = Red", SCRIPT_PARAM_SLICE, 0, 0, 1, 0)
- StreamingMenu:addParam("DisableDrawing", "Streaming Mode", SCRIPT_PARAM_ONOFF, true)
- end
- function pluginMenu()
- if hasPlugin then
- AutoCarry.PluginMenu = scriptConfig("Sida's Auto Carry: "..myHero.charName.." Plugin", "sidasacplugin"..myHero.charName)
- require("SidasAutoCarryPlugin - "..myHero.charName)
- PrintChat(">> Sida's Auto Carry: Loaded "..myHero.charName.." plugin!")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment