Advertisement
Guest User

SBTWMorgana-v1.1.lua

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