Advertisement
Guest User

SBTWMorgana--v1.1.lua

a guest
Mar 14th, 2013
1,943
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --[[
  2.  
  3.     AutoMorgana by x7x
  4.     My first script with TS :) Combo: (Q - DFG - (if Q hits and target cant move)W - E - R)
  5.     --Make sure you only use combos when you know it will hit target. Q might hit minion and then combo doesn't work(NO MINION PREDICTION).
  6.     --In the Harass combo, it should cast everything, but Ult(R). (Q-W-E)
  7.     --Harass, Ult toggle and Draw Range added by xkjtx (Also he made this script work again with prediction!!!)
  8.     --Shield, when mouse is hovering over player press hot-key to shield added by xkjtx (3-14-2013)
  9.  
  10. ]]
  11.  
  12. if myHero.charName ~= "Morgana" then return end
  13.  
  14.     --require "AllClass"
  15.     --require "spellDmg"
  16.     local AArange = 450
  17.     local QRange = 1200
  18.     local QWidth = 200
  19.     local DFGrange = 750
  20.     local Wrange = 900
  21.     local Erange = 755
  22.     local Rrange = 600
  23.     local ts = TargetSelector(TARGET_LOW_HP,QRange,DAMAGE_MAGIC,true) -- set to true to select target as option(true is Better for focusing)
  24.     --local tq = TargetPrediction(QRange, 1.2, 0, 300, 50) -- not needed any more
  25.     local DFGSlot = nil
  26.     local DFGReady, QREADY, WReady, EReady, RReady = false, false, false, false, false
  27.  
  28.     -- more locals
  29.     local AttackDelay = 0
  30.     local travelDuration = nil
  31.     local predic = nil
  32.     local startAttackSpeed = 0.579
  33.     local lastBasicAttack = 0
  34.     local swing = 0
  35.     local delay = 200
  36.     local speed = 1.195
  37.  
  38.     local MorgCombo = 32 -- Space
  39.     local MorgHarass = 83 -- letter 'S'
  40.     local MorgUlt = 88 -- leter 'X' (Can toggle on/off)
  41.     local MorgShield = string.byte("E") -- letter 'E' (Hold mouse over player and press hotkey)
  42.    
  43.     function OnLoad()
  44.         MorgConfig = scriptConfig("Morgana Combo", "MorganaCombo")
  45.         MorgConfig:addParam("active", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, MorgCombo) -- Space bar
  46.         MorgConfig:addParam("harass", "Harass", SCRIPT_PARAM_ONKEYDOWN, false, MorgHarass) -- S
  47.         MorgConfig:addParam("shield", "Shield Ally/Self", SCRIPT_PARAM_ONKEYDOWN, false, MorgShield) -- E
  48.         MorgConfig:addParam("drawcircles", "Draw Circles", SCRIPT_PARAM_ONOFF, true)
  49.         MorgConfig:addParam("useult", "Use Ultimate in Combo", SCRIPT_PARAM_ONKEYTOGGLE, false, MorgUlt) -- X -- Off by default
  50.         MorgConfig:permaShow("active")
  51.         MorgConfig:permaShow("harass")
  52.         MorgConfig:permaShow("shield")
  53.         MorgConfig:permaShow("useult")
  54.         ts.name = "Morgana"
  55.         MorgConfig:addTS(ts)
  56.         lastBasicAttack = os.clock()
  57.         --PrintChat(">> AutoMorgana loaded! Press shift to configure.")
  58.     end
  59.    
  60.     function OnTick()
  61.         ts:update()
  62.  
  63.         if myHero.dead then
  64.             return
  65.         end
  66.  
  67.         if ts.target ~= nil then
  68.             travelDuration = (delay + GetDistance(myHero, ts.target)/speed)
  69.             ts:SetPrediction(travelDuration)
  70.  
  71.             predic = ts.nextPosition
  72.  
  73.             AttackDelay = 1/(myHero.attackSpeed*startAttackSpeed)
  74.             if swing == 1 and os.clock() > lastBasicAttack + AttackDelay then
  75.                 swing = 0
  76.             end
  77.             if MorgConfig.active or MorgConfig.harass then
  78.                 if GetDistance(ts.target)<=AArange+50 and swing == 0 then
  79.                     myHero:Attack(ts.target)
  80.                 end
  81.             end
  82.         end
  83.  
  84.         DFGSlot = GetInventorySlotItem(3128)
  85.         DFGReady = (DFGSlot ~= nil and myHero:CanUseSpell(DFGSlot) == READY)
  86.         QREADY = (myHero:CanUseSpell(_Q) == READY)
  87.         WReady = (myHero:CanUseSpell(_W) == READY)
  88.         EReady = (myHero:CanUseSpell(_E) == READY)
  89.         RReady = (myHero:CanUseSpell(_R) == READY)
  90.  
  91.         --TargetPrediction__OnTick() -- not needed any more
  92.  
  93.         if MorgConfig.active and ts.target ~= nil and QREADY then
  94.             --qpred = tq:GetPrediction(ts.target) -- not needed any more
  95.             if predic ~= nil and GetDistance(ts.target) < QRange then
  96.                 CastSpell(_Q, predic.x, predic.z)
  97.             end
  98.         end
  99.        
  100.         if MorgConfig.active and myHero:CanUseSpell(_Q) == COOLDOWN and ts.target ~= nil then
  101.             if GetDistance(ts.target) < DFGrange then
  102.                 if DFGReady then
  103.                     CastSpell(DFGSlot, ts.target)
  104.                 end
  105.             end
  106.             myHero:Attack(ts.target)
  107.             if GetDistance(ts.target) < Wrange and ts.target.canMove == false then
  108.                 if WReady then
  109.                     CastSpell(_W, ts.target.x, ts.target.z)
  110.                 end
  111.             end
  112.             myHero:Attack(ts.target)
  113.             if GetDistance(ts.target) < AArange then
  114.                 if EReady then
  115.                     CastSpell(_E)
  116.                 end
  117.             end
  118.             myHero:Attack(ts.target)
  119.             if MorgConfig.useult and GetDistance(ts.target) < Rrange then
  120.                 if RReady then
  121.                     CastSpell(_R)
  122.                 end
  123.             end
  124.         end
  125.  
  126.         if MorgConfig.harass and ts.target ~= nil then
  127.             myHero:Attack(ts.target)
  128.             if predic ~= nil and GetDistance(ts.target) < QRange then
  129.                 CastSpell(_Q, predic.x, predic.z)
  130.             end
  131.             if EReady then
  132.                 CastSpell(_E)
  133.             end
  134.             if predic ~= nil and GetDistance(predic) < Wrange then
  135.                 if WReady then
  136.                     CastSpell(_W, predic.x, predic.z)
  137.                 end
  138.             end
  139.         end
  140.  
  141.         if not myHero.dead and MorgConfig.shield then
  142.             -- added by xkjtx: given to by TRUS: this will cast E on self/ally while holding mouse over
  143.             for i = 1, heroManager.iCount, 1 do
  144.                 local hero = heroManager:getHero(i)
  145.                 if hero.team == myHero.team and GetDistanceFromMouse(hero)<175 then -- how far mouse need to be from player/ally
  146.                     CastSpell(_E,hero)
  147.                 end
  148.             end
  149.         end
  150.     end
  151.    
  152.     function OnDraw()
  153.         --SC__OnDraw() -- not needed any more
  154.         if not myHero.dead and MorgConfig.drawcircles then
  155.             DrawCircle(myHero.x, myHero.y, myHero.z, AArange, 0xFF0000) -- Redish(Attack Range) always on
  156.             if myHero:CanUseSpell(_Q) == READY then
  157.                 DrawCircle(myHero.x, myHero.y, myHero.z, QRange, 0x000099) -- Blueish(Q Range) only on when off CD
  158.             end
  159.             if myHero:CanUseSpell(_W) == READY then
  160.                 DrawCircle(myHero.x, myHero.y, myHero.z, Wrange, 0x009933) -- Greenish(W Range) only on when off CD
  161.             end
  162.             if myHero:CanUseSpell(_E) == READY then
  163.                 DrawCircle(myHero.x, myHero.y, myHero.z, Erange, 0xFF9933) -- Orangeish(E range) only on when off CD
  164.             end
  165.             if DFGReady then
  166.                 DrawCircle(myHero.x, myHero.y, myHero.z, DFGrange, 0xFFCC00) -- Yellowish(real DFG range) only on when off CD
  167.             end
  168.             if ts ~= nil and ts.target ~= nil then
  169.                 for j=0, 10 do
  170.                     DrawCircle(ts.target.x, ts.target.y, ts.target.z, (GetDistance(ts.target.minBBox, ts.target.maxBBox)/2) + j*1.5, 0x660066)
  171.                     --DrawCircle(ts.target.x, ts.target.y, ts.target.z, 40 + j*1.5, 0x660066) -- purpleish -- changed from 0x00FF00
  172.                 end
  173.                 if predic ~= nil then
  174.                     DrawCircle(predic.x, predic.y, predic.z, 100, 0x000099) -- blueish (Prediction Point) Only on target
  175.                 end
  176.             end
  177.         end
  178.     end
  179.  
  180.     function OnProcessSpell(unit, spell)
  181.         if unit.isMe and spell and string.find(string.lower(spell.name),"attack") then
  182.             swing = 1
  183.             lastBasicAttack = os.clock()
  184.         end
  185.     end
  186.    
  187.     function OnWndMsg(msg,key)
  188.         --SC__OnWndMsg(msg,key) -- not needed any more
  189.     end
  190.    
  191.     function OnSendChat(msg)
  192.         --TargetSelector__OnSendChat(msg) -- not needed any more
  193.         ts:OnSendChat(msg, "pri")
  194.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement