Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.49 KB | None | 0 0
  1. --[[
  2.     Evelynn Combo 1.0 by burn
  3.     based on eXtragoZ scripts
  4.         It requires the AllClass Library and Spell Damage Library
  5.  
  6.     -Full combo: Items -> R -> E -> Q
  7.     -Supports Deathfire Grasp, Bilgewater Cutlass, Hextech Gunblade, Sheen, Trinity, Lich Bane and Ignite
  8.     -Mark killable target with a combo
  9.     -Target configuration, Press shift to configure
  10.     -Option to auto ignite when enemy is killable (this affect also for damage calculation)
  11.     -MEC calculation for Ulti
  12.     -C toogle auto farm
  13.  
  14.     Explanation of the marks:
  15.  
  16.     Green circle: Marks the current target to which you will do the combo
  17.     Blue circle: Mark a target that can be killed with a combo, if all the skills were available
  18.     Red circle: Mark a target that can be killed using Items + 2 hit + R + E + Q x3 + ignite
  19.     2 Red circles: Mark a target that can be killed using Items + 1 hit + R + E + Q x2 + ignite
  20.     3 Red circles: Mark a target that can be killed using Items (without Sheen, Trinity and Lich Bane) + R + E + Q
  21. ]]
  22. if myHero.charName ~= "Evelynn" then return end
  23. require "AllClass"
  24. require "spellDmg"
  25. --[[            Code            ]]
  26. local range = 800
  27. local tick = nil
  28. local minionTable = {}
  29. -- draw
  30. local waittxt = {}
  31. local calculationenemy = 1
  32. local floattext = {"Skills are not available","Able to fight","Killable","Murder him!"}
  33. local killable = {}
  34. -- ts
  35. local ts
  36. --
  37. local ignite = nil
  38. local DFGSlot, HXGSlot, BWCSlot, SheenSlot, TrinitySlot, LichBaneSlot = nil, nil, nil, nil, nil, nil
  39. local QREADY, EREADY, RREADY, DFGREADY, HXGREADY, BWCREADY, IREADY = false, false, false, false, false, false, false
  40.  
  41. function OnLoad()
  42.     EvelynnConfig = scriptConfig("Evelynn Combo 1.0", "evelynncombo")
  43.     EvelynnConfig:addParam("scriptActive", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32)
  44.     EvelynnConfig:addParam("autoFarm", "Auto Farm", SCRIPT_PARAM_ONKEYTOGGLE, false, 67)
  45.     EvelynnConfig:addParam("drawcircles", "Draw Circles", SCRIPT_PARAM_ONOFF, true)
  46.     EvelynnConfig:addParam("drawtext", "Draw Text", SCRIPT_PARAM_ONOFF, true)
  47.     EvelynnConfig:addParam("autoignite", "Auto Ignite", SCRIPT_PARAM_ONOFF, false)
  48.     ts = TargetSelector(TARGET_LOW_HP,range+50,DAMAGE_MAGIC)
  49.     ts.name = "Evelynn"
  50.     EvelynnConfig:addTS(ts)
  51.     if myHero:GetSpellData(SUMMONER_1).name:find("SummonerDot") then ignite = SUMMONER_1
  52.     elseif myHero:GetSpellData(SUMMONER_2).name:find("SummonerDot") then ignite = SUMMONER_2 end
  53.     for i=1, heroManager.iCount do waittxt[i] = i*3 end
  54.     for p = 0, objManager.maxObjects do
  55.         local obj = objManager:GetObject(p)
  56.         if obj ~= nil and obj.type ~= nil and obj.type == "obj_AI_Minion" then
  57.                 table.insert(minionTable, obj)
  58.         end
  59.     end
  60.     PrintChat(">> Evelynn Combo 1.0 loaded!")
  61. end
  62.  
  63. function OnTick()
  64.     ts:update()
  65.     DFGSlot, HXGSlot, BWCSlot, SheenSlot, TrinitySlot, LichBaneSlot = GetInventorySlotItem(3128), GetInventorySlotItem(3146), GetInventorySlotItem(3144), GetInventorySlotItem(3057), GetInventorySlotItem(3078), GetInventorySlotItem(3100)
  66.     QREADY = (myHero:CanUseSpell(_Q) == READY)
  67.     EREADY = (myHero:CanUseSpell(_E) == READY)
  68.     RREADY = (myHero:CanUseSpell(_R) == READY)
  69.     DFGREADY = (DFGSlot ~= nil and myHero:CanUseSpell(DFGSlot) == READY)
  70.     HXGREADY = (HXGSlot ~= nil and myHero:CanUseSpell(HXGSlot) == READY)
  71.     BWCREADY = (BWCSlot ~= nil and myHero:CanUseSpell(BWCSlot) == READY)
  72.     IREADY = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY)
  73.     if tick == nil or GetTickCount()-tick >= 200 then
  74.         tick = GetTickCount()
  75.         LBCDmgCalculation()
  76.     end
  77.     if EvelynnConfig.scriptActive and ts.target then
  78.         if DFGREADY then CastSpell(DFGSlot, ts.target) end
  79.         if HXGREADY then CastSpell(HXGSlot, ts.target) end
  80.         if BWCREADY then CastSpell(BWCSlot, ts.target) end
  81.         if RREADY then
  82.             spellPos = GetMEC(250, 800, ts.target)
  83.             if spellPos then
  84.                 CastSpell(_R, spellPos.center.x, spellPos.center.z)
  85.             else
  86.                 CastSpell(_R, ts.target)
  87.             end
  88.         end
  89.         if EREADY then CastSpell(_E, ts.target) end
  90.         if QREADY then CastSpell(_Q, ts.target) end
  91.         myHero:Attack(ts.target)
  92.     end
  93.     if EvelynnConfig.autoFarm and QREADY then
  94.         local myQ = math.floor((myHero:GetSpellData(_Q).level-1)*20 + 40 + myHero.ap * .4)
  95.         for i,minionObject in ipairs(minionTable) do
  96.             if minionObject.dead == true or minionObject.team == myHero.team then
  97.             table.remove(minionTable, i)
  98.             i = i - 1
  99.             elseif minionObject ~= nil and myHero:GetDistance(minionObject) ~= nil and myHero:GetDistance(minionObject) < 500 and minionObject.health ~= nil and minionObject.health <= myHero:CalcDamage(minionObject, myQ) and minionObject.health > 20 and minionObject.visible ~= nil and minionObject.visible == true then
  100.             CastSpell(_Q, minionObject)
  101.             end
  102.         end
  103.     end
  104.     if EvelynnConfig.autoignite then   
  105.         if IREADY then
  106.             local ignitedmg = 0
  107.             for j = 1, heroManager.iCount, 1 do
  108.                 local enemyhero = heroManager:getHero(j)
  109.                 if ValidTarget(enemyhero,600) then
  110.                     ignitedmg = 50 + 20 * myHero.level
  111.                     if enemyhero.health <= ignitedmg then
  112.                         CastSpell(ignite, enemyhero)
  113.                     end
  114.                 end
  115.             end
  116.         end
  117.     end
  118. end
  119. function LBCDmgCalculation()
  120.     local enemy = heroManager:GetHero(calculationenemy)
  121.     if ValidTarget(enemy) then
  122.         local dfgdamage, hxgdamage, bwcdamage, ignitedamage, Sheendamage, Trinitydamage, LichBanedamage  = 0, 0, 0, 0, 0, 0, 0
  123.         local qdamage = getDmg("Q",enemy,myHero)
  124.         local edamage = getDmg("E",enemy,myHero)
  125.         local rdamage = getDmg("R",enemy,myHero)
  126.         local hitdamage = getDmg("AD",enemy,myHero)
  127.         local dfgdamage = (DFGSlot and getDmg("DFG",enemy,myHero) or 0)
  128.         local hxgdamage = (HXGSlot and getDmg("HXG",enemy,myHero) or 0)
  129.         local bwcdamage = (BWCSlot and getDmg("BWC",enemy,myHero) or 0)
  130.         local ignitedamage = (ignite and getDmg("IGNITE",enemy,myHero) or 0)
  131.         local Sheendamage = (SheenSlot and hitdamage or 0)
  132.         local Trinitydamage = (TrinitySlot and hitdamage*1.5 or 0)
  133.         local LichBanedamage = (LichBaneSlot and getDmg("LICHBANE",enemy,myHero) or 0)
  134.         local combo1 = hitdamage*2 + qdamage*3 + edamage + rdamage + Sheendamage + Trinitydamage + LichBanedamage --0 cd
  135.         local combo2 = hitdamage*2 + Sheendamage + Trinitydamage + LichBanedamage
  136.         local combo3 = hitdamage + Sheendamage + Trinitydamage + LichBanedamage
  137.         local combo4 = 0
  138.         if QREADY then
  139.             combo2 = combo2 + qdamage*3
  140.             combo3 = combo3 + qdamage*2
  141.             combo4 = combo4 + qdamage
  142.         end
  143.         if EREADY then
  144.             combo2 = combo2 + edamage
  145.             combo3 = combo3 + edamage
  146.             combo4 = combo4 + edamage
  147.         end
  148.         if RREADY then
  149.             combo2 = combo2 + rdamage
  150.             combo3 = combo3 + rdamage
  151.             combo4 = combo4 + rdamage
  152.         end    
  153.         if DFGREADY then        
  154.             combo1 = combo1 + dfgdamage            
  155.             combo2 = combo2 + dfgdamage
  156.             combo3 = combo3 + dfgdamage
  157.             combo4 = combo4 + dfgdamage
  158.         end
  159.         if HXGREADY then              
  160.             combo1 = combo1 + hxgdamage    
  161.             combo2 = combo2 + hxgdamage
  162.             combo3 = combo3 + hxgdamage
  163.             combo4 = combo4 + hxgdamage
  164.         end
  165.         if BWCREADY then
  166.             combo1 = combo1 + bwcdamage
  167.             combo2 = combo2 + bwcdamage
  168.             combo3 = combo3 + bwcdamage
  169.             combo4 = combo4 + bwcdamage
  170.         end
  171.         if IREADY and EvelynnConfig.autoignite then
  172.             combo1 = combo1 + ignitedamage
  173.             combo2 = combo2 + ignitedamage
  174.             combo3 = combo3 + ignitedamage
  175.         end
  176.         if combo4 >= enemy.health then killable[calculationenemy] = 4
  177.         elseif combo3 >= enemy.health then killable[calculationenemy] = 3
  178.         elseif combo2 >= enemy.health then killable[calculationenemy] = 2
  179.         elseif combo1 >= enemy.health then killable[calculationenemy] = 1
  180.         else killable[calculationenemy] = 0 end
  181.     end
  182.     if calculationenemy == 1 then
  183.         calculationenemy = heroManager.iCount
  184.     else
  185.         calculationenemy = calculationenemy-1
  186.     end
  187. end
  188. function OnDraw()
  189.     if EvelynnConfig.drawcircles and not myHero.dead then
  190.         DrawCircle(myHero.x, myHero.y, myHero.z, range, 0xFF00CC) --R range
  191.         DrawCircle(myHero.x, myHero.y, myHero.z, 500, 0x9966CC) --Q range
  192.         DrawCircle(myHero.x, myHero.y, myHero.z, 225, 0x33FFCC) --E range
  193.         if ts.target ~= nil then
  194.             for j=0, 10 do
  195.                 DrawCircle(ts.target.x, ts.target.y, ts.target.z, 40 + j*1.5, 0x00FF00)
  196.             end
  197.         end
  198.     end
  199.     for i=1, heroManager.iCount do
  200.         local enemydraw = heroManager:GetHero(i)
  201.         if ValidTarget(enemydraw) then
  202.             if EvelynnConfig.drawcircles then
  203.                 if killable[i] == 1 then
  204.                     for j=0, 20 do
  205.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0x0000FF)
  206.                     end
  207.                 elseif killable[i] == 2 then
  208.                     for j=0, 10 do
  209.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000)
  210.                     end
  211.                 elseif killable[i] == 3 then
  212.                     for j=0, 10 do
  213.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000)
  214.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 110 + j*1.5, 0xFF0000)
  215.                     end
  216.                 elseif killable[i] == 4 then
  217.                     for j=0, 10 do
  218.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 80 + j*1.5, 0xFF0000)
  219.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 110 + j*1.5, 0xFF0000)
  220.                         DrawCircle(enemydraw.x, enemydraw.y, enemydraw.z, 140 + j*1.5, 0xFF0000)
  221.                     end
  222.                 end
  223.             end
  224.             if EvelynnConfig.drawtext and waittxt[i] == 1 and killable[i] ~= 0 then
  225.                 PrintFloatText(enemydraw,0,floattext[killable[i]])
  226.             end
  227.         end
  228.         if waittxt[i] == 1 then waittxt[i] = 30
  229.         else waittxt[i] = waittxt[i]-1 end
  230.     end
  231.     SC__OnDraw()
  232. end
  233. function OnCreateObj(object)
  234.     if object ~= nil and object.type ~= nil and object.type == "obj_AI_Minion" then table.insert(minionTable, object) end
  235. end
  236. function OnWndMsg(msg,key)
  237.     SC__OnWndMsg(msg,key)
  238. end
  239. function OnSendChat(msg)
  240.     TargetSelector__OnSendChat(msg)
  241.     ts:OnSendChat(msg, "pri")
  242. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement