Advertisement
Mangus875

Precise steering v3

Feb 27th, 2025
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Requires AutoHotkey v2.0
  2. #SingleInstance
  3.  
  4. SetKeyDelay 0, 0
  5. A_HotkeyInterval := 0
  6. SendMode "input"
  7. CoordMode "tooltip", "screen"
  8.  
  9. #R::reload
  10. #UseHook 1
  11.  
  12. keys := ["Numpad0", "2", "3", "4", "5"]
  13. ak := [0,0,0,0,0]
  14. lastAk := 0
  15.  
  16. *Numpad0:: {
  17.     global
  18.     lastAk := 1
  19.     setAk(1)
  20.     KeyWait "Numpad0"
  21.     setAk(5)
  22.     lastAk := 0
  23. }
  24. *2:: {
  25.     global
  26.     lastAk := 2
  27.     setAk(2)
  28.     KeyWait "Numpad0"
  29.     setAk(5)
  30.     lastAk := 0
  31. }
  32. *3:: {
  33.     global
  34.     lastAk := 3
  35.     setAk(3)
  36.     KeyWait "Numpad0"
  37.     setAk(5)
  38.     lastAk := 0
  39. }
  40. *4:: {
  41.     global
  42.     lastAk := 4
  43.     setAk(4)
  44.     KeyWait "Numpad0"
  45.     setAk(5)
  46.     lastAk := 0
  47. }
  48. *5:: {
  49.     global
  50.     lastAk := 0
  51.     setAk(5)
  52.     KeyWait "Numpad0"
  53.     setAk(5)
  54.     lastAk := 0
  55. }
  56.  
  57.  
  58. SetTimer(updateKeys, 1)
  59.  
  60. *Left:: {
  61.     global
  62.    
  63.     Send "{Left down}"
  64.     akCount := 0
  65.     loop ak.length
  66.         akCount += ak[A_Index]
  67.     if (akCount == 2) {
  68.         akPair := getAks()
  69.         if (lastAk != akPair[2])
  70.             setAk(akPair[2])
  71.     } else if (akCount == 1) {
  72.         setAk(getAks()[1], 1)
  73.     }
  74. }
  75.  
  76. updateKeys() {
  77.     global
  78.    
  79.     akCount := 0
  80.     loop keys.length {
  81.         state := GetKeyState(keys[A_Index], "P")
  82.         ak[A_Index] := state
  83.         akCount += state
  84.     }
  85.        
  86.     if (getKeyState("Left", "P")) {
  87.         Send "{Left down}"
  88.         aks := getAks()
  89.         if (akCount == 2) {
  90.             if (lastAk != aks[2])
  91.                 setAk(aks[2])
  92.         }
  93.     } else {
  94.         aks := getAks()
  95.         if (akCount == 2) {
  96.             if (lastAk != aks[1])
  97.                 setAk(aks[1])
  98.         } else {
  99.             Send "{Left up}"
  100.         }
  101.     }
  102.  
  103.     if (getKeyState("Right", "P")) {
  104.         Send "{Right down}"
  105.         aks := getAks()
  106.         if (akCount == 2) {
  107.             if (lastAk != aks[2])
  108.                 setAk(aks[2])
  109.         }
  110.     } else {
  111.         aks := getAks()
  112.         if (akCount == 2) {
  113.             if (lastAk != aks[1])
  114.                 setAk(aks[1])
  115.         } else {
  116.             Send "{Right up}"
  117.         }
  118.     }
  119. }
  120.  
  121. getAks() {
  122.     global
  123.     akPair := []
  124.     loop ak.length {
  125.         if (ak[A_Index])
  126.             akPair.push(A_Index)
  127.     }
  128.     return akPair
  129. }
  130.  
  131. press(key) {
  132.     Send "{" key " down}"
  133.     pause 1
  134.     Send "{" key " up}"
  135.     pause 0
  136. }
  137.  
  138. setAk(key, safe := False) {
  139.     global
  140.     lastAk := key
  141.     if (safe)
  142.         press(keys[5])
  143.     press(keys[key])
  144. }
  145.  
  146. ;setTimer(info, 50)
  147. info() {
  148.     global
  149.     tooltip ak[1] "`n" ak[2] "`n" ak[3] "`n" ak[4] "`n" ak[5], 10, 10
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement