Advertisement
Guest User

Nier: Automata helpful script

a guest
Mar 18th, 2017
9,636
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; rebind TAB to Fire / Pod Fire, leaving LShift unbound in the game
  2. #UseHook
  3. SendMode Input
  4.  
  5. ; precise delays
  6. global keypressDelay, doubletapDelay, sequenceDelay, dodgeTime, fireToggle
  7. keypressDelay := 50 ; delay between keydown/keyup
  8. doubletapDelay := 150 ; wait time between keypresses to perform doubletap
  9. sequenceDelay := 50 ; wait time between various sequences
  10. dodgeTime := 300 ; cooldown while dodge animation plays, setting it too small will cause derps when holding SHIFT+WSAD.
  11.  
  12. fireToggle := 0
  13.  
  14. press(key) {
  15.   Send {Blind}{%key% down}
  16.   Sleep keypressDelay
  17.   Send {Blind}{%key% up}
  18. }
  19.  
  20. ; it's a dodge into run, it sends additional keydown after doubletap, so you can smoothly shift into running state after dodge is finished
  21. dodge(key) {
  22.   Send {Blind}{%key% up} ; stop running first in case we were
  23.   Sleep sequenceDelay
  24.   press(key)
  25.   Sleep doubletapDelay
  26.   press(key)
  27.   Sleep sequenceDelay
  28.   Send {Blind}{%key% down}
  29. }
  30.  
  31. ; the complexity of this script is mostly to handle continuous SHIFT+WSAD. It's easy to handle just a single SHIFT tap, but less easy when you hold it down.
  32. handleDodge(dir) {
  33.   BlockInput Send
  34.   if (dir = "fwd") {
  35.     dodge("w")
  36.   } else if (dir = "back") {
  37.     dodge("s")
  38.   } else if (dir = "left") {
  39.     dodge("a")
  40.   } else if (dir = "right") {
  41.     dodge("d")
  42.   }
  43.   Sleep dodgeTime
  44.   if (GetKeyState("w") && !GetKeyState("w", "P")) {
  45.    Send {w up}
  46.   }
  47.   if (GetKeyState("s") && !GetKeyState("s", "P")) {
  48.    Send {s up}
  49.   }
  50.   if (GetKeyState("a") && !GetKeyState("a", "P")) {
  51.    Send {a up}
  52.   }
  53.   if (GetKeyState("d") && !GetKeyState("d", "P")) {
  54.    Send {d up}
  55.   }
  56.   BlockInput Default
  57. }
  58.  
  59. #IfWinActive, NieR:Automata
  60. ; fire toggle
  61. $Tab::
  62.   if (GetKeyState("Tab")) {
  63.     Send {Tab up}
  64.   } else {
  65.     Send {Tab down}
  66.   }
  67.   fireToggle := GetKeyState("Tab") ; var is used in other places
  68. Return
  69.  
  70. ; script behaves better when standard shift+WSAD output is blocked
  71. +w::
  72. +s::
  73. +a::
  74. +d::
  75. Return
  76.  
  77. ; dodges, work when you press/hold LShift while already holding WSAD
  78. ~*LShift::
  79.   while (GetKeyState("LShift", "P")) {
  80.     if (GetKeyState("w", "P")) {
  81.       handleDodge("fwd")
  82.     } else if (GetKeyState("s", "P")) {
  83.       handleDodge("back")
  84.     } else if (GetKeyState("a", "P")) {
  85.       handleDodge("left")
  86.     } else if (GetKeyState("d", "P")) {
  87.       handleDodge("right")
  88.     }
  89.     Sleep, 10
  90.   }
  91. Return
  92.  
  93. ; air slide, normally executed with pod fire + jump
  94. *z::
  95.   BlockInput Send
  96.   if (GetKeyState("Space")) {
  97.     Send {Space up}
  98.   }
  99.   if (fireToggle) {
  100.     Send {Tab up} ; release pod fire button before doing the stuff
  101.   }
  102.   Sleep sequenceDelay
  103.   Send {Tab down}
  104.   Send {Space down}
  105.   Sleep keypressDelay
  106.   Send {Space up}
  107.   Send {Tab up}
  108.   Sleep sequenceDelay
  109.   ; press back what we released
  110.   if (fireToggle) {
  111.     Send {Tab down}
  112.   }
  113.   if (GetKeyState("Space", "P")) {
  114.     Send {Space down}
  115.   }
  116.   BlockInput Default
  117. Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement