시행착오도 한참 겪었지만 드디어 성공했습니다.
먼저 밝히자면 조이패드가 없어서 이리 개고생해가면서 방법 찾아낸거 아닙니다.
3d게임에서 wasd+마우스 조합이 조작감이 훨씬 쾌적하다보니 거기에 추가로 회피만 간단하게 할수 있는 방법을 찾으려고 했던거구요.
먼저 여기 가서
http://steamcommunity.com/sharedfiles/filedetails/?id=886396996
빨간 네모를 클릭해서
오토핫키 프로그램을 다운 받아줍니다. 그리고 그걸 설치. 설치하는데 0.1초면 되요. 용량이 2mb정도 뿐이 안해서.
마우스 우클릭으로 새로만들기 오토핫키 스크립트를 실행.
그리고 아래 스크립트를 죽 긁어서 복사 그리고 오토핫키 빈스크립트에 붙여넣기. 저장하고 끄기.
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new sc__ripts due to its superior speed and reliability.
SetWorkingDir %A_sc__riptDir% ; Ensures a consistent starting directory.
fwdButton := "w"
backButton := "s"
leftButton := "a"
rightButton := "d"
fireButton := "Tab"
jumpButton := "Space"
altButton := "LAlt"
useItems := "down"
use := "e"
; dodge
dodgeButton := "LShift"
; air slide (fire + jump normally)
airSlideButton := "z"
; use last item
useLastItemButton := "c"
keypressDelay := 20 ; delay between keydown/keyup
doubletapDelay := 20 ; wait time between keypresses to perform doubletap
sequenceDelay := 20 ; wait time between various sequences
dodgeTime := 100 ; cooldown while dodge animation plays, setting it too small will cause derps when holding SHIFT+WSAD.
#UseHook
SendMode Input
Send {Blind}{%key% down}
Sleep keypressDelay
Send {Blind}{%key% up}
}
handleDodge(key) {
Send {Blind}{%key% up} ; stop running first in case we were
Sleep sequenceDelay
press(key)
Sleep doubletapDelay
Send {Blind}{%key% down}
Sleep dodgeTime
if (GetKeyState(fwdButton) && !GetKeyState(fwdButton, "P")) {
Send {Blind}{%fwdButton% up}
}
if (GetKeyState(backButton) && !GetKeyState(backButton, "P")) {
Send {Blind}{%backButton% up}
}
if (GetKeyState(leftButton) && !GetKeyState(leftButton, "P")) {
Send {Blind}{%leftButton% up}
}
if (GetKeyState(rightButton) && !GetKeyState(rightButton, "P")) {
Send {Blind}{%rightButton% up}
}
}
while (GetKeyState(dodgeButton, "P")) {
if (GetKeyState(fwdButton, "P")) {
handleDodge(fwdButton)
} else if (GetKeyState(backButton, "P")) {
handleDodge(backButton)
} else if (GetKeyState(leftButton, "P")) {
handleDodge(leftButton)
} else if (GetKeyState(rightButton, "P")) {
handleDodge(rightButton)
} else if (GetKeyState(fwdButton, "P"))&(GetKeyState(backButton, "P"))&(GetKeyState(leftButton, "P"))&(GetKeyState(rightButton, "P"))=0 {
handleDodge(fwdButton)
}
Sleep, 10
}
}
if (GetKeyState(fireButton)) {
Send {%fireButton% up}
} else {
Send {%fireButton% down}
}
}
if (GetKeyState(jumpButton)) {
Send {%jumpButton% up}
}
if (GetKeyState(fireButton)) {
Send {%fireButton% up}
toggleFireBack := 1
}
Sleep sequenceDelay
Send {%jumpButton% down}
Send {%fireButton% down}
Sleep keypressDelay
Send {%fireButton% up}
Send {%jumpButton% up}
Sleep sequenceDelay
; press back what we released
if (toggleFireBack) {
Send {%fireButton% down}
}
if (GetKeyState(jumpButton, "P")) {
Send {%jumpButton% down}
}
}
Send {%altButton% down}
Send {%useItems% down}
Sleep keypressDelay
Send {%altButton% up}
Send {%useItems% up}
press(use)
}
; fire toggle
Hotkey $%fireButton%, toggleFire
Hotkey $^%fireButton%, toggleFire
Hotkey $+%fireButton%, toggleFire
Hotkey ~*%dodgeButton%, waitForDodge
Hotkey $*%airSlideButton%, airSlide
Hotkey $*%useLastItemButton%, useLastItem
여기 위에 까지. 이름은 편할대로 저장하면 되요.
그리고 그 스크립트 파일에서 마우스 우클릭 해서 Run sc__ript 누르면 끝.
끌때는 작업표시줄에 아이콘 클릭해서 exit sc__ript해서 꺼주면 되요.
그다음 스팀에서 설정할 것이 하나. 게임중 스팀오버레이를 여는 단축키를 쉬프트+탭 -> 아무거나 다른키 (ex f10)으로 바꿔주고.
인 게임에서 fire2번을 쉬프트 -> tab 으로 변경. (추가) fire1번을 아무거나 안 쓰는 키로 변경(안하면 회피와 동시에 포드사격이 나감)
이제 게임을 할때
방향키를 누른채로 쉬프트를 누르면 그 방향대로 회피가 되고, 단독으로 쉬프트 누르면 그냥 전방으로 회피가 됩니다.
tab키를 누르면 포드가 계속 발사하고, 한번더 누르면 사격중지. 즉, 포드사격 토글키가 됩니다.
c키를 누르면 물약을 먹는데, 이게 잘 작동 안하더라구요. 회피를 더 부드럽게 연속으로 하기 위해 딜레이값을 좀 조정했더니 물약먹는 키가 애먹이는데 수정예정.
z키를 누르면 공중에서 포드잡고 에어슬라이딩이 나갑니다. 멀리가기 좋음.
사실 제가 한건 단독으로 쉬프트 눌러도 회피가 되게 한거 뿐이 없어요.
다 위에 링크 걸어놓은 저분이 만들어 놓은거.
인 게임에서 카메라 설정 adjust 값들 죄다 0으로 만들고 나면 테라나 스카이림 플레이하는것과 거의 같은 감각으로 플레이 할수 있습니다.
* 딜레이값 조정하고 해서 스크립트 새로 올렸어요 (수정)
http://bbs.ruliweb.com/game/ps/84289/board/read/9416467
(IP보기클릭)222.239.***.***
짝짝짝
(IP보기클릭)110.70.***.***