개발 단계에서 좌표를 수동으로 입력하는 것은 번거롭습니다. 더 효율적인 방법은 핫키 하나로 현재 마우스 위치의 좌표를 스크립트 GUI 필드에 직접 채워 넣는 것입니다.
; 핫키 F1 등록
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, 좌표 캡처됨: X%mx% Y%my%
SetTimer, RemoveTip, -2000
return이제 마우스를 원하는 위치로 옮기고 F1을 누르면 좌표가 자동으로 "찾을 X / 찾을 Y" 필드에 입력됩니다. 필요에 따라 다른 핫키를 다른 좌표 필드에 바인딩할 수 있습니다.
원래 스크립트는 각각 고유한 지연 시간을 가진 4개의 독립적인 키로 설계되었습니다. 하지만 실제 게임에서는 두 개의 키를 연속으로 눌러야 하는 경우(예: 스킬 키를 먼저 누르고 보조 키를 누름)가 자주 발생하며, 그 후에 일정 시간을 기다려야 합니다.
개조 방향:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; N분마다 키 그룹 한 번 전송
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; 매 루프마다 전송
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}이는 AHK 게임 스크립트에서 가장 흔히 마주치는 선택입니다:
| 방식 | 장점 | 단점 |
|---|---|---|
| 언제든지 중단 가능, 스크립트 차단 없음, 구조가 깔끔함 | 최소 간격 약 1초, 고빈도 조작에 부적합 |
| 각 루프 간격을 정밀하게 제어 가능 | 스크립트 중단에 추가 메커니즘 필요, 멈출 위험 있음 |
게임에서 초당 또는 그보다 느린 빈도로 조작(예: 스킬 반복 사용, 정기적인 버프)이 필요하다면 SetTimer가 더 깔끔한 선택입니다. 밀리초 단위의 정밀한 제어가 필요하다면 break 조건과 함께 Sleep 루프를 사용해야 합니다.
PostMessage를 사용하거나 다른 창 메시지를 찾아야 합니다.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick의 좌표가 어긋날 수 있습니다. 게임은 창 모드를 사용하고 디스플레이 배율을 100%로 설정하는 것이 좋습니다.단순한 전면 스크립트에서 백그라운드 다중 키 그룹 시스템으로 개조하는 핵심 변경 사항은 다음과 같습니다: 백그라운드 명령어 선택(ControlSend / ControlClick), 창 내 좌표 변환, 메인 루프 구동 방식입니다. 이 글에 포함된 개조 예제는 《수호온라인》 또는 유사한 요구 사항을 가진 다른 게임 자동화 스크립트에 직접 적용할 수 있습니다. 게임에 특수한 키 조합이나 좌표 클릭이 필요한 경우, 먼저 최소 기능의 백그라운드 버전부터 테스트한 후 기능을 점진적으로 추가하는 것을 권장합니다.