Com AutoHotkey, você pode transformar cliques e teclas do mouse em operações em segundo plano, sem atrapalhar o uso de outras janelas. Usar ControlSend e ControlClick em vez de comandos de primeiro plano, combinado com um loop principal baseado em SetTimer, é a base para scripts de automação de jogos.
Resposta de pesquisa

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.
Muitos jogadores tentam usar AutoHotkey (AHK) para criar scripts de automação e economizar tempo em tarefas repetitivas. No entanto, surgem desafios comuns: como fazer o script rodar em segundo plano sem interferir em outras atividades? Como obter as coordenadas precisas dentro da janela do jogo? E como enviar teclas de forma mais estável?
Este artigo usa o processo de modificação de um script de automação para o jogo Shui Hu Zhuan Online (também conhecido como Water Margin Online) como estudo de caso, detalhando a implementação de teclas em segundo plano, cálculo de coordenadas, teclas de atalho para captura do mouse e envio de múltiplos grupos de teclas.
Scripts em primeiro plano, ao executar cliques do mouse ou enviar teclas, forçam a janela do jogo para a frente, interrompendo o que você está fazendo. O objetivo da operação em segundo plano é: enquanto o script roda, você pode continuar usando outras janelas, e a janela do jogo recebe os comandos em segundo plano.
No AHK, os comandos chave para operação em segundo plano são:
ControlSend: Envia teclas para uma janela específica sem ativá-la.ControlClick: Envia um clique do mouse para coordenadas específicas de uma janela sem ativá-la.ahk_id %TargetHwnd%As coordenadas XY dentro do jogo são diferentes das coordenadas absolutas da tela. Quando a janela do jogo é movida ou redimensionada, os cliques baseados em coordenadas absolutas da tela se perdem.
A maneira correta é calcular as "coordenadas relativas dentro da janela":
X no jogo = X do mouse na tela - X do canto superior esquerdo da janela
Y no jogo = Y do mouse na tela - Y do canto superior esquerdo da janelaPara maior precisão, use o canto superior esquerdo da área de conteúdo do jogo (excluindo a barra de título e as bordas) como referência, em vez do canto superior esquerdo de toda a janela.
; Coordenadas do canto superior esquerdo da janela do jogo (precisa ser obtido primeiro)
winX = 100
winY = 80
; Obtém a posição do mouse na tela
GetCursorPos mouseX, mouseY
; Converte para coordenadas dentro da janela do jogo
gameX := mouseX - winX
gameY := mouseY - winYAtenção:
Durante o desenvolvimento, inserir coordenadas manualmente é trabalhoso. Uma maneira mais eficiente é: pressionar uma tecla de atalho e preencher diretamente as coordenadas atuais do mouse nos campos da GUI do script.
; Registra a tecla de atalho F1
Hotkey, F1, GetMousePos
return
GetMousePos:
MouseGetPos, mx, my
GuiControl,, FindX, %mx%
GuiControl,, FindY, %my%
ToolTip, Coordenada capturada: X%mx% Y%my%
SetTimer, RemoveTip, -2000
returnAssim, basta mover o mouse para a posição desejada e pressionar F1. As coordenadas serão automaticamente inseridas nos campos "Encontrar X / Encontrar Y". Você pode associar diferentes teclas de atalho a diferentes campos de coordenadas, conforme necessário.
O script original tinha quatro teclas individuais, cada uma com seu próprio tempo de atraso. No entanto, em jogos reais, muitas vezes é necessário enviar duas teclas em sequência (por exemplo, pressionar uma tecla de habilidade e depois uma tecla auxiliar) e só então esperar um determinado período.
Direção da modificação:
SendKeyGroup(useGroup, keyA, keyB, waitMs, minute) {
global TimerCount, TargetHwnd
if (useGroup != 1)
return
if (minute > 0 and Mod(TimerCount, minute * 60) = 0) {
; Envia o grupo de teclas a cada N minutos
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
if (minute = 0) {
; Envia o grupo a cada ciclo
ControlSend, , {%keyA%}, ahk_id %TargetHwnd%
Sleep, 100
ControlSend, , {%keyB%}, ahk_id %TargetHwnd%
}
}Esta é a escolha mais comum em scripts de automação de jogos com AHK:
| Método | Vantagens | Desvantagens |
|---|---|---|
| Pode ser parado a qualquer momento, não bloqueia o script, estrutura clara | Intervalo mínimo de cerca de 1 segundo, não é adequado para operações de alta frequência |
| Permite controle preciso do intervalo entre ciclos | Requer mecanismo extra para parar o script, pode travar facilmente |
Se o seu jogo precisa de operações a cada segundo ou mais lentas (como usar habilidades repetidamente, aplicar buffs periodicamente), SetTimer é uma escolha mais limpa. Se você precisar de controle preciso em milissegundos, use o loop com Sleep e uma condição break.
PostMessage ou outras técnicas de envio de mensagens.{F1}, {Enter}.MouseGetPos, , , TargetHwndControlClick podem ficar deslocadas. Recomenda-se usar o jogo em modo janela e definir o fator de escala do Windows como 100%.A transformação de um script simples de primeiro plano para um sistema de múltiplos grupos de teclas em segundo plano envolve três mudanças principais: o uso de comandos em segundo plano (ControlSend / ControlClick), o cálculo de coordenadas relativas à janela e a escolha do método de condução do loop principal. Os exemplos de modificação fornecidos neste artigo podem ser aplicados diretamente a scripts de automação para Shui Hu Zhuan Online ou outros jogos com necessidades semelhantes. Se o seu jogo tiver combinações especiais de teclas ou necessidade de cliques em coordenadas específicas, comece testando uma versão mínima viável em segundo plano e adicione funcionalidades incrementalmente.
Studio Global AI
Esta página inclui uma resposta baseada na fonte que você pode continuar em Studio Global.
Com AutoHotkey, você pode transformar cliques e teclas do mouse em operações em segundo plano, sem atrapalhar o uso de outras janelas.
Com AutoHotkey, você pode transformar cliques e teclas do mouse em operações em segundo plano, sem atrapalhar o uso de outras janelas. Usar ControlSend e ControlClick em vez de comandos de primeiro plano, combinado com um loop principal baseado em SetTimer, é a base para scripts de automação de jogos.
Aprenda a calcular coordenadas dentro da janela do jogo e a criar teclas de atalho para capturar a posição do mouse e preencher campos do script automaticamente.