Advertisement
Guest User

zed

a guest
Sep 2nd, 2014
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if myHero.charName ~= "Zed" then return end
  2.  
  3. --[[ Sida's Zed v1.1 ]] --
  4.  
  5. local wClone = nil
  6. local rClone = nil
  7. local ts
  8. local RREADY, WREADY, EREADY, QREADY
  9. local delay, qspeed = 235, 1.742
  10. local prediction
  11. local lastW = 0
  12.  
  13. function OnLoad()
  14.     ZedConfig = scriptConfig("Sida's Zed", "sidaszed")
  15.     ZedConfig:addParam("Combo", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32)
  16.     ZedConfig:addParam("Harass", "Harass", SCRIPT_PARAM_ONKEYDOWN, false, string.byte("X"))
  17.     ZedConfig:addParam("AutoE", "Auto E", SCRIPT_PARAM_ONOFF, true)
  18.     ZedConfig:addParam("Movement", "Move To Mouse In Combo", SCRIPT_PARAM_ONOFF, true)
  19.     ZedConfig:addParam("Range", "Draw Range Circles", SCRIPT_PARAM_ONOFF, true)
  20.     ZedConfig:addParam("TargetCircle", "Draw Target Circle", SCRIPT_PARAM_ONOFF, true)
  21.     ts = TargetSelector(TARGET_LOW_HP_PRIORITY, 1190, DAMAGE_PHYSICAL, true)
  22.     ts.name = "Zed"
  23.     ZedConfig:addTS(ts)
  24. end
  25.  
  26. function OnTick()
  27.     ts:update()
  28.     SetCooldowns()
  29.     if ValidTarget(ts.target) then
  30.         if ZedConfig.AutoE then autoE() end
  31.         prediction = qPred()
  32.         if ZedConfig.Combo then Combo() end
  33.         if ZedConfig.Harass then Harass() end
  34.     end
  35.    
  36.     if ts.target == nil and ZedConfig.Combo and ZedConfig.Movement then
  37.         myHero:MoveTo(mousePos.x, mousePos.z)
  38.     end
  39. end
  40.  
  41. function OnDraw()
  42.     if ZedConfig.Range then
  43.         DrawCircle(myHero.x, myHero.y, myHero.z, 290, 0xFF00FF00)
  44.         DrawCircle(myHero.x, myHero.y, myHero.z, 550, 0xFFFFFF)
  45.     end
  46.     if ts.target ~= nil and ZedConfig.TargetCircle then
  47.         DrawCircle(ts.target.x, ts.target.y, ts.target.z, 150, 0xFF00FF00)
  48.         DrawCircle(ts.target.x, ts.target.y, ts.target.z, 151, 0xFF00FF00)
  49.         DrawCircle(ts.target.x, ts.target.y, ts.target.z, 152, 0xFF00FF00)
  50.         DrawCircle(ts.target.x, ts.target.y, ts.target.z, 153, 0xFF00FF00)
  51.         GetEnergyDraw()
  52.     end
  53. end
  54.  
  55. function OnProcessSpell(unit, spell)
  56.     if unit.isMe and spell.name == "ZedShadowDash" then
  57.         lastW = GetTickCount()
  58.     end
  59. end
  60.  
  61. function Combo()   
  62.     if RREADY then CastSpell(_R, ts.target) end
  63.     if not RREADY or rClone ~= nil then
  64.         if WREADY and ((GetDistance(ts.target) < 700 and HasEnergy()) or (GetDistance(ts.target) > 125 and not RREADY)) then
  65.             CastSpell(_W, ts.target.x, ts.target.z)
  66.         end
  67.         if not WREADY or wClone ~= nil then
  68.             if QREADY then
  69.                 if prediction ~= nil and GetDistance(prediction) < 900 then
  70.                     CastSpell(_Q, prediction.x, prediction.z)
  71.                 end
  72.             end
  73.         end
  74.     end
  75.     UseItems()
  76.    
  77.     if not QREADY and not EREADY then
  78.         local wDist = 0
  79.         local rDist = 0
  80.         if wClone and wClone.valid then wDist = GetDistance(ts.target, wClone) end
  81.         if rClone and rClone.valid then rDist = GetDistance(ts.target, rClone) end 
  82.         if GetDistance(ts.target) > 125 then
  83.             if wDist < rDist and wDist ~= 0 and GetDistance(ts.target) > wDist then
  84.                 CastSpell(_W)
  85.             elseif rDist < wDist and rDist ~= 0 and GetDistance(ts.target) > rDist then
  86.                 CastSpell(_R)
  87.             end
  88.         end
  89.     end
  90.    
  91.     myHero:Attack(ts.target)
  92. end
  93.  
  94. function Harass()
  95.     if prediction ~= nil and (QREADY and WREADY and GetDistance(prediction) < 700) or (QREADY and wClone ~= nil and wClone.valid and GetDistance(prediction, wClone) < 900) then
  96.         if myHero:GetSpellData(_W).name ~= "zedw2" and GetTickCount() > lastW + 1000 and HasEnergy() then
  97.             CastSpell(_W, ts.target.x, ts.target.z)
  98.         else
  99.             CastSpell(_Q, prediction.x, prediction.z)
  100.         end
  101.     elseif QREADY and not WREADY and prediction and GetDistance(prediction) < 900 then
  102.         CastSpell(_Q, prediction.x, prediction.z)
  103.     end
  104. end
  105.  
  106. function autoE()
  107.     local box = 280
  108.     if GetDistance(ts.target) < box or (wClone ~= nil and wClone.valid and GetDistance(ts.target, wClone) < box) or (rClone ~= nil and rClone.valid and GetDistance(ts.target, rClone) < box) then
  109.         CastSpell(_E)
  110.     else
  111.         for i = 1, heroManager.iCount do
  112.             local enemy = heroManager:getHero(i)
  113.             if ValidTarget(enemy) and GetDistance(enemy) < box or (wClone ~= nil and wClone.valid and GetDistance(enemy, wClone) < box) or (rClone ~= nil and rClone.valid and GetDistance(enemy, rClone) < box) then
  114.                 CastSpell(_E)
  115.             end
  116.         end
  117.     end
  118. end
  119.  
  120. function OnCreateObj(obj)
  121.     if obj.valid and obj.name:find("Zed_Clone_idle.troy") then
  122.         if wClone == nil then
  123.             wClone = obj
  124.         elseif rClone == nil then
  125.             rClone = obj
  126.         end
  127.     end
  128. end
  129.  
  130. function OnDeleteObj(obj)
  131.     if obj.valid and wClone and obj == wClone then
  132.         wClone = nil
  133.     elseif obj.valid and rClone and obj == rClone then
  134.         rClone = nil
  135.     end
  136. end
  137.  
  138. function SetCooldowns()
  139.     QREADY = (myHero:CanUseSpell(_Q) == READY)
  140.     WREADY = (myHero:CanUseSpell(_W) == READY)
  141.     EREADY = (myHero:CanUseSpell(_E) == READY)
  142.     RREADY = (myHero:CanUseSpell(_R) == READY)
  143. end
  144.  
  145. function HasEnergy()
  146.     local qMana = {75, 70, 65, 60, 55}
  147.     local eMana = 50
  148.    
  149.     local qEnergy = qMana[myHero:GetSpellData(_Q).level]
  150.    
  151.     local myEnergy = myHero.mana
  152.    
  153.     if myEnergy < eMana + 50 then
  154.         return false
  155.     else
  156.         return true
  157.     end
  158. end
  159.  
  160. function GetEnergyDraw()
  161.     local qMana = {75, 70, 65, 60, 55}
  162.     local wMana = {40, 35, 30, 25, 20}
  163.    
  164.     local qEnergy = (myHero:GetSpellData(_W).level > 0 and qMana[myHero:GetSpellData(_Q).level] or 0)
  165.     local wEnergy = (myHero:GetSpellData(_W).level > 0 and wMana[myHero:GetSpellData(_W).level] or 0)
  166.     local eEnergy = 50
  167.    
  168.     if myHero.mana < qEnergy + wEnergy + eEnergy then
  169.         PrintFloatText(ts.target, 0, "Not Enough Energy!")
  170.     else
  171.         PrintFloatText(ts.target, 0, "Enough Energy!")
  172.     end
  173. end
  174.  
  175. function qPred()
  176.     local travelDuration = (delay + GetDistance(myHero, ts.target)/qspeed)
  177.     travelDuration = (delay + GetDistance(GetPredictionPos(ts.target, travelDuration))/qspeed)
  178.     travelDuration = (delay + GetDistance(GetPredictionPos(ts.target, travelDuration))/qspeed)
  179.     travelDuration = (delay + GetDistance(GetPredictionPos(ts.target, travelDuration))/qspeed)  
  180.     if ts.target ~= nil then
  181.         return GetPredictionPos(ts.target, travelDuration)
  182.     end
  183. end
  184.  
  185. function UseItems()
  186.     if GetInventorySlotItem(3153) ~= nil and GetDistance(ts.target) > 300 then
  187.         CastSpell(GetInventorySlotItem(3153), ts.target)
  188.     end    
  189.     if GetInventorySlotItem(3144) ~= nil and GetDistance(ts.target) > 300 then
  190.         CastSpell(GetInventorySlotItem(3144), ts.target)
  191.     end
  192. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement