Guest User

MW5 absolute joystick

a guest
Dec 23rd, 2019
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #NoEnv
  2. #MaxHotkeysPerInterval 99000000
  3. #HotkeyInterval 99000000
  4. #KeyHistory 0
  5. ListLines Off
  6. Process, Priority, , A
  7. SetBatchLines, -1
  8. SetKeyDelay, -1, -1
  9. SetMouseDelay, -1
  10. SetDefaultMouseSpeed, 0
  11. SetWinDelay, -1
  12. SetControlDelay, -1
  13. SendMode Input
  14.  
  15. JOYSTICK_ID := "1Joy"
  16. MOUSE_PER_JOYSTICK := 15
  17. MAX_MOUSE_MOVE := 40
  18. INVERT_Y := true
  19. DEADZONE_Xpos := 1
  20. DEADZONE_Xneg := 1
  21. DEADZONE_Ypos := 1
  22. DEADZONE_Yneg := 1
  23.  
  24. y_multiplier := INVERT_Y ? -1 : 1
  25. Xaxis := JOYSTICK_ID "V", Yaxis := JOYSTICK_ID "Y"
  26. Xcurrent := 50 * MOUSE_PER_JOYSTICK, Ycurrent := 50 * MOUSE_PER_JOYSTICK
  27. reset_ok := true
  28. active := true
  29.  
  30. Loop {
  31.  
  32.     WinGetTitle, activeWindowTitle, A
  33.    
  34.     if (active and InStr(activeWindowTitle, "MW5Mercs")) {
  35.         Xjoy := GetKeyState(Xaxis), Yjoy := GetKeyState(Yaxis)
  36.        
  37.         if (Xjoy > 50 and DEADZONE_Xpos > 0) {
  38.             if (Xjoy <= 50+DEADZONE_Xpos) {
  39.                 Xjoy := 50
  40.             } else {
  41.                 Xjoy := 50 + (100-50)* (Xjoy-(50+DEADZONE_Xpos))/(100 - (50+DEADZONE_Xpos))
  42.             }            
  43.         }
  44.        
  45.         if (Xjoy < 50 and DEADZONE_Xneg > 0) {
  46.             if (Xjoy >= 50-DEADZONE_Xneg) {
  47.                 Xjoy := 50
  48.             } else {
  49.                 Xjoy := Xjoy / (50-DEADZONE_Xneg) * 50
  50.             }            
  51.         }
  52.        
  53.         if (Yjoy > 50 and DEADZONE_Ypos > 0) {
  54.             if (Yjoy <= 50+DEADZONE_Ypos) {
  55.                 Yjoy := 50
  56.             } else {
  57.                 Yjoy := 50 + (100-50)* (Yjoy-(50+DEADZONE_Ypos))/(100 - (50+DEADZONE_Ypos))
  58.             }            
  59.         }
  60.        
  61.         if (Yjoy < 50 and DEADZONE_Yneg > 0) {
  62.             if (Yjoy >= 50-DEADZONE_Yneg) {
  63.                 Yjoy := 50
  64.             } else {
  65.                 Yjoy := Yjoy / (50-DEADZONE_Yneg) * 50
  66.             }            
  67.         }
  68.        
  69.         Xoffset := round(Xjoy * MOUSE_PER_JOYSTICK) - Xcurrent, Yoffset := round(Yjoy * MOUSE_PER_JOYSTICK) - Ycurrent
  70.         Xoffset := abs(Xoffset) > MAX_MOUSE_MOVE ? (Xoffset > 0 ? MAX_MOUSE_MOVE : -1 * MAX_MOUSE_MOVE) : Xoffset, Yoffset := abs(Yoffset) > MAX_MOUSE_MOVE ? (Yoffset > 0 ? MAX_MOUSE_MOVE : -1 * MAX_MOUSE_MOVE) : Yoffset
  71.  
  72.         Xcurrent += Xoffset, Ycurrent += Yoffset
  73.         DllCall("mouse_event", uint, 1, int, Xoffset, int, Yoffset * y_multiplier, uint, 0, int, 0)
  74.         if (reset_ok and Xjoy > 46 and Xjoy < 54 and Yjoy > 46 and Yjoy < 54) {
  75.             Send c
  76.             reset_ok := false
  77.             SetTimer, UnlockReset, -500
  78.         }
  79.         Sleep 1
  80.     } else {
  81.         Sleep 1000
  82.     }
  83. }
  84.  
  85. F12::active := !active
  86.  
  87. UnlockReset:
  88.    reset_ok := true
  89.     return
Advertisement
Add Comment
Please, Sign In to add comment