Bom dia Jeffersonabreu.
Seja bem-vindo ao fórum da comunidade do AutoHotkey.
Vejo que o seu script utiliza uma linguagem da versão 2. Este versão ainda está em beta, portanto, pode ser que o que eu diga não funcione.
Mas acredito que a falta de confiabilidade na execução esteja na própria lógica da rotina. Veja bem:
O script usa uma hotkey
alt + w para chamar uma rotina que espera que você clique na janela do jogo e pressione F8. Quando você faz isso, ele coleta alguns dados da janela ativa (
acreditanto que o fato de você ter clicado na janela do jogo tenha efetivamente ativado-a sendo que o clique pode não ativar ou demorar para ativar a janela). Depois, ele opera nessa janela que estava ativa na hora do F8, mandando comandos de teclas com pausas entre eles
enquanto a janela ativa for a janela que estava ativa quando o F8 for pressionado. As pausas do comando Sleep são em milésimos de segundos, portanto,
Random(1,10) vai dar uma pausa sempre menor que 10 milésimos de segundo.
Pois bem. Pensando um pouco nessa rotina, posso ver como ela
pode funcionar para enviar os comandos de teclas a uma janela do jogo. Porém, vejo que para que o script funcione da forma esperada, ele depende de algumas coisas serem verdade (por exemplo, você tem que ter apertado F8 quando a janela do jogo estava efetivamente ativa).
Assim, para adicionar confiabilidade na execução do script, você terá que reescrevê-lo de forma a rotina não dependa dessas coisas.
Existem algumas formas mais confiáveis que você pode utilizar para coletar os dados da janela do jogo, como descobrir o nome da janela do jogo usando o Window Spy e depois programar a obtenção do WinID com base no nome certo, eliminado o passo do F8. Também teria que mudar loop while para uma rotina que fica aguardando a janela estar ativa e reinicia os comandos (ao invés de terminar a rotina abruptamente quando a janela muda) ou que checa se a janela está ativa e reinicia os comandos.
Acredito que vale a pena dar uma estudada nos comandos
WinActivate e
WinWaitActive, bem como
WinActive.
Se precisar de alguma ajuda com algum desses comandos, sinta-se livre para perguntar