Advertisement
TeamOneButton

Nasus

Dec 22nd, 2013
1,287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 92.25 KB | None | 0 0
  1. --Gemini's Nasus with blatant stolen code from cconn and Chad combined into a crappy little nasus script. Winning.
  2.  
  3. require 'Utils'
  4. require 'spell_damage'
  5. require 'uiconfig'
  6. require 'winapi'
  7. require 'SKeys'
  8.  
  9. -------------------[Random gl0bal crap]
  10. local version = '1.0'
  11. local target
  12. local targetHero
  13. local targetIgnite
  14. local minion
  15. local striking = false
  16. local t0_striking = 0
  17. local range = myHero.range + GetDistance(GetMinBBox(myHero))
  18. local uiconfig = require 'uiconfig'
  19. local HavocDamage = 0
  20. local ExecutionerDamage = 0
  21. local True_Attack_Damage_Against_Minions = 0
  22. local SORT_CUSTOM = function(a, b) return a.maxHealth and b.maxHealth and a.maxHealth < b.maxHealth end
  23. -------------------[end of random global crap]
  24.  
  25.  
  26. ----------[[Farming Variables]]
  27. local Target, M_Target
  28. local TEAM
  29. if myHero.team == 100 then
  30.         TEAM = "Blue"
  31. else
  32.         TEAM = "Red"
  33. end
  34.  
  35. local Nasus        = { projSpeed = 1.0, aaParticles = {"NasusBasicAttack_tar", "NasusBasicAttack2_mis", "NasusCritAttack_mis"}, aaSpellName = {"nasusbasicattack"}, startAttackSpeed = "0.638",  }
  36. local MinionInfo = { }
  37. MinionInfo[TEAM.."_Minion_Basic"]               =       { aaDelay = 400, projSpeed = 0          }
  38. MinionInfo[TEAM.."_Minion_Caster"]              =       { aaDelay = 484, projSpeed = 0.68       }
  39. MinionInfo[TEAM.."_Minion_Wizard"]              =       { aaDelay = 484, projSpeed = 0.68       }
  40. MinionInfo[TEAM.."_Minion_MechCannon"]  =       { aaDelay = 365, projSpeed = 1.18       }
  41. local Minions = { }
  42. local aaDelay = 320
  43. local aaPos = {x = 0, z = 0}
  44. local Ping = 60
  45. local IncomingDamage = { }
  46. local AnimationBeginTimer = 0
  47. local AnimationSpeedTimer = 0.1 * (1 / myHero.attackspeed)
  48. local TimeToAA = os.clock()
  49. ----------[[End of Farming Variables]]
  50.  
  51. ----------[[Red Elixer Variables]]
  52. local wUsedAt = 0
  53. local vUsedAt = 0
  54. local mUsedAt = 0
  55. local timer = os.clock()
  56. local bluePill = nil
  57. ----------[[End of Red Elixir Variables]]
  58.  
  59. ----------[[IGERs Auto Level Variables]]
  60. local send = require 'SendInputScheduled'
  61.  
  62. local version = "1.2.2"
  63. local Q,W,E,R = 'Q','W','E','R'
  64. local metakey = SKeys.Control
  65. local attempts = 0
  66. local lastAttempt = 0
  67. ----------[[End of IGERs Auto Level Variables]]
  68.  
  69. ----------[[Auto Dodge Skillshot Variables]]
  70. local version = '1.0'
  71. local cc = 0
  72. local skillshotArray = {}
  73. local colorcyan = 0x0000FFFF
  74. local coloryellow = 0xFFFFFF00
  75. local colorgreen = 0xFF00FF00
  76. local skillshotcharexist = false
  77. local show_allies=0
  78. ----------[[End of Auto Dodge Skillshot Variables]]
  79.  
  80. ----------[[Roam Helper Variables]]
  81. local Enemies = {}
  82. local EnemyIndex = 1
  83. ----------[[End of Roam Helper Variables]]
  84.  
  85. ----------[[Script Config Menu]]
  86. CfgControls, menu = uiconfig.add_menu('1. Nasus Controls', 200)
  87. menu.keydown('Combo', 'Combo', Keys.Space)
  88. menu.keytoggle('ComboR', 'R in Combo', Keys.Z, false)
  89. --menu.keytoggle('AutoQ', 'AutoQ', Keys.G, true)
  90. --menu.keydown('Harass', 'Harass', Keys.X)
  91. menu.keydown('PassiveFarm', 'Farm', Keys.C)
  92. menu.keydown('PushLane', 'Lane Clear', Keys.V)
  93.         menu.permashow('Combo')
  94.         menu.permashow('ComboR')
  95.        --menu.permashow('Harass')
  96.         menu.permashow('PassiveFarm')
  97.         menu.permashow('PushLane')
  98.  
  99. CfgSettings, menu = uiconfig.add_menu('2. Nasus Settings', 200)
  100. menu.checkbutton('Auto_Harass_ONOFF', 'Auto Harass', true)
  101. menu.checkbutton('DMG_Predict_Farm_ONOFF', 'Use Damage Prediction Farming', true)
  102. menu.checkbutton('Auto_Kill_Steal_ONOFF', 'Kill Steal', true)
  103. menu.checkbutton('AutoLevelSpells_ONOFF', 'Auto Level Spells', true)
  104. menu.checkbutton('drawskillshot', 'Draw Skillshots', true)
  105. menu.checkbutton('dodgeskillshot', 'Dodge Skillshots', true)
  106. menu.checkbutton('RoamHelper_ONOFF', 'Roam Helper', true)
  107. menu.checkbutton('Combo_Circles_ONOFF', 'Combo Circles', true)
  108. menu.checkbutton('Draw_ONOFF', 'Range Circles', true)
  109. menu.checkbutton('MoveToMouse', 'Move To Mouse', true)
  110. menu.slider('QRNG', 'Q Range', 100, 400, 350, nil, true)
  111. menu.slider('WRNG', 'W Range', 100, 800, 700, nil, true)
  112. menu.slider('ERNG', 'E Range', 100, 800, 650, nil, true)
  113. menu.slider('RRNG', 'R Range', 100, 600, 350, nil, true)
  114. menu.slider('Auto_Harass_Value', 'Auto Harass Value', 0, 100, 50, nil, true)
  115.         menu.permashow('Auto_Harass_ONOFF')
  116.        
  117. CfgMasteries, menu = uiconfig.add_menu('3. Nasus Masteries', 200)
  118. menu.slider('Butcher_Mastery', 'Butcher', 0, 2, 2, nil, true)
  119. menu.slider('Havoc_Mastery', 'Havoc', 0, 3, 3, nil, true)
  120. menu.slider('Brute_Force_Mastery', 'Brute Force', 0, 2, 0, nil, true)
  121. menu.checkbutton('Spellsword_Mastery', 'Spellsword', true)
  122. menu.checkbutton('Executioner_Mastery', 'Executioner', true)
  123.  
  124. CfgSummonerSpells, menu = uiconfig.add_menu('4. Summoner Spells', 200)
  125. menu.checkbutton('Auto_Summoner_Spells_ONOFF', 'Enable Auto Summoner Spells', true)
  126. menu.checkbutton('Auto_Ignite_ONOFF', 'Ignite', true)
  127. menu.checkbutton('Auto_Ignite_COMBO_ONOFF', 'Use Ignite in Combo', true)
  128. menu.checkbutton('Auto_Exhaust_COMBO_ONOFF', 'Use Exhaust in Combo', true)
  129. menu.checkbutton('Auto_Exhaust_ONOFF', 'Exhaust', true)
  130. menu.checkbutton('Auto_Barrier_ONOFF', 'Barrier', true)
  131. menu.checkbutton('Auto_Heal_ONOFF', 'Heal', true)
  132. menu.checkbutton('Auto_Clarity_ONOFF', 'Clarity', true)
  133. menu.slider('AutoHealValue', 'Auto Heal Value', 0, 100, 15, nil, true)
  134. menu.slider('AutoBarrierValue', 'Auto Barrier Value', 0, 100, 15, nil, true)
  135. menu.slider('AutoExhaustValue', 'Auto Exhaust Value', 0, 100, 20, nil, true)
  136. menu.slider('AutoClarityValue', 'Auto Clarity Value', 0, 100, 40, nil, true)
  137. menu.slider('AutoIgniteComboValue', 'Ignite Combo Value', 0, 100, 40, nil, true)
  138. menu.slider('AutoExhaustComboValue', 'Exhaust Combo Value', 0, 100, 40, nil, true)
  139.  
  140. CfgPotions, menu = uiconfig.add_menu('5. Potions', 200)
  141. menu.checkbutton('CCONN_Potions_ONOFF', 'Master Switch: Potions', true)
  142. menu.checkbutton('Health_Potion_ONOFF', 'Health Potions', true)
  143. menu.checkbutton('Mana_Potion_ONOFF', 'Mana Potions', true)
  144. menu.checkbutton('Chrystalline_Flask_ONOFF', 'Chrystalline Flask', true)
  145. menu.checkbutton('Elixir_of_Fortitude_ONOFF', 'Elixir of Fortitude', true)
  146. menu.checkbutton('Biscuit_ONOFF', 'Biscuit', true)
  147. menu.slider('Health_Potion_Value', 'Health Potion Value', 0, 100, 75, nil, true)
  148. menu.slider('Mana_Potion_Value', 'Mana Potion Value', 0, 100, 75, nil, true)
  149. menu.slider('Chrystalline_Flask_Value', 'Chrystalline Flask Value', 0, 100, 75, nil, true)
  150. menu.slider('Elixir_of_Fortitude_Value', 'Elixir of Fortitude Value', 0, 100, 30, nil, true)
  151. menu.slider('Biscuit_Value', 'Biscuit Value', 0, 100, 60, nil, true)
  152.  
  153. CfgItems, menu = uiconfig.add_menu('6. Items', 200)
  154. menu.checkbutton('Zhonyas_Hourglass_ONOFF', 'Zhonyas Hourglass', true)
  155. menu.checkbutton('Deathfire_Grasp_ONOFF', 'Deathfire Grasp', true)
  156. menu.checkbutton('Hextech_Gunblade_ONOFF', 'Hextech Gunblade', true)
  157. menu.checkbutton('Twin_Shadows_ONOFF', 'Twin Shadows', true)
  158. menu.checkbutton('Wooglets_Witchcap_ONOFF', 'Wooglets Witchcap', true)
  159. menu.checkbutton('Shard_of_True_Ice_ONOFF', 'Shard of True Ice', true)
  160. menu.checkbutton('Seraphs_Embrace_ONOFF', 'Seraphs Embrace', true)
  161. menu.checkbutton('Blackfire_Torch_ONOFF', 'Blackfire Torch', true)
  162. menu.slider('Zhonyas_Hourglass_Value', 'Zhonya Hourglass Value', 0, 100, 15, nil, true)
  163. menu.slider('Wooglets_Witchcap_Value', 'Wooglets Witchcap Value', 0, 100, 15, nil, true)
  164. menu.slider('Seraphs_Embrace_Value', 'Seraphs Embrace Value', 0, 100, 15, nil, true)
  165. ----------[[End of Script Config Menu]]
  166.  
  167. function NasusRun()
  168.     if IsLolActive() and IsChatOpen() == 0 then
  169.         target = GetWeakEnemy('PHYS', 700)
  170.         targetHero = GetWeakEnemy('PHYS', 700)
  171.         targetIgnite = GetWeakEnemy('TRUE',600)
  172.         Mastery_Damage()
  173.         if CfgControls.PassiveFarm then Farm() end
  174.         if CfgControls.PushLane then Farm() end
  175.         if CfgPotions.CCONN_Potions_ONOFF then CCONN_Potions() end
  176.         if CfgSettings.Draw_ONOFF then Draw() end
  177.         if CfgSummonerSpells.Auto_Summoner_Spells_ONOFF then SummonerSpells() end
  178.         --if CfgSettings.Auto_Kill_Steal_ONOFF then KillSteal() end
  179.         if CfgControls.Combo then Combo() end
  180.         if CfgControls.Combo then CCONN_Items() end
  181.         if CfgControls.Harass then Harass() end
  182. end
  183. end
  184. --------------[UtilityFunctions]
  185.  
  186.  
  187. function Round(val, decimal)
  188.         if (decimal) then
  189.                 return math.floor( (val * 10 ^ decimal) + 0.5) / (10 ^ decimal)
  190.         else
  191.                 return math.floor(val + 0.5)
  192.         end
  193. end
  194.  
  195. function CCONN_Items()
  196.         local target = GetWeakEnemy('MAGIC',700)
  197.         if target ~= nil then
  198.                 if GetDistance(myHero,target) <= 700 then
  199.                         if CfgItems.Hextech_Gunblade_ONOFF then useHextechGunblade() end
  200.                         if CfgItems.Deathfire_Grasp_ONOFF then useDeathfireGrasp() end
  201.                         if CfgItems.Twin_Shadows_ONOFF then useTwinShadows() end
  202.                         if CfgItems.Shard_of_True_Ice_ONOFF then useShardofTrueIce() end
  203.                         if CfgItems.Blackfire_Torch_ONOFF then useBlackfireTorch() end
  204.                 end
  205.                 if CfgItems.Zhonyas_Hourglass_ONOFF then
  206.                         if myHero.health < myHero.maxHealth*(CfgItems.Zhonyas_Hourglass_Value / 100) then
  207.                                 useZhonyas()
  208.                         end
  209.                 end
  210.                 if CfgItems.Wooglets_Witchcap_ONOFF then
  211.                         if myHero.health < myHero.maxHealth*(CfgItems.Wooglets_Witchcap_Value / 100) then
  212.                                 useWoogletsWitchcap()
  213.                         end
  214.                 end
  215.                 if CfgItems.Seraphs_Embrace_ONOFF then
  216.                         if myHero.health <= (CfgItems.Seraphs_Embrace_Value / 100) then
  217.                                 useSeraphsEmbrace()
  218.                         end
  219.                 end
  220.         end
  221. end
  222. function useZhonyas()
  223.         GetInventorySlot(3157)
  224.         UseItemOnTarget(3157,myHero)
  225. end
  226. function useHextechGunblade()
  227.         GetInventorySlot(3146)
  228.         UseItemOnTarget(3146,target)
  229. end
  230. function useDeathfireGrasp()
  231.         GetInventorySlot(3128)
  232.         UseItemOnTarget(3128,target)
  233. end
  234. function useTwinShadows()
  235.         GetInventorySlot(3023)
  236.         UseItemOnTarget(3023,target)
  237. end
  238. function useWoogletsWitchcap()
  239.         GetInventorySlot(3090)
  240.         UseItemOnTarget(3090,myHero)
  241. end
  242. function useShardofTrueIce()
  243.         GetInventorySlot(3092)
  244.         UseItemOnTarget(3092,myHero)
  245. end
  246. function useSeraphsEmbrace()
  247.         GetInventorySlot(3040)
  248.         UseItemOnTarget(3040,myHero)
  249. end
  250. function useBlackfireTorch()
  251.         GetInventorySlot(3188)
  252.         UseItemOnTarget(3188,target)
  253. end
  254.  
  255. function Mastery_Damage()
  256.         local Mast_ButcherDMG = 0
  257.         local Mast_BruteForceDMG = 0
  258.         local Mast_SpellswordDMG = 0
  259.         if CfgMasteries.Butcher_Mastery > 0 then
  260.                 Mast_ButcherDMG = CfgMasteries.Butcher_Mastery
  261.         end
  262.         if CfgMasteries.Brute_Force_Mastery then
  263.                 if CfgMasteries.Brute_Force_Mastery == 1 then
  264.                         Mast_BruteForceDMG = 1.5
  265.                 end
  266.                 if CfgMasteries.Brute_Force_Mastery == 2 then
  267.                         Mast_BruteForceDMG = 3
  268.                 end
  269.         end
  270.         if CfgMasteries.Spellsword_Mastery then
  271.                 Mast_SpellswordDMG = myHero.ap * .05
  272.         end
  273.         if CfgMasteries.Havoc_Mastery then
  274.                 if CfgMasteries.Havoc_Mastery == 1 then
  275.                         HavocDamage = 0.0067
  276.                 end
  277.                 if CfgMasteries.Havoc_Mastery == 2 then
  278.                         HavocDamage = 0.0133
  279.                 end
  280.                 if CfgMasteries.Havoc_Mastery == 3 then
  281.                         HavocDamage = 0.02
  282.                 end
  283.         end
  284.         if CfgMasteries.Executioner_Mastery then
  285.                 ExecutionerDamage = .05
  286.         end
  287.         True_Attack_Damage_Against_Minions = (myHero.baseDamage + myHero.addDamage + Mast_BruteForceDMG + Mast_SpellswordDMG)+((myHero.baseDamage + myHero.addDamage + Mast_BruteForceDMG + Mast_SpellswordDMG)*(HavocDamage + ExecutionerDamage))
  288. end
  289.  
  290. --------------[End Util Functions]
  291.  
  292.  
  293. --------------[Farming Fucntions]
  294.  
  295.  
  296. function GetDistance2D(o1, o2)
  297.    local c = "z"
  298.    if o1.z == nil or o2.z == nil then c = "y" end
  299.    return math.sqrt(math.pow(o1.x - o2.x, 2) + math.pow(o1[c] - o2[c], 2))
  300. end
  301.  
  302. function Farm()
  303.         Minions = GetEnemyMinions(SORT_CUSTOM)
  304.         AnimationSpeedTimer = 0.085 * (1 / myHero.attackspeed)
  305.        
  306.         for i, Minion in pairs(Minions) do
  307.                 if Minion ~= nil then
  308.                         local PredictedDamage = 0
  309.                         local aaTime = Ping + aaDelay + ( GetDistance2D(myHero, Minion) / Nasus.projSpeed )
  310.                        
  311.                         for k, DMG in pairs(IncomingDamage) do
  312.                                 if DMG ~= nil then
  313.                                         if (DMG.Source == nil or DMG.Source.dead == 1 or DMG.Target == nil or DMG.Target.dead == 1) or (DMG.Source.x ~= DMG.aaPos.x or DMG.Source.z ~= DMG.aaPos.z) then
  314.                                                 IncomingDamage[k] = nil
  315.                                         elseif Minion == DMG.Target then
  316.                                                 DMG.aaTime = (DMG.projSpeed == 0 and (DMG.aaDelay) or (DMG.aaDelay + GetDistance2D(DMG.Source, Minion) / DMG.projSpeed))
  317.                                                 if GetTickCount() >= (DMG.Start + DMG.aaTime) then
  318.                                                         IncomingDamage[k] = nil
  319.                                                 elseif GetTickCount() + aaTime > (DMG.Start + DMG.aaTime) then
  320.                                                         PredictedDamage = PredictedDamage + DMG.Damage
  321.                                                 end
  322.                                         end
  323.                                 end
  324.                         end
  325.                        
  326.                        
  327.                         if Minion.dead == 0 and Minion.health - PredictedDamage <= True_Attack_Damage_Against_Minions and Minion.health - PredictedDamage > 0 and GetDistance(Minion, myHero) < range then
  328.                                 if os.clock() > TimeToAA then
  329.                                         AttackTarget(Minion)
  330.                                         CustomCircle(100, 1, 2, Minion)
  331.                                 end
  332.                         elseif Minion.dead == 0 and Minion.health - PredictedDamage <= getDmg('Q',Minion,myHero)+(getDmg('Q',Minion,myHero)*(HavocDamage + ExecutionerDamage)) and Minion.health - PredictedDamage > 0 and GetDistance(Minion, myHero) < CfgSettings.QRNG then
  333.                             CastSpellTarget('Q',Minion)
  334.                             AttackTarget(Minion)
  335.                             CustomCircle(100, 1, 2, Minion)
  336.                         --elseif target ~= nil then
  337.                         --    Harass()
  338.                         end
  339.                 end
  340.         end
  341.         if CfgSettings.MoveToMouse and os.clock() > (AnimationBeginTimer + AnimationSpeedTimer) then MoveToMouse() end
  342. end
  343.  
  344. function OnProcessSpell(unit, spell)
  345.         if unit ~= nil and GetDistance(myHero, unit) < 1000 then
  346.                 for i, Minion in pairs(Minions) do
  347.                         if Minion ~= nil then
  348.                                 if MinionInfo[unit.charName] ~= nil then
  349.                                         local m_aaDelay = MinionInfo[unit.charName].aaDelay
  350.                                         local m_projSpeed = MinionInfo[unit.charName].projSpeed
  351.                                        
  352.                                         if spell.target == Minion then
  353.                                                 IncomingDamage[unit.name] = { Source = unit, Target = Minion, Damage = getDmg("AD", Minion, unit), Start = GetTickCount(), aaPos = { x = unit.x, z = unit.z }, aaDelay = m_aaDelay, projSpeed = m_projSpeed }
  354.                                         end
  355.                                 end
  356.                         end
  357.                 end
  358.         end
  359.         if unit.charName == myHero.charName then
  360.                 for i, aaSpellName in pairs(Nasus.aaSpellName) do
  361.                         if spell.name == aaSpellName then
  362.                                 AnimationBeginTimer = os.clock()
  363.                                 TimeToAA = os.clock() + (1 / myHero.attackspeed) - 0.35 * (1 / myHero.attackspeed)
  364.                         end
  365.                 end
  366.         end
  367. end
  368.  
  369. function Hybrid()               -----> Hybrid function changed to prioritze last hits over champions
  370.     targetHero = GetWeakEnemy("MAGIC",625)
  371.         tlow = GetLowestHealthEnemyMinion(range)
  372.    
  373.         if tlow ~= nil and tlow.health <= True_Attack_Damage_Against_Minions then
  374.                 target = tlow
  375.         elseif tlow ~= nil and tlow.health <= getDmg('Q',Minion,myHero)+(getDmg('Q',Minion,myHero)*(HavocDamage + ExecutionerDamage)) then
  376.                 target = tlow
  377.         elseif targetHero ~= nil then
  378.         target = targetHero
  379.                 Harass()
  380.     end
  381.        
  382.     if target ~= nil then
  383.         if target.health <= getDmg('Q',Minion,myHero)+(getDmg('Q',Minion,myHero)*(HavocDamage + ExecutionerDamage)) then
  384.                 CastSpellTarget('Q',target)
  385.                 AttackTarget(target)
  386.         elseif True_Attack_Damage_Against_Minions >= target.health then
  387.             AttackTarget(target)
  388.                 end
  389.     else
  390.         if CfgSettings.MoveToMouse then MoveToMouse() end
  391.     end
  392.         if CfgSettings.MoveToMouse then MoveToMouse() end
  393. end
  394.        
  395. function LaneClear() --
  396.     local tlow=GetLowestHealthEnemyMinion(600)
  397.     local thigh=GetHighestHealthEnemyMinion(600)
  398.         local targetHero = GetWeakEnemy("MAGIC",600)
  399.  
  400.     if target2 ~= nil  and target2.visible == 1 and target2.dead == 0 then
  401.         target = target2
  402.     end
  403.  
  404.     if tlow~= nil then --Cycles target depending on if the minion can be last hit by AA or spells
  405.                 if True_Attack_Damage_Against_Minions >= tlow.health then
  406.                         target = tlow
  407.                         CustomCircle(100,20,1,target)
  408.                 elseif getDmg('Q',tlow,myHero)+(getDmg('Q',tlow,myHero)*(HavocDamage + ExecutionerDamage)) >= tlow.health then
  409.                         target = tlow
  410.                         CustomCircle(100,20,1,target)
  411.                 elseif getDmg('W',tlow,myHero)+(getDmg('W',tlow,myHero)*(HavocDamage + ExecutionerDamage)) >= tlow.health then
  412.                         target = tlow
  413.                         CustomCircle(100,20,1,target)                                          
  414.                 elseif targetHero ~= nil then
  415.                         target = targetHero
  416.                 elseif thigh ~= nil then
  417.                         target = thigh
  418.                         CustomCircle(110,10,5,target)
  419.                 else end
  420.         end
  421.  
  422.     if target ~= nil and target.visible == 1 and target.dead == 0 then
  423.         if myHero.SpellTimeQ > 1.0 and getDmg('Q',target,myHero)+(getDmg('Q',target,myHero)*(HavocDamage + ExecutionerDamage)) >= target.health then
  424.                         Q()
  425.         elseif True_Attack_Damage_Against_Minions >= target.health then
  426.                                 AttackTarget(target)
  427.                 elseif myHero.SpellTimeW > 1.0 and getDmg('W',target,myHero)+(getDmg('W',target,myHero)*(HavocDamage + ExecutionerDamage)) >= target.health then
  428.                         W()
  429.                 else end
  430.     else
  431.     if CfgSettings.MoveToMouse and os.clock() > (AnimationBeginTimer + AnimationSpeedTimer) then MoveToMouse() end
  432.     end
  433.         if CfgSettings.MoveToMouse and os.clock() > (AnimationBeginTimer + AnimationSpeedTimer) then MoveToMouse() end
  434. end
  435.  
  436.  
  437.  
  438. --------------[End of Farming Functions]
  439.  
  440.  
  441. ----------[[Summoner Spell Functions]]
  442. function SummonerSpells()
  443.         if CfgSummonerSpells.Auto_Ignite_ONOFF then SummonerIgnite() end
  444.         if CfgSummonerSpells.Auto_Barrier_ONOFF then SummonerBarrier() end
  445.         if CfgSummonerSpells.Auto_Heal_ONOFF then SummonerHeal() end
  446.         if CfgSummonerSpells.Auto_Exhaust_ONOFF then SummonerExhaust() end
  447.         if CfgSummonerSpells.Auto_Clarity_ONOFF then SummonerClarity() end
  448. end
  449.  
  450. function SummonerIgniteCombo()
  451.         if target ~= nil then
  452.                 if myHero.SummonerD == 'SummonerDot' then
  453.                         if target.health <= target.maxHealth*(CfgSummonerSpells.AutoIgniteComboValue / 100) then
  454.                                 CastSpellTarget('D',target)
  455.                         end
  456.                 end
  457.                 if myHero.SummonerF == 'SummonerDot' then
  458.                         if target.health <= target.maxHealth*(CfgSummonerSpells.AutoIgniteComboValue / 100) then
  459.                                 CastSpellTarget('F',target)
  460.                         end
  461.                 end
  462.         end
  463. end
  464.  
  465. function SummonerIgnite()
  466.         targetignite = GetWeakEnemy("TRUE",600)
  467.         local damage = (myHero.selflevel*20)+50
  468.         if targetignite ~= nil then
  469.                 if myHero.SummonerD == 'SummonerDot' then
  470.                         if targetignite.health < damage then
  471.                                 CastSpellTarget('D',targetignite)
  472.                         end
  473.                 end
  474.                 if myHero.SummonerF == 'SummonerDot' then
  475.                         if targetignite.health < damage then
  476.                                 CastSpellTarget('F',targetignite)
  477.                         end
  478.                 end
  479.         end
  480. end
  481.  
  482. function SummonerBarrier()
  483.                 if myHero.SummonerD == 'SummonerBarrier' then
  484.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoBarrierValue / 100) then
  485.                                 CastSpellTarget('D',myHero)
  486.                         end
  487.                 end
  488.                 if myHero.SummonerF == 'SummonerBarrier' then
  489.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoBarrierValue / 100) then
  490.                                 CastSpellTarget('F',myHero)
  491.                         end
  492.                 end
  493. end
  494.  
  495. function SummonerHeal()
  496.                 if myHero.SummonerD == 'SummonerHeal' then
  497.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoHealValue / 100) then
  498.                                 CastSpellTarget('D',myHero)
  499.                         end
  500.                 end
  501.                 if myHero.SummonerF == 'SummonerHeal' then
  502.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoHealValue / 100) then
  503.                                 CastSpellTarget('F',myHero)
  504.                         end
  505.                 end
  506. end
  507.  
  508. function SummonerExhaustCombo()
  509.         if target ~= nil then
  510.                 if myHero.SummonerD == 'SummonerExhaust' then
  511.                         if target.health <= target.maxHealth*(CfgSummonerSpells.AutoExhaustComboValue / 100) then
  512.                                 CastSpellTarget('D',target)
  513.                         end
  514.                 end
  515.                 if myHero.SummonerF == 'SummonerExhaust' then
  516.                         if target.health <= target.maxHealth*(CfgSummonerSpells.AutoExhaustComboValue / 100) then
  517.                                 CastSpellTarget('F',target)
  518.                         end
  519.                 end
  520.         end
  521. end
  522.  
  523. function SummonerExhaust()
  524.         if target ~= nil then
  525.                 if myHero.SummonerD == 'SummonerExhaust' then
  526.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoExhaustValue / 100) then
  527.                                 if myHero.health < target.health then
  528.                                         CastSpellTarget('D',target)
  529.                                 end
  530.                         end
  531.                 end
  532.                 if myHero.SummonerF == 'SummonerExhaust' then
  533.                         if myHero.health < myHero.maxHealth*(CfgSummonerSpells.AutoExhaustValue / 100) then
  534.                                 if myHero.health < target.health then
  535.                                         CastSpellTarget('F',target)
  536.                                 end
  537.                         end
  538.                 end
  539.         end
  540. end
  541.  
  542. function SummonerClarity()
  543.                 if myHero.SummonerD == 'SummonerMana' then
  544.                         if myHero.mana < myHero.maxMana*(CfgSummonerSpells.AutoClarityValue / 100) then
  545.                                 CastSpellTarget('D',myHero)
  546.                         end
  547.                 end
  548.                 if myHero.SummonerF == 'SummonerMana' then
  549.                         if myHero.mana < myHero.maxMana*(CfgSummonerSpells.AutoClarityValue / 100) then
  550.                                 CastSpellTarget('F',myHero)
  551.                         end
  552.                 end
  553. end
  554. ----------[[End of Summoner Spell Functions]]
  555.  
  556.  
  557.  
  558.  
  559.  
  560. ----------[[CCONN Potions Based of RED ELIXIR]]
  561. function CCONN_Potions()
  562.         if bluePill == nil then
  563.                 if myHero.health < myHero.maxHealth * (CfgPotions.Health_Potion_Value / 100) and GetClock() > wUsedAt + 15000 then
  564.                         usePotion()
  565.                         wUsedAt = GetTick()
  566.                 elseif myHero.health < myHero.maxHealth * (CfgPotions.Chrystalline_Flask_Value / 100) and GetClock() > vUsedAt + 10000 then
  567.                         useFlask()
  568.                         vUsedAt = GetTick()
  569.                 elseif myHero.health < myHero.maxHealth * (CfgPotions.Biscuit_Value / 100) then
  570.                         useBiscuit()
  571.                 elseif myHero.health < myHero.maxHealth * (CfgPotions.Elixir_of_Fortitude_Value / 100) then
  572.                         useElixir()
  573.                 end
  574.                 if myHero.mana < myHero.maxMana * (CfgPotions.Mana_Potion_Value / 100) and GetClock() > mUsedAt + 15000 then
  575.                         useManaPot()
  576.                         mUsedAt = GetTick()
  577.                 end
  578.         end
  579.         if (os.clock() < timer + 5000) then
  580.                 bluePill = nil
  581.         end
  582. end
  583. function OnCreateObj(object)
  584.         if (GetDistance(myHero, object)) < 100 then
  585.                 if string.find(object.charName,"FountainHeal") then
  586.                         timer=os.clock()
  587.                         bluePill = object
  588.                 end
  589.         end
  590. end
  591. function usePotion()
  592.         GetInventorySlot(2003)
  593.         UseItemOnTarget(2003,myHero)
  594. end
  595. function useFlask()
  596.         GetInventorySlot(2041)
  597.         UseItemOnTarget(2041,myHero)
  598. end
  599. function useBiscuit()
  600.         GetInventorySlot(2009)
  601.         UseItemOnTarget(2009,myHero)
  602. end
  603. function useElixir()
  604.         GetInventorySlot(2037)
  605.         UseItemOnTarget(2037,myHero)
  606. end
  607. function useManaPot()
  608.         GetInventorySlot(2004)
  609.         UseItemOnTarget(2004,myHero)
  610. end
  611. function GetTick()
  612.         return GetClock()
  613. end
  614. ----------[[End of CCONN Potions]]
  615.  
  616. ----------[[IGERs Auto Level]]
  617. local skillingOrder = {
  618.     Nasus = {Q,W,E,Q,Q,R,Q,W,Q,W,R,W,W,E,E,R,E,E},
  619. }
  620.  
  621. function Level_Spell(letter)  
  622.      if letter == Q then send.key_press(0x69)
  623.      elseif letter == W then send.key_press(0x6a)
  624.      elseif letter == E then send.key_press(0x6b)
  625.      elseif letter == R then send.key_press(0x6c) end
  626. end
  627.  
  628. function IsLolActive()
  629.     return tostring(winapi.get_foreground_window()) == "League of Legends (TM) Client"
  630. end
  631.  
  632. function OnTick()
  633.     if CfgSettings.AutoLevelSpells_ONOFF and IsLolActive() and IsChatOpen() == 0 then
  634.         local spellLevelSum = myHero.SpellLevelQ + myHero.SpellLevelW + myHero.SpellLevelE + myHero.SpellLevelR
  635.         if attempts <= 10 or (attempts > 10 and GetTickCount() > lastAttempt+1500) then
  636.             if spellLevelSum < myHero.selflevel then
  637.                 if lastSpellLevelSum ~= spellLevelSum then attempts = 0 end
  638.                 letter = skillingOrder["Nasus"][spellLevelSum+1]
  639.                                
  640.                 Level_Spell(letter, spellLevelSum)
  641.                 attempts = attempts+1
  642.                 lastAttempt = GetTickCount()
  643.                 lastSpellLevelSum = spellLevelSum
  644.             else
  645.                 attempts = 0
  646.             end
  647.         end
  648.     end
  649.     send.tick()
  650. end
  651.  
  652. SetTimerCallback("OnTick")
  653. ----------[[End of IGERs Auto Level]]
  654.  
  655. ----------[[Auto Dodge Skillhots]]
  656. function Main()
  657.         if tostring(winapi.get_foreground_window()) == "League of Legends (TM) Client" then
  658.                 Skillshots()
  659.                 if blockAndMove ~= nil then blockAndMove() end
  660.                 send.tick()
  661.         end
  662. end
  663.  
  664. function CreateBlockAndMoveToXYZ(x, y, z)
  665.     print('CreateBlockAndMoveToXYZ', x, y, z)
  666.     local move_start_time, move_dest, move_pending
  667.     send.block_input(true,750,MakeStateMatch)
  668.     move_start_time = os.clock()
  669.     move_dest = {x=x, y=y, z=z}
  670.     move_pending = true
  671.     MoveToXYZ(move_dest.x, 0, move_dest.z)
  672.     run_once = false
  673.     return function()
  674.         if move_pending then
  675.             printtext('.')
  676.             local waited_too_long = move_start_time + 1 < os.clock()    
  677.             if waited_too_long or GetDistance(move_dest)<75 then
  678.                 print('\nremaining distance: '..tostring(GetDistance(move_dest)))
  679.                 move_pending = false
  680.                 send.block_input(false)
  681.             end
  682.         else
  683.             printtext(' ')
  684.         end
  685.     end
  686. end
  687.  
  688. function MakeStateMatch(changes)
  689.     for scode,flag in pairs(changes) do    
  690.         print(scode)
  691.         if flag then print('went down') else print('went up') end
  692.         local vk = winapi.map_virtual_key(scode, 3)
  693.         local is_down = winapi.get_async_key_state(vk)
  694.         if flag then -- went down
  695.             if is_down then
  696.                 send.wait(60)
  697.                 send.key_down(scode)
  698.                 send.wait(60)
  699.             else
  700.                 -- up before, up after, down during, we don't care
  701.             end            
  702.         else -- went up
  703.             if is_down then
  704.                 -- down before, down after, up during, we don't care
  705.             else
  706.                 send.wait(60)
  707.                 send.key_up(scode)
  708.                 send.wait(60)
  709.             end
  710.         end
  711.     end
  712. end
  713.  
  714. function OnProcessSpell(unit,spell)
  715.         local P1 = spell.startPos
  716.         local P2 = spell.endPos
  717.         local calc = (math.floor(math.sqrt((P2.x-unit.x)^2 + (P2.z-unit.z)^2)))
  718.         if string.find(unit.name,"Minion_") == nil and string.find(unit.name,"Turret_") == nil then
  719.                 if (unit.team ~= myHero.team or (show_allies==1)) and string.find(spell.name,"Basic") == nil then
  720.                         for i=1, #skillshotArray, 1 do
  721.                                 local maxdist
  722.                                 local dodgeradius
  723.                                 dodgeradius = skillshotArray[i].radius
  724.                                 maxdist = skillshotArray[i].maxdistance
  725.                                 if spell.name == skillshotArray[i].name then
  726.                                         skillshotArray[i].shot = 1
  727.                                         skillshotArray[i].lastshot = os.clock()
  728.                                         if skillshotArray[i].type == 1 then
  729.                                                 skillshotArray[i].p1x = unit.x
  730.                                                 skillshotArray[i].p1y = unit.y
  731.                                                 skillshotArray[i].p1z = unit.z
  732.                                                 skillshotArray[i].p2x = unit.x + (maxdist)/calc*(P2.x-unit.x)
  733.                                                 skillshotArray[i].p2y = P2.y
  734.                                                 skillshotArray[i].p2z = unit.z + (maxdist)/calc*(P2.z-unit.z)
  735.                                                 dodgelinepass(unit, P2, dodgeradius, maxdist)
  736.                                         elseif skillshotArray[i].type == 2 then
  737.                                                 skillshotArray[i].px = P2.x
  738.                                                 skillshotArray[i].py = P2.y
  739.                                                 skillshotArray[i].pz = P2.z
  740.                                                 dodgelinepoint(unit, P2, dodgeradius)
  741.                                         elseif skillshotArray[i].type == 3 then
  742.                                                 skillshotArray[i].skillshotpoint = calculateLineaoe(unit, P2, maxdist)
  743.                                                 if skillshotArray[i].name ~= "SummonerClairvoyance" then
  744.                                                         dodgeaoe(unit, P2, dodgeradius)
  745.                                                 end
  746.                                         elseif skillshotArray[i].type == 4 then
  747.                                                 skillshotArray[i].px = unit.x + (maxdist)/calc*(P2.x-unit.x)
  748.                                                 skillshotArray[i].py = P2.y
  749.                                                 skillshotArray[i].pz = unit.z + (maxdist)/calc*(P2.z-unit.z)
  750.                                                 dodgelinepass(unit, P2, dodgeradius, maxdist)
  751.                                         elseif skillshotArray[i].type == 5 then
  752.                                                 skillshotArray[i].skillshotpoint = calculateLineaoe2(unit, P2, maxdist)
  753.                                                 dodgeaoe(unit, P2, dodgeradius)
  754.                                         end
  755.                                 end
  756.                         end
  757.                 end
  758.         end
  759. end
  760.  
  761. function dodgeaoe(pos1, pos2, radius)
  762.         print('dodgeaoe', pos1, pos2, radius, maxDist)
  763.         print('dodgeaoe:pos1:', pos1.x, pos1.y, pos1.z)
  764.         print('dodgeaoe:pos2:', pos2.x, pos2.y, pos2.z)
  765.         local calc = (math.floor(math.sqrt((pos2.x-myHero.x)^2 + (pos2.z-myHero.z)^2)))
  766.         local dodgex
  767.         local dodgez
  768.         dodgex = pos2.x + ((radius+100)/calc)*(myHero.x-pos2.x)
  769.         dodgez = pos2.z + ((radius+100)/calc)*(myHero.z-pos2.z)
  770.         if calc < radius and CfgSettings.dodgeskillshot == true then
  771.         MoveToXYZ(dodgex,0,dodgez)
  772.         end
  773. end
  774.  
  775. function dodgelinepoint(pos1, pos2, radius)
  776.         local calc1 = (math.floor(math.sqrt((pos2.x-myHero.x)^2 + (pos2.z-myHero.z)^2)))
  777.         local calc2 = (math.floor(math.sqrt((pos1.x-myHero.x)^2 + (pos1.z-myHero.z)^2)))
  778.         local calc4 = (math.floor(math.sqrt((pos1.x-pos2.x)^2 + (pos1.z-pos2.z)^2)))
  779.         local calc3
  780.         local perpendicular
  781.         local k
  782.         local x4
  783.         local z4
  784.         local dodgex
  785.         local dodgez
  786.         perpendicular = (math.floor((math.abs((pos2.x-pos1.x)*(pos1.z-myHero.z)-(pos1.x-myHero.x)*(pos2.z-pos1.z)))/(math.sqrt((pos2.x-pos1.x)^2 + (pos2.z-pos1.z)^2))))
  787.         k = ((pos2.z-pos1.z)*(myHero.x-pos1.x) - (pos2.x-pos1.x)*(myHero.z-pos1.z)) / ((pos2.z-pos1.z)^2 + (pos2.x-pos1.x)^2)
  788.         x4 = myHero.x - k * (pos2.z-pos1.z)
  789.         z4 = myHero.z + k * (pos2.x-pos1.x)
  790.         calc3 = (math.floor(math.sqrt((x4-myHero.x)^2 + (z4-myHero.z)^2)))
  791.         dodgex = x4 + ((radius+100)/calc3)*(myHero.x-x4)
  792.         dodgez = z4 + ((radius+100)/calc3)*(myHero.z-z4)
  793.         if perpendicular < radius and calc1 < calc4 and calc2 < calc4 and CfgSettings.dodgeskillshot == true then
  794.                 blockAndMove = CreateBlockAndMoveToXYZ(dodgex,0,dodgez)
  795.         end
  796. end
  797.  
  798. function dodgelinepass(pos1, pos2, radius, maxDist)
  799.         print('dodgelinepass', pos1, pos2, radius, maxDist)
  800.         print('dodgelinepass:pos1:', pos1.x, pos1.y, pos1.z)
  801.         print('dodgelinepass:pos2:', pos2.x, pos2.y, pos2.z)
  802.         local pm2x = pos1.x + (maxDist)/(math.floor(math.sqrt((pos1.x-pos2.x)^2 + (pos1.z-pos2.z)^2)))*(pos2.x-pos1.x)
  803.         local pm2z = pos1.z + (maxDist)/(math.floor(math.sqrt((pos1.x-pos2.x)^2 + (pos1.z-pos2.z)^2)))*(pos2.z-pos1.z)
  804.         local calc1 = (math.floor(math.sqrt((pm2x-myHero.x)^2 + (pm2z-myHero.z)^2)))
  805.         local calc2 = (math.floor(math.sqrt((pos1.x-myHero.x)^2 + (pos1.z-myHero.z)^2)))
  806.         local calc3
  807.         local calc4 = (math.floor(math.sqrt((pos1.x-pm2x)^2 + (pos1.z-pm2z)^2)))
  808.         local perpendicular
  809.         local k
  810.         local x4
  811.         local z4
  812.         local dodgex
  813.         local dodgez
  814.         perpendicular = (math.floor((math.abs((pm2x-pos1.x)*(pos1.z-myHero.z)-(pos1.x-myHero.x)*(pm2z-pos1.z)))/(math.sqrt((pm2x-pos1.x)^2 + (pm2z-pos1.z)^2))))
  815.         k = ((pm2z-pos1.z)*(myHero.x-pos1.x) - (pm2x-pos1.x)*(myHero.z-pos1.z)) / ((pm2z-pos1.z)^2 + (pm2x-pos1.x)^2)
  816.         x4 = myHero.x - k * (pm2z-pos1.z)
  817.         z4 = myHero.z + k * (pm2x-pos1.x)
  818.         calc3 = (math.floor(math.sqrt((x4-myHero.x)^2 + (z4-myHero.z)^2)))
  819.         dodgex = x4 + ((radius+100)/calc3)*(myHero.x-x4)
  820.         dodgez = z4 + ((radius+100)/calc3)*(myHero.z-z4)
  821.         if perpendicular < radius and calc1 < calc4 and calc2 < calc4 and CfgSettings.dodgeskillshot == true then
  822.                 blockAndMove = CreateBlockAndMoveToXYZ(dodgex,0,dodgez)
  823.         end
  824. end
  825.  
  826.  
  827. function calculateLinepass(pos1, pos2, spacing, maxDist)
  828.         local calc = (math.floor(math.sqrt((pos2.x-pos1.x)^2 + (pos2.z-pos1.z)^2)))
  829.         local line = {}
  830.         local point1 = {}
  831.         point1.x = pos1.x
  832.         point1.y = pos1.y
  833.         point1.z = pos1.z
  834.         local point2 = {}
  835.         point1.x = pos1.x + (maxDist)/calc*(pos2.x-pos1.x)
  836.         point1.y = pos2.y
  837.         point1.z = pos1.z + (maxDist)/calc*(pos2.z-pos1.z)
  838.         table.insert(line, point2)
  839.         table.insert(line, point1)
  840.         return line
  841. end
  842.  
  843. function calculateLineaoe(pos1, pos2, maxDist)
  844.         local line = {}
  845.         local point = {}
  846.         point.x = pos2.x
  847.         point.y = pos2.y
  848.         point.z = pos2.z
  849.         table.insert(line, point)
  850.         return line
  851. end
  852.  
  853. function calculateLineaoe2(pos1, pos2, maxDist)
  854.         local calc = (math.floor(math.sqrt((pos2.x-pos1.x)^2 + (pos2.z-pos1.z)^2)))
  855.         local line = {}
  856.         local point = {}
  857.                 if calc < maxDist then
  858.                 point.x = pos2.x
  859.                 point.y = pos2.y
  860.                 point.z = pos2.z
  861.                 table.insert(line, point)
  862.         else
  863.                 point.x = pos1.x + maxDist/calc*(pos2.x-pos1.x)
  864.                 point.z = pos1.z + maxDist/calc*(pos2.z-pos1.z)
  865.                 point.y = pos2.y
  866.                 table.insert(line, point)
  867.         end
  868.         return line
  869. end
  870.  
  871. function calculateLinepoint(pos1, pos2, spacing, maxDist)
  872.         local line = {}
  873.         local point1 = {}
  874.         point1.x = pos1.x
  875.         point1.y = pos1.y
  876.         point1.z = pos1.z
  877.         local point2 = {}
  878.         point1.x = pos2.x
  879.         point1.y = pos2.y
  880.         point1.z = pos2.z
  881.         table.insert(line, point2)
  882.         table.insert(line, point1)
  883.         return line
  884. end
  885.  
  886. function table_print (tt, indent, done)
  887.         done = done or {}
  888.         indent = indent or 0
  889.         if type(tt) == "table" then
  890.                 local sb = {}
  891.                 for key, value in pairs (tt) do
  892.                         table.insert(sb, string.rep (" ", indent)) -- indent it
  893.                         if type (value) == "table" and not done [value] then
  894.                                 done [value] = true
  895.                                 table.insert(sb, "{\n");
  896.                                 table.insert(sb, table_print (value, indent + 2, done))
  897.                                 table.insert(sb, string.rep (" ", indent)) -- indent it
  898.                                 table.insert(sb, "}\n");
  899.                         elseif "number" == type(key) then
  900.                                 table.insert(sb, string.format("\"%s\"\n", tostring(value)))
  901.                         else
  902.                                 table.insert(sb, string.format(
  903.                                 "%s = \"%s\"\n", tostring (key), tostring(value)))
  904.                         end
  905.                 end
  906.                 return table.concat(sb)
  907.         else
  908.         return tt .. "\n"
  909.         end
  910. end
  911.  
  912. function Skillshots()
  913.         cc=cc+1
  914.         if (cc==30) then
  915.                 LoadTable()
  916.         end
  917.         if CfgSettings.drawskillshot == true then
  918.                 for i=1, #skillshotArray, 1 do
  919.                         if skillshotArray[i].shot == 1 then
  920.                                 local radius = skillshotArray[i].radius
  921.                                 local color = skillshotArray[i].color
  922.                                 if skillshotArray[i].isline == false then
  923.                                         for number, point in pairs(skillshotArray[i].skillshotpoint) do
  924.                                                 DrawCircle(point.x, point.y, point.z, radius, color)
  925.                                         end
  926.                                 else
  927.                                         startVector = Vector(skillshotArray[i].p1x,skillshotArray[i].p1y,skillshotArray[i].p1z)
  928.                                         endVector = Vector(skillshotArray[i].p2x,skillshotArray[i].p2y,skillshotArray[i].p2z)
  929.                                         directionVector = (endVector-startVector):normalized()
  930.                                         local angle=0
  931.                                         if (math.abs(directionVector.x)<.00001) then
  932.                                                 if directionVector.z > 0 then angle=90
  933.                                                 elseif directionVector.z < 0 then angle=270
  934.                                                 else angle=0
  935.                                                 end
  936.                                         else
  937.                                                 local theta = math.deg(math.atan(directionVector.z / directionVector.x))
  938.                                                 if directionVector.x < 0 then theta = theta + 180 end
  939.                                                         if theta < 0 then theta = theta + 360 end
  940.                                                                 angle=theta
  941.                                                         end
  942.                                                                 angle=((90-angle)*2*math.pi)/360
  943.                                                                 DrawLine(startVector.x, startVector.y, startVector.z, GetDistance(startVector, endVector)+170, 1,angle,radius)
  944.                                                 end
  945.                                         end
  946.                                 end
  947.                         end
  948.         for i=1, #skillshotArray, 1 do
  949.                 if os.clock() > (skillshotArray[i].lastshot + skillshotArray[i].time) then
  950.                 skillshotArray[i].shot = 0
  951.                 end
  952.         end
  953. end
  954.  
  955. function LoadTable()
  956.         print("table loaded::")
  957.         local iCount=objManager:GetMaxHeroes()
  958.         print(" heros:" .. tostring(iCount))
  959.         iCount=1;
  960.         for i=0, iCount, 1 do
  961.                 local skillshotplayerObj = GetSelf();
  962.                 print(" name:" .. skillshotplayerObj.name);
  963.                 if 1==1 or skillshotplayerObj.name == "Quinn" then
  964.                         table.insert(skillshotArray,{name= "QuinnQMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1025, type = 1, radius = 40, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  965.                         skillshotcharexist = true
  966.                 end
  967.                 if 1==1 or skillshotplayerObj.name == "Lissandra" then
  968.                         table.insert(skillshotArray,{name= "LissandraQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 725, type = 1, radius = 100, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  969.                         table.insert(skillshotArray,{name= "LissandraE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1050, type = 1, radius = 100, color= coloryellow, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  970.                         skillshotcharexist = true
  971.                 end
  972.                 if 1==1 or skillshotplayerObj.name == "Zac" then
  973.                         table.insert(skillshotArray,{name= "ZacQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 550, type = 1, radius = 100, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  974.                         table.insert(skillshotArray,{name= "ZacE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1550, type = 3, radius = 200, color= colorcyan, time = 2, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  975.                         skillshotcharexist = true
  976.                 end
  977.                 if 1==1 or skillshotplayerObj.name == "Syndra" then
  978.                         table.insert(skillshotArray,{name= "SyndraQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 800, type = 3, radius = 200, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  979.                         table.insert(skillshotArray,{name= "SyndraE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 650, type = 1, radius = 100, color= coloryellow, time = 0.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  980.                         table.insert(skillshotArray,{name= "syndrawcast", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 950, type = 3, radius = 200, color= colorcyan, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  981.                         skillshotcharexist = true
  982.                 end
  983.                 if 1==1 or skillshotplayerObj.name == "Jayce" then
  984.                         table.insert(skillshotArray,{name= "jayceshockblast", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1470, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  985.                         skillshotcharexist = true
  986.                 end
  987.                 if 1==1 or skillshotplayerObj.name == "Nami" then
  988.                         table.insert(skillshotArray,{name= "NamiQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 875, type = 3, radius = 200, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  989.                         table.insert(skillshotArray,{name= "NamiR", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 2550, type = 1, radius = 350, color= colorcyan, time = 3, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  990.                         skillshotcharexist = true
  991.                 end
  992.                 if 1==1 or skillshotplayerObj.name == "Vi" then
  993.                         table.insert(skillshotArray,{name= "ViQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 1, radius = 150, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  994.                         skillshotcharexist = true
  995.                 end
  996.                         if 1==1 or skillshotplayerObj.name == "Thresh" then
  997.                         table.insert(skillshotArray,{name= "ThreshQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 100, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  998.                         skillshotcharexist = true
  999.                 end
  1000.                 if 1==1 or skillshotplayerObj.name == "Khazix" then
  1001.                         table.insert(skillshotArray,{name= "KhazixE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 3, radius = 200, color= colorcyan, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1002.                         table.insert(skillshotArray,{name= "KhazixW", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 120, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1003.                         table.insert(skillshotArray,{name= "khazixwlong", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1004.                         table.insert(skillshotArray,{name= "khazixelong", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 200, color= colorcyan, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1005.                         skillshotcharexist = true
  1006.                 end
  1007.                 if 1==1 or skillshotplayerObj.name == "Elise" then
  1008.                         table.insert(skillshotArray,{name= "EliseHumanE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1075, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1009.                         skillshotcharexist = true
  1010.                 end
  1011.                 if 1==1 or skillshotplayerObj.name == "Zed" then
  1012.                         table.insert(skillshotArray,{name= "ZedShuriken", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 1, radius = 100, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1013.                         table.insert(skillshotArray,{name= "ZedShadowDash", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 550, type = 3, radius = 150, color= colorcyan, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1014.                         table.insert(skillshotArray,{name= "zedw2", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 550, type = 3, radius = 150, color= colorcyan, time = 0.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1015.                         skillshotcharexist = true
  1016.                 end
  1017.                 if 1==1 or skillshotplayerObj.name == "Ahri" then
  1018.                         table.insert(skillshotArray,{name= "AhriOrbofDeception", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 880, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1019.                         table.insert(skillshotArray,{name= "AhriSeduce", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 975, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1020.                 skillshotcharexist = true
  1021.                 end
  1022.                 if 1==1 or skillshotplayerObj.name == "Amumu" then
  1023.                         table.insert(skillshotArray,{name= "BandageToss", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1024.                 skillshotcharexist = true
  1025.                 end
  1026.                 if 1==1 or skillshotplayerObj.name == "Anivia" then
  1027.                         table.insert(skillshotArray,{name= "FlashFrostSpell", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 90, color= colorcyan, time = 2, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1028.                 skillshotcharexist = true
  1029.                 end
  1030.                 if 1==1 or skillshotplayerObj.name == "Ashe" then
  1031.                         table.insert(skillshotArray,{name= "EnchantedCrystalArrow", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 50000, type = 4, radius = 120, color= colorcyan, time = 4, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1032.                 skillshotcharexist = true
  1033.                 end
  1034.                 if 1==1 or skillshotplayerObj.name == "Blitzcrank" then
  1035.                         table.insert(skillshotArray,{name= "RocketGrabMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 925, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1036.                 skillshotcharexist = true
  1037.                 end
  1038.                 if 1==1 or skillshotplayerObj.name == "Brand" then
  1039.                         table.insert(skillshotArray,{name= "BrandBlazeMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1050, type = 1, radius = 70, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1040.                         table.insert(skillshotArray,{name= "BrandFissure", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1041.                 skillshotcharexist = true
  1042.                 end
  1043.                 if 1==1 or skillshotplayerObj.name == "Cassiopeia" then
  1044.                         table.insert(skillshotArray,{name= "CassiopeiaMiasma", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 850, type = 3, radius = 175, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1045.                         table.insert(skillshotArray,{name= "CassiopeiaNoxiousBlast", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 850, type = 3, radius = 75, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1046.                 skillshotcharexist = true
  1047.                 end
  1048.                 if 1==1 or skillshotplayerObj.name == "Caitlyn" then
  1049.                         table.insert(skillshotArray,{name= "CaitlynEntrapmentMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 50, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1050.                         table.insert(skillshotArray,{name= "CaitlynPiltoverPeacemaker", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1300, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0})
  1051.                 skillshotcharexist = true
  1052.                 end
  1053.                 if 1==1 or skillshotplayerObj.name == "Corki" then
  1054.                         table.insert(skillshotArray,{name= "MissileBarrageMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1225, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1055.                         table.insert(skillshotArray,{name= "MissileBarrageMissile2", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1225, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1056.                         table.insert(skillshotArray,{name= "CarpetBomb", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 800, type = 2, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1057.                 skillshotcharexist = true
  1058.                 end
  1059.                 if 1==1 or skillshotplayerObj.name == "Chogath" then
  1060.                         table.insert(skillshotArray,{name= "Rupture", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 950, type = 3, radius = 275, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1061.                 skillshotcharexist = true
  1062.                 end
  1063.                 if 1==1 or skillshotplayerObj.name == "DrMundo" then
  1064.                         table.insert(skillshotArray,{name= "InfectedCleaverMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1065.                 skillshotcharexist = true
  1066.                 end
  1067.                 if 1==1 or skillshotplayerObj.name == "Heimerdinger" then
  1068.                         table.insert(skillshotArray,{name= "CH1ConcussionGrenade", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 950, type = 3, radius = 225, color= coloryellow, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1069.                 skillshotcharexist = true
  1070.                 end
  1071.                 if 1==1 or skillshotplayerObj.name == "Draven" then
  1072.                         table.insert(skillshotArray,{name= "DravenDoubleShot", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1050, type = 1, radius = 125, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1073.                         table.insert(skillshotArray,{name= "DravenRCast", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 5000, type = 1, radius = 100, color= colorcyan, time = 4, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1074.                 skillshotcharexist = true
  1075.                 end
  1076.                 if 1==1 or skillshotplayerObj.name == "Ezreal" then
  1077.                         table.insert(skillshotArray,{name= "EzrealEssenceFluxMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1078.                         table.insert(skillshotArray,{name= "EzrealMysticShotMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1079.                         table.insert(skillshotArray,{name= "EzrealTrueshotBarrage", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 5000, type = 4, radius = 150, color= colorcyan, time = 4, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1080.                         table.insert(skillshotArray,{name= "EzrealArcaneShift", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 475, type = 5, radius = 100, color= colorgreen, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1081.                 skillshotcharexist = true
  1082.                 end
  1083.                 if 1==1 or skillshotplayerObj.name == "Fizz" then
  1084.                         table.insert(skillshotArray,{name= "FizzMarinerDoom", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1275, type = 2, radius = 100, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1085.                 skillshotcharexist = true
  1086.                 end
  1087.                 if 1==1 or skillshotplayerObj.name == "FiddleSticks" then
  1088.                         table.insert(skillshotArray,{name= "Crowstorm", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 800, type = 3, radius = 600, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1089.                 skillshotcharexist = true
  1090.                 end
  1091.                 if 1==1 or skillshotplayerObj.name == "Karthus" then
  1092.                         table.insert(skillshotArray,{name= "LayWaste", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 875, type = 3, radius = 150, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1093.                 skillshotcharexist = true
  1094.                 end
  1095.                 if 1==1 or skillshotplayerObj.name == "Galio" then
  1096.                         table.insert(skillshotArray,{name= "GalioResoluteSmite", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 905, type = 3, radius = 200, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1097.                         table.insert(skillshotArray,{name= "GalioRighteousGust", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 120, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1098.                 skillshotcharexist = true
  1099.                 end
  1100.                 if 1==1 or skillshotplayerObj.name == "Graves" then
  1101.                         table.insert(skillshotArray,{name= "GravesChargeShot", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 110, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1102.                         table.insert(skillshotArray,{name= "GravesClusterShot", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 750, type = 1, radius = 50, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1103.                         table.insert(skillshotArray,{name= "GravesSmokeGrenade", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 700, type = 3, radius = 275, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1104.                 skillshotcharexist = true
  1105.                 end
  1106.                 if 1==1 or skillshotplayerObj.name == "Gragas" then
  1107.                         table.insert(skillshotArray,{name= "GragasBarrelRoll", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 3, radius = 320, color= coloryellow, time = 2.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1108.                         table.insert(skillshotArray,{name= "GragasBodySlam", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 650, type = 2, radius = 60, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1109.                         table.insert(skillshotArray,{name= "GragasExplosiveCask", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1050, type = 3, radius = 400, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1110.                 skillshotcharexist = true
  1111.                 end
  1112.                 if 1==1 or skillshotplayerObj.name == "Irelia" then
  1113.                         table.insert(skillshotArray,{name= "IreliaTranscendentBlades", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1200, type = 1, radius = 150, color= colorcyan, time = 0.8, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1114.                 skillshotcharexist = true
  1115.                 end
  1116.                 if 1==1 or skillshotplayerObj.name == "Janna" then
  1117.                         table.insert(skillshotArray,{name= "HowlingGale", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1700, type = 1, radius = 100, color= colorcyan, time = 2, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1118.                 skillshotcharexist = true
  1119.                 end
  1120.                 if 1==1 or skillshotplayerObj.name == "JarvanIV" then
  1121.                         table.insert(skillshotArray,{name= "JarvanIVDemacianStandard", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 830, type = 3, radius = 150, color= coloryellow, time = 2, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1122.                         table.insert(skillshotArray,{name= "JarvanIVDragonStrike", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 770, type = 1, radius = 70, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1123.                         table.insert(skillshotArray,{name= "JarvanIVCataclysm", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 650, type = 3, radius = 300, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1124.                 skillshotcharexist = true
  1125.                 end
  1126.                 if 1==1 or skillshotplayerObj.name == "Kassadin" then
  1127.                         table.insert(skillshotArray,{name= "RiftWalk", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 700, type = 5, radius = 150, color= colorgreen, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1128.                 skillshotcharexist = true
  1129.                 end
  1130.                 if 1==1 or skillshotplayerObj.name == "Katarina" then
  1131.                         table.insert(skillshotArray,{name= "ShadowStep", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 700, type = 3, radius = 75, color= colorgreen, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1132.                 skillshotcharexist = true
  1133.                 end
  1134.                 if 1==1 or skillshotplayerObj.name == "Kennen" then
  1135.                         table.insert(skillshotArray,{name= "KennenShurikenHurlMissile1", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1050, type = 1, radius = 75, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1136.                 skillshotcharexist = true
  1137.                 end
  1138.                 if 1==1 or skillshotplayerObj.name == "KogMaw" then
  1139.                         table.insert(skillshotArray,{name= "KogMawVoidOozeMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1115, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1140.                         table.insert(skillshotArray,{name= "KogMawLivingArtillery", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 2200, type = 3, radius = 200, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1141.                 skillshotcharexist = true
  1142.                 end
  1143.                 if 1==1 or skillshotplayerObj.name == "Leblanc" then
  1144.                         table.insert(skillshotArray,{name= "LeblancSoulShackle", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1145.                         table.insert(skillshotArray,{name= "LeblancSoulShackleM", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1146.                         table.insert(skillshotArray,{name= "LeblancSlide", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1147.                         table.insert(skillshotArray,{name= "LeblancSlideM", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1148.                         table.insert(skillshotArray,{name= "leblancslidereturn", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 3, radius = 50, color= colorgreen, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1149.                         table.insert(skillshotArray,{name= "leblancslidereturnm", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 3, radius = 50, color= colorgreen, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1150.                 skillshotcharexist = true
  1151.                 end
  1152.                 if 1==1 or skillshotplayerObj.name == "LeeSin" then
  1153.                         table.insert(skillshotArray,{name= "BlindMonkQOne", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 975, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1154.                         table.insert(skillshotArray,{name= "BlindMonkRKick", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1200, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1155.                 skillshotcharexist = true
  1156.                 end
  1157.                 if 1==1 or skillshotplayerObj.name == "Leona" then
  1158.                         table.insert(skillshotArray,{name= "LeonaZenithBladeMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 700, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1159.                 skillshotcharexist = true
  1160.                 end
  1161.                 if 1==1 or skillshotplayerObj.name == "Lucian" then
  1162.                         table.insert(skillshotArray,{name= "LucianQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 100, color= colorcyan, time = 0.75, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1163.                         table.insert(skillshotArray,{name= "LucianW", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1164.                         table.insert(skillshotArray,{name= "LucianR", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1400, type = 1, radius = 250, color= colorcyan, time = 3, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1165.                 skillshotcharexist = true
  1166.                 end
  1167.                 if 1==1 or skillshotplayerObj.name == "Lux" then
  1168.                         table.insert(skillshotArray,{name= "LuxLightBinding", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1175, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1169.                         table.insert(skillshotArray,{name= "LuxLightStrikeKugel", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 3, radius = 300, color= coloryellow, time = 2.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1170.                         table.insert(skillshotArray,{name= "LuxMaliceCannon", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 3000, type = 1, radius = 180, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1171.                 skillshotcharexist = true
  1172.                 end
  1173.                 if 1==1 or skillshotplayerObj.name == "Lulu" then
  1174.                         table.insert(skillshotArray,{name= "LuluQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 925, type = 1, radius = 50, color= colorcyan, time = 1, isline = true, px =0, py =0 , pz =0, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1175.                 skillshotcharexist = true
  1176.                 end
  1177.                 if 1==1 or skillshotplayerObj.name == "Maokai" then
  1178.                         table.insert(skillshotArray,{name= "MaokaiTrunkLineMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1179.                         table.insert(skillshotArray,{name= "MaokaiSapling2", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 3, radius = 350 , color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1180.                 skillshotcharexist = true
  1181.                 end
  1182.                 if 1==1 or skillshotplayerObj.name == "Malphite" then
  1183.                         table.insert(skillshotArray,{name= "UFSlash", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 3, radius = 325, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1184.                 skillshotcharexist = true
  1185.                 end
  1186.                 if 1==1 or skillshotplayerObj.name == "Malzahar" then
  1187.                         table.insert(skillshotArray,{name= "AlZaharCalloftheVoid", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 100 , color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1188.                         table.insert(skillshotArray,{name= "AlZaharNullZone", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 800, type = 3, radius = 250 , color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1189.                 skillshotcharexist = true
  1190.                 end
  1191.                 if 1==1 or skillshotplayerObj.name == "MissFortune" then
  1192.                         table.insert(skillshotArray,{name= "MissFortuneScattershot", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 800, type = 3, radius = 400, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1193.                 skillshotcharexist = true
  1194.                 end
  1195.                 if 1==1 or skillshotplayerObj.name == "Morgana" then
  1196.                         table.insert(skillshotArray,{name= "DarkBindingMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1300, type = 1, radius = 90, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1197.                         table.insert(skillshotArray,{name= "TormentedSoil", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 300, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1198.                 skillshotcharexist = true
  1199.                 end
  1200.                 if 1==1 or skillshotplayerObj.name == "Nautilus" then
  1201.                         table.insert(skillshotArray,{name= "NautilusAnchorDrag", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 950, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1202.                 skillshotcharexist = true
  1203.                 end
  1204.                 if 1==1 or skillshotplayerObj.name == "Nidalee" then
  1205.                         table.insert(skillshotArray,{name= "JavelinToss", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1500, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1206.                 skillshotcharexist = true
  1207.                 end
  1208.                 if 1==1 or skillshotplayerObj.name == "Nocturne" then
  1209.                         table.insert(skillshotArray,{name= "NocturneDuskbringer", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1200, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1210.                 skillshotcharexist = true
  1211.                 end
  1212.                 if 1==1 or skillshotplayerObj.name == "Olaf" then
  1213.                         table.insert(skillshotArray,{name= "OlafAxeThrow", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 2, radius = 100, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1214.                 skillshotcharexist = true
  1215.                 end
  1216.                 if 1==1 or skillshotplayerObj.name == "Orianna" then
  1217.                         table.insert(skillshotArray,{name= "OrianaIzunaCommand", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 825, type = 3, radius = 150, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1218.                 skillshotcharexist = true
  1219.                 end
  1220.                 if 1==1 or skillshotplayerObj.name == "Renekton" then
  1221.                         table.insert(skillshotArray,{name= "RenektonSliceAndDice", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 450, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1222.                         table.insert(skillshotArray,{name= "renektondice", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 450, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1223.                 skillshotcharexist = true
  1224.                 end
  1225.                 if 1==1 or skillshotplayerObj.name == "Rumble" then
  1226.                         table.insert(skillshotArray,{name= "RumbleGrenadeMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 100, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1227.                         table.insert(skillshotArray,{name= "RumbleCarpetBomb", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1700, type = 1, radius = 100, color= coloryellow, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1228.                 skillshotcharexist = true
  1229.                 end
  1230.                 if 1==1 or skillshotplayerObj.name == "Sivir" then
  1231.                         table.insert(skillshotArray,{name= "SpiralBlade", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1232.                 skillshotcharexist = true
  1233.                 end
  1234.                 if 1==1 or skillshotplayerObj.name == "Singed" then
  1235.                         table.insert(skillshotArray,{name= "MegaAdhesive", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 3, radius = 350, color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1236.                 skillshotcharexist = true
  1237.                 end
  1238.                 if 1==1 or skillshotplayerObj.name == "Shen" then
  1239.                         table.insert(skillshotArray,{name= "ShenShadowDash", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 2, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1240.                 skillshotcharexist = true
  1241.                 end
  1242.                 if 1==1 or skillshotplayerObj.name == "Shaco" then
  1243.                         table.insert(skillshotArray,{name= "Deceive", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 500, type = 5, radius = 100, color= colorgreen, time = 3.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1244.                 skillshotcharexist = true
  1245.                 end
  1246.                 if 1==1 or skillshotplayerObj.name == "Shyvana" then
  1247.                         table.insert(skillshotArray,{name= "ShyvanaTransformLeap", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 925, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1248.                         table.insert(skillshotArray,{name= "ShyvanaFireballMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1249.                 skillshotcharexist = true
  1250.                 end
  1251.                 if 1==1 or skillshotplayerObj.name == "Skarner" then
  1252.                         table.insert(skillshotArray,{name= "SkarnerFracture", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 1, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1253.                 skillshotcharexist = true
  1254.                 end
  1255.                 if 1==1 or skillshotplayerObj.name == "Sona" then
  1256.                         table.insert(skillshotArray,{name= "SonaCrescendo", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1257.                 skillshotcharexist = true
  1258.                 end
  1259.                 if 1==1 or skillshotplayerObj.name == "Sejuani" then
  1260.                         table.insert(skillshotArray,{name= "SejuaniGlacialPrison", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1150, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1261.                 skillshotcharexist = true
  1262.                 end
  1263.                 if 1==1 or skillshotplayerObj.name == "Swain" then
  1264.                         table.insert(skillshotArray,{name= "SwainShadowGrasp", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 265 , color= coloryellow, time = 1.5, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1265.                 skillshotcharexist = true
  1266.                 end
  1267.                 if 1==1 or skillshotplayerObj.name == "Tryndamere" then
  1268.                         table.insert(skillshotArray,{name= "Slash", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 600, type = 2, radius = 100, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1269.                 skillshotcharexist = true
  1270.                 end
  1271.                 if 1==1 or skillshotplayerObj.name == "Tristana" then
  1272.                         table.insert(skillshotArray,{name= "RocketJump", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 200, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1273.                 skillshotcharexist = true
  1274.                 end
  1275.                 if 1==1 or skillshotplayerObj.name == "TwistedFate" then
  1276.                         table.insert(skillshotArray,{name= "WildCards", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1450, type = 1, radius = 150, color= colorcyan, time = 5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1277.                 skillshotcharexist = true
  1278.                 end
  1279.                 if 1==1 or skillshotplayerObj.name == "Urgot" then
  1280.                         table.insert(skillshotArray,{name= "UrgotHeatseekingLineMissile", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 1, radius = 150, color= colorcyan, time = 0.8, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1281.                         table.insert(skillshotArray,{name= "UrgotPlasmaGrenade", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 950, type = 3, radius = 300, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1282.                 skillshotcharexist = true
  1283.                 end
  1284.                 if 1==1 or skillshotplayerObj.name == "Vayne" then
  1285.                         table.insert(skillshotArray,{name= "VayneTumble", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 250, type = 3, radius = 100, color= colorgreen, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1286.                 skillshotcharexist = true
  1287.                 end
  1288.                 if 1==1 or skillshotplayerObj.name == "Varus" then
  1289.                         --table.insert(skillshotArray,{name= "VarusQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1475, type = 1, radius = 50, color= coloryellow, time = 1})
  1290.                         table.insert(skillshotArray,{name= "VarusR", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1075, type = 1, radius = 150, color= colorcyan, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1291.                 skillshotcharexist = true
  1292.                 end
  1293.                 if 1==1 or skillshotplayerObj.name == "Veigar" then
  1294.                         table.insert(skillshotArray,{name= "VeigarDarkMatter", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 225, color= coloryellow, time = 2, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1295.                 skillshotcharexist = true
  1296.                 end
  1297.                 if 1==1 or skillshotplayerObj.name == "Viktor" then
  1298.                         --table.insert(skillshotArray,{name= "ViktorDeathRay", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 700, type = 1, radius = 150, color= coloryellow, time = 2})
  1299.                 end
  1300.                 if 1==1 or skillshotplayerObj.name == "Xerath" then
  1301.                         table.insert(skillshotArray,{name= "xeratharcanopulsedamage", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1302.                         table.insert(skillshotArray,{name= "xeratharcanopulsedamageextended", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1300, type = 1, radius = 150, color= colorcyan, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1303.                         table.insert(skillshotArray,{name= "xeratharcanebarragewrapper", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1304.                         table.insert(skillshotArray,{name= "xeratharcanebarragewrapperext", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1300, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1305.                 skillshotcharexist = true
  1306.                 end
  1307.                 if 1==1 or skillshotplayerObj.name == "Ziggs" then
  1308.                         table.insert(skillshotArray,{name= "ZiggsQ", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 850, type = 3, radius = 160, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1309.                         table.insert(skillshotArray,{name= "ZiggsW", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1000, type = 3, radius = 225 , color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0  })
  1310.                         table.insert(skillshotArray,{name= "ZiggsE", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 250, color= coloryellow, time = 1, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1311.                         table.insert(skillshotArray,{name= "ZiggsR", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 5300, type = 3, radius = 550, color= coloryellow, time = 3, isline = false, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1312.                 skillshotcharexist = true
  1313.                 end
  1314.                 if 1==1 or skillshotplayerObj.name == "Zyra" then
  1315.                         table.insert(skillshotArray,{name= "ZyraQFissure", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 825, type = 3, radius = 275, color= coloryellow, time = 1.5, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1316.                         table.insert(skillshotArray,{name= "ZyraGraspingRoots", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 1100, type = 1, radius = 90, color= colorcyan, time = 2, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1317.                 skillshotcharexist = true
  1318.                 end
  1319.                 if 1==1 or skillshotplayerObj.name == "Diana" then
  1320.                         table.insert(skillshotArray,{name= "DianaArc", shot=0, lastshot = 0, skillshotpoint = {}, maxdistance = 900, type = 3, radius = 205, color= coloryellow, time = 1, isline = true, p1x =0, p1y =0 , p1z =0 , p2x =0, p2y =0 , p2z =0 })
  1321.                 skillshotcharexist = true
  1322.                 end
  1323.     end
  1324. end
  1325.  ------------[End Dodge Skillshots]
  1326.  
  1327.  
  1328.  
  1329.  
  1330. function Combo()  -- Spells in order of priority - Q, E, W when spell is off cooldown. R / Ignite / Exhaust if toggled. Move to mouse between spells and when there's no target.
  1331.     if target ~= nil then
  1332.         if GetDistance(target) <= 600 then
  1333.             if CfgControls.ComboR and myHero.SpellLevelR > 0.0 and myHero.SpellTimeR > 1.0  and GetDistance(myHero, target) <= CfgSettings.RRNG then
  1334.                 R()
  1335.             elseif myHero.SpellTimeQ > 1.0 and  myHero.SpellLevelQ > 0.0 and GetDistance(myHero, target) <= CfgSettings.QRNG then
  1336.                 Q()
  1337.             elseif myHero.SpellTimeE > 1.0 and myHero.SpellLevelE > 0.0 and GetDistance(myHero, target) <= CfgSettings.ERNG then
  1338.                 E()
  1339.             elseif myHero.SpellTimeW > 1.0 and myHero.SpellLevelW > 0.0 and GetDistance(myHero, target) <= CfgSettings.WRNG then
  1340.                 W()
  1341.             end
  1342.             if CfgSummonerSpells.Auto_Ignite_COMBO_ONOFF then SummonerIgniteCombo() end
  1343.             if CfgSummonerSpells.Auto_Exhaust_COMBO_ONOFF then SummonerExhaustCombo() end
  1344.         end
  1345.         if CfgSettings.MoveToMouse then MoveToMouse() end
  1346.     else
  1347.         if CfgSettings.MoveToMouse then MoveToMouse() end
  1348.     end
  1349. end
  1350.  
  1351. function ignite()
  1352.     local damage = (myHero.selflevel*20)+50
  1353.     if targetIgnite ~= nil and targetIgnite.health < damage then
  1354.         CastSummonerIgnite(targetIgnite)
  1355.     end
  1356. end
  1357.  
  1358. function OnProcessSpell(unit,spell)
  1359.     if unit ~= nil and spell ~= nil and unit.charName == myHero.charName then
  1360.         if (spell.name == "NasusBasicAttack" or spell.name == "NasusBasicAttack2") and CfgSettings.AutoQ and CanUseSpell("Q") then
  1361.             CastSpellTarget("Q",myHero)
  1362.         end
  1363.         if spell.name == "SiphoningStrikeNew" then
  1364.             striking = true
  1365.             t0_striking = GetClock()+10000
  1366.         end
  1367.         if spell.name == "SiphoningStrikeAttack" then
  1368.             striking = false
  1369.         end
  1370.     end
  1371. end
  1372.  
  1373.  
  1374. function Draw()
  1375.     if myHero.SpellLevelQ > 0.00 and myHero.SpellTimeQ > 1.0 then CustomCircle(CfgSettings.QRNG,2,4,myHero) end
  1376.     if myHero.SpellLevelW > 0.00 and myHero.SpellTimeW > 1.0 then CustomCircle(CfgSettings.WRNG,2,4,myHero) end
  1377.     if myHero.SpellLevelE > 0.00 and myHero.SpellTimeE > 1.0 then CustomCircle(CfgSettings.ERNG,2,4,myHero) end
  1378.     if CfgControls.PushLane or CfgControls.PassiveFarm then CustomCircle(range,2,4,myHero) end
  1379.     if CfgSettings.RoamHelper_ONOFF then
  1380.         local current_burst_DMG
  1381.         for i, Enemy in pairs(Enemies) do
  1382.             if Enemy ~= nil then
  1383.                 Hero = Enemy.Unit
  1384.            
  1385.                 local PositionX = (13.3/16) * GetScreenX()
  1386.            
  1387.                 local QDMG = getDmg('Q', Hero, myHero)+(getDmg('Q',Hero,myHero)*(HavocDamage + ExecutionerDamage))
  1388.                 local WDMG = getDmg('W', Hero, myHero)+(getDmg('W',Hero,myHero)*(HavocDamage + ExecutionerDamage))
  1389.                 local EDMG = getDmg('E', Hero, myHero)+(getDmg('E',Hero,myHero)*(HavocDamage + ExecutionerDamage))
  1390.                 local RDMG = getDmg('R', Hero, myHero)+(getDmg('R',Hero,myHero)*(HavocDamage + ExecutionerDamage))
  1391.                 local Current_Burst
  1392.                 if myHero.selflevel >= 6 and myHero.SpellTimeR > 1.0 then
  1393.                     Current_Burst = Round(RDMG + WDMG + QDMG, 0) --Show damage of RWQ combo if Ult is available
  1394.                 else
  1395.                     Current_Burst = Round(WDMG + QDMG, 0) --Show damage of WQ combo if Ult is not available
  1396.                 end
  1397.                 if myHero.SummonerD == 'SummonerDot' and myHero.SpellTimeD > 1.0 or myHero.SummonerF == 'SummonerDot' and myHero.SpellTimeF > 1.0 then
  1398.                     Current_Burst = Current_Burst + ((myHero.selflevel*20)+50) --If Ignite detected and is not on cooldown add ignite damage to combo damage
  1399.                 end
  1400.                 Damage = Current_Burst
  1401.            
  1402.                 DrawText("Champion: "..Hero.name, PositionX, ((15/900) * GetScreenY()) * Enemy.Number + ((53/90) * GetScreenY()), Color.SkyBlue)
  1403.            
  1404.                 if Hero.visible == 1 and Hero.dead ~= 1 then
  1405.                     if Damage < Hero.health then
  1406.                         DrawText("DMG "..Damage, PositionX + 150, ((15/900) * GetScreenY()) * Enemy.Number + ((53/90) * GetScreenY()), Color.Yellow)
  1407.                     elseif Damage > Hero.health then
  1408.                         DrawText("Killable!", PositionX + 150, ((15/900) * GetScreenY()) * Enemy.Number + ((53/90) * GetScreenY()), Color.Red)
  1409.                     end
  1410.                 end
  1411.            
  1412.                 if Hero.visible == 0 and Hero.dead ~= 1 then
  1413.                     DrawText("MIA", PositionX + 150, ((15/900) * GetScreenY()) * Enemy.Number + ((53/90) * GetScreenY()), Color.Orange)
  1414.                 elseif Hero.dead == 1 then
  1415.                     DrawText("Dead", PositionX + 150, ((15/900) * GetScreenY()) * Enemy.Number + ((53/90) * GetScreenY()), Color.Green)
  1416.                 end
  1417.             end
  1418.         end
  1419.     end
  1420. end
  1421.  
  1422. function Round(val, decimal)
  1423.     if (decimal) then
  1424.         return math.floor( (val * 10 ^ decimal) + 0.5) / (10 ^ decimal)
  1425.     else
  1426.         return math.floor(val + 0.5)
  1427.     end
  1428. end
  1429.  
  1430. ----------[[Spell Functions]]
  1431. function Q() --If target is within configured range and spell is off cooldown and enough mana to cast and has a point in Q then it will cast Q on target
  1432.     if target ~= nil then
  1433.         if GetDistance(myHero, target) <= CfgSettings.QRNG and myHero.SpellTimeQ > 1.0 and myHero.mana >= 20 and myHero.SpellLevelQ > 0.0 then
  1434.                 CastSpellTarget('Q',target)
  1435.                 AttackTarget(target)
  1436.         end
  1437.     end
  1438. end
  1439.  
  1440. function W() --If target is within configured range and spell is off cooldown and enough mana to cast and has a point in W then it will cast W on target
  1441. --Also should probably change this to wither if they're running ;-)
  1442.     if target ~= nil then
  1443.         if GetDistance(myHero, target) <= CfgSettings.WRNG and myHero.SpellTimeW > 1.0 and myHero.mana >= 80 and myHero.SpellLevelW > 0.0 then
  1444.                 CastSpellTarget('W',target)
  1445.         end
  1446.     end
  1447. end
  1448.  
  1449. function E() --If target is within configured range and spell is off cooldown and there is a point in E then it will cast E. Takes multiple enemies into account. (need to add mana check)
  1450.     if target ~= nil and myHero.SpellLevelE > 0.0 then
  1451.         if GetDistance(myHero, target) <= CfgSettings.ERNG and myHero.SpellTimeE > 1.0 and myHero.SpellLevelE > 0.0 then
  1452.             ePos = GetMEC(400, 650, target)
  1453.                 if wPos then
  1454.                     CastSpellXYZ('E', ePos.x, 0, ePos.z)
  1455.                 else
  1456.                     CastSpellTarget('E', target)
  1457.                 end
  1458.         end
  1459.     end
  1460. end
  1461.  
  1462. function R() --If R spell lvl is 1 or higher and target is within configured range and spell is off cooldown and enough mana to cast then it will use R
  1463. --Also... LOTS of work needs done here. R is more situational, and there are a bunch of calcs needing to be done.
  1464.     if target ~= nil then
  1465.         if GetDistance(myHero, target) <= CfgSettings.RRNG and myHero.SpellTimeR > 1.0 and myHero.mana >= 100 and myHero.SpellLevelR > 0.0 then
  1466.                 CastSpellTarget('R',target)
  1467.         end
  1468.     end
  1469. end
  1470.  
  1471.  
  1472.  
  1473. SetTimerCallback("NasusRun")
  1474. SetTimerCallback("Main")
  1475. print("\nxXGeminiXx's Nasus v"..version.."\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement