Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.12 KB | None | 0 0
  1. class "TroopPhite"
  2.  
  3.  
  4. function TroopPhite:__init()
  5.     if myHero.charName ~= "Malphite" then return end
  6.     require('DamageLib')
  7.     PrintChat("[TroopPhite] loaded")
  8.     self:LoadSpells()
  9.     self:LoadMenu()
  10.     Callback.Add('Tick', function() self:Tick() end)
  11.     Callback.Add('Draw', function() self:Draw() end)
  12.  
  13. end
  14.  
  15.  
  16. function TroopPhite:LoadSpells()
  17.     Q = {Range = 625, Delay = 0.25, Radius = 1, Speed = 500}
  18.     W = {Range = 125, Delay = 0.25, Radius = 300, Speed = 500}
  19.     E = {Range = 200, Delay = 0.25, Radius = 350, Speed = 9999999} --instant
  20.     R = {Range = 1000, Delay = 0.25, Radius = 300, Speed = 1500}
  21. end
  22.  
  23. --MENU
  24. function TroopPhite:LoadMenu()
  25.     self.Menu = MenuElement({type = MENU, id = "TroopPhite", name = "trooperhdx - TroopPhite", leftIcon="http://puu.sh/tr1zs/735071dd81.jpg"})
  26.  
  27.     --Combo
  28.     self.Menu:MenuElement({type = MENU, id = "Combo", name = "Combo"})
  29.     self.Menu.Combo:MenuElement({id = "CombQ", name = "Use Q", value = true})
  30.     self.Menu.Combo:MenuElement({id = "CombW", name = "Use W", value = true})
  31.     self.Menu.Combo:MenuElement({id = "CombE", name = "Use E", value = true})
  32.     self.Menu.Combo:MenuElement({id = "CombR", name = "Use R", value = true})
  33.     self.Menu.Combo:MenuElement({id = "CombMana", name = "Min. Mana to Combo", value = 40, min = 0, max = 100})
  34.  
  35.     --Harass
  36.     self.Menu:MenuElement({type = MENU, id = "Harass", name = "Harass"})
  37.     self.Menu.Harass:MenuElement({id = "HQ", name = "Use Q", value = true})
  38.     self.Menu.Harass:MenuElement({id = "HMana", name = "Min. Mana", value = 40, min = 0, max = 100})
  39.  
  40.     --Farm
  41.     self.Menu:MenuElement({type = MENU, id = "Farm", name = "LaneClear"})
  42.     self.Menu.Farm:MenuElement({id = "lcE", name = "Use E", value = true})
  43.     self.Menu.Farm:MenuElement({id = "lcMana", name = "Min. Mana", value = 40, min = 0, max = 100})
  44.  
  45.     --LastHit
  46.     self.Menu:MenuElement({type = MENU, id = "LastHit", name = "LastHit"})
  47.     self.Menu.LastHit:MenuElement({id = "lhQ", name = "Use Q", value = true})
  48.     self.Menu.LastHit:MenuElement({id = "lhMana", name = "Min. Mana", value = 40, min = 0, max = 100})
  49.  
  50.     --Misc
  51.     self.Menu:MenuElement({type = MENU, id = "Misc", name = "Misc"})
  52.     self.Menu.Misc:MenuElement({id = "IgniteE", name = "Use Ignite", value = true})
  53.     self.Menu.Misc:MenuElement({id = "kswithQ", name = "Use Q to ks", value = true})
  54.  
  55.  
  56.     --Draw
  57.     self.Menu:MenuElement({type = MENU, id = "Draw", name = "Drawing Settings"})
  58.     self.Menu.Draw:MenuElement({id = "DrawSpells", name = "Draw Only Ready Spells", value = true})
  59.     self.Menu.Draw:MenuElement({id = "DrawQ", name = "Draw Q Range", value = true})
  60.     self.Menu.Draw:MenuElement({id = "DrawW", name = "Draw W Range", value = true})
  61.     self.Menu.Draw:MenuElement({id = "DrawE", name = "Draw E Range", value = true})
  62.     self.Menu.Draw:MenuElement({id = "DrawR", name = "Draw R Range", value = true})
  63.     self.Menu.Draw:MenuElement({id = "DrawTarget", name = "Draw Target", value = true})
  64.  
  65.     PrintChat("[TroopPhite] Menu Loaded")
  66. end
  67.  
  68.  
  69. --MENU
  70. function TroopPhite:Tick()
  71.  
  72.     local target = self:GetTarget(R.Range)
  73.  
  74.     if self:Mode() == "Combo" then
  75.         self:Combo(target)
  76.     elseif self:Mode() == "Harass" then
  77.         self:Harass(target)
  78.     elseif self:Mode() == "Farm" then
  79.         self:Farm()
  80.     elseif self:Mode() == "Lasthit" then
  81.         self:Lasthit()
  82.  
  83.     end
  84. end
  85.  
  86. --MENU END
  87.  
  88. --THINGS NEEDED
  89. function TroopPhite:GetPercentMP(unit)
  90.     return 100 * unit.mana / unit.maxMana
  91. end
  92.  
  93.  
  94.  
  95.  
  96. function TroopPhite:IsReady(spellSlot)
  97.     return myHero:GetSpellData(spellSlot).currentCd < 0.01 and myHero:GetSpellData(spellSlot).level > 0
  98. end
  99.  
  100. function TroopPhite:CheckMana(spellSlot)
  101.     return myHero:GetSpellData(spellSlot).mana < myHero.mana
  102. end
  103.  
  104. function TroopPhite:CanCast(spellSlot)
  105.     return self:IsReady(spellSlot) and self:CheckMana(spellSlot)
  106. end
  107.  
  108. function TroopPhite:IsValidTarget(obj, spellRange)
  109.     return obj ~= nil and obj.valid and obj.visible and not obj.dead and obj.isTargetable and obj.distance <= spellRange
  110. end
  111. --END THINGS NEEDED
  112.  
  113.  
  114.  
  115. --CS
  116. function TroopPhite:GetFarmTarget(range)
  117.     local target
  118.     for j = 1,Game.MinionCount() do
  119.         local minion = Game.Minion(j)
  120.         if self:IsValidTarget(minion, range) and minion.team ~= myHero.team then
  121.             target = minion
  122.             break
  123.         end
  124.     end
  125.     return target
  126. end
  127.  
  128.  
  129.  
  130. --GETTARGET
  131. function TroopPhite:GetTarget(range)
  132.     local target
  133.     for i = 1,Game.HeroCount() do
  134.         local hero = Game.Hero(i)
  135.         if self:IsValidTarget(hero, range) and hero.team ~= myHero.team then
  136.             target = hero
  137.             break
  138.         end
  139.     end
  140.     return target
  141. end
  142.  
  143.  
  144. --MISC
  145. function TroopPhite:Misc()
  146.     for K, Enemy in pairs(GetTarget()) do
  147.         if Menu.Misc.kswithQ:Value() then
  148.             if getdmg("Q", Enemy, myHero) > Enemy.health then
  149.                 CastQ(Enemy)
  150.                 return;
  151.             end
  152.         end
  153.  
  154.         if myHero:GetSpellData(5).name == "SummonerDot" and Menu.Misc.IgniteE:Value() and IsReady(SUMMONER_2) then
  155.             if IsValidTarget(Enemy, 600, false, myHero.pos) and Enemy.health + Enemy.hpRegen*2.5 + Enemy.shieldAD < 50 + 20*myHero.levelData.lvl then
  156.                 Control.CastSpell(HK_SUMMONER_2, Enemy)
  157.                 return;
  158.             end
  159.         end
  160.         if myHero:GetSpellData(4).name == "SummonerDot" and Menu.Misc.IgniteE:Value() and IsReady(SUMMONER_1) then
  161.             if IsValidTarget(Enemy, 600, false, myHero.pos) and Enemy.health + Enemy.hpRegen*2.5 + Enemy.shieldAD < 50 + 20*myHero.levelData.lvl then
  162.                 Control.CastSpell(HK_SUMMONER_1, Enemy)
  163.                 return;
  164.             end
  165.         end
  166.     end
  167. end
  168.  
  169.  
  170. --COMBO
  171. function TroopPhite:Combo(target)
  172.     if (myHero.mana/myHero.maxMana >= self.Menu.Combo.CombMana:Value()/100) then
  173.         if self.Menu.Combo.CombQ:Value() and self:CanCast(_Q) and self:IsValidTarget(target, Q.Range) then
  174.             self:CastQ(target)
  175.  
  176.     elseif self.Menu.Combo.CombE:Value() and self:CanCast(_E) and self:IsValidTarget(target, E.Range) then
  177.             self:CastE(target)
  178.  
  179.     elseif self.Menu.Combo.CombE:Value() and self:CanCast(_W) and self:IsValidTarget(target, W.Range) then
  180.            self:CastW()
  181.  
  182.     elseif self.Menu.Combo.CombR:Value() and self:CanCast(_R) and self:IsValidTarget(target, R.Range) then
  183.            self:CastR(target)
  184.  
  185.         end
  186.     end
  187. end
  188.  
  189.  
  190.  
  191. --Harass
  192. function TroopPhite:Harass()
  193.     if (myHero.mana/myHero.maxMana >= self.Menu.Harass.HMana:Value() / 100) then
  194.         local target = self:GetTarget(Q.Range)
  195.         if self.Menu.Harass.HQ:Value() and self:CanCast(_Q) then
  196.             self:CastQ(target)
  197.         end
  198.     end
  199. end
  200.  
  201. --LastHit
  202. function TroopPhite:LastHit()
  203.     if self.Menu.LastHit.lhQ:Value() and (myHero.mana/myHero.maxMana >= self.Menu.LastHit.lhMana:Value() / 100) and self:CanCast(_Q) then
  204.         local target
  205.         for i=1,Game.MinionCount() do
  206.             local minion = Game.Minion(i)
  207.             if self:IsValidTarget(minion, Q.Range) and
  208.                 (minion.team ~= myHero.team) and
  209.                 (getdmg(_Q, minion, myHero) > minion.health) then
  210.                 target = minion
  211.                 break
  212.             end
  213.         end
  214.  
  215.         if target and self:IsValidTarget(target, Q.Range)then
  216.             self:CastQ(target)
  217.         end
  218.     end
  219. end
  220.  
  221.  
  222. --FARM
  223. function TroopPhite:Farm()
  224.     if (myHero.mana/myHero.maxMana >= self.Menu.Farm.lcMana:Value() / 100) then
  225.         local eMinion = self:GetFarmTarget(E.Range)
  226.         if self.Menu.Farm.lcE:Value() and self:CanCast(_E) then
  227.             self:CastE(eMinion)
  228.         end
  229.     end
  230. end
  231.  
  232. --MODE
  233. function TroopPhite:Mode()
  234.     if Orbwalker["Combo"].__active then
  235.         return "Combo"
  236.     elseif Orbwalker["Harass"].__active then
  237.         return "Harass"
  238.     elseif Orbwalker["Farm"].__active then
  239.         return "Farm"
  240.     elseif Orbwalker["LastHit"].__active then
  241.         return "LastHit"
  242.     end
  243.     return ""
  244. end
  245.  
  246.  
  247. --Q CAST
  248. function TroopPhite:CastQ(unit)
  249.     Control.CastSpell(HK_Q, unit)
  250. end
  251.  
  252.  
  253. --W CAST
  254. function TroopPhite:CastW()
  255.     Control.CastSpell(HK_W)
  256. end
  257.  
  258.  
  259. --E CAST
  260. function TroopPhite:CastE(unit)
  261.     Control.CastSpell(HK_E, unit)
  262. end
  263.  
  264.  
  265. --R CAST
  266. function TroopPhite:CastR(Rtarget)
  267.     if Rtarget then
  268.         local castPos = Rtarget:GetPrediction(R.Speed, R.Delay)
  269.         Control.CastSpell(HK_R, castPos)
  270.     end
  271. end
  272.  
  273.  
  274.  
  275. --DRAWINGS COPIED FROM ALQOHOL
  276. function TroopPhite:Draw()
  277.     if myHero.dead then return end
  278.     if self.Menu.Draw.DrawSpells:Value() then
  279.         if self:IsReady(_Q) and self.Menu.Draw.DrawQ:Value() then
  280.             Draw.Circle(myHero.pos,Q.Range,1,Draw.Color(255, 255, 255, 255))
  281.         end
  282.         if self:IsReady(_W) and self.Menu.Draw.DrawW:Value() then
  283.             Draw.Circle(myHero.pos,W.Range,1,Draw.Color(255, 255, 255, 255))
  284.         end
  285.         if self:IsReady(_E) and self.Menu.Draw.DrawE:Value() then
  286.             Draw.Circle(myHero.pos,E.Range,1,Draw.Color(255, 255, 255, 255))
  287.         end
  288.         if self.Menu.Draw.DrawQ:Value() then
  289.             Draw.Circle(myHero.pos,Q.Range,1,Draw.Color(255, 255, 255, 255))
  290.         end
  291.         if self.Menu.Draw.DrawW:Value() then
  292.             Draw.Circle(myHero.pos,W.Range,1,Draw.Color(255, 255, 255, 255))
  293.         end
  294.         if self.Menu.Draw.DrawE:Value() then
  295.             Draw.Circle(myHero.pos,E.Range,1,Draw.Color(255, 255, 255, 255))
  296.         end
  297.     end
  298. end
  299.  
  300.  
  301.  
  302.  
  303. function OnLoad()
  304.     TroopPhite()
  305. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement