Advertisement
Guest User

Challenger Mordekaiser

a guest
Jan 28th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.18 KB | None | 0 0
  1. if myHero.charName ~= "Mordekaiser" then return end
  2.  
  3. require "VPrediction"
  4. require "SOW"
  5.  
  6. function OnLoad()
  7. PrintChat(">> Challenger Mordekaiser loaded")
  8. InitiateVariables()
  9. CreateMenu()
  10. end
  11.  
  12. function OnTick()
  13. OnTickChecks()
  14. Combo()
  15. FlashCombo()
  16. end
  17.  
  18. function OnDraw()
  19. DrawCircles()
  20. DrawComboKiller()
  21. end
  22.  
  23. function InitiateVariables()
  24. --menu
  25. menu = nil
  26. --skills
  27. ignite = nil
  28. flash = nil
  29. dfgSlot = nil
  30. hxgSlot = nil
  31. bwcSlot = nil
  32. qReady = false
  33. wReady = false
  34. eReady = false
  35. rReady = false
  36. igniteReady = false
  37. flashReady = false
  38. dfgReady = false
  39. hxgReady = false
  40. bwcReady = false
  41. qRange = 600
  42. wRange = 750
  43. eRange = 700
  44. rRange = 850
  45. igniteRange = 600
  46. flashRange = 400
  47. dfgRange = 750
  48. hxgRange = 700
  49. bwcRange = 450
  50. ghostActive = false
  51. ghostActiveDelay = 0
  52. --prediction
  53. VP = VPrediction(true)
  54. --orbwalker
  55. NSOW = SOW(VP)
  56. --targets
  57. target = nil
  58. targetRange = 2000
  59. --target selector
  60. enemyCharNameList = {}
  61. enemyList = {}
  62. enemyPriorityList = {}
  63. enemyNum = 0
  64. GetEnemys()
  65. --summoners
  66. GetSummoners()
  67. end
  68.  
  69. function CreateMenu()
  70. menu = scriptConfig("Challenger Mordekaiser", "Challenger Mordekaiser")
  71. menu:addSubMenu("Main","main")
  72. menu.main:addParam("combo", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32)
  73. menu.main:addParam("allIn", "All In", SCRIPT_PARAM_ONKEYTOGGLE, false, 85)
  74. menu.main:addParam("flashCombo", "Flash Combo", SCRIPT_PARAM_ONKEYTOGGLE, false, 84)
  75. menu:addSubMenu("Draw","draw")
  76. menu.draw:addParam("drawCircles", "Draw Circles", SCRIPT_PARAM_ONOFF, true)
  77. menu.draw:addParam("drawComboKiller", "Draw Combo Killer", SCRIPT_PARAM_ONOFF, true)
  78. menu:addSubMenu("Target Selector","targetSelector")
  79. for i = 1, enemyNum do
  80. menu.targetSelector:addParam("enemy" .. i, enemyCharNameList[i], SCRIPT_PARAM_SLICE, 0, 0, 5, 0)
  81. end
  82. menu:addSubMenu("Orb Walking", "orbWalking")
  83. NSOW:LoadToMenu(menu.orbWalking)
  84. menu.main:permaShow("allIn")
  85. menu.main:permaShow("flashCombo")
  86. end
  87.  
  88. function OnTickChecks()
  89. dfgSlot = GetInventorySlotItem(3128)
  90. hxgSlot = GetInventorySlotItem(3146)
  91. bwcSlot = GetInventorySlotItem(3144)
  92. qReady = myHero:CanUseSpell(_Q) == READY
  93. wReady = myHero:CanUseSpell(_W) == READY
  94. eReady = myHero:CanUseSpell(_E) == READY
  95. rReady = myHero:CanUseSpell(_R) == READY
  96. flashReady = flash and myHero:CanUseSpell(flash) == READY
  97. dfgReady = (dfgSlot ~= nil and myHero:CanUseSpell(dfgSlot) == READY)
  98. hxgReady = (hxgSlot ~= nil and myHero:CanUseSpell(hxgSlot) == READY)
  99. bwcReady = (bwcSlot ~= nil and myHero:CanUseSpell(bwcSlot) == READY)
  100. igniteReady = ignite and myHero:CanUseSpell(ignite) == READY
  101. ghostActive = myHero:GetSpellData(_R).name == "mordekaisercotgguide"
  102. target = GetBestTarget(targetRange)
  103. enemyPriorityList[1] = menu.targetSelector.enemy1
  104. enemyPriorityList[2] = menu.targetSelector.enemy2
  105. enemyPriorityList[3] = menu.targetSelector.enemy3
  106. enemyPriorityList[4] = menu.targetSelector.enemy4
  107. enemyPriorityList[5] = menu.targetSelector.enemy5
  108. end
  109.  
  110. --noch machen
  111. function Combo()
  112. if ValidTargetA(target, igniteRange) and menu.main.combo then
  113. if menu.main.allIn then
  114. if dfgReady then
  115. CastSpell(dfgSlot, target)
  116. end
  117. if igniteReady then
  118. CastSpell(ignite, target)
  119. end
  120. if hxgReady then
  121. CastSpell(hxgSlot, target)
  122. end
  123. if bwcReady and GetDistance(target, myHero) <= bwcRange then
  124. CastSpell(bwcSlot, target)
  125. end
  126. if rReady then
  127. CastSpell(_R, target)
  128. end
  129. end
  130. if eReady then
  131. CastSpell(_E, target.x, target.z)
  132. end
  133. if qReady then
  134. CastSpell(_Q)
  135. end
  136. if wReady and IsEnemyInRange(wRange) then
  137. CastSpell(_W, myHero)
  138. end
  139. end
  140.  
  141. if ValidTargetA(target, eRange) and menu.main.combo then
  142. if eReady then
  143. CastSpell(_E, target.x, target.z)
  144. end
  145. end
  146.  
  147. if ValidTargetA(target) and menu.main.combo and ghostActive and ghostActiveDelay < GetTickCount() then
  148. CastSpell(_R, target)
  149. ghostActiveDelay = GetTickCount() + 1000
  150. end
  151. end
  152.  
  153. function FlashCombo()
  154. if menu.main.flashCombo and menu.main.combo and target ~= nil and ValidTargetA(target, igniteRange + flashRange) and target.type == myHero.type and target.team ~= myHero.team and flashReady and GetDistance(target, myHero) <= igniteRange + flashRange and GetDistance(target, myHero) >= igniteRange then
  155. CastSpell(flash, target.x, target.z)
  156. menu.main.flashCombo = false
  157. end
  158. end
  159.  
  160. function DrawCircles()
  161. if menu.draw.drawCircles then
  162. if target ~= nil and ValidTargetA(target) then
  163. DrawCircle2(target.x, target.y, target.z, 100, ARGB(255,255,0,0))
  164. end
  165. DrawCircle2(myHero.x, myHero.y, myHero.z, eRange, ARGB(255, 125, 0, 225))
  166. DrawCircle2(myHero.x, myHero.y, myHero.z, igniteRange + flashRange, ARGB(255, 125, 0, 225))
  167. end
  168. end
  169.  
  170. function GetBestTarget(range)
  171. local lessToKill = 100
  172. local lessToKilli = 0
  173. local toKill = 0
  174. local damageToHero = 0
  175. local targetArg = nil
  176. for priority = 0, 4 do
  177. if targetArg ~= nil then
  178. break
  179. end
  180. for i = 1, enemyNum do
  181. if enemyPriorityList[i] == priority and ValidTargetA(enemyList[i], range) then
  182. damageToHero = myHero:CalcMagicDamage(enemyList[i], 200)
  183. toKill = enemyList[i].health / damageToHero
  184. if ((toKill < lessToKill) or (lessToKilli == 0)) then
  185. lessToKill = toKill
  186. lessToKilli = i
  187. targetArg = enemyList[i]
  188. end
  189. end
  190. end
  191. end
  192. lessToKill = 150
  193. for _, enemy in ipairs(GetEnemyHeroes()) do
  194. if ValidTargetA(enemy, range) then
  195. toKill = (getDmg("Q", enemy, myHero) + getDmg("E", enemy, myHero) + getDmg("R", enemy, myHero)) / enemy.health
  196. if toKill > lessToKill then
  197. lessToKill = toKill
  198. targetArg = enemy
  199. end
  200. end
  201. end
  202. if targetArg == nil and menu.main.priority5 then
  203. lessToKill = 100
  204. lessToKilli = 0
  205. for i, enemy in ipairs(GetEnemyHeroes()) do
  206. if ValidTargetA(enemy, range) then
  207. damageToHero = myHero:CalcMagicDamage(enemy, 200)
  208. toKill = enemy.health / damageToHero
  209. if ((toKill < lessToKill) or (lessToKilli == 0)) then
  210. lessToKill = toKill
  211. lessToKilli = i
  212. targetArg = enemy
  213. end
  214. end
  215. end
  216. end
  217. if GetTarget() ~= nil and ValidTargetA(GetTarget(), range) and GetTarget().type == myHero.type and GetTarget().team ~= myHero.team then
  218. targetArg = GetTarget()
  219. end
  220. return targetArg
  221. end
  222. --noch machen
  223.  
  224. function GetSummoners()
  225. if string.lower(myHero:GetSpellData(SUMMONER_1).name) == "summonerdot" then
  226. ignite = SUMMONER_1
  227. elseif string.lower(myHero:GetSpellData(SUMMONER_2).name) == "summonerdot" then
  228. ignite = SUMMONER_2
  229. else
  230. ignite = nil
  231. end
  232. if string.lower(myHero:GetSpellData(SUMMONER_1).name) == "summonerflash" then
  233. flash = SUMMONER_1
  234. elseif string.lower(myHero:GetSpellData(SUMMONER_2).name) == "summonerflash" then
  235. flash = SUMMONER_2
  236. else
  237. flash = nil
  238. end
  239. end
  240.  
  241. function GetEnemys()
  242. local i = 1
  243. for j = 1, heroManager.iCount do
  244. local obj = heroManager:getHero(j)
  245. if obj ~= nil and obj.team ~= myHero.team then
  246. enemyCharNameList[i] = obj.charName
  247. enemyList[i] = obj
  248. enemyNum = i
  249. i = i + 1
  250. end
  251. end
  252. end
  253.  
  254. function IsEnemyInRange(rangeArg)
  255. for _, enemy in ipairs(GetEnemyHeroes()) do
  256. if ValidTargetA(enemy) and GetDistance(enemy, myHero) <= rangeArg then
  257. return true
  258. end
  259. end
  260. return false
  261. end
  262.  
  263. function DamageCalculation(enemy)
  264. local dmg = 0
  265. local dfgDmg, hxgDmg, bwcDmg, iDmg = 0, 0, 0, 0
  266. local qDmg, wDmg, eDmg, rDmg = 0, 0, 0, 0
  267. local aDmg = getDmg("AD", enemy, myHero)
  268. qDmg = getDmg("Q",enemy,myHero) + aDmg
  269. wDmg = getDmg("W",enemy,myHero)
  270. eDmg = getDmg("E",enemy,myHero)
  271. if rReady then rDmg = getDmg("R",enemy,myHero) end
  272. if dfgReady then dfgDmg = (dfgSlot and getDmg("DFG",enemy,myHero) or 0) end
  273. if hxgReady then hxgDmg = (hxgSlot and getDmg("HXG",enemy,myHero) or 0) end
  274. if bwcReady then bwcDmg = (bwcSlot and getDmg("BWC",enemy,myHero) or 0) end
  275. if igniteReady then iDmg = (ignite and getDmg("IGNITE",enemy,myHero) or 0) end
  276. local itemsDmg = dfgDmg + hxgDmg + bwcDmg + iDmg
  277. if dfgDmg == 0 then
  278. dmg = itemsDmg + eDmg + rDmg
  279. else
  280. dmg = itemsDmg + 1.2 * (eDmg + rDmg)
  281. end
  282. return dmg
  283. end
  284.  
  285. function DrawComboKiller()
  286. if menu.draw.drawComboKiller then
  287. for _, enemy in pairs(GetEnemyHeroes()) do
  288. if enemy and ValidTargetA(enemy) then
  289. local position = GetHPBarPos2(enemy)
  290. DrawText(tostring(math.floor(100 * DamageCalculation(enemy) / enemy.health + 0.5)), 20, position.x, position.y, ARGB(255, 0, 255, 0))
  291. end
  292. end
  293. end
  294. end
  295.  
  296. function ValidTargetA(target, range)
  297. if target ~= nil and target.type == myHero.type and target.team ~= myHero.team and not target.dead and target.health > 0 then
  298. if range ~= nil and GetDistance(target) <= range then
  299. return true
  300. elseif range ~= nil then
  301. return false
  302. end
  303. return true
  304. else
  305. return false
  306. end
  307. end
  308.  
  309. function GetHPBarPos2(enemy)
  310. local barPos = WorldToScreen(D3DXVECTOR3(enemy.x, enemy.y, enemy.z))
  311. local pos = { x = barPos.x - 35, y = barPos.y - 50 }
  312. return pos
  313. end
  314. -- copied functions
  315. -- barasia, vadash, viseversa
  316. function DrawCircleNextLvl(x, y, z, radius, width, color, chordlength)
  317. radius = radius or 300
  318. quality = math.max(8,math.floor(180/math.deg((math.asin((chordlength/(2*radius)))))))
  319. quality = 2 * math.pi / quality
  320. radius = radius*.92
  321. local points = {}
  322. for theta = 0, 2 * math.pi + quality, quality do
  323. local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta)))
  324. points[#points + 1] = D3DXVECTOR2(c.x, c.y)
  325. end
  326. DrawLines2(points, width or 1, color or 4294967295)
  327. end
  328.  
  329. function DrawCircle2(x, y, z, radius, color)
  330. local vPos1 = Vector(x, y, z)
  331. local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z)
  332. local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius
  333. local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z))
  334. if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then
  335. DrawCircleNextLvl(x, y, z, radius, 1, color, 75)
  336. end
  337. end
  338.  
  339. -- zikkah
  340. function GetHPBarPos(enemy)
  341. enemy.barData = GetEnemyBarData()
  342. local barPos = GetUnitHPBarPos(enemy)
  343. local barPosOffset = GetUnitHPBarOffset(enemy)
  344. local barOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y }
  345. local barPosPercentageOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y }
  346. local BarPosOffsetX = 171
  347. local BarPosOffsetY = 46
  348. local CorrectionY = 0
  349. local StartHpPos = 31
  350. barPos.x = barPos.x + (barPosOffset.x - 0.5 + barPosPercentageOffset.x) * BarPosOffsetX + StartHpPos
  351. barPos.y = barPos.y + (barPosOffset.y - 0.5 + barPosPercentageOffset.y) * BarPosOffsetY + CorrectionY
  352. local StartPos = Vector(barPos.x , barPos.y, 0)
  353. local EndPos = Vector(barPos.x + 108 , barPos.y , 0)
  354. return Vector(StartPos.x, StartPos.y, 0), Vector(EndPos.x, EndPos.y, 0)
  355. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement