; Souřadnice levého horního rohu herního okna (je třeba je nejprve získat)
winX = 100
winY = 80
; Získání souřadnic myši na obrazovce
GetCursorPos mouseX, mouseY
; Přepočet na souřadnice uvnitř herního okna
gameX := mouseX - winX
gameY := mouseY - winYDůležité poznámky:
Během vývoje je nepraktické zadávat souřadnice ručně. Efektivnější je použít klávesovou zkratku, která přímo vloží aktuální polohu myši do polí GUI skriptu.
; Registrace klávesové zkratky F1
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, Souřadnice načteny: X%mx% Y%my%
SetTimer, RemoveTip, -2000
returnStačí umístit myš na cílovou pozici, stisknout F1 a souřadnice se automaticky vyplní do polí „Hledat X / Hledat Y“. Můžete si podle potřeby navázat různé klávesové zkratky na různá pole pro souřadnice.
Původní skript měl čtyři nezávislá tlačítka, každé s vlastním zpožděním. V praxi je však často potřeba odeslat dvě klávesy za sebou (např. nejprve klávesu pro dovednost a poté klávesu pro pomocný předmět) a teprve poté čekat.
Směr úprav:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; Odeslat skupinu kláves každých N minut
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; Odeslat při každém cyklu
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}Toto je nejčastější dilema při tvorbě herních skriptů v AHK:
| Způsob | Výhody | Nevýhody |
|---|---|---|
| Lze kdykoli zastavit, neblokuje skript, přehledná struktura | Minimální interval cca 1 sekunda, nevhodný pro vysokofrekvenční operace |
| Přesná kontrola nad intervalem mezi cykly | Zastavení skriptu vyžaduje dodatečné mechanismy, snadno se zacyklí |
Pokud vaše hra vyžaduje operace každou sekundu nebo pomaleji (např. opakované používání dovedností, pravidelné přidávání buffů), je SetTimer čistší volbou. Pokud potřebujete milisekundovou přesnost, měli byste použít smyčku Sleep s podmínkou break.
PostMessage nebo hledat jiné způsoby odesílání zpráv.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick mohou být posunuté. Doporučuje se používat okenní režim hry a nastavit měřítko zobrazení na 100 %.Přeměna jednoduchého skriptu běžícího v popředí na systém s více skupinami kláves na pozadí spočívá v několika klíčových změnách: výběr příkazů pro pozadí (ControlSend / ControlClick), výpočet relativních souřadnic uvnitř okna a volba způsobu řízení hlavní smyčky. Přiložené příklady úprav lze přímo aplikovat na skripty pro Water Margin Online nebo jiné hry s podobnými požadavky na automatizaci. Pokud vaše hra vyžaduje speciální kombinace kláves nebo klikání na souřadnice, doporučujeme začít testováním s minimální funkční verzí na pozadí a postupně přidávat další funkce.