Dengan AutoHotkey, klik mouse dan tekan tombol dalam game bisa dilakukan di latar belakang tanpa mengganggu jendela lain. Menggunakan ControlSend dan ControlClick untuk menggantikan klik di latar depan, serta SetTimer untuk menggerakkan siklus utama, adalah arsitektur dasar skrip automasi game.
Jawaban penelitian

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.
Banyak pemain mencoba menulis skrip otomatis dengan AutoHotkey (AHK) untuk menghemat waktu dari tugas berulang. Namun, tantangan umum termasuk: bagaimana membuat skrip berjalan di latar belakang tanpa mengganggu pekerjaan lain? Bagaimana cara mendapatkan koordinat yang akurat di dalam jendela game? Dan bagaimana cara mengirimkan tombol dengan lebih stabil?
Artikel ini menggunakan proses modifikasi skrip otomatis untuk Shui Hu Hero Online (水浒历险 Online) sebagai studi kasus, untuk menguraikan metode implementasi tombol latar, perhitungan koordinat, tombol pintas pengambilan mouse, dan pengiriman beberapa tombol.
Skrip di latar depan akan memaksa jendela game untuk muncul ke depan saat melakukan klik mouse atau mengirim tombol, mengganggu aktivitas lain yang sedang Anda lakukan. Tujuan dari operasi latar belakang adalah: saat skrip berjalan, Anda dapat terus menggunakan jendela lain, sementara jendela game tetap menerima perintah di latar belakang.
Di AHK, perintah kunci untuk operasi latar belakang adalah:
ControlSend: Mengirimkan tombol ke jendela tertentu tanpa mengaktifkannya.ControlClick: Mengirimkan klik mouse ke koordinat tertentu di jendela tertentu tanpa mengaktifkannya.ahk_id %TargetHwnd%Koordinat XY di dalam game berbeda dengan koordinat absolut layar. Saat jendela game dipindahkan atau diubah ukurannya, titik klik yang ditulis dengan koordinat absolut layar akan meleset.
Cara yang benar adalah menghitung "koordinat relatif dalam jendela":
X dalam game = X layar mouse - X sudut kiri atas jendela game
Y dalam game = Y layar mouse - Y sudut kiri atas jendela gameUntuk lebih akurat, gunakan sudut kiri atas area konten game (setelah dikurangi bilah judul dan bingkai) sebagai patokan, bukan sudut kiri atas seluruh jendela.
; Koordinat sudut kiri atas jendela game (harus diperoleh terlebih dahulu)
winX = 100
winY = 80
; Dapatkan koordinat layar mouse
GetCursorPos mouseX, mouseY
; Konversi ke koordinat dalam jendela game
gameX := mouseX - winX
gameY := mouseY - winYCatatan penting:
Pada tahap pengembangan, memasukkan koordinat secara manual sering merepotkan. Cara yang lebih efisien adalah: tekan sebuah tombol pintas untuk langsung mengisi koordinat posisi mouse saat ini ke dalam kolom GUI skrip.
; Daftarkan tombol pintas F1
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, Koordinat terambil: X%mx% Y%my%
SetTimer, RemoveTip, -2000
returnDengan cara ini, cukup arahkan mouse ke posisi target, tekan F1, dan koordinat akan otomatis terisi di kolom "Cari X / Cari Y". Anda dapat menetapkan tombol pintas yang berbeda ke kolom koordinat yang berbeda sesuai kebutuhan.
Skrip asli dirancang dengan empat tombol independen, masing-masing dengan waktu tunda sendiri. Namun, dalam game sebenarnya, sering kali diperlukan pengiriman dua tombol secara berurutan (misalnya, tekan tombol skill dulu baru tombol bantuan), lalu menunggu beberapa saat.
Arah modifikasi:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; Kirim grup tombol setiap N menit
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; Kirim setiap siklus
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}Ini adalah dilema paling umum dalam skrip game AHK:
| Metode | Kelebihan | Kekurangan |
|---|---|---|
| Dapat dihentikan kapan saja, tidak memblokir skrip, struktur jelas | Interval minimum sekitar 1 detik, tidak cocok untuk operasi frekuensi tinggi |
| Kontrol interval antar siklus yang presisi | Menghentikan skrip perlu mekanisme tambahan, mudah macet |
Jika game Anda memerlukan operasi dengan frekuensi per detik atau lebih lambat (misalnya, menggunakan skill berulang, buff terjadwal), SetTimer adalah pilihan yang lebih bersih. Jika Anda memerlukan kontrol presisi tingkat milidetik, gunakan loop Sleep dengan kondisi break.
PostMessage atau mencari pesan jendela lain.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick bisa meleset. Disarankan menggunakan game dalam mode jendela, dan set scaling tampilan ke 100%.Dari skrip latar depan sederhana menjadi sistem multi-tombol latar belakang, perubahan inti terletak pada: pemilihan perintah latar belakang (ControlSend / ControlClick), konversi koordinat dalam jendela, dan cara menggerakkan siklus utama. Contoh modifikasi yang disertakan dalam artikel ini dapat langsung diterapkan ke Shui Hu Hero Online atau skrip automasi game lain dengan kebutuhan serupa. Jika game Anda memiliki kombinasi tombol khusus atau kebutuhan klik koordinat, disarankan untuk memulai pengujian dari versi latar belakang yang paling sederhana, lalu menambahkan fitur secara bertahap.
Studio Global AI
Halaman ini berisi jawaban yang didukung sumber yang dapat Anda lanjutkan di dalam Studio Global.
Dengan AutoHotkey, klik mouse dan tekan tombol dalam game bisa dilakukan di latar belakang tanpa mengganggu jendela lain.
Dengan AutoHotkey, klik mouse dan tekan tombol dalam game bisa dilakukan di latar belakang tanpa mengganggu jendela lain. Menggunakan ControlSend dan ControlClick untuk menggantikan klik di latar depan, serta SetTimer untuk menggerakkan siklus utama, adalah arsitektur dasar skrip automasi game.