透過 AutoHotkey,你可以將遊戲入面嘅滑鼠點擊同按鍵操作全部改做後台執行,唔會干擾其他視窗。 用 ControlSend 同 ControlClick 取代前台點擊,再配合 SetTimer 驅動主循環,就係遊戲自動化腳本嘅基本架構。
研究答案

Create a landscape editorial hero image for this Studio Global article: 以圖片製作出來看看. Article summary: # AI generated image. Topic tags: general, image. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fake numbers, clickbait thumbnails, icons, and tiny thumbnail layouts. Make it useful as an illustrative visual, not as factual evidence.
好多玩家為咗慳返重複操作嘅時間,都會試吓用 AutoHotkey (AHK) 寫自動化腳本。不過成日都會遇到幾個難題:點樣可以令到個腳本喺背景執行,唔影響做其他嘢?點樣先準確咁拎到遊戲視窗入面嘅座標?同埋點樣令按鍵發送更加穩定?
呢篇文章會以《水滸歷險 Online》嘅自動化腳本修改做例子,一步步拆解後台按鍵、座標計算、滑鼠擷取快捷鍵同埋多組按鍵發送嘅實作方法。
前台腳本執行滑鼠點擊或者按鍵發送嘅時候,會強制將遊戲視窗拉到最前面,搞到你做緊嘅其他嘢會斷纜。後台操作嘅目標就係:腳本運行嘅時候,你可以繼續用其他視窗,遊戲視窗喺背景照樣會收到指令。
喺 AHK 入面,後台操作嘅關鍵指令係:
ControlSend:向指定視窗發送按鍵,唔會啟用嗰個視窗。ControlClick:向指定視窗嘅特定座標發送滑鼠點擊,唔會啟用嗰個視窗。ahk_id %TargetHwnd%遊戲入面嘅 XY 座標同螢幕絕對座標係唔同嘅。當遊戲視窗移動或者改變大小嘅時候,用螢幕絕對座標寫死嘅點擊就會走位。
正確嘅做法係計算「視窗入面相對座標」:
遊戲內 X = 滑鼠螢幕 X – 遊戲視窗左上角 X
遊戲內 Y = 滑鼠螢幕 Y – 遊戲視窗左上角 Y如果想再精準啲,就應該用遊戲內容區(扣咗標題列同邊框)嘅左上角做基準,而唔係成個視窗嘅左上角。
; 遊戲視窗左上角座標(要預先拎到)
winX = 100
winY = 80
; 拎滑鼠螢幕座標
GetCursorPos mouseX, mouseY
; 換算成遊戲視窗入面座標
gameX := mouseX – winX
gameY := mouseY – winY留意返:
喺開發階段,成日要手動輸入座標真係好麻煩。更有效率嘅方法係:撳一個快捷鍵,直接將而家滑鼠位置嘅座標填入腳本 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」欄位。你可以按需要綁定唔同嘅快捷鍵去唔同嘅座標欄位。
原本嘅腳本設計咗四個獨立按鍵,每個按鍵都有自己嘅延遲時間。但係喺實際遊戲入面,成日都需要連續發送兩個按鍵(例如先撳技能掣再撳輔助掣),然後先等一段時間。
修改方向:
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 秒,唔適合高頻操作 |
| 可以精準控制每次循環嘅間隔 | 停腳本要用額外機制,好易卡死 |
如果你個遊戲需要每秒或者再慢啲嘅頻率黎操作(例如重複用技能、定時補 buff),SetTimer 係比較乾淨嘅選擇。如果需要毫秒級嘅精準控制,就要用 Sleep 迴圈再加 break 條件。
PostMessage 或者搵其他視窗訊息。{F1}、{Enter}。MouseGetPos, , , TargetHwndControlClick 嘅座標可能會歪咗。建議遊戲用視窗模式,同埋將顯示縮放 set 做 100%。由單純嘅前台腳本改成後台多組按鍵系統,核心嘅改動在於揀啱後台指令(ControlSend / ControlClick)、計啱視窗入面座標,同埋點樣驅動主循環。文入面附上嘅修改範例可以直接套用到《水滸歷險 Online》或者其他類似需求嘅遊戲自動化腳本。如果你個遊戲有特別嘅按鍵組合或者座標點擊需求,建議由一個最細可行嘅後台版本開始試,慢慢疊加功能。
Studio Global AI
此頁麵包含一個有來源支援的答案,您可以在 Studio Global 內繼續。
透過 AutoHotkey,你可以將遊戲入面嘅滑鼠點擊同按鍵操作全部改做後台執行,唔會干擾其他視窗。
透過 AutoHotkey,你可以將遊戲入面嘅滑鼠點擊同按鍵操作全部改做後台執行,唔會干擾其他視窗。 用 ControlSend 同 ControlClick 取代前台點擊,再配合 SetTimer 驅動主循環,就係遊戲自動化腳本嘅基本架構。
按 F1 就可以即刻擷取滑鼠位置嘅座標,自動填入腳本 GUI 嘅欄位,慳返好多手動輸入時間。