; Spilvinduets øverste venstre hjørne (skal hentes først)
winX = 100
winY = 80
; Hent musens skærmkoordinater
GetCursorPos mouseX, mouseY
; Omregn til spilvinduets interne koordinater
gameX := mouseX - winX
gameY := mouseY - winYVigtige bemærkninger:
Under udvikling er det besværligt manuelt at indtaste koordinater. En mere effektiv metode: Tryk på en tast, så musens aktuelle position automatisk indsættes i scriptets GUI-felter.
; Registrer hotkey F1
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, Koordinater fanget: X%mx% Y%my%
SetTimer, RemoveTip, -2000
returnPå den måde flytter du musen til den ønskede position, trykker F1, og koordinaterne indsættes automatisk i felterne "Søg X / Søg Y". Du kan tildele forskellige taster til forskellige koordinatfelter efter behov.
Det originale script havde fire individuelle taster, hver med sin egen forsinkelse. Men i praksis har du ofte brug for at sende to taster i træk (f.eks. først en færdighedstast, så en hjælpetast), før du venter et stykke tid.
Ændringsretning:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; Send tastegruppe hvert N'te minut
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; Send tastegruppe hver cyklus
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}Dette er det mest almindelige krydsfelt i AHK-spilscripts:
| Metode | Fordele | Ulemper |
|---|---|---|
| Kan stoppes når som helst, blokerer ikke scriptet, klar struktur | Minimumsinterval ca. 1 sekund, ikke egnet til højfrekvente handlinger |
| Præcis kontrol over hver cyklus' interval | Kræver ekstra mekanisme til at stoppe, kan nemt fryse |
Hvis dit spil kræver handlinger hvert sekund eller langsommere (f.eks. gentagne færdigheder, jævnlig buff-opdatering), er SetTimer det renere valg. Hvis du har brug for millisekund-præcis kontrol, bør du bruge en Sleep-løkke med en break-betingelse.
PostMessage eller finde andre vinduesbeskeder.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick's koordinater forskydes. Anbefal at bruge spillet i vinduestilstand og sæt skaleringsindstillingen til 100 %.Kernen i at ombygge et frontend-script til et baggrundssystem med flere tastegrupper ligger i valget af baggrundskommandoer (ControlSend / ControlClick), omregning af koordinater inde i vinduet samt drivmekanismen for hovedløkken. De medfølgende ændringseksempler kan direkte anvendes på Water Margin Online eller andre spil med lignende behov for automatisering. Har dit spil særlige tastekombinationer eller koordinatklik, anbefales det at starte med en minimal, fungerende baggrundsversion og derpå gradvist tilføje funktioner.