Advertisement
Guest User

Sida's Auto Carry: Revamped 3.15 v4 - Final

a guest
Dec 27th, 2013
2,426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 85.42 KB | None | 0 0
  1. --[[
  2. Sida's Auto Carry: Revamped - 3.15 update v4 by Radovan
  3. v4.9
  4. ]]--
  5.  
  6. --[[ Configuration ]]--
  7.  
  8. local AutoCarryKey = 32
  9. local LastHitKey = string.byte("X")
  10. local MixedModeKey = string.byte("C")
  11. local LaneClearKey = string.byte("V")
  12. local MouseCarryKey = string.byte("M")
  13.  
  14. ------------ > Don't touch anything below here < --------------
  15.  
  16. --[[ Vars ]] --
  17. local projSpeed = 0
  18. startAttackSpeed = 0.625
  19. local attackDelayOffset = 600
  20. local lastAttack = 0
  21. local projAt = 0
  22. local Skills
  23. local enemyMinions
  24. local allyMinions
  25. local lastEnemy
  26. local lastRange
  27. local killableMinion
  28. local pluginMinion
  29. local minionInfo = {}
  30. local incomingDamage = {}
  31. local jungleMobs = {}
  32. local turretMinion = {timeToHit = 0, obj = nil}
  33. local isMelee = myHero.range < 300
  34. local movementStopped = false
  35. local hasPlugin = false
  36. local nextClick = 500
  37. local TimedMode = false
  38. local Tristana = false
  39. local hudDisabled = false
  40. local ChampInfo = {}
  41. local useVIPCol = false
  42. local lastAttacked = nil
  43. local previousWindUp = 0
  44. local previousAttackCooldown = 0
  45. _G.AutoCarry = _G
  46.  
  47.  
  48. --[[ Global Vars : Can be used by plugins ]]--
  49. AutoCarry.Orbwalker = nil
  50. AutoCarry.SkillsCrosshair = nil
  51. AutoCarry.CanMove = true
  52. AutoCarry.CanAttack = true
  53. AutoCarry.MainMenu = nil
  54. AutoCarry.PluginMenu = nil
  55. AutoCarry.EnemyTable = nil
  56. AutoCarry.shotFired = false
  57. AutoCarry.OverrideCustomChampionSupport = false
  58. AutoCarry.CurrentlyShooting = false
  59.  
  60. --[[ Global Functions ]]--
  61. function getTrueRange()
  62. return myHero.range + GetDistance(myHero.minBBox)
  63. end
  64.  
  65. function attackEnemy(enemy)
  66. if CustomAttackEnemy then CustomAttackEnemy(enemy) return end
  67. if enemy.dead or not enemy.valid or not AutoCarry.CanAttack then return end
  68. myHero:Attack(enemy)
  69. lastAttacked = enemy
  70. AutoCarry.shotFired = true
  71. end
  72.  
  73. function getHitBoxRadius(target)
  74. return GetDistance(target.minBBox, target.maxBBox)/2
  75. end
  76.  
  77. function timeToShoot()
  78. return (GetTickCount() + GetLatency()/2 > lastAttack + previousAttackCooldown)
  79. end
  80.  
  81. function attackedSuccessfully()
  82. projAt = GetTickCount()
  83. if OnAttacked then OnAttacked() end
  84. end
  85.  
  86. function heroCanMove()
  87. return (GetTickCount() + GetLatency()/2 > lastAttack + previousWindUp + 20 + 30)
  88. end
  89.  
  90. function setMovement()
  91. if GetDistance(mousePos) <= AutoCarry.MainMenu.HoldZone and (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.LastHit or AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear) then
  92. if not movementStopped then
  93. myHero:HoldPosition()
  94. movementStopped = true
  95. end
  96. AutoCarry.CanMove = false
  97. else
  98. movementStopped = false
  99. AutoCarry.CanMove = true
  100. end
  101. end
  102.  
  103. function moveToCursor(range)
  104. if not disableMovement and AutoCarry.CanMove then
  105. local moveDist = 480 + (GetLatency()/10)
  106. if not range then
  107. if isMelee and AutoCarry.Orbwalker.target and AutoCarry.Orbwalker.target.type == myHero.type and GetDistance(AutoCarry.Orbwalker.target) < 80 then
  108. attackEnemy(AutoCarry.Orbwalker.target)
  109. return
  110. elseif GetDistance(mousePos) < moveDist and GetDistance(mousePos) > 100 then
  111. moveDist = GetDistance(mousePos)
  112. end
  113. end
  114. local moveSqr = math.sqrt((mousePos.x - myHero.x)^2+(mousePos.z - myHero.z)^2)
  115. local moveX = myHero.x + (range and range or moveDist)*((mousePos.x - myHero.x)/moveSqr)
  116. local moveZ = myHero.z + (range and range or moveDist)*((mousePos.z - myHero.z)/moveSqr)
  117. if StreamingMenu.MinRand > StreamingMenu.MaxRand then
  118. PrintChat("You must set Max higher than Min in streaming menu")
  119. elseif StreamingMenu.ShowClick and GetTickCount() > nextClick then
  120. if StreamingMenu.Colour == 0 then
  121. ShowGreenClick(mousePos)
  122. else
  123. ShowRedClick(mousePos)
  124. end
  125. nextClick = GetTickCount() + math.random(StreamingMenu.MinRand, StreamingMenu.MaxRand)
  126. end
  127. myHero:MoveTo(moveX, moveZ)
  128. end
  129. end
  130.  
  131. --[[ Orbwalking ]]--
  132.  
  133. function OrbwalkingOnLoad()
  134. AutoCarry.Orbwalker = TargetSelector(TARGET_LESS_CAST_PRIORITY, getTrueRange(), DAMAGE_PHYSICAL, false)
  135. AutoCarry.Orbwalker:SetBBoxMode(true)
  136. AutoCarry.Orbwalker:SetDamages(0, myHero.totalDamage, 0)
  137. AutoCarry.Orbwalker.name = "AutoCarry"
  138. lastRange = getTrueRange()
  139. if ChampInfo ~= nil then
  140. if ChampInfo.projSpeed ~= nil then
  141. projSpeed = ChampInfo.projSpeed
  142. end
  143. end
  144. end
  145.  
  146. function OrbwalkingOnTick()
  147. AutoCarry.Orbwalker.targetSelected = AutoCarry.MainMenu.Focused
  148. if GetTickCount() + GetLatency()/2 > lastAttack + previousWindUp + 20 and GetTickCount() + GetLatency()/2 < lastAttack + previousWindUp + 400 then attackedSuccessfully() end
  149. isMelee = myHero.range < 300
  150. if myHero.range ~= lastRange then
  151. AutoCarry.Orbwalker.range = myHero.range
  152. lastRange = myHero.range
  153. end
  154. AutoCarry.Orbwalker:update()
  155. end
  156.  
  157. function OrbwalkingOnProcessSpell(unit, spell)
  158. if myHero.dead then return end
  159.  
  160. if unit.isMe and (spell.name:lower():find("attack") or isSpellAttack(spell.name)) and not isNotAttack(spell.name) then
  161. lastAttack = GetTickCount() - GetLatency()/2
  162. previousWindUp = spell.windUpTime*1000
  163. previousAttackCooldown = spell.animationTime*1000
  164. elseif unit.isMe and refreshAttack(spell.name) then
  165. lastAttack = GetTickCount() - GetLatency()/2 - previousAttackCooldown
  166. end
  167. end
  168.  
  169. function refreshAttack(spellName)
  170. return (
  171. --Blitzcrank
  172. spellName == "PowerFist"
  173. --Darius
  174. or spellName == "DariusNoxianTacticsONH"
  175. --Nidalee
  176. or spellName == "Takedown"
  177. --Sivir
  178. or spellName == "Ricochet"
  179. --Teemo
  180. or spellName == "BlindingDart"
  181. --Vayne
  182. or spellName == "VayneTumble"
  183. --Jax
  184. or spellName == "JaxEmpowerTwo"
  185. --Mordekaiser
  186. or spellName == "MordekaiserMaceOfSpades"
  187. --Nasus
  188. or spellName == "SiphoningStrikeNew"
  189. --Rengar
  190. or spellName == "RengarQ"
  191. --Wukong
  192. or spellName == "MonkeyKingDoubleAttack"
  193. --Yorick
  194. or spellName == "YorickSpectral"
  195. --Vi
  196. or spellName == "ViE"
  197. --Garen
  198. or spellName == "GarenSlash3"
  199. --Hecarim
  200. or spellName == "HecarimRamp"
  201. --XinZhao
  202. or spellName == "XenZhaoComboTarget"
  203. --Leona
  204. or spellName == "LeonaShieldOfDaybreak"
  205. --Shyvana
  206. or spellName == "ShyvanaDoubleAttack"
  207. or spellName == "shyvanadoubleattackdragon"
  208. --Talon
  209. or spellName == "TalonNoxianDiplomacy"
  210. --Trundle
  211. or spellName == "TrundleTrollSmash"
  212. --Volibear
  213. or spellName == "VolibearQ"
  214. --Poppy
  215. or spellName == "PoppyDevastatingBlow"
  216. --Sivir
  217. or spellName == "SivirW"
  218. )
  219. end
  220.  
  221. function isSpellAttack(spellName)
  222. return (
  223. --Ashe
  224. spellName == "frostarrow"
  225. --Caitlyn
  226. or spellName == "CaitlynHeadshotMissile"
  227. --Trundle
  228. or spellName == "TrundleQ"
  229. --XinZhao
  230. or spellName == "XenZhaoThrust"
  231. or spellName == "XenZhaoThrust2"
  232. or spellName == "XenZhaoThrust3"
  233. --Garen
  234. or spellName == "GarenSlash2"
  235. --Renekton
  236. or spellName == "RenektonExecute"
  237. or spellName == "RenektonSuperExecute"
  238. --Kennen
  239. or spellName == "KennenMegaProc"
  240. --Quinn
  241. or spellName == "QuinnWEnhanced"
  242. )
  243. end
  244. function isNotAttack(spellName)
  245. return (
  246. --Shyvana
  247. spellName == "shyvanadoubleattackdragon"
  248. or spellName == "ShyvanaDoubleAttack"
  249. --MonkeyKing
  250. or spellName == "MonkeyKingDoubleAttack"
  251. )
  252. end
  253.  
  254. function OrbwalkingOnDraw()
  255. if DisplayMenu.target and AutoCarry.Orbwalker.target ~= nil then
  256. for j=0, 5 do
  257. DrawCircle(AutoCarry.Orbwalker.target.x, AutoCarry.Orbwalker.target.y, AutoCarry.Orbwalker.target.z, 100 + j, 0x00FF00)
  258. end
  259. DrawCircle(AutoCarry.Orbwalker.target.x, AutoCarry.Orbwalker.target.y, AutoCarry.Orbwalker.target.z, GetDistance(AutoCarry.Orbwalker.target, AutoCarry.Orbwalker.target.minBBox), 0xFFFFFF)
  260. elseif DisplayMenu.target and AutoCarry.SkillsCrosshair.target then
  261. for j=0, 5 do
  262. DrawCircle(AutoCarry.SkillsCrosshair.target.x, AutoCarry.SkillsCrosshair.target.y, AutoCarry.SkillsCrosshair.target.z, 100 + j, 0x990000)
  263. end
  264. DrawCircle(AutoCarry.SkillsCrosshair.target.x, AutoCarry.SkillsCrosshair.target.y, AutoCarry.SkillsCrosshair.target.z, GetDistance(AutoCarry.SkillsCrosshair.target, AutoCarry.SkillsCrosshair.target.minBBox), 0xFFFFFF)
  265. end
  266. end
  267.  
  268. function EnemyInRange(enemy)
  269. if ValidBBoxTarget(enemy, getTrueRange()) then
  270. return true
  271. end
  272. return false
  273. end
  274.  
  275. --[[ Last Hitting ]]--
  276.  
  277. function LastHitOnLoad()
  278. minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Basic"] = { aaDelay = 400, projSpeed = 0 }
  279. minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Caster"] = { aaDelay = 484, projSpeed = 0.68 }
  280. minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_Wizard"] = { aaDelay = 484, projSpeed = 0.68 }
  281. minionInfo[(myHero.team == 100 and "Blue" or "Red").."_Minion_MechCannon"] = { aaDelay = 365, projSpeed = 1.18 }
  282. minionInfo.obj_AI_Turret = { aaDelay = 150, projSpeed = 1.14 }
  283.  
  284. for i = 0, objManager.maxObjects do
  285. local obj = objManager:getObject(i)
  286. for _, mob in pairs(getJungleMobs()) do
  287. if obj and obj.valid and obj.name:find(mob) then
  288. table.insert(jungleMobs, obj)
  289. end
  290. end
  291. end
  292. end
  293.  
  294. function LastHitOnTick()
  295. if AutoCarry.MainMenu.LastHit or AutoCarry.MainMenu.MixedMode or AutoCarry.MainMenu.LaneClear then
  296. enemyMinions:update()
  297. allyMinions:update()
  298. end
  299. end
  300.  
  301. function LastHitOnProcessSpell(object, spell)
  302. if not isMelee and isAllyMinionInRange(object) then
  303. for i,minion in pairs(enemyMinions.objects) do
  304. if ValidTarget(minion) and minion ~= nil and GetDistance(minion, spell.endPos) < 3 then
  305. if object ~= nil and (minionInfo[object.charName] or object.type == "obj_AI_turret") then
  306. incomingDamage[object.name] = getNewAttackDetails(object, minion)
  307. end
  308. --if object.type == "obj_AI_Turret" and object.team == myHero.team then
  309. --if FarmMenu.Predict then
  310. --handleTurretShot(object, minion)
  311. --end
  312. --end
  313. end
  314. end
  315. end
  316. end
  317.  
  318. function LastHitOnCreateObj(obj)
  319. for _, mob in pairs(getJungleMobs()) do
  320. if obj.name:find(mob) then
  321. table.insert(jungleMobs, obj)
  322. end
  323. end
  324. end
  325.  
  326. function LastHitOnDeleteObj(obj)
  327. for i, mob in pairs(getJungleMobs()) do
  328. if obj and obj.valid and mob and mob.valid and obj.name:find(mob.name) then
  329. table.remove(jungleMobs, i)
  330. end
  331. end
  332. end
  333.  
  334. function getJungleMinion()
  335. for _, mob in pairs(jungleMobs) do
  336. if ValidTarget(mob) and GetDistance(mob) <= getTrueRange() then return mob end
  337. end
  338. return nil
  339. end
  340.  
  341. function LastHitOnDraw()
  342. if DisplayMenu.minion and enemyMinions.objects[1] and ValidTarget(enemyMinions.objects[1]) and not isMelee then
  343. DrawCircle(enemyMinions.objects[1].x, enemyMinions.objects[1].y, enemyMinions.objects[1].z, 90, 0x19A712)
  344. end
  345. end
  346.  
  347. function getTimeToHit(enemy, speed)
  348. return (( GetDistance(enemy) / speed ) + GetLatency()/2)
  349. end
  350.  
  351. function isAllyMinionInRange(minion)
  352. if minion ~= nil and minion.team == myHero.team
  353. and (minion.type == "obj_AI_Minion" or minion.type == "obj_AI_Turret")
  354. and GetDistance(minion) <= 2000 then return true
  355. else return false end
  356. end
  357.  
  358. function getMinionDelay(minion)
  359. return ( minion.type == "obj_AI_Turret" and minionInfo.obj_AI_Turret.aaDelay or minionInfo[minion.charName].aaDelay )
  360. end
  361.  
  362. function getMinionProjSpeed(minion)
  363. return ( minion.type == "obj_AI_Turret" and minionInfo.obj_AI_Turret.projSpeed or minionInfo[minion.charName].projSpeed )
  364. end
  365.  
  366. function minionSpellStillViable(attack)
  367. if attack == nil then return false end
  368. local sourceMinion = getAllyMinion(attack.sourceName)
  369. local targetMinion = getEnemyMinion(attack.targetName)
  370. if sourceMinion == nil or targetMinion == nil then return false end
  371. if sourceMinion.dead or targetMinion.dead or GetDistance(sourceMinion, attack.origin) > 3 then return false else return true end
  372. end
  373.  
  374. function getAllyMinion(name)
  375. for i, minion in pairs(allyMinions.objects) do
  376. if minion ~= nil and minion.valid and minion.name == name then
  377. return minion
  378. end
  379. end
  380. return nil
  381. end
  382.  
  383. function getEnemyMinion(name)
  384. for i, minion in pairs(enemyMinions.objects) do
  385. if minion ~= nil and ValidTarget(minion) and minion.name == name then
  386. return minion
  387. end
  388. end
  389. return nil
  390. end
  391.  
  392. function isSameMinion(minion1, minion2)
  393. if minion1.networkID == minion2.networkID then return true
  394. else return false end
  395. end
  396.  
  397. function getMinionTimeToHit(minion, attack)
  398. local sourceMinion = getAllyMinion(attack.sourceName)
  399. return ( attack.speed == 0 and ( attack.delay ) or ( attack.delay + GetDistance(sourceMinion, minion) / attack.speed ) )
  400. end
  401.  
  402. function getNewAttackDetails(source, target)
  403. return {
  404. sourceName = source.name,
  405. targetName = target.name,
  406. damage = source:CalcDamage(target),
  407. started = GetTickCount(),
  408. origin = { x = source.x, z = source.z },
  409. delay = getMinionDelay(source),
  410. speed = getMinionProjSpeed(source),
  411. sourceType = source.type}
  412. end
  413.  
  414. function getPredictedDamage(counter, minion, attack)
  415. if not minionSpellStillViable(attack) then
  416. incomingDamage[counter] = nil
  417. elseif isSameMinion(minion, getEnemyMinion(attack.targetName)) then
  418. local myTimeToHit = getTimeToHit(minion, projSpeed)
  419. minionTimeToHit = getMinionTimeToHit(minion, attack)
  420. if GetTickCount() >= (attack.started + minionTimeToHit) then
  421. incomingDamage[counter] = nil
  422. elseif GetTickCount() + myTimeToHit > attack.started + minionTimeToHit then
  423. return attack.damage
  424. end
  425. end
  426. return 0
  427. end
  428.  
  429. function getKillableCreep(iteration)
  430. if isMelee then return meleeLastHit() end
  431. local minion = enemyMinions.objects[iteration]
  432. if minion ~= nil then
  433. local distanceToMinion = GetDistance(minion)
  434. local predictedDamage = 0
  435. if distanceToMinion < getTrueRange() then
  436. if FarmMenu.Predict then
  437. for l, attack in pairs(incomingDamage) do
  438. predictedDamage = predictedDamage + getPredictedDamage(l, minion, attack)
  439. end
  440. end
  441. local myDamage = myHero:CalcDamage(minion, myHero.totalDamage) + getBonusLastHitDamage(minion) + LastHitPassiveDamage()
  442. myDamage = (MasteryMenu.Executioner and myDamage * 1.05 or myDamage)
  443. myDamage = myDamage - 10
  444. --if minion.health - predictedDamage <= 0 then
  445. --return getKillableCreep(iteration + 1)
  446. if minion.health + 1.2 - predictedDamage < myDamage then
  447. return minion
  448. --elseif minion.health + 1.2 - predictedDamage < myDamage + (0.5 * predictedDamage) then
  449. -- return nil
  450. end
  451. end
  452. end
  453. return nil
  454. end
  455.  
  456. function getBonusLastHitDamage(minion)
  457. if PluginBonusLastHitDamage then
  458. return PluginBonusLastHitDamage(minion)
  459. elseif BonusLastHitDamage then
  460. return BonusLastHitDamage(minion)
  461. else
  462. return 0
  463. end
  464. end
  465.  
  466. function meleeLastHit()
  467. for _, minion in pairs(enemyMinions.objects) do
  468. local aDmg = getDmg("AD", minion, myHero)
  469. if GetDistance(minion) <= (myHero.range + 75) then
  470. if minion.health < aDmg then
  471. return minion
  472. end
  473. end
  474. end
  475. end
  476.  
  477. function LastHitPassiveDamage(minion)
  478. if PluginLastHitPassiveDamage then return PluginLastHitPassiveDamage(minion) end
  479. local bonus = 0
  480. if GetInventoryHaveItem(3153) then
  481. if ValidTarget(minion) then
  482. bonus = minion.health / 20
  483. if bonus >= 60 then
  484. bonus = 60
  485. end
  486. end
  487. end
  488. bonus = bonus + (MasteryMenu.Butcher * 2)
  489. bonus = (MasteryMenu.Spellblade and bonus + (myHero.ap * 0.05) or 0)
  490. return bonus
  491. end
  492.  
  493. function getHighestMinion()
  494. if GetTarget() ~= nil then
  495. local currentTarget = GetTarget()
  496. local validTarget = false
  497. validTarget = ValidTarget(currentTarget, getTrueRange(), player.enemyTeam)
  498. if validTarget and (currentTarget.type == "obj_BarracksDampener" or currentTarget.type == "obj_HQ" or currentTarget.type == "obj_AI_Turret") then
  499. return currentTarget
  500. end
  501. end
  502.  
  503. local highestHp = {obj = nil, hp = 0}
  504. for _, tMinion in pairs(enemyMinions.objects) do
  505. if GetDistance(tMinion) <= getTrueRange() and tMinion.health > highestHp.hp then
  506. highestHp = {obj = tMinion, hp = tMinion.health}
  507. end
  508. end
  509. return highestHp.obj
  510. end
  511.  
  512. function getPredictedDamageOnMinion(minion)
  513. local predictedDamage = 0
  514. if minion ~= nil then
  515. local distanceToMinion = GetDistance(minion)
  516. if distanceToMinion < getTrueRange() then
  517. for l, attack in pairs(incomingDamage) do
  518. if attack.sourceType ~= "obj_AI_Turret" then
  519. predictedDamage = predictedDamage + getPredictedDamage(l, minion, attack)
  520. end
  521. end
  522. end
  523. end
  524. return predictedDamage
  525. end
  526.  
  527. function handleTurretShot(turret, minion)
  528. local dmg = turret:CalcDamage(minion)
  529. local myDmg = myHero:CalcDamage(minion, myHero.totalDamage) + (BonusLastHitDamage and BonusLastHitDamage(minion) or 0) + LastHitPassiveDamage()
  530. myDmg = (MasteryMenu.Executioner and myDmg * 1.05 or myDmg)
  531. local predic = getPredictedDamageOnMinion(minion)
  532. if minion.health > myDmg + dmg + predic and minion.health < (myDmg * 2) + dmg + predic then
  533. turretMinion = {timeToHit = minionInfo.obj_AI_Turret.aaDelay + GetDistance(turret, minion) / minionInfo.obj_AI_Turret.projSpeed, obj = minion }
  534. end
  535. end
  536.  
  537. --[[ Abilities ]]--
  538. function SkillsOnLoad()
  539. Skills = getSpellList()
  540. if Skills == nil then
  541. AutoCarry.SkillsCrosshair = TargetSelector(TARGET_LOW_HP_PRIORITY, 0, DAMAGE_PHYSICAL, false)
  542. return
  543. end
  544. local maxRange = 0
  545. for _, skill in pairs(Skills) do
  546. if skill.range > maxRange then maxRange = skill.range end
  547. end
  548. AutoCarry.SkillsCrosshair = TargetSelector(TARGET_LOW_HP_PRIORITY, maxRange, DAMAGE_PHYSICAL, false)
  549. end
  550.  
  551. function SkillsOnTick()
  552. if Skills == nil then return end
  553. local target = AutoCarry.GetAttackTarget()
  554. if ValidTarget(target) and target.type == myHero.type then
  555. for _, skill in pairs(Skills) do
  556. if (AutoCarry.MainMenu.AutoCarry and SkillsMenu[skill.configName.."AutoCarry"]) or
  557. (AutoCarry.MainMenu.MixedMode and SkillsMenu[skill.configName.."MixedMode"]) then
  558. if not skill.reset or (skill.reset and GetTickCount() < projAt + 400) then
  559. if skill.skillShot then
  560. AutoCarry.CastSkillshot(skill, target)
  561. elseif skill.reqTarget == false and not skill.atMouse then
  562. CastSelf(skill, target)
  563. elseif skill.reqTarget == false and skill.atMouse then
  564. CastMouse(skill)
  565. else
  566. CastTargettedSpell(skill, target)
  567. end
  568. end
  569. end
  570. end
  571. end
  572. end
  573.  
  574. AutoCarry.GetCollision = function (skill, source, destination)
  575. if VIP_USER and useVIPCol then
  576. local col = Collision(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
  577. return col:GetMinionCollision(source, destination)
  578. else
  579. return willHitMinion(destination, skill.width)
  580. end
  581. end
  582.  
  583. AutoCarry.CastSkillshot = function (skill, target)
  584. if VIP_USER then
  585. pred = TargetPredictionVIP(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
  586. elseif not VIP_USER then
  587. pred = TargetPrediction(skill.range, skill.speed, skill.delay, skill.width)
  588. end
  589. local predPos = pred:GetPrediction(target)
  590. if predPos and GetDistance(predPos) <= skill.range then
  591. if VIP_USER and pred:GetHitChance(target) > SkillsMenu.hitChance/100 then
  592. if not skill.minions or not AutoCarry.GetCollision(skill, myHero, predPos) then
  593. CastSpell(skill.spellKey, predPos.x, predPos.z)
  594. end
  595. elseif not VIP_USER then
  596. if not skill.minions or not AutoCarry.GetCollision(skill, myHero, predPos) then
  597. CastSpell(skill.spellKey, predPos.x, predPos.z)
  598. end
  599. end
  600. end
  601. end
  602.  
  603. AutoCarry.GetPrediction = function(skill, target)
  604. if VIP_USER then
  605. pred = TargetPredictionVIP(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
  606. elseif not VIP_USER then
  607. pred = TargetPrediction(skill.range, skill.speed, skill.delay, skill.width)
  608. end
  609. return pred:GetPrediction(target)
  610. end
  611.  
  612. AutoCarry.IsValidHitChance = function(skill, target)
  613. if VIP_USER then
  614. pred = TargetPredictionVIP(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
  615. return pred:GetHitChance(target) > SkillsMenu.hitChance/100 and true or false
  616. elseif not VIP_USER then
  617. return true
  618. end
  619. end
  620.  
  621. AutoCarry.GetNextAttackTime = function()
  622. return (lastAttack + previousAttackCooldown) - GetLatency()/2
  623. end
  624.  
  625. function CastTargettedSpell(skill, target)
  626. if GetDistance(target) <= skill.range then
  627. CastSpell(skill.spellKey, target)
  628. end
  629. end
  630.  
  631. function CastMouse(skill)
  632. CastSpell(skill.spellKey, mousePos.x, mousePos.z)
  633. end
  634.  
  635. function CastSelf(skill, target)
  636. if not skill.forceRange or (skill.forceRange and GetDistance(target) - (skill.forceToHitBox and GetDistance(target, target.minBBox) or 0) <= skill.range) then
  637. CastSpell(skill.spellKey)
  638. end
  639. end
  640.  
  641. function getPrediction(speed, delay, target)
  642. if target == nil then return nil end
  643. local travelDuration = (delay + GetDistance(myHero, target)/speed)
  644. travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
  645. travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
  646. travelDuration = (delay + GetDistance(GetPredictionPos(target, travelDuration))/speed)
  647. return GetPredictionPos(target, travelDuration)
  648. end
  649.  
  650. function willHitMinion(predic, width)
  651. for _, minion in pairs(enemyMinions.objects) do
  652. if minion ~= nil and minion.valid and string.find(minion.name,"Minion_") == 1 and minion.team ~= player.team and minion.dead == false then
  653. if predic ~= nil then
  654. ex = player.x
  655. ez = player.z
  656. tx = predic.x
  657. tz = predic.z
  658. dx = ex - tx
  659. dz = ez - tz
  660. if dx ~= 0 then
  661. m = dz/dx
  662. c = ez - m*ex
  663. end
  664. mx = minion.x
  665. mz = minion.z
  666. distanc = (math.abs(mz - m*mx - c))/(math.sqrt(m*m+1))
  667. 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
  668. return true
  669. end
  670. end
  671. end
  672. end
  673. return false
  674. end
  675.  
  676. --[[ Champion Specific ]]--
  677.  
  678. function LoadCustomChampionSupport()
  679. -- >> Vayne << --
  680. if myHero.charName == "Vayne" then
  681. function BonusLastHitDamage()
  682. if myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED then
  683. return math.round( ((0.05*myHero:GetSpellData(_Q).level) + 0.25 )*myHero.totalDamage )
  684. end
  685. return 0
  686. end
  687.  
  688. -- >> Teemo << --
  689. elseif myHero.charName == "Teemo" then
  690. function BonusLastHitDamage()
  691. if myHero:GetSpellData(_E).level > 0 then
  692. return math.floor( (myHero:GetSpellData(_E).level * 10) + (myHero.ap * 0.3) )
  693. end
  694. return 0
  695. end
  696. -- >> Corki << --
  697. elseif myHero.charName == "Corki" then
  698. function BonusLastHitDamage()
  699. return myHero.totalDamage/10
  700. end
  701.  
  702. -- >> Miss Fortune << --
  703. elseif myHero.charName == "MissFortune" then
  704. function BonusLastHitDamage()
  705. if myHero:GetSpellData(_W).level > 0 then
  706. return (4+2*myHero:GetSpellData(_W).level) + (myHero.ap/20)
  707. end
  708. return 0
  709. end
  710.  
  711. -- >> Varus << --
  712. elseif myHero.charName == "Varus" then
  713. function BonusLastHitDamage()
  714. if myHero:GetSpellData(_W).level > 0 then
  715. return (6 + (myHero:GetSpellData(_W).level * 4) + (myHero.ap * 0.25))
  716. end
  717. return 0
  718. end
  719.  
  720. -- >> Caitlyn << --
  721. elseif myHero.charName == "Caitlyn" then
  722. local headShotPart
  723. function CustomOnCreateObj(obj)
  724. if GetDistance(obj) < 100 and obj.name:lower():find("caitlyn_headshot_rdy") then
  725. headShotPart = obj
  726. end
  727. end
  728.  
  729. function BonusLastHitDamage(minion)
  730. if headShotPart and headShotPart.valid and minion and ValidTarget(minion) then
  731. return myHero:CalcDamage(minion, myHero.totalDamage) * 1.5
  732. end
  733. return 0
  734. end
  735.  
  736. -- >> Tristana << --
  737. elseif myHero.charName == "Tristana" then
  738. function CustomOnTick()
  739. Skills[2].range = myHero.range
  740. end
  741.  
  742. -- >> KogMaw << --
  743. elseif myHero.charName == "KogMaw" then
  744. function CustomOnTick()
  745. Skills[2].range = getTrueRange() + 110 + (myHero:GetSpellData(_W).level * 20)
  746. if myHero:GetSpellData(_R).level == 1 then
  747. Skills[4].range = 1400
  748. elseif myHero:GetSpellData(_R).level == 2 then
  749. Skills[4].range = 1700
  750. elseif myHero:GetSpellData(_R).level == 3 then
  751. Skills[4].range = 2200
  752. end
  753. end
  754.  
  755. -- >> Twisted Fate << --
  756. elseif myHero.charName == "TwistedFate" then
  757. local tfLastUse = 0
  758. TFConfig = scriptConfig("Sida's Auto Carry: Twisted Fate Edition", "autocarrytf")
  759. TFConfig:addParam("selectgold", "Select Gold", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("W"))
  760. TFConfig:addParam("selectblue", "Select Blue", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("E"))
  761. TFConfig:addParam("selectred", "Select Red", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("V"))
  762. TFConfig:addParam("qStunned", "Auto Q Stunned Enemies", SCRIPT_PARAM_ONOFF, true)
  763.  
  764. function CustomOnTick()
  765. PickACard()
  766. if TFConfig.qStunned then
  767. for _, enemy in pairs(AutoCarry.EnemyTable) do
  768. if ValidTarget(enemy) and not enemy.canMove and GetDistance(enemy) < 1350 then
  769. CastSpell(_Q, enemy.x, enemy.z)
  770. end
  771. end
  772. end
  773. end
  774.  
  775. function PickACard()
  776. if myHero:CanUseSpell(_W) == READY and GetTickCount()-tfLastUse <= 2300 then
  777. if myHero:GetSpellData(_W).name == selected then CastSpellEx(_W) end
  778. end
  779. if myHero:CanUseSpell(_W) == READY and GetTickCount()-tfLastUse >= 2400 then
  780. if TFConfig.selectgold then selected = "goldcardlock"
  781. elseif TFConfig.selectblue then selected = "bluecardlock"
  782. elseif TFConfig.selectred then selected = "redcardlock"
  783. else return end
  784. CastSpellEx(_W)
  785. tfLastUse = GetTickCount()
  786. end
  787. end
  788.  
  789. -- >> Draven << --
  790. elseif myHero.charName == "Draven" then
  791. local reticles = {}
  792. local qStacks = 0
  793. local closestReticle
  794. local qBuff = 0
  795. local stopped = false
  796. local qRad = 150
  797. disableRangeDraw = true
  798. local qParticles = {"Draven_Q_mis",
  799. "Draven_Q_mis_bloodless",
  800. "Draven_Q_mis_shadow",
  801. "Draven_Q_mis_shadow_bloodless",
  802. "Draven_Qcrit_mis",
  803. "Draven_Qcrit_mis_bloodless",
  804. "Draven_Qcrit_mis_shadow",
  805. "Draven_Qcrit_mis_shadow_bloodless" }
  806.  
  807. DravenConfig = scriptConfig("Sida's Auto Carry: Draven Edition", "autocarrdraven")
  808. DravenConfig:addParam("HoldRange", "Stand Zone", SCRIPT_PARAM_SLICE, 130, 0, 450, 0)
  809. DravenConfig:addParam("CatchRange", "Catch Axe Range", SCRIPT_PARAM_SLICE, 575, 0, 2000, 0)
  810. DravenConfig:addParam("AutoW", "Keep W Buff Active Against Enemy", SCRIPT_PARAM_ONOFF, true)
  811. DravenConfig:addParam("AutoCarry", "Use / Catch Axes: Auto Carry Mode", SCRIPT_PARAM_ONOFF, true)
  812. DravenConfig:addParam("LastHit", "Use / Catch Axes: Last Hit Mode", SCRIPT_PARAM_ONOFF, true)
  813. DravenConfig:addParam("LaneClear", "Use / Catch Axes: Lane Clear Mode", SCRIPT_PARAM_ONOFF, true)
  814. DravenConfig:addParam("MixedMode", "Use / Catch Axes: Mixed Mode Mode", SCRIPT_PARAM_ONOFF, true)
  815. DravenConfig:addParam("Reminder", "Display Reminder Text", SCRIPT_PARAM_ONOFF, true)
  816.  
  817. function Move(pos)
  818. local moveSqr = math.sqrt((pos.x - myHero.x)^2+(pos.z - myHero.z)^2)
  819. local moveX = myHero.x + 200*((pos.x - myHero.x)/moveSqr)
  820. local moveZ = myHero.z + 200*((pos.z - myHero.z)/moveSqr)
  821. myHero:MoveTo(moveX, moveZ)
  822. end
  823.  
  824. function CustomOnProcessSpell(unit, spell)
  825. if unit.isMe and spell.name == "dravenspinning" then
  826. qStacks = qStacks + 1
  827. end
  828. end
  829.  
  830. function CustomOnCreateObj(obj)
  831. if obj.name == "Draven_Q_buf.troy" then
  832. qBuff = qBuff + 1
  833. end
  834.  
  835. for _, particle in pairs(qParticles) do
  836. if obj ~= nil and obj.valid and obj.name:lower():find(particle:lower()) and GetDistance(obj) < 333 then
  837. attackedSuccessfully()
  838. end
  839. end
  840.  
  841. if obj ~= nil and obj.name ~= nil and obj.x ~= nil and obj.z ~= nil then
  842. if obj.name == "Draven_Q_reticle_self.troy" then
  843. table.insert(reticles, {object = obj, created = GetTickCount()})
  844. elseif obj.name == "draven_spinning_buff_end_sound.troy" then
  845. qStacks = 0
  846. end
  847. end
  848. end
  849.  
  850. function CustomOnDeleteObj(obj)
  851. if obj.name == "Draven_Q_reticle_self.troy" then
  852. if GetDistance(obj) > qRad then
  853. qStacks = qStacks - 1
  854. end
  855. for i, reticle in ipairs(reticles) do
  856. 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
  857. table.remove(reticles, i)
  858. end
  859. end
  860. elseif obj.name == "Draven_Q_buf.troy" then
  861. qBuff = qBuff - 1
  862. end
  863. end
  864.  
  865. function axesActive()
  866. if (AutoCarry.MainMenu.AutoCarry and DravenConfig.AutoCarry)
  867. or (AutoCarry.MainMenu.LastHit and DravenConfig.LastHit)
  868. or (AutoCarry.MainMenu.MixedMode and DravenConfig.MixedMode)
  869. or (AutoCarry.MainMenu.LaneClear and DravenConfig.LaneClear) then
  870. return true
  871. end
  872. return false
  873. end
  874.  
  875. function CustomAttackEnemy(enemy)
  876. if enemy.dead or not enemy.valid or disableAttacks then return end
  877. if axesActive() and GetDistance(mousePos) <= DravenConfig.CatchRange then
  878. if qStacks < 2 then CastSpell(_Q) end
  879. end
  880. myHero:Attack(enemy)
  881. AutoCarry.shotFired = true
  882. end
  883.  
  884. function CustomOnTick()
  885. if myHero.dead then return end
  886. if (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.MixedMode) and DravenConfig.AutoW and ValidTarget(AutoCarry.Orbwalker.target) and not TargetHaveBuff("dravenfurybuff" , myHero) then
  887. CastSpell(_W)
  888. end
  889. for _, particle in pairs(reticles) do
  890. if closestReticle and closestReticle.object.valid and particle.object and particle.object.valid then
  891. if GetDistance(particle.object) > GetDistance(closestReticle.object) then
  892. closestReticle = particle
  893. end
  894. else
  895. closestReticle = particle
  896. end
  897. end
  898. if GetDistance(mousePos) <= DravenConfig.HoldRange and axesActive() then
  899. if not stopped then
  900. myHero:HoldPosition()
  901. stopped = true
  902. end
  903. isableMovement = true
  904. else
  905. stopped = false
  906. end
  907.  
  908. function doMovement()
  909. disableMovement = true
  910. disableAttacks = true
  911. if myHero.canMove then Move({x = closestReticle.object.x, z = closestReticle.object.z}) end
  912. end
  913.  
  914. if axesActive() and closestReticle and closestReticle.object and closestReticle.object.valid then
  915. if GetDistance(mousePos) <= DravenConfig.CatchRange and ((AutoCarry.MainMenu.AutoCarry and ShouldCatch(closestReticle.object)) or (not AutoCarry.MainMenu.AutoCarry)) then
  916. if GetDistance(closestReticle.object) > qRad then
  917. doMovement()
  918. else
  919. disableMovement = true
  920. disableAttacks = false
  921. end
  922. else
  923. disableMovement = false
  924. disableAttacks = false
  925. end
  926. elseif GetDistance(mousePos) <= DravenConfig.HoldRange then
  927. disableMovement = true
  928. disableAttacks = false
  929. else
  930. disableMovement = false
  931. disableAttacks = false
  932. end
  933. end
  934.  
  935. function ShouldCatch(reticle)
  936. local enemy
  937. if AutoCarry.Orbwalker.target ~= nil then enemy = AutoCarry.Orbwalker.target
  938. elseif AutoCarry.SkillsCrosshair.target ~= nil then enemy = AutoCarry.SkillsCrosshair.target
  939. else return true end
  940. if not reticle then return false end
  941. if GetDistance(mousePos, enemy) > GetDistance(enemy) then
  942. if GetDistance(reticle, enemy) < GetDistance(enemy) then
  943. return false
  944. end
  945. return true
  946. else
  947. local closestEnemy
  948. for _, thisEnemy in pairs(AutoCarry.EnemyTable) do
  949. if not closestEnemy then closestEnemy = thisEnemy
  950. elseif GetDistance(thisEnemy) < GetDistance(closestEnemy) then closestEnemy = thisEnemy end
  951. end
  952. if closestEnemy then
  953. local predPos = getPrediction(1.9, 100, closestEnemy)
  954. if not predPos then return true end
  955. if GetDistance(reticle, predPos) > getTrueRange() + getHitBoxRadius(closestEnemy) then
  956. return false
  957. end
  958. return true
  959. else
  960. return true
  961. end
  962. end
  963. end
  964.  
  965. function BonusLastHitDamage(minion)
  966. if myHero:GetSpellData(_Q).level > 0 and qBuff > 0 then
  967. return ((myHero.damage + myHero.addDamage) * (0.35 + (0.1 * myHero:GetSpellData(_Q).level)))
  968. end
  969. return 0
  970. end
  971.  
  972. function CustomOnDraw()
  973. DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.HoldRange, 0xFFFFFF)
  974. DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.HoldRange-1, 0xFFFFFF)
  975. DrawCircle(myHero.x, myHero.y, myHero.z, DravenConfig.CatchRange-1, 0x19A712)
  976.  
  977. if axesActive() and DravenConfig.Reminder then
  978. if GetDistance(mousePos) <= DravenConfig.HoldRange then
  979. DrawText("Holding Position & Catching",16,100, 100, 0xFF00FF00)
  980. elseif GetDistance(mousePos) <= DravenConfig.CatchRange then
  981. DrawText("Orbwalking & Catching",16,100, 100, 0xFF00FF00)
  982. else
  983. DrawText("Only Orbwalking",16,100, 100, 0xFF00FF00)
  984. end
  985. end
  986. end
  987.  
  988. end
  989. end
  990. --[[ Items ]]--
  991. local items =
  992. {
  993. {name = "Blade of the Ruined King", menu = "BRK", id=3153, range = 500, reqTarget = true, slot = nil },
  994. {name = "Bilgewater Cutlass", menu = "BWC", id=3144, range = 500, reqTarget = true, slot = nil },
  995. {name = "Deathfire Grasp", menu = "DFG", id=3128, range = 750, reqTarget = true, slot = nil },
  996. {name = "Hextech Gunblade", menu = "HGB", id=3146, range = 400, reqTarget = true, slot = nil },
  997. {name = "Blackfire Torch", menu = "BFT", id=3188, range = 750, reqTarget = true, slot = nil },
  998. {name = "Ravenous Hydra", menu = "RSH", id=3074, range = 350, reqTarget = false, slot = nil},
  999. {name = "Sword of the Divine", menu = "STD", id=3131, range = 350, reqTarget = false, slot = nil},
  1000. {name = "Tiamat", menu = "TMT", id=3077, range = 350, reqTarget = false, slot = nil},
  1001. {name = "Entropy", menu = "ETR", id=3184, range = 350, reqTarget = false, slot = nil},
  1002. {name = "Youmuu's Ghostblade", menu = "YGB", id=3142, range = 350, reqTarget = false, slot = nil}
  1003. }
  1004.  
  1005. function UseItemsOnTick()
  1006. if AutoCarry.Orbwalker.target then
  1007. for _,item in pairs(items) do
  1008. item.slot = GetInventorySlotItem(item.id)
  1009. if item.slot ~= nil then
  1010. if item.reqTarget and GetDistance(AutoCarry.Orbwalker.target) <= item.range and item.menu ~= "BRK" then
  1011. CastSpell(item.slot, AutoCarry.Orbwalker.target)
  1012. elseif item.reqTarget and GetDistance(AutoCarry.Orbwalker.target) <= item.range and item.menu == "BRK" then
  1013. if myHero.health <= myHero.maxHealth*0.65 or GetDistance(AutoCarry.Orbwalker.target) > 400 then
  1014. CastSpell(item.slot, AutoCarry.Orbwalker.target)
  1015. end
  1016. elseif not item.reqTarget then
  1017. CastSpell(item.slot)
  1018. end
  1019. end
  1020. end
  1021. end
  1022. end
  1023.  
  1024. function SetMuramana()
  1025. if AutoCarry.Orbwalker.target ~= nil and ItemMenu.muraMana and not MuramanaIsActive() and (AutoCarry.MainMenu.AutoCarry or AutoCarry.MainMenu.MixedMode) then
  1026. MuramanaOn()
  1027. elseif AutoCarry.Orbwalker.target == nil and ItemMenu.muraMana and MuramanaIsActive() then
  1028. MuramanaOff()
  1029. end
  1030. end
  1031.  
  1032. --[[ Summoner Spells ]]--
  1033. local ignite, barrier, healthBefore, healthBeforeTimer, nextUpdate, nextCheck = nil, nil, 0, 0, 0, 0, 0
  1034.  
  1035. function SummonerOnLoad()
  1036. ignite = (player:GetSpellData(SUMMONER_1).name == "SummonerDot" and SUMMONER_1 or (player:GetSpellData(SUMMONER_2).name == "SummonerDot" and SUMMONER_2 or nil))
  1037. barrier = (player:GetSpellData(SUMMONER_1).name == "SummonerBarrier" and SUMMONER_1 or (player:GetSpellData(SUMMONER_2).name == "SummonerBarrier" and SUMMONER_2 or nil))
  1038. end
  1039.  
  1040. function SummonerOnTick()
  1041. if ignite and SummonerMenu.Ignite and myHero:CanUseSpell(ignite) == READY then
  1042. for _, enemy in pairs(GetEnemyHeroes()) do
  1043. if ValidTarget(enemy, 600) and enemy.health <= 50 + (20 * player.level) then
  1044. CastSpell(ignite, enemy)
  1045. end
  1046. end
  1047. end
  1048. if barrier and SummonerMenu.Barrier and myHero:CanUseSpell(barrier) == READY then
  1049. if GetTickCount() >= nextCheck then
  1050. local co = ((myHero.health / myHero.maxHealth * 100) - 20)*(0.3-0.1)/(100-20)+0.1
  1051. local proc = myHero.maxHealth * co
  1052. if healthBefore - myHero.health > proc and myHero.health < myHero.maxHealth * 0.3 then
  1053. CastSpell(barrier)
  1054. end
  1055. nextCheck = GetTickCount() + 100
  1056. if GetTickCount() >= nextUpdate then
  1057. healthBefore = myHero.health
  1058. healthBeforeTimer = GetTickCount()
  1059. nextUpdate = GetTickCount() + 1000
  1060. end
  1061. end
  1062. end
  1063. end
  1064.  
  1065. --[[ Plugins ]]--
  1066. if FileExist(LIB_PATH .."SidasAutoCarryPlugin - "..myHero.charName..".lua") then
  1067. hasPlugin = true
  1068. end
  1069.  
  1070. AutoCarry.GetAttackTarget = function(isCaster)
  1071. if not isCaster and ValidTarget(AutoCarry.Orbwalker.target) then
  1072. return AutoCarry.Orbwalker.target
  1073. else
  1074. AutoCarry.SkillsCrosshair:update()
  1075. return AutoCarry.SkillsCrosshair.target
  1076. end
  1077. end
  1078.  
  1079. AutoCarry.GetKillableMinion = function()
  1080. return killableMinion
  1081. end
  1082.  
  1083. AutoCarry.GetMinionTarget = function()
  1084. if killableMinion then
  1085. return killableMinion
  1086. elseif pluginMinion then
  1087. return pluginMinion
  1088. else
  1089. return nil
  1090. end
  1091. end
  1092.  
  1093. AutoCarry.EnemyMinions = function()
  1094. return enemyMinions
  1095. end
  1096.  
  1097. AutoCarry.AllyMinions = function()
  1098. return allyMinions
  1099. end
  1100.  
  1101. AutoCarry.GetJungleMobs = function()
  1102. return jungleMobs
  1103. end
  1104.  
  1105. AutoCarry.GetLastAttacked = function()
  1106. return lastAttacked
  1107. end
  1108.  
  1109. function OnApplyParticle(Unit, Particle)
  1110. if PluginOnApplyParticle then PluginOnApplyParticle(Unit, Particle) end
  1111. end
  1112.  
  1113. --[[ Callbacks ]]--
  1114. function OnLoad()
  1115. enemyMinions = minionManager(MINION_ENEMY, 2000, player, MINION_SORT_HEALTH_ASC)
  1116. allyMinions = minionManager(MINION_ALLY, 2000, player, MINION_SORT_HEALTH_ASC)
  1117. if getChampTable()[myHero.charName] then
  1118. ChampInfo = getChampTable()[myHero.charName]
  1119. end
  1120. OrbwalkingOnLoad()
  1121. SkillsOnLoad()
  1122. LastHitOnLoad()
  1123. SummonerOnLoad()
  1124. AutoCarry.EnemyTable = GetEnemyHeroes()
  1125. PriorityOnLoad()
  1126. setMenus()
  1127. StreamingMenu.DisableDrawing = false
  1128. if VIP_USER and PerformanceMenu.VipCol then
  1129. require "Collision"
  1130. PrintChat(">> Sida's Auto Carry: VIP Collision Enabled")
  1131. useVIPCol = true
  1132. end
  1133. if PluginOnLoad then PluginOnLoad() end
  1134. if not AutoCarry.OverrideCustomChampionSupport then LoadCustomChampionSupport() end
  1135. if CustomOnLoad then CustomOnLoad() end
  1136. PrintChat(">> Sida's Auto Carry: Revamped!")
  1137.  
  1138. if myHero.charName == "Aatrox" then
  1139. aaSpellName = "aatroxbasicattack"
  1140. startAttackSpeed = "0.651"
  1141.  
  1142. elseif myHero.charName == "Ahri" then
  1143. aaSpellName = "ahribasicattack"
  1144. startAttackSpeed = "0.668"
  1145.  
  1146. elseif myHero.charName == "Akali" then
  1147. aaSpellName = "akalibasicattack"
  1148. startAttackSpeed = "0.694"
  1149.  
  1150. elseif myHero.charName == "Ahri" then
  1151. aaSpellName = "ahribasicattack"
  1152. startAttackSpeed = "0.668"
  1153.  
  1154. elseif myHero.charName == "Amumu" then
  1155. aaSpellName = "amumubasicattack"
  1156. startAttackSpeed = "0.638"
  1157.  
  1158. elseif myHero.charName == "Anivia" then
  1159. aaSpellName = "aniviabasicattack"
  1160. startAttackSpeed = "0.625"
  1161.  
  1162. elseif myHero.charName == "Annie" then
  1163. aaSpellName = "anniebasicattack"
  1164. startAttackSpeed = "0.579"
  1165.  
  1166. elseif myHero.charName == "Ashe" then
  1167. aaSpellName = "ashebasicattack"
  1168. startAttackSpeed = "0.658"
  1169.  
  1170. elseif myHero.charName == "Cassiopeia" then
  1171. aaSpellName = "cassiopeiabasicattack"
  1172. startAttackSpeed = "0.647"
  1173.  
  1174. elseif myHero.charName == "Darius" then
  1175. aaSpellName = "dariusbasicattack"
  1176. startAttackSpeed = "0.679"
  1177.  
  1178. elseif myHero.charName == "Draven" then
  1179. aaSpellName = "dravenbasicattack"
  1180. startAttackSpeed = "0.679"
  1181.  
  1182. elseif myHero.charName == "Ezreal" then
  1183. aaSpellName = "ezrealbasicattack"
  1184. startAttackSpeed = "0.625"
  1185. projSpeed = 1.9
  1186.  
  1187. elseif myHero.charName == "Fiora" then
  1188. aaSpellName = "fiorabasicattack"
  1189. startAttackSpeed = "0.672"
  1190.  
  1191. elseif myHero.charName == "Fizz" then
  1192. aaSpellName = "fizzbasicattack"
  1193. startAttackSpeed = "0.658"
  1194.  
  1195. elseif myHero.charName == "Galio" then
  1196. aaSpellName = "galiobasicattack"
  1197. startAttackSpeed = "0.638"
  1198.  
  1199. elseif myHero.charName == "Gangplank" then
  1200. aaSpellName = "gangplankbasicattack"
  1201. startAttackSpeed = "0.651"
  1202.  
  1203. elseif myHero.charName == "Gragas" then
  1204. aaSpellName = "gragasbasicattack"
  1205. startAttackSpeed = "0.651"
  1206.  
  1207. elseif myHero.charName == "Hecarim" then
  1208. aaSpellName = "hecarimbasicattack"
  1209. startAttackSpeed = "0.670"
  1210.  
  1211. elseif myHero.charName == "Irelia" then
  1212. aaSpellName = "ireliabasicattack"
  1213. startAttackSpeed = "0.665"
  1214.  
  1215. elseif myHero.charName == "Jarvan IV" then
  1216. aaSpellName = "jarvanivbasicattack"
  1217. startAttackSpeed = "0.658"
  1218.  
  1219. elseif myHero.charName == "Jax" then
  1220. aaSpellName = "jaxbasicattack"
  1221. startAttackSpeed = "0.638"
  1222.  
  1223. elseif myHero.charName == "Jayce" then
  1224. aaSpellName = "jaycebasicattack"
  1225. startAttackSpeed = "0.658"
  1226.  
  1227. elseif myHero.charName == "Kassadin" then
  1228. aaSpellName = "kassadinbasicattack"
  1229. startAttackSpeed = "0.640"
  1230.  
  1231. elseif myHero.charName == "Katarina" then
  1232. aaSpellName = "katarinabasicattack"
  1233. startAttackSpeed = "0.658"
  1234.  
  1235. elseif myHero.charName == "Kayle" then
  1236. aaSpellName = "karthusbasicattack"
  1237. startAttackSpeed = "0.638"
  1238.  
  1239. elseif myHero.charName == "Kennen" then
  1240. aaSpellName = "kennenbasicattack"
  1241. startAttackSpeed = "0.690"
  1242.  
  1243. elseif myHero.charName == "KhaZix" then
  1244. aaSpellName = "khazixbasicattack"
  1245. startAttackSpeed = "0.668"
  1246.  
  1247. elseif myHero.charName == "KogMaw" then
  1248. aaSpellName = "kogmawbasicattack"
  1249. startAttackSpeed = "0.665"
  1250.  
  1251. elseif myHero.charName == "Lee Sin" then
  1252. aaSpellName = "leesinbasicattack"
  1253. startAttackSpeed = "0.651"
  1254.  
  1255. elseif myHero.charName == "Lucian" then
  1256. aaSpellName = "lucianbasicattack"
  1257. startAttackSpeed = "0.638"
  1258.  
  1259. elseif myHero.charName == "Malphite" then
  1260. aaSpellName = "malphiteebasicattack"
  1261. startAttackSpeed = "0.638"
  1262.  
  1263. elseif myHero.charName == "Maokai" then
  1264. aaSpellName = "maokaibasicattack"
  1265. startAttackSpeed = "0.694"
  1266.  
  1267. elseif myHero.charName == "Master Yi" then
  1268. aaSpellName = "masteryibasicattack"
  1269. startAttackSpeed = "0.679"
  1270.  
  1271. elseif myHero.charName == "Miss Fortune" then
  1272. aaSpellName = "missfortunebasicattack"
  1273. startAttackSpeed = "0.656"
  1274.  
  1275. elseif myHero.charName == "Mordekaiser" then
  1276. aaSpellName = "mordekaiserbasicattack"
  1277. startAttackSpeed = "0.694"
  1278.  
  1279. elseif myHero.charName == "Nami" then
  1280. aaSpellName = "namibasicattack"
  1281. startAttackSpeed = "0.644"
  1282.  
  1283. elseif myHero.charName == "Nasus" then
  1284. aaSpellName = "nasusbasicattack"
  1285. startAttackSpeed = "0.638"
  1286.  
  1287. elseif myHero.charName == "Nautilus" then
  1288. aaSpellName = "nautilusbasicattack"
  1289. startAttackSpeed = "0.613"
  1290.  
  1291. elseif myHero.charName == "Nidalee" then
  1292. aaSpellName = "nidaleebasicattack"
  1293. startAttackSpeed = "0.670"
  1294.  
  1295. elseif myHero.charName == "Nocturne" then
  1296. aaSpellName = "nocturnebasicattack"
  1297. startAttackSpeed = "0.668"
  1298.  
  1299. elseif myHero.charName == "Olaf" then
  1300. aaSpellName = "olafbasicattack"
  1301. startAttackSpeed = "0.694"
  1302.  
  1303. elseif myHero.charName == "Orianna" then
  1304. aaSpellName = "oriannabasicattack"
  1305. startAttackSpeed = "0.658"
  1306.  
  1307. elseif myHero.charName == "Pantheon" then
  1308. aaSpellName = "pantheonbasicattack"
  1309. startAttackSpeed = "0.679"
  1310.  
  1311. elseif myHero.charName == "Poppy" then
  1312. aaSpellName = "poppybasicattack"
  1313. startAttackSpeed = "0.638"
  1314.  
  1315. elseif myHero.charName == "Quinn" then
  1316. aaSpellName = "quinnbasicattack"
  1317. startAttackSpeed = "0.668"
  1318.  
  1319. elseif myHero.charName == "Renekton" then
  1320. aaSpellName = "renektonbasicattack"
  1321. startAttackSpeed = "0.665"
  1322.  
  1323. elseif myHero.charName == "Rengar" then
  1324. aaSpellName = "rengarbasicattack"
  1325. startAttackSpeed = "0.679"
  1326.  
  1327. elseif myHero.charName == "Rumble" then
  1328. aaSpellName = "rumblebasicattack"
  1329. startAttackSpeed = "0.644"
  1330.  
  1331. elseif myHero.charName == "Sejuani" then
  1332. aaSpellName = "sejuanibasicattack"
  1333. startAttackSpeed = "0.670"
  1334.  
  1335. elseif myHero.charName == "Shaco" then
  1336. aaSpellName = "shacobasicattack"
  1337. startAttackSpeed = "0.694"
  1338.  
  1339. elseif myHero.charName == "Shen" then
  1340. aaSpellName = "shenbasicattack"
  1341. startAttackSpeed = "0.651"
  1342.  
  1343. elseif myHero.charName == "Shyvana" then
  1344. aaSpellName = "shyvanabasicattack"
  1345. startAttackSpeed = "0.658"
  1346.  
  1347. elseif myHero.charName == "Singed" then
  1348. aaSpellName = "singedbasicattack"
  1349. startAttackSpeed = "0.613"
  1350.  
  1351. elseif myHero.charName == "Sivir" then
  1352. aaSpellName = "sivirbasicattack"
  1353. startAttackSpeed = "0.658"
  1354.  
  1355. elseif myHero.charName == "Sona" then
  1356. aaSpellName = "sonabasicattack"
  1357. startAttackSpeed = "0.644"
  1358.  
  1359. elseif myHero.charName == "Talon" then
  1360. aaSpellName = "talonbasicattack"
  1361. startAttackSpeed = "0.668"
  1362.  
  1363. elseif myHero.charName == "Teemo" then
  1364. aaSpellName = "teemobasicattack"
  1365. startAttackSpeed = "0.690"
  1366.  
  1367. elseif myHero.charName == "Tristana" then
  1368. aaSpellName = "tristanabasicattack"
  1369. startAttackSpeed = "0.656"
  1370.  
  1371. elseif myHero.charName == "Trundle" then
  1372. aaSpellName = "trundlebasicattack"
  1373. startAttackSpeed = "0.670"
  1374.  
  1375. elseif myHero.charName == "Tryndamere" then
  1376. aaSpellName = "tryndamerebasicattack"
  1377. startAttackSpeed = "0.670"
  1378.  
  1379. elseif myHero.charName == "Twistedfate" then
  1380. aaSpellName = "twistedfatebasicattack"
  1381. startAttackSpeed = "0.651"
  1382.  
  1383. elseif myHero.charName == "Twitch" then
  1384. aaSpellName = "twitchbasicattack"
  1385. startAttackSpeed = "0.679"
  1386. projSpeed = 1.9
  1387.  
  1388. elseif myHero.charName == "Udyr" then
  1389. aaSpellName = "udyrbasicattack"
  1390. startAttackSpeed = "0.658"
  1391.  
  1392. elseif myHero.charName == "Urgot" then
  1393. aaSpellName = "urgotbasicattack"
  1394. startAttackSpeed = "0.644"
  1395.  
  1396. elseif myHero.charName == "Varus" then
  1397. aaSpellName = "varusbasicattack"
  1398. startAttackSpeed = "0.658"
  1399.  
  1400. elseif myHero.charName == "Vayne" then
  1401. aaSpellName = "vaynebasicattack"
  1402. startAttackSpeed = "0.658"
  1403.  
  1404. elseif myHero.charName == "Vi" then
  1405. aaSpellName = "vibasicattack"
  1406. startAttackSpeed = "0.644"
  1407.  
  1408. elseif myHero.charName == "Vladimir" then
  1409. aaSpellName = "vladimirbasicattack"
  1410. startAttackSpeed = "0.658"
  1411.  
  1412. elseif myHero.charName == "Volibear" then
  1413. aaSpellName = "volibearbasicattack"
  1414. startAttackSpeed = "0.658"
  1415.  
  1416. elseif myHero.charName == "Warwick" then
  1417. aaSpellName = "warwickbasicattack"
  1418. startAttackSpeed = "0.679"
  1419.  
  1420. elseif myHero.charName == "MonkeyKing" then
  1421. aaSpellName = "monkeykingbasicattack"
  1422. startAttackSpeed = "0.658"
  1423.  
  1424. elseif myHero.charName == "Xin Zhao" then
  1425. aaSpellName = "xinzhaobasicattack"
  1426. startAttackSpeed = "0.672"
  1427.  
  1428. elseif myHero.charName == "Yasuo" then
  1429. aaSpellName = "yasuobasicattack"
  1430. startAttackSpeed = "0.658"
  1431.  
  1432. elseif myHero.charName == "Zac" then
  1433. aaSpellName = "zacbasicattack"
  1434. startAttackSpeed = "0.638"
  1435.  
  1436. elseif myHero.charName == "Zed" then
  1437. aaSpellName = "zedbasicattack"
  1438. startAttackSpeed = "0.658"
  1439.  
  1440. elseif myHero.charName == "Ziggs" then
  1441. aaSpellName = "ziggsbasicattack"
  1442. startAttackSpeed = "0.656"
  1443.  
  1444. elseif myHero.charName == "Warwick" then
  1445. aaSpellName = "warwickbasicattack"
  1446. startAttackSpeed = "0.679"
  1447. end
  1448. end
  1449.  
  1450. function OnTick()
  1451. OrbwalkingOnTick()
  1452. LastHitOnTick()
  1453. SkillsOnTick()
  1454. SummonerOnTick()
  1455. setMovement()
  1456. SetMuramana()
  1457. if PluginOnTick then PluginOnTick() end
  1458. AutoCarry.CurrentlyShooting = (GetTickCount() + GetLatency()/2 < lastAttack + previousWindUp + 20 + 30)
  1459. if StreamingMenu.DisableDrawing and not hudDisabled then
  1460. for i = 0, 10 do
  1461. PrintChat("")
  1462. end
  1463. hudDisabled = true
  1464. DisableOverlay()
  1465. end
  1466. if (AutoCarry.MainMenu.AutoCarry and ItemMenu.UseItemsAC) or (AutoCarry.MainMenu.LastHit and ItemMenu.UseItemsLastHit) or (AutoCarry.MainMenu.MixedMode and ItemMenu.UseItemsMixed) then
  1467. UseItemsOnTick()
  1468. end
  1469.  
  1470. if AutoCarry.MainMenu.AutoCarry then
  1471. if AutoCarry.Orbwalker.target ~= nil and EnemyInRange(AutoCarry.Orbwalker.target) then
  1472. if timeToShoot() and AutoCarry.CanAttack then
  1473. attackEnemy(AutoCarry.Orbwalker.target)
  1474. elseif heroCanMove() then
  1475. moveToCursor()
  1476. end
  1477. elseif heroCanMove() then
  1478. moveToCursor()
  1479. end
  1480. end
  1481.  
  1482. if AutoCarry.MainMenu.LastHit then
  1483. if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
  1484. if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
  1485. attackEnemy(killableMinion)
  1486. --elseif ValidTarget(turretMinion.obj) and timeToShoot() and AutoCarry.CanAttack and turretMinion.timeToHit > getTimeToHit(turretMinion.obj, projSpeed) then
  1487. -- attackEnemy(turretMinion.obj)
  1488. elseif heroCanMove() and FarmMenu.moveLastHit then
  1489. moveToCursor()
  1490. end
  1491. end
  1492.  
  1493. if AutoCarry.MainMenu.MixedMode then
  1494. if AutoCarry.Orbwalker.target ~= nil and EnemyInRange(AutoCarry.Orbwalker.target) then
  1495. if timeToShoot() and AutoCarry.CanAttack then
  1496. attackEnemy(AutoCarry.Orbwalker.target)
  1497. elseif heroCanMove() then
  1498. moveToCursor()
  1499. end
  1500. else
  1501. if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
  1502. if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
  1503. attackEnemy(killableMinion)
  1504. elseif heroCanMove() and FarmMenu.moveMixed then
  1505. moveToCursor()
  1506. end
  1507. end
  1508. end
  1509.  
  1510. if AutoCarry.MainMenu.LaneClear then
  1511. if not ValidTarget(killableMinion) then killableMinion = getKillableCreep(1) end
  1512. if ValidTarget(killableMinion) and timeToShoot() and AutoCarry.CanAttack then
  1513. attackEnemy(killableMinion)
  1514. else
  1515. local tMinion = getHighestMinion()
  1516. if tMinion and ValidTarget(tMinion) and timeToShoot() and AutoCarry.CanAttack then
  1517. pluginMinion = tMinion
  1518. attackEnemy(tMinion)
  1519. else
  1520. if PerformanceMenu.JungleFarm then
  1521. local tMinion = getJungleMinion()
  1522. if tMinion and ValidTarget(tMinion) and timeToShoot() and AutoCarry.CanAttack then
  1523. pluginMinion = tMinion
  1524. attackEnemy(tMinion)
  1525. elseif heroCanMove() and FarmMenu.moveClear then
  1526. moveToCursor()
  1527. end
  1528. elseif heroCanMove() and FarmMenu.moveClear then
  1529. moveToCursor()
  1530. end
  1531. end
  1532. end
  1533. end
  1534.  
  1535. if CustomOnTick then CustomOnTick() end
  1536. end
  1537.  
  1538. function OnProcessSpell(unit, spell)
  1539. OrbwalkingOnProcessSpell(unit, spell)
  1540. LastHitOnProcessSpell(unit, spell)
  1541. if CustomOnProcessSpell then CustomOnProcessSpell(unit, spell) end
  1542. if PluginOnProcessSpell then PluginOnProcessSpell(unit, spell) end
  1543. end
  1544.  
  1545. function OnCreateObj(obj)
  1546. if myHero.dead or ChampInfo == nil then return end
  1547. if PerformanceMenu.JungleFarm then LastHitOnCreateObj(obj) end
  1548. if CustomOnCreateObj then CustomOnCreateObj(obj) end
  1549. if PluginOnCreateObj then PluginOnCreateObj(obj) end
  1550. end
  1551.  
  1552. function OnDeleteObj(obj)
  1553. if PerformanceMenu.JungleFarm then LastHitOnDeleteObj(obj) end
  1554. if CustomOnDeleteObj then CustomOnDeleteObj(obj) end
  1555. if PluginOnDeleteObj then PluginOnDeleteObj(obj) end
  1556. end
  1557.  
  1558. function OnAnimation(unit, animation)
  1559. if PluginOnAnimation then PluginOnAnimation(unit, animation) end
  1560. end
  1561.  
  1562. --function OnSendPacket(packet)
  1563. -- if PluginOnSendPacket then PluginOnSendPacket(packet) end
  1564. --end
  1565.  
  1566. function OnDraw()
  1567. if not DisplayMenu.disableAllDrawing then
  1568. if DisplayMenu.myRange and not disableRangeDraw then
  1569. DrawCircle(myHero.x, myHero.y, myHero.z, getTrueRange(), 0x19A712)
  1570. end
  1571. if FarmMenu.MinionCircle and killableMinion then
  1572. DrawCircle(killableMinion.x, killableMinion.y, killableMinion.z, 110, 0xFF0000)
  1573. end
  1574. DrawCircle(myHero.x, myHero.y, myHero.z, AutoCarry.MainMenu.HoldZone, 0xFFFFFF)
  1575. OrbwalkingOnDraw()
  1576. LastHitOnDraw()
  1577. if CustomOnDraw then CustomOnDraw() end
  1578. if PluginOnDraw then PluginOnDraw() end
  1579. end
  1580. end
  1581.  
  1582. function OnWndMsg(msg, key)
  1583. if PluginOnWndMsg then PluginOnWndMsg(msg, key) end
  1584. end
  1585.  
  1586. --[[ Data ]]--
  1587. function getChampTable()
  1588. return {
  1589. Ahri = { projSpeed = 1.6},
  1590. Anivia = { projSpeed = 1.05},
  1591. Annie = { projSpeed = 1.0},
  1592. Ashe = { projSpeed = 2.0},
  1593. Brand = { projSpeed = 1.975},
  1594. Caitlyn = { projSpeed = 2.5},
  1595. Cassiopeia = { projSpeed = 1.22},
  1596. Corki = { projSpeed = 2.0},
  1597. Draven = { projSpeed = 1.4},
  1598. Ezreal = { projSpeed = 2.0},
  1599. FiddleSticks = { projSpeed = 1.75},
  1600. Graves = { projSpeed = 3.0},
  1601. Heimerdinger = { projSpeed = 1.4},
  1602. Janna = { projSpeed = 1.2},
  1603. Jayce = { projSpeed = 2.2},
  1604. Jinx = { projSpeed = 2.0},
  1605. Karma = { projSpeed = 1.2},
  1606. Karthus = { projSpeed = 1.25},
  1607. Kayle = { projSpeed = 1.8},
  1608. Kennen = { projSpeed = 1.35},
  1609. KogMaw = { projSpeed = 1.8},
  1610. Leblanc = { projSpeed = 1.7},
  1611. Lucian = { projSpeed = 2.0},
  1612. Lulu = { projSpeed = 2.5},
  1613. Lux = { projSpeed = 1.55},
  1614. Malzahar = { projSpeed = 1.5},
  1615. MissFortune = { projSpeed = 2.0},
  1616. Morgana = { projSpeed = 1.6},
  1617. Nidalee = { projSpeed = 1.7},
  1618. Orianna = { projSpeed = 1.4},
  1619. Quinn = { projSpeed = 1.85},
  1620. Ryze = { projSpeed = 2.4},
  1621. Sivir = { projSpeed = 1.4},
  1622. Sona = { projSpeed = 1.6},
  1623. Soraka = { projSpeed = 1.0},
  1624. Swain = { projSpeed = 1.6},
  1625. Syndra = { projSpeed = 1.2},
  1626. Teemo = { projSpeed = 1.3},
  1627. Tristana = { projSpeed = 2.25},
  1628. TwistedFate = { projSpeed = 1.5},
  1629. Twitch = { projSpeed = 2.5},
  1630. Urgot = { projSpeed = 1.3},
  1631. Vayne = { projSpeed = 2.0},
  1632. Varus = { projSpeed = 2.0},
  1633. Veigar = { projSpeed = 1.05},
  1634. Viktor = { projSpeed = 2.25},
  1635. Vladimir = { projSpeed = 1.4},
  1636. Xerath = { projSpeed = 1.2},
  1637. Ziggs = { projSpeed = 1.5},
  1638. Zilean = { projSpeed = 1.25},
  1639. Zyra = { projSpeed = 1.7},
  1640. }
  1641. end
  1642.  
  1643. function getSpellList()
  1644. local spellArray = nil
  1645. if myHero.charName == "Ezreal" then
  1646. spellArray = {
  1647. { 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 },
  1648. { 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 },
  1649. }
  1650. elseif myHero.charName == "KogMaw" then
  1651. spellArray = {
  1652. { 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 },
  1653. { 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 },
  1654. { 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 },
  1655. { 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 },
  1656. }
  1657. elseif myHero.charName == "Sivir" then
  1658. spellArray = {
  1659. { 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 },
  1660. { 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 },
  1661. }
  1662. elseif myHero.charName == "Graves" then
  1663. spellArray = {
  1664. { 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 },
  1665. { 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 },
  1666. { 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 },
  1667. }
  1668. elseif myHero.charName == "Caitlyn" then
  1669. spellArray = {
  1670. { 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 },
  1671. }
  1672. elseif myHero.charName == "Corki" then
  1673. spellArray = {
  1674. { 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 },
  1675. { 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 },
  1676. }
  1677. elseif myHero.charName == "Teemo" then
  1678. spellArray = {
  1679. { 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 },
  1680. }
  1681. elseif myHero.charName == "TwistedFate" then
  1682. spellArray = {
  1683. { 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 },
  1684. }
  1685. elseif myHero.charName == "Vayne" then
  1686. spellArray = {
  1687. { 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 },
  1688. { 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},
  1689. }
  1690. elseif myHero.charName == "MissFortune" then
  1691. spellArray = {
  1692. { 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},
  1693. { 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},
  1694. { 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 },
  1695. }
  1696. elseif myHero.charName == "Tristana" then
  1697. spellArray = {
  1698. { 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},
  1699. { 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},
  1700. }
  1701. elseif myHero.charName == "Draven" then
  1702. spellArray = {
  1703. { 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},
  1704. }
  1705. --[[ Added Champs ]]
  1706. elseif myHero.charName == "Kennen" then
  1707. spellArray = {
  1708. { 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 },
  1709. }
  1710. elseif myHero.charName == "Ashe" then
  1711. spellArray = {
  1712. { 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 },
  1713. }
  1714. elseif myHero.charName == "Syndra" then
  1715. spellArray = {
  1716. { 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 },
  1717. }
  1718. elseif myHero.charName == "Jayce" then
  1719. spellArray = {
  1720. { 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 },
  1721. }
  1722. elseif myHero.charName == "Nidalee" then
  1723. spellArray = {
  1724. { 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 },
  1725. }
  1726. elseif myHero.charName == "Varus" then
  1727. spellArray = {
  1728. { 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 },
  1729. }
  1730. elseif myHero.charName == "Quinn" then
  1731. spellArray = {
  1732. { 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 },
  1733. }
  1734. elseif myHero.charName == "LeeSin" then
  1735. spellArray = {
  1736. { 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 },
  1737. }
  1738. elseif myHero.charName == "Gangplank" then
  1739. spellArray = {
  1740. { 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},
  1741. }
  1742. elseif myHero.charName == "Twitch" then
  1743. spellArray = {
  1744. { spellKey = _W, range = 950, speed = 1.4, delay = 250, width = 275, configName = "venomCask", displayName = "W (Venom Cask)", enabled = false, skillShot = true, minions = false, reset = false, reqTarget = true },
  1745. }
  1746. elseif myHero.charName == "Darius" then
  1747. spellArray = {
  1748. { 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 },
  1749. }
  1750. elseif myHero.charName == "Hecarim" then
  1751. spellArray = {
  1752. { 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 },
  1753. }
  1754. elseif myHero.charName == "Warwick" then
  1755. spellArray = {
  1756. { 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 },
  1757. }
  1758. elseif myHero.charName == "MonkeyKing" then
  1759. spellArray = {
  1760. { 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 },
  1761. }
  1762. elseif myHero.charName == "Poppy" then
  1763. spellArray = {
  1764. { 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 },
  1765. }
  1766. elseif myHero.charName == "Talon" then
  1767. spellArray = {
  1768. { 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 },
  1769. }
  1770. elseif myHero.charName == "Nautilus" then
  1771. spellArray = {
  1772. { 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 },
  1773. }
  1774. elseif myHero.charName == "Gangplank" then
  1775. spellArray = {
  1776. { 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 },
  1777. }
  1778. elseif myHero.charName == "Vi" then
  1779. spellArray = {
  1780. { 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 },
  1781. }
  1782. elseif myHero.charName == "Rengar" then
  1783. spellArray = {
  1784. { 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 },
  1785. }
  1786. elseif myHero.charName == "Trundle" then
  1787. spellArray = {
  1788. { 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 },
  1789. }
  1790. elseif myHero.charName == "Leona" then
  1791. spellArray = {
  1792. { 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 },
  1793. }
  1794. elseif myHero.charName == "Fiora" then
  1795. spellArray = {
  1796. { 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 },
  1797. }
  1798. elseif myHero.charName == "Blitzcrank" then
  1799. spellArray = {
  1800. { 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 },
  1801. }
  1802. elseif myHero.charName == "Shyvana" then
  1803. spellArray = {
  1804. { 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 },
  1805. }
  1806. elseif myHero.charName == "Renekton" then
  1807. spellArray = {
  1808. { spellKey = _W, range = 300, speed = 2, delay = 0, width = 200, configName = "ruthlesspredator", displayName = "W (Ruthless Predator)", enabled = true, skillShot = false, minions = true, reset = true, reqTarget = false },
  1809. }
  1810. elseif myHero.charName == "Jax" then
  1811. spellArray = {
  1812. { 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 },
  1813. }
  1814. elseif myHero.charName == "XinZhao" then
  1815. spellArray = {
  1816. { 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 },
  1817. }
  1818. elseif myHero.charName == "Nunu" then
  1819. spellArray = {
  1820. { 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},
  1821. }
  1822. elseif myHero.charName == "Khazix" then
  1823. spellArray = {
  1824. { 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},
  1825. }
  1826. elseif myHero.charName == "Shen" then
  1827. spellArray = {
  1828. { 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},
  1829. }
  1830. elseif myHero.charName == "Lucian" then
  1831. spellArray = {
  1832. { spellKey = _Q, range = 570*2, speed = math.huge, delay = 350, width = 65, configName = "PiercingLight", displayName = "Q (Piercing Light)", enabled = true, skillShot = false, minions = false, reset = false, reqTarget = true},
  1833. { spellKey = _W, range = 1000, speed = 1.6, delay = 300, width = 80, configName = "ArdentBlaze", displayName = "W (Ardent Blaze)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = false},
  1834. }
  1835. elseif myHero.charName == "Jinx" then
  1836. spellArray = {
  1837. { spellKey = _W, range = 1450, speed = 3.3, delay = 600, width = 70, configName = "zap", displayName = "W (Zap!)", enabled = true, skillShot = true, minions = true, reset = false, reqTarget = false},
  1838. }
  1839. end
  1840. return spellArray
  1841. end
  1842.  
  1843. local priorityTable = {
  1844.  
  1845. AP = {
  1846. "Annie", "Ahri", "Akali", "Anivia", "Annie", "Brand", "Cassiopeia", "Diana", "Evelynn", "FiddleSticks", "Fizz", "Gragas", "Heimerdinger", "Karthus",
  1847. "Kassadin", "Katarina", "Kayle", "Kennen", "Leblanc", "Lissandra", "Lux", "Malzahar", "Mordekaiser", "Morgana", "Nidalee", "Orianna",
  1848. "Rumble", "Ryze", "Sion", "Swain", "Syndra", "Teemo", "TwistedFate", "Veigar", "Viktor", "Vladimir", "Xerath", "Ziggs", "Zyra", "MasterYi",
  1849. },
  1850. Support = {
  1851. "Alistar", "Blitzcrank", "Janna", "Karma", "Leona", "Lulu", "Nami", "Nunu", "Sona", "Soraka", "Taric", "Thresh", "Zilean",
  1852. },
  1853.  
  1854. Tank = {
  1855. "Amumu", "Chogath", "DrMundo", "Galio", "Hecarim", "Malphite", "Maokai", "Nasus", "Rammus", "Sejuani", "Shen", "Singed", "Skarner", "Volibear",
  1856. "Warwick", "Yorick", "Zac",
  1857. },
  1858.  
  1859. AD_Carry = {
  1860. "Ashe", "Caitlyn", "Corki", "Draven", "Ezreal", "Graves", "Jayce", "Jinx", "KogMaw", "Lucian", "MissFortune", "Pantheon", "Quinn", "Shaco", "Sivir",
  1861. "Talon", "Tristana", "Twitch", "Urgot", "Varus", "Vayne", "Zed",
  1862.  
  1863. },
  1864.  
  1865. Bruiser = {
  1866. "Aatrox", "Darius", "Elise", "Fiora", "Gangplank", "Garen", "Irelia", "JarvanIV", "Jax", "Khazix", "LeeSin", "Nautilus", "Nocturne", "Olaf", "Poppy",
  1867. "Renekton", "Rengar", "Riven", "Shyvana", "Trundle", "Tryndamere", "Udyr", "Vi", "MonkeyKing", "XinZhao", "Yasuo",
  1868. },
  1869.  
  1870. }
  1871.  
  1872. function SetPriority(table, hero, priority)
  1873. for i=1, #table, 1 do
  1874. if hero.charName:find(table[i]) ~= nil then
  1875. TS_SetHeroPriority(priority, hero.charName)
  1876. end
  1877. end
  1878. end
  1879.  
  1880. function arrangePrioritys()
  1881. for i, enemy in ipairs(AutoCarry.EnemyTable) do
  1882. SetPriority(priorityTable.AD_Carry, enemy, 1)
  1883. SetPriority(priorityTable.AP, enemy, 2)
  1884. SetPriority(priorityTable.Support, enemy, 3)
  1885. SetPriority(priorityTable.Bruiser, enemy, 4)
  1886. SetPriority(priorityTable.Tank, enemy, 5)
  1887. end
  1888. end
  1889.  
  1890. function PriorityOnLoad()
  1891. if heroManager.iCount < 10 then
  1892. PrintChat(" >> Too few champions to arrange priority")
  1893. else
  1894. TargetSelector(TARGET_LOW_HP_PRIORITY, 0)
  1895. arrangePrioritys()
  1896. end
  1897. end
  1898.  
  1899. function getJungleMobs()
  1900. return {"Dragon6.1.1", "Worm12.1.1", "GiantWolf8.1.1", "Wolf8.1.2", "Wolf8.1.3","AncientGolem7.1.1", "YoungLizard7.1.2", "YoungLizard7.1.3", "Wraith9.1.1","LesserWraith9.1.2", "LesserWraith9.1.3", "LesserWraith9.1.4", "LizardElder10.1.1", "YoungLizard10.1.2", "YoungLizard10.1.3", "Golem11.1.2", "SmallGolem11.1.1", "GiantWolf2.1.1", "Wolf2.1.2", "GreatWraith13.1.1","GreatWraith14.1.1", "Wolf2.1.3", "AncientGolem1.1.1", "YoungLizard1.1.2", "YoungLizard1.1.3", "Wraith3.1.1", "LesserWraith3.1.2", "LesserWraith3.1.3", "LesserWraith3.1.4", "LizardElder4.1.1", "YoungLizard4.1.2", "YoungLizard4.1.3", "Golem5.1.2", "SmallGolem5.1.1", "TT_Spiderboss8.1.1", "TT_NWolf3.1.1", "TT_NWraith1.1.1", "TT_NGolem2.1.1", "TT_NWolf6.1.1", "TT_NWraith4.1.1", "TT_NGolem5.1.1"}
  1901. end
  1902.  
  1903. --[[ Menus ]]--
  1904. function setMenus()
  1905. mainMenu()
  1906. skillsMenu()
  1907. itemMenu()
  1908. displayMenu()
  1909. permaMenu()
  1910. masteryMenu()
  1911. farmMenu()
  1912. summonerMenu()
  1913. streamingMenu()
  1914. performanceMenu()
  1915. pluginMenu()
  1916. end
  1917.  
  1918. function itemMenu()
  1919. ItemMenu = scriptConfig("Sida's Auto Carry: Items", "sidasacitems")
  1920. ItemMenu:addParam("sep", "-- Settings --", SCRIPT_PARAM_INFO, "")
  1921. ItemMenu:addParam("UseItemsAC", "Use Items With AutoCarry", SCRIPT_PARAM_ONOFF, true)
  1922. ItemMenu:addParam("UseItemsLastHit", "Use Items With Harass", SCRIPT_PARAM_ONOFF, true)
  1923. ItemMenu:addParam("UseItemsMixed", "Use Items With Mixed Mode", SCRIPT_PARAM_ONOFF, true)
  1924. ItemMenu:addParam("sep2", "-- Items --", SCRIPT_PARAM_INFO, "")
  1925. for _, item in ipairs(items) do
  1926. ItemMenu:addParam(item.menu, "Use "..item.name, SCRIPT_PARAM_ONOFF, true)
  1927. end
  1928. ItemMenu:addParam("muraMana", "Use Muramana", SCRIPT_PARAM_ONOFF, true)
  1929. end
  1930.  
  1931. function mainMenu()
  1932. AutoCarry.MainMenu = scriptConfig("Sida's Auto Carry: Settings", "sidasacmain")
  1933. AutoCarry.MainMenu:addParam("AutoCarry", "Auto Carry", SCRIPT_PARAM_ONKEYDOWN, false, AutoCarryKey)
  1934. AutoCarry.MainMenu:addParam("MouseCarry", "Mouse Carry", SCRIPT_PARAM_ONKEYTOGGLE, false, MouseCarryKey)
  1935. AutoCarry.MainMenu:addParam("LastHit", "Last Hit", SCRIPT_PARAM_ONKEYDOWN, false, LastHitKey)
  1936. AutoCarry.MainMenu:addParam("MixedMode", "Mixed Mode", SCRIPT_PARAM_ONKEYDOWN, false, MixedModeKey)
  1937. AutoCarry.MainMenu:addParam("LaneClear", "Lane Clear", SCRIPT_PARAM_ONKEYDOWN, false, LaneClearKey)
  1938. AutoCarry.MainMenu:addParam("Focused", "Prioritise Selected Target", SCRIPT_PARAM_ONOFF, false)
  1939. AutoCarry.MainMenu:addParam("HoldZone", "Stand Still And Shoot Range", SCRIPT_PARAM_SLICE, 0, 0, getTrueRange(), 0)
  1940. AutoCarry.MainMenu:addTS(AutoCarry.Orbwalker)
  1941. end
  1942.  
  1943. function skillsMenu()
  1944. SkillsMenu = scriptConfig("Sida's Auto Carry: Skills", "sidasacskills")
  1945. if Skills then
  1946. SkillsMenu:addParam("sep", "-- Auto Carry Skills --", SCRIPT_PARAM_INFO, "")
  1947. for _, skill in ipairs(Skills) do
  1948. SkillsMenu:addParam(skill.configName.."AutoCarry", "Use "..skill.displayName, SCRIPT_PARAM_ONOFF, true)
  1949. end
  1950. SkillsMenu:addParam("sep2", "-- Mixed Mode Skills --", SCRIPT_PARAM_INFO, "")
  1951. for _, skill in ipairs(Skills) do
  1952. SkillsMenu:addParam(skill.configName.."MixedMode", "Use "..skill.displayName, SCRIPT_PARAM_ONOFF, true)
  1953. end
  1954. else
  1955. SkillsMenu:addParam("sep", myHero.charName.." does not have any supported skills", SCRIPT_PARAM_INFO, "")
  1956. end
  1957. if VIP_USER then
  1958. SkillsMenu:addParam("hitChance", "Ability Hitchance", SCRIPT_PARAM_SLICE, 60, 0, 100, 0)
  1959. end
  1960. end
  1961.  
  1962. function displayMenu()
  1963. DisplayMenu = scriptConfig("Sida's Auto Carry: Display", "sidasacdisplay")
  1964. DisplayMenu:addParam("disableAllDrawing", "Disable All Drawing", SCRIPT_PARAM_ONOFF, false)
  1965. DisplayMenu:addParam("myRange", "Attack Range Circle", SCRIPT_PARAM_ONOFF, true)
  1966. DisplayMenu:addParam("target", "Circle Around Target", SCRIPT_PARAM_ONOFF, true)
  1967. DisplayMenu:addParam("minion", "Circle Next Minion To Last Hit", SCRIPT_PARAM_ONOFF, true)
  1968. DisplayMenu:addParam("sep", "-- Always Display (Requires Reload) --", SCRIPT_PARAM_INFO, "")
  1969. DisplayMenu:addParam("AutoCarry", "Auto Carry Hotkey Status", SCRIPT_PARAM_ONOFF, true)
  1970. DisplayMenu:addParam("MouseCarry", "Mouse Carry Hotkey Status", SCRIPT_PARAM_ONOFF, true)
  1971. DisplayMenu:addParam("LastHit", "Last Hit Hotkey Status", SCRIPT_PARAM_ONOFF, true)
  1972. DisplayMenu:addParam("MixedMode", "Mixed Mode Hotkey Status", SCRIPT_PARAM_ONOFF, true)
  1973. DisplayMenu:addParam("LaneClear", "Lane Clear Hotkey Status", SCRIPT_PARAM_ONOFF, true)
  1974. end
  1975.  
  1976. function permaMenu()
  1977. if DisplayMenu.AutoCarry then AutoCarry.MainMenu:permaShow("AutoCarry") end
  1978. if DisplayMenu.MouseCarry then AutoCarry.MainMenu:permaShow("MouseCarry") end
  1979. if DisplayMenu.LastHit then AutoCarry.MainMenu:permaShow("LastHit") end
  1980. if DisplayMenu.MixedMode then AutoCarry.MainMenu:permaShow("MixedMode") end
  1981. if DisplayMenu.LaneClear then AutoCarry.MainMenu:permaShow("LaneClear") end
  1982. end
  1983.  
  1984. function masteryMenu()
  1985. MasteryMenu = scriptConfig("Sida's Auto Carry: Masteries", "sidasacmasteries")
  1986. MasteryMenu:addParam("Butcher", "Butcher 1=On/0=Off", SCRIPT_PARAM_SLICE, 0, 0, 1, 0)
  1987. MasteryMenu:addParam("Spellblade", "Spellsword", SCRIPT_PARAM_ONOFF, false)
  1988. MasteryMenu:addParam("Executioner", "Executioner", SCRIPT_PARAM_ONOFF, false)
  1989. end
  1990.  
  1991. function farmMenu()
  1992. FarmMenu = scriptConfig("Sida's Auto Carry: Farming", "sidasacfarming")
  1993. FarmMenu:addParam("Predict", "Predict Minion Damage", SCRIPT_PARAM_ONOFF, true)
  1994. FarmMenu:addParam("moveLastHit", "Move To Mouse Last Hit Farming", SCRIPT_PARAM_ONOFF, true)
  1995. FarmMenu:addParam("moveMixed", "Move To Mouse Mixed Mode Farming", SCRIPT_PARAM_ONOFF, true)
  1996. FarmMenu:addParam("moveClear", "Move To Mouse Lane Clear Farming", SCRIPT_PARAM_ONOFF, true)
  1997. FarmMenu:addParam("MinionCircle", "Minion Marker Killable", SCRIPT_PARAM_ONOFF, true)
  1998. end
  1999.  
  2000. function summonerMenu()
  2001. SummonerMenu = scriptConfig("Sida's Auto Carry: Summoner Spells", "sidasacsummoner")
  2002. SummonerMenu:addParam("Ignite", "Ignite Killable Enemies", SCRIPT_PARAM_ONOFF, true)
  2003. SummonerMenu:addParam("Barrier", "Auto Barrier Upon High Damage", SCRIPT_PARAM_ONOFF, true)
  2004. end
  2005.  
  2006. function streamingMenu()
  2007. StreamingMenu = scriptConfig("Sida's Auto Carry: Streaming", "sidasacstreaming")
  2008. StreamingMenu:addParam("ShowClick", "Show Click Marker", SCRIPT_PARAM_ONOFF, true)
  2009. StreamingMenu:addParam("MinRand", "Minimum Time Between Clicks", SCRIPT_PARAM_SLICE, 150, 0, 1000, 0)
  2010. StreamingMenu:addParam("MaxRand", "Maximum Time Between Clicks", SCRIPT_PARAM_SLICE, 650, 0, 1000, 0)
  2011. StreamingMenu:addParam("Colour", "0 = Green, 1 = Red", SCRIPT_PARAM_SLICE, 0, 0, 1, 0)
  2012. StreamingMenu:addParam("DisableDrawing", "Streaming Mode", SCRIPT_PARAM_ONOFF, true)
  2013. end
  2014.  
  2015. function performanceMenu()
  2016. PerformanceMenu = scriptConfig("Sida's Auto Carry: Performance", "sidasacperformance")
  2017. PerformanceMenu:addParam("sep", "-- Can Cause FPS Lag! --", SCRIPT_PARAM_INFO, "")
  2018. PerformanceMenu:addParam("VipCol", "Use VIP Collision (Requires Reload!)", SCRIPT_PARAM_ONOFF, false)
  2019. PerformanceMenu:addParam("JungleFarm", "Enable Jungle Clearing", SCRIPT_PARAM_ONOFF, false)
  2020. end
  2021.  
  2022. function pluginMenu()
  2023. if hasPlugin then
  2024. AutoCarry.PluginMenu = scriptConfig("Sida's Auto Carry: "..myHero.charName.." Plugin", "sidasacplugin"..myHero.charName)
  2025. require("SidasAutoCarryPlugin - "..myHero.charName)
  2026. PrintChat(">> Sida's Auto Carry: Loaded "..myHero.charName.." plugin!")
  2027. end
  2028. end
  2029.  
  2030. function OnWndMsg(msg,key)
  2031. if msg == WM_LBUTTONDOWN and AutoCarry.MainMenu.MouseCarry == true then
  2032. AutoCarry.MainMenu.AutoCarry = true
  2033. elseif msg == WM_LBUTTONUP then
  2034. AutoCarry.MainMenu.AutoCarry = false
  2035. end
  2036. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement