Sabanim

One AHK Script to rule them All

Jul 27th, 2020 (edited)
194
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;;  6/29/2021 MIT Licence. blah blah blah
  2. ;  Made by: Sabanim
  3. ;  This script is so you dont have to modifiy a script when you change spec/toon or have to end a script and reload a new script for a new toon/spec
  4. ;  It allows you to use AHK on buttons 0,1,2,3,4,5,6,7,8,9,-,=,[ accross the top of the keyboard
  5. ;  Also 0-9 will take modifiers of Left: Shift:Ctrl:Alt
  6. ;  Ctrl + PageDown to suspend script (if you want to chat)
  7. ;  Ctrl + PageUP to reload script
  8. ;  Ctrl + End to terminate script
  9.  
  10. ;; SETUP
  11. ;  YOU MUST HAVE THE WEAKAURAs 2 ADDON AND IMPORT THE ACCOMPANING STRING  https://wago.io/L067Wgkyr
  12. ;  Fill out sections [A][B][C]
  13.  
  14.  
  15. #IfWinActive, World of Warcraft
  16. #MaxThreadsPerHotkey 2
  17. CoordMode, Pixel, Screen ; PixelGetColor uses absolute monitor coordinates now
  18. sendTime := "30" ;ignore, just a variable initialization just in case
  19.  
  20. basicSleepFrequency := "1"  ;This is what all other keys will fire at.  Example: you are holding down the 3 key and you have interupt/kick on 6, 6 will fire faster to interupt so you can keep holding 3 down.
  21.  
  22. ; [A]   XXXXXXXXXXXXXXXXX  Here is where you set your main sleep between fires and if you have a secondary such as a macro for AoE. Find your toon and adjust to your liking in milliseconds   xxxxxxxxxxxxxxxxx
  23. mainSleepFrequency := { "0xFF243B" : "50" ;Death Knight -- Blood
  24.                    , "0xFF4A2F" : "3"   ;Death Knight -- Frost
  25.                    , "0xBC0008" : "3"   ;Death Knight-- Unholy
  26.                    , "0xA330C9" : "5"   ;Demon Hunter -- Havoc
  27.                    , "0x8E0FFF" : "50"  ;Demon Hunter --Vengence
  28.                    , "0xFFBA45" : "100" ;Druid -- Balance
  29.                    , "0xD89D00" : "3"   ;Druid -- Feral
  30.                    , "0xFF8F00" : "50"  ;Druid -- Restoration
  31.                    , "0xFF8810" : "70"  ;Druid -- Guardian
  32.                    , "0x00B400" : "68"  ;Hunter -- BeastMaster
  33.                    , "0x52FF57" : "3"   ;Hunter -- Marksman
  34.                    , "0x01BE00" : "3"   ;Hunter -- Survival
  35.                    , "0x18E8FF" : "3"   ;Mage -- Arcane
  36.                    , "0x05B6FF" : "3"   ;Mage -- Fire
  37.                    , "0x00D0FF" : "70"   ;Mage -- Frost
  38.                    , "0x00FFB5" : "3"   ;Monk -- Mistweaver
  39.                    , "0x03D07A" : "3"   ;Monk -- Brewmaster
  40.                    , "0x45D08C" : "3"   ;Monk -- Windwalker
  41.                    , "0xFF67FA" : "20"  ;Paladin -- Retribution
  42.                    , "0xFF02F8" : "3"   ;Paladin -- Protection
  43.                    , "0xEE6EFF" : "3"   ;Paladin -- Holy
  44.                    , "0xD5FFED" : "3"   ;Priest -- Discipline
  45.                    , "0xD0EBFD" : "3"   ;Priest -- Holy
  46.                    , "0xAEA9DB" : "3"   ;Priest -- Shadow
  47.                    , "0xFFF800" : "3"   ;Rogue -- Assasination
  48.                    , "0xDBD641" : "3"   ;Rogue -- Outlaw
  49.                    , "0xFFD400" : "3"   ;Rogue -- Subtlety
  50.                    , "0x0000FF" : "3"   ;Shaman -- Elemental
  51.                    , "0x005FDF" : "3"   ;Shaman -- Enhancement
  52.                    , "0x67A0FF" : "3"   ;Shaman -- Restoration         
  53.                    , "0x3C10C1" : "60"  ;Warlock -- Destruction
  54.                    , "0x7C16BE" : "3"   ;Warlock -- Demonology
  55.                    , "0xA76BD2" : "3"   ;Warlock -- Affliction  
  56.                    , "0xFFD8B2" : "3"   ;Warrior -- Arms
  57.                    , "0xD7BF8C" : "3"   ;Warrior -- Fury
  58.                    , "0xAB916D" : "3" } ;Warrior -- Protection
  59.                    
  60.  
  61. secondarySleepFrequency := { "0xFF243B" : "50" ;Death Knight -- Blood
  62.                    , "0xFF4A2F" : "3"   ;Death Knight -- Frost
  63.                    , "0xBC0008" : "3"   ;Death Knight-- Unholy
  64.                    , "0xA330C9" : "5"   ;Demon Hunter -- Havoc
  65.                    , "0x8E0FFF" : "50"  ;Demon Hunter --Vengence
  66.                    , "0xFFBA45" : "100" ;Druid -- Balance
  67.                    , "0xD89D00" : "3"   ;Druid -- Feral
  68.                    , "0xFF8F00" : "50"  ;Druid -- Restoration
  69.                    , "0xFF8810" : "70"  ;Druid -- Guardian
  70.                    , "0x00B400" : "68"  ;Hunter -- BeastMaster
  71.                    , "0x52FF57" : "3"   ;Hunter -- Marksman
  72.                    , "0x01BE00" : "3"   ;Hunter -- Survival
  73.                    , "0x18E8FF" : "3"   ;Mage -- Arcane
  74.                    , "0x05B6FF" : "3"   ;Mage -- Fire
  75.                    , "0x00D0FF" : "3"   ;Mage -- Frost
  76.                    , "0x00FFB5" : "3"   ;Monk -- Mistweaver
  77.                    , "0x03D07A" : "3"   ;Monk -- Brewmaster
  78.                    , "0x45D08C" : "3"   ;Monk -- Windwalker
  79.                    , "0xFF67FA" : "20"  ;Paladin -- Retribution
  80.                    , "0xFF02F8" : "3"   ;Paladin -- Protection
  81.                    , "0xEE6EFF" : "3"   ;Paladin -- Holy
  82.                    , "0xD5FFED" : "3"   ;Priest -- Discipline
  83.                    , "0xD0EBFD" : "3"   ;Priest -- Holy
  84.                    , "0xAEA9DB" : "3"   ;Priest -- Shadow
  85.                    , "0xFFF800" : "3"   ;Rogue -- Assasination
  86.                    , "0xDBD641" : "3"   ;Rogue -- Outlaw
  87.                    , "0xFFD400" : "3"   ;Rogue -- Subtlety
  88.                    , "0x0000FF" : "3"   ;Shaman -- Elemental
  89.                    , "0x005FDF" : "3"   ;Shaman -- Enhancement
  90.                    , "0x67A0FF" : "3"   ;Shaman -- Restoration         
  91.                    , "0x3C10C1" : "60"  ;Warlock -- Destruction
  92.                    , "0x7C16BE" : "3"   ;Warlock -- Demonology
  93.                    , "0xA76BD2" : "3"   ;Warlock -- Affliction  
  94.                    , "0xFFD8B2" : "3"   ;Warrior -- Arms
  95.                    , "0xD7BF8C" : "3"   ;Warrior -- Fury
  96.                    , "0xAB916D" : "3" } ;Warrior -- Protection
  97.  
  98. ; [B]   XXXXXXXXXXXXXXXXX  Set which key you want to fire at main rate, the secondary rate, or the basic rate that was set above   xxxxxxxxxxxxxxxxx
  99. ; Pick which keys are [b]asicSleep, [m]ainSleep, [s]econdarySleep frequencies
  100. key0 := "b"
  101. key1 := "b"
  102. key2 := "b"
  103. key3 := "m"
  104. key4 := "s"
  105. key5 := "b"
  106. key6 := "b"
  107. key7 := "b"
  108. key8 := "b"
  109. key9 := "b"
  110.  
  111. ; [C}   XXXXXXXXXXX  Hardest part of set up. After you have imported the weakAura and moved it to your desired spot in the AHK windows menu folder you will a program called Window Spy.  Run it and check the follow cursor checkbox.  xxxxxxxxxxxxxxxxx
  112. ;       XXXXXXXXXXX  Mouse over the weakAura square and note the X and Y coordinates reported in Window Spy, Those replace the 3820 and the 1660 for your computer   xxxxxxxxxxxxxxxxx
  113. global pixelCoordX := 3820 ; ur TMW spot where each overlapping spell has a unique pixel color
  114. global pixelCoordY := 1660 ; ur TMW spot where each overlapping spell has a unique pixel color
  115.  
  116.  
  117. ;XXXXXXXXXXXX  Nothing below this line needs touched  XXXXXXXXXXXX
  118. $0::
  119. $^0::
  120. $+0::
  121. $!0::
  122.     Loop{
  123.             PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  124.             if key0 = m
  125.                 sendTime := % mainSleepFrequency[foundColor . ""]
  126.             else if key0 = s
  127.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  128.             else
  129.                 sendTime := %basicSleepFrequency%
  130.  
  131.             if not GetKeyState("0", "P")
  132.                 break
  133.             if GetKeyState("LCtrl", "P")
  134.                 Send ^0
  135.             else if GetKeyState("LShift", "P")
  136.                 Send +0
  137.             else if GetKeyState("LAlt", "P")
  138.                 Send !0
  139.             else
  140.                 Send 0
  141.             sleep %sendTime%
  142.         }
  143.     return
  144. $1::
  145. $^1::
  146. $+1::
  147. $!1::
  148.     Loop{
  149.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  150.             if key1 = m
  151.                 sendTime := % mainSleepFrequency[foundColor . ""]
  152.             else if key1 = s
  153.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  154.             else
  155.                 sendTime := %basicSleepFrequency%
  156.  
  157.             if not GetKeyState("1", "P")
  158.                 break
  159.             if GetKeyState("LCtrl", "P")
  160.                 Send ^1
  161.             else if GetKeyState("LShift", "P")
  162.                 Send +1
  163.             else if GetKeyState("LAlt", "P")
  164.                 Send !1
  165.             else
  166.                 Send 1
  167.             sleep %sendTime%
  168.         }
  169.     return
  170. $2::
  171. $^2::
  172. $+2::
  173. $!2::
  174.     Loop{
  175.             PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  176.             if key2 = m
  177.                 sendTime := % mainSleepFrequency[foundColor . ""]
  178.             else if key2 = s
  179.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  180.             else
  181.                 sendTime := %basicSleepFrequency%
  182.  
  183.             if not GetKeyState("2", "P")
  184.                 break
  185.             if GetKeyState("LCtrl", "P")
  186.                 Send ^2
  187.             else if GetKeyState("LShift", "P")
  188.                 Send +2
  189.             else if GetKeyState("LAlt", "P")
  190.                 Send !2
  191.             else
  192.                 Send 2
  193.             sleep %sendTime%
  194.         }
  195.     return
  196. $3::
  197. $^3::
  198. $+3::
  199. $!3::
  200.     Loop{
  201.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  202.             if key3 = m
  203.                 sendTime := % mainSleepFrequency[foundColor . ""]
  204.             else if key3 = s
  205.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  206.             else
  207.                 sendTime := %basicSleepFrequency%
  208.  
  209.             if not GetKeyState("3", "P")
  210.                 break
  211.             if GetKeyState("LCtrl", "P")
  212.                 Send ^3
  213.             else if GetKeyState("LShift", "P")
  214.                 Send +3
  215.             else if GetKeyState("LAlt", "P")
  216.                 Send !3
  217.             else
  218.                  Send 3
  219.             sleep %sendTime%
  220.         }
  221.     return
  222. $4::
  223. $^4::
  224. $+4::
  225. $!4::
  226.     Loop{
  227.             PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  228.             if key4 = m
  229.                 sendTime := % mainSleepFrequency[foundColor . ""]
  230.             else if key4 = s
  231.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  232.             else
  233.                 sendTime := %basicSleepFrequency%
  234.  
  235.             if not GetKeyState("4", "P")
  236.                 break
  237.             if GetKeyState("LCtrl", "P")
  238.                 Send ^4
  239.             else if GetKeyState("LShift", "P")
  240.                 Send +4
  241.             else if GetKeyState("LAlt", "P")
  242.                 Send !4
  243.             else
  244.                 Send 4
  245.             sleep %sendTime%       
  246.         }
  247.     return
  248. $5::
  249. $^5::
  250. $+5::
  251. $!5::
  252.     Loop{
  253.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  254.             if key5 = m
  255.                 sendTime := % mainSleepFrequency[foundColor . ""]
  256.             else if key5 = s
  257.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  258.             else
  259.                 sendTime := %basicSleepFrequency%
  260.  
  261.             if not GetKeyState("5", "P")
  262.                 break
  263.             if GetKeyState("LCtrl", "P")
  264.                 Send ^5
  265.             else if GetKeyState("LShift", "P")
  266.                 Send +5
  267.             else if GetKeyState("LAlt", "P")
  268.                 Send !5
  269.             else
  270.                 Send 5
  271.             sleep %sendTime%
  272.         }
  273.     return
  274. $6::
  275. $^6::
  276. $+6::
  277. $!6::
  278.     Loop{
  279.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  280.             if key6 = m
  281.                 sendTime := % mainSleepFrequency[foundColor . ""]
  282.             else if key6 = s
  283.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  284.             else
  285.                 sendTime := %basicSleepFrequency%
  286.  
  287.             if not GetKeyState("6", "P")
  288.                 break
  289.             if GetKeyState("LCtrl", "P")
  290.                 Send ^6
  291.             else if GetKeyState("LShift", "P")
  292.                 Send +6
  293.             else if GetKeyState("LAlt", "P")
  294.                 Send !6
  295.             else
  296.                 Send 6
  297.             sleep %sendTime%
  298.         }
  299.     return
  300. $7::
  301. $^7::
  302. $+7::
  303. $!7::
  304.     Loop{
  305.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  306.             if key7 = m
  307.                 sendTime := % mainSleepFrequency[foundColor . ""]
  308.             else if key7 = s
  309.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  310.             else
  311.                 sendTime := %basicSleepFrequency%
  312.  
  313.             if not GetKeyState("7", "P")
  314.                 break
  315.             if GetKeyState("LCtrl", "P")
  316.                 Send ^7
  317.             else if GetKeyState("LShift", "P")
  318.                 Send +7
  319.             else if GetKeyState("LAlt", "P")
  320.                 Send !7
  321.             else
  322.                 Send 7
  323.             sleep %sendTime%
  324.         }
  325.     return
  326. $8::
  327. $^8::
  328. $+8::
  329. $!8::
  330.     Loop{
  331.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  332.             if key8 = m
  333.                 sendTime := % mainSleepFrequency[foundColor . ""]
  334.             else if key8 = s
  335.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  336.             else
  337.                 sendTime := %basicSleepFrequency%
  338.  
  339.             if not GetKeyState("8", "P")
  340.                 break
  341.             if GetKeyState("LCtrl", "P")
  342.                 Send ^8
  343.             else if GetKeyState("LShift", "P")
  344.                 Send +8
  345.             else if GetKeyState("LAlt", "P")
  346.                 Send !8
  347.             else
  348.                 Send 8
  349.             sleep %sendTime%
  350.         }
  351.     return
  352. $9::
  353. $^9::
  354. $+9::
  355. $!9::
  356.     Loop{
  357.         PixelGetColor, foundColor, pixelCoordX, pixelCoordY, RGB
  358.             if key9 = m
  359.                 sendTime := % mainSleepFrequency[foundColor . ""]
  360.             else if key9 = s
  361.                 sendTime := % secondarySleepFrequency[foundColor . ""]
  362.             else
  363.                 sendTime := %basicSleepFrequency%
  364.  
  365.             if not GetKeyState("9", "P")
  366.                 break
  367.             if GetKeyState("LCtrl", "P")
  368.                 Send ^9
  369.             else if GetKeyState("LShift", "P")
  370.                 Send +9
  371.             else if GetKeyState("LAlt", "P")
  372.                 Send !9
  373.             else
  374.                 Send 9
  375.             sleep %sendTime%
  376.         }
  377.     return
  378. $-::
  379.     While GetKeyState("-","p") {
  380.         Send,-
  381.         sleep %basicSleep%
  382.     }
  383. return
  384. $=::
  385.     While GetKeyState("=","p") {
  386.         Send,=
  387.         sleep %basicSleep%
  388.     }
  389. return
  390. $[::
  391.     While GetKeyState("[","p") {
  392.         Send,[
  393.         sleep %basicSleep%
  394.     }
  395. return
  396.  
  397. ^PgDn::Suspend ;; Ctrl + PageDown to suspend script (if you want to chat)
  398. ^PgUp::Reload ;; Ctrl + PageUP to reload script
  399. ^End::ExitApp ;; Ctrl + End to terminate script
RAW Paste Data