Advertisement
Guest User

TF Card Picker

a guest
Nov 27th, 2014
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 5.34 KB | None | 0 0
  1. #include <Constants.au3>
  2. #include <Misc.au3>
  3.  
  4. ; Default how-to-use instructions
  5. ; Move mouse cursor over 'Pick A Card's spell icon (where it's colored)
  6. ; and press 'ctrl + ]'. After that is done. Press 'w' to start pick a card
  7. ; and the script will automatically pick a gold card. If you wish to change
  8. ; what card it automatically picks. Then press 'ctrl + z' to set it to blue,
  9. ; 'ctrl + x' to set to red, and 'ctrl + c' for gold.
  10. ; The initialization (ctrl+]) only needs to be done after the script is started.
  11. ; If you do not initialize after starting up the script, it will not work.
  12. ; Maybe even break.
  13. ;
  14. ; In short:
  15. ; 'ctrl + ]' on color of Pick a Card spell icon
  16. ; 'w' and have card picked automatically
  17. ; 'ctrl+z' for blue
  18. ; 'ctrl+x' for red
  19. ; 'ctrl+c' for gold
  20. ;
  21. ; If you need the auto select to be a different key, change the value:
  22. ; $PAC_SPELL_HOTKEY to the appropriate key value.
  23. ; If you wish to change the calibrate hotkey:
  24. ; $CALIBRATE_HOTKEY
  25. ; For the color picks:
  26. ; $PICK_BLUE_HOTKEY | $PICK_RED_HOTKEY | $PICK_GOLD_HOTKEY
  27. ; Modifiers are listed below. And if you wish to remove a modifier,
  28. ; set it to be the same value as the hotkey.
  29.  
  30. ; constants
  31.  
  32. ; Modifiers for key sends:
  33. ; ! for alt
  34. ; + for shift
  35. ; ^ for ctrl
  36. ; # for winkey
  37. ; To get more information visit the following reference:
  38. ; https://www.autoitscript.com/autoit3/docs/functions/Send.htm
  39.  
  40. ; This should be the key for casting Pick a Card.
  41. Global $PAC_SPELL_HOTKEY = "w"
  42.  
  43. ; hotkeys
  44. ; Modifiers for hotkeys:
  45. ; 12 for alt
  46. ; 10 for shift
  47. ; 11 for ctrl
  48. ; 5B for lwinkey
  49. ; 5C for rwinkey
  50. ; For further hotkey details visit the following reference:
  51. ; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx
  52.  
  53. Global $PICK_BLUE_HOTKEY = "5A"
  54. Global $PICK_BLUE_MOD1   = "5A"
  55. Global $PICK_BLUE_MOD2   = "11"
  56. Global $PICK_RED_HOTKEY  = "58"
  57. Global $PICK_RED_MOD1    = "58"
  58. Global $PICK_RED_MOD2    = "11"
  59. Global $PICK_GOLD_HOTKEY = "43"
  60. Global $PICK_GOLD_MOD1   = "43"
  61. Global $PICK_GOLD_MOD2   = "11"
  62. Global $CALIBRATE_HOTKEY = "DD"
  63. Global $CALIBRATE_MOD1   = "DD"
  64. Global $CALIBRATE_MOD2   = "11"
  65. ;card hue identifiers
  66. Global $BLUE_HUE_MIN     = 115
  67. Global $BLUE_HUE_MAX     = 130
  68. Global $RED_HUE_MIN      = 220
  69. Global $RED_HUE_MAX      = 240
  70. Global $GOLD_HUE_MIN     = 20
  71. Global $GOLD_HUE_MAX     = 45
  72. ; Card state enum
  73. Global $UNDEF_CARD_STATE = -1
  74. Global $BLUE_CARD_STATE  =  0
  75. Global $RED_CARD_STATE   =  1
  76. Global $GOLD_CARD_STATE  =  2
  77. ;Client title
  78. Global $CLIENT_TITLE = "League of Legends (TM) Client"
  79.  
  80. ; globals
  81.  
  82. ; isPressed library
  83. Global $mLib = DllOpen("user32.dll")
  84. ; League of Legends window handle
  85. Global $lolWin
  86.  
  87. ; May later use hues to determine the colors
  88. ; then use colors to detect.
  89. ; As it stands, most of these aren't needed.
  90. Global $defaultCard
  91. Global $blueCard
  92. Global $redCard
  93. Global $goldCard
  94. Global $cardPosition
  95. Global $cardState = $UNDEF_CARD_STATE
  96.  
  97. ; logic start
  98.  
  99. ; keep script alive. read input.
  100. While 1
  101.     If (_IsPressed($CALIBRATE_MOD1, $mLib) And _IsPressed($CALIBRATE_MOD2, $mLib) And _IsPressed($CALIBRATE_HOTKEY, $mLib)) Then
  102.         calibrate()
  103.     ElseIf (_IsPressed($PICK_BLUE_MOD1, $mLib) And _IsPressed($PICK_BLUE_MOD2, $mLib) And _IsPressed($PICK_BLUE_HOTKEY, $mLib)) Then
  104.         $cardState = $BLUE_CARD_STATE
  105.     ElseIf (_isPressed($PICK_RED_MOD1, $mLib) And _IsPressed($PICK_RED_MOD2, $mLib) And _IsPressed($PICK_RED_HOTKEY, $mLib)) Then
  106.         $cardState = $RED_CARD_STATE
  107.     elseIf (_isPressed($PICK_GOLD_MOD1, $mLib) And _IsPressed($PICK_GOLD_MOD2, $mLib) And _IsPressed($PICK_GOLD_HOTKEY, $mLib)) Then
  108.         $cardState = $GOLD_CARD_STATE
  109.     EndIf
  110.  
  111.     switch($cardState)
  112.         Case $BLUE_CARD_STATE
  113.             tryBlue()
  114.         Case $RED_CARD_STATE
  115.             tryRed()
  116.         Case $GOLD_CARD_STATE
  117.             tryGold()
  118.     EndSwitch
  119. WEnd
  120.  
  121. ; logic end
  122.  
  123. ; script driver functions
  124. Func calibrate()
  125.     $cardState = $GOLD_CARD_STATE
  126.     $lolWin = WinGetHandle($CLIENT_TITLE)
  127.     $cardPosition = MouseGetPos()
  128. EndFunc
  129.  
  130. Func tryBlue()
  131.     tryInRange($BLUE_HUE_MIN, $BLUE_HUE_MAX)
  132. EndFunc
  133.  
  134. Func tryRed()
  135.     tryInRange($RED_HUE_MIN, $RED_HUE_MAX)
  136. EndFunc
  137.  
  138. Func tryGold()
  139.     tryInRange($GOLD_HUE_MIN, $GOLD_HUE_MAX)
  140. EndFunc
  141.  
  142. Func tryInRange($min, $max)
  143.     If (inRange(colorGetHue(PixelGetColor($cardPosition[0], $cardPosition[1], $lolWin)), $min, $max)) Then
  144.         Send($PAC_SPELL_HOTKEY)
  145.         Sleep(50)
  146.     EndIf
  147. EndFunc
  148.  
  149. ; Color functions
  150. Func toRGB($color)
  151.     Local $rgb[3]
  152.     $rgb[0] = getRed($color)
  153.     $rgb[1] = getGreen($color)
  154.     $rgb[2] = getBlue($color)
  155.     return $rgb
  156. EndFunc
  157.  
  158. Func getRed($color)
  159.     return Floor($color/65536)
  160. EndFunc
  161.  
  162. Func getGreen($color)
  163.     return Floor(($color - getRed($color)*65536)/256)
  164. EndFunc
  165.  
  166. Func getBlue($color)
  167.     Return $color - Floor($color/256)*256
  168. EndFunc
  169.  
  170. Func colorGetHue($color)
  171.     Return getHue(toRGB($color))
  172. EndFunc
  173.  
  174. Func getHue($rgb)
  175.     $r = $rgb[0]/256
  176.     $g = $rgb[1]/256
  177.     $b = $rgb[2]/256
  178.     $cmax = max($r, max($g, $b))
  179.     $cdel = $cmax - min($r, min($g, $b))
  180.     $hue = 0
  181.  
  182.     If ($r = $cmax) Then
  183.         $hue = Floor(40*(($g-$b)/$cdel))
  184.         If($hue<0) Then
  185.             $hue = 240 + $hue
  186.         EndIf
  187.     ElseIf ($g = $cmax) Then
  188.         $hue = Floor(40*(($b-$r)/$cdel + 2))
  189.     Else
  190.         $hue = Floor(40*(($r-$g)/$cdel + 4))
  191.     EndIf
  192.  
  193.     Return $hue
  194. EndFunc
  195.  
  196. ; Math functions
  197. Func max($a, $b)
  198.     Return ($a>=$b)?$a:$b
  199. EndFunc
  200.  
  201. Func min($a, $b)
  202.     Return ($a<=$b)?$a:$b
  203. EndFunc
  204.  
  205. Func inRange($val, $min, $max)
  206.     Return ($val>=$min) And ($val<=$max)
  207. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement