Mit AutoHotkey lassen sich Mausklicks und Tasteneingaben in Spielen in den Hintergrund verlegen, ohne andere Fenster zu stören. ControlSend und ControlClick ersetzen Vordergrundklicks; die Hauptschleife wird mit SetTimer gesteuert – das ist die grundlegende Architektur für Spiel Automatisierungsskripte.
Forschungsantwort

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.
Viele Spieler greifen zu AutoHotkey (AHK), um sich wiederholende Aktionen zu automatisieren. Häufige Hürden sind: Wie bringt man das Skript dazu, im Hintergrund zu laufen, während man anderen Aufgaben nachgeht? Wie ermittelt man präzise die Koordinaten innerhalb eines Spielfensters? Und wie sendet man Tasteneingaben stabil und zuverlässig?
Dieser Artikel nimmt die Anpassung eines Automatisierungsskripts für „Water Margin Online“ (Shui Hu Li Xian) als Fallbeispiel und erläutert Schritt für Schritt die Implementierung von Hintergrund-Tastendrücken, Koordinaten-Berechnung, Maus-Positionserfassung per Hotkey und dem Senden von Tastengruppen.
Vordergrund-Skripte forcieren beim Ausführen von Mausklicks oder Tasteneingaben das Spielfenster in den Vordergrund und unterbrechen so Ihre aktuelle Arbeit. Das Ziel von Hintergrundoperationen ist es, dass das Skript läuft, während Sie andere Fenster nutzen können – das Spielfenster empfängt die Befehle im Hintergrund, ohne in den Vordergrund geholt zu werden.
Die entscheidenden Befehle in AHK für Hintergrundoperationen sind:
ControlSend: Sendet Tastenanschläge an ein bestimmtes Fenster, ohne es zu aktivieren.ControlClick: Sendet Mausklicks an bestimmte Koordinaten innerhalb eines Fensters, ohne es zu aktivieren.ahk_id %TargetHwnd%Die XY-Koordinaten im Spiel unterscheiden sich von den absoluten Bildschirmkoordinaten. Wenn das Spielfenster verschoben oder in der Größe verändert wird, führen fest codierte absolute Bildschirmkoordinaten zu Fehlklicks.
Die korrekte Methode ist die Berechnung von relativen Koordinaten innerhalb des Fensters:
Spiel-interne X = Maus-Bildschirm-X - X der oberen linken Ecke des Spielfensters
Spiel-interne Y = Maus-Bildschirm-Y - Y der oberen linken Ecke des SpielfenstersFür höhere Präzision sollte die obere linke Ecke des Spiel-Client-Bereichs (ohne Titelleiste und Rahmen) als Bezugspunkt dienen, nicht die des gesamten Fensters.
; Koordinaten der oberen linken Ecke des Spielfensters (müssen zuvor ermittelt werden)
winX = 100
winY = 80
; Aktuelle Mausposition auf dem Bildschirm abrufen
GetCursorPos mouseX, mouseY
; Umrechnung in Koordinaten innerhalb des Spielfensters
gameX := mouseX - winX
gameY := mouseY - winYWichtige Hinweise:
Während der Entwicklung ist das manuelle Eingeben von Koordinaten mühsam und fehleranfällig. Effizienter ist es, einen Hotkey zu verwenden, der die aktuelle Mausposition direkt in die entsprechenden Felder der GUI des Skripts einträgt.
; Hotkey F1 registrieren
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, Koordinaten erfasst: X%mx% Y%my%
SetTimer, RemoveTip, -2000
returnSo können Sie die Maus an die gewünschte Stelle bewegen, F1 drücken, und die Koordinaten werden automatisch in die Felder „Finde X“ und „Finde Y“ eingetragen. Sie können bei Bedarf verschiedene Hotkeys für unterschiedliche Koordinatenfelder verwenden.
Das ursprüngliche Skript sah vier unabhängige Tasten vor, jede mit eigener Verzögerung. Im tatsächlichen Spiel besteht jedoch häufig die Notwendigkeit, zwei Tasten hintereinander zu senden (z. B. zuerst eine Fertigkeit, dann eine Hilfstaste), bevor eine Wartezeit eingelegt wird.
Änderungsrichtung:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; Sende die Tastengruppe alle N Minuten
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; Sende die Tastengruppe in jedem Schleifendurchlauf
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}Dies ist die häufigste Entscheidung bei der Entwicklung von AHK-Spielleitfäden:
| Methode | Vorteile | Nachteile |
|---|---|---|
| Jederzeit stoppbar, blockiert das Skript nicht, klare Struktur | Minimale Verzögerung von etwa 1 Sekunde, nicht geeignet für hochfrequente Aktionen |
| Präzise Kontrolle der Verzögerung zwischen den Durchläufen | Erfordert zusätzliche Mechanismen zum Stoppen, kann das Skript blockieren |
Wenn Ihr Spiel Aktionen im Sekundentakt oder langsamer erfordert (z. B. wiederholtes Anwenden von Fertigkeiten, regelmäßiges Buffen), ist SetTimer die sauberere Wahl. Falls Sie eine millisekundengenaue Steuerung benötigen, verwenden Sie eine Schlaf-Schleife mit einer break-Bedingung.
PostMessage verwenden oder nach anderen Fensternachrichten suchen.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick verschoben sein. Empfehlung: Spiel im Fenstermodus und Anzeigeskalierung auf 100 %.Die Umstellung von einem einfachen Vordergrund-Skript auf ein Hintergrundsystem mit mehreren Tastengruppen erfordert im Kern drei Änderungen: die Wahl der richtigen Hintergrundbefehle (ControlSend / ControlClick), die korrekte Umrechnung von Fensterkoordinaten und die Festlegung der Hauptschleifensteuerung (Timer vs. Schlaf-Schleife). Die hier gezeigten Code-Beispiele können direkt an „Water Margin Online“ oder andere Spiele mit ähnlichen Automatisierungsanforderungen angepasst werden. Wenn Ihr Spiel spezielle Tastenkombinationen oder Koordinatenklicks erfordert, empfiehlt es sich, mit einer minimalen, funktionsfähigen Hintergrundversion zu beginnen und die Funktionen schrittweise zu erweitern.
Zusätzlicher Hinweis zur Koordinaten-Ermittlung: Die GUI des bereitgestellten Skripts enthält Schaltflächen wie „Speichern“, die die aktuelle Mausposition direkt in die entsprechenden Koordinatenfelder (X1/Y1, X2/Y2, FindX/FindY) eintragen. Dies erleichtert die Einrichtung des Skripts erheblich, da Sie die Werte nicht manuell eingeben müssen. Die gespeicherten Koordinaten werden dann bei der Ausführung des Skripts für die Hintergrundklicks verwendet.
Studio Global AI
Diese Seite enthält eine quellengestützte Antwort, die Sie in Studio Global fortsetzen können.
Mit AutoHotkey lassen sich Mausklicks und Tasteneingaben in Spielen in den Hintergrund verlegen, ohne andere Fenster zu stören.
Mit AutoHotkey lassen sich Mausklicks und Tasteneingaben in Spielen in den Hintergrund verlegen, ohne andere Fenster zu stören. ControlSend und ControlClick ersetzen Vordergrundklicks; die Hauptschleife wird mit SetTimer gesteuert – das ist die grundlegende Architektur für Spiel Automatisierungsskripte.