Script fecha quando entra na condição IF

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Pichol
Posts: 3
Joined: 11 Jun 2020, 10:16

Script fecha quando entra na condição IF

11 Jun 2020, 10:27

Bom dia a todos, este é meu primeiro post, li as regras e algumas dicas de como postar, peço desculpas se algo não está convergente com as regras.

O Problema é o seguinte, estou fazendo uma macro para um jogo que quando chega em certo nível tem que executar algumas condições, basicamente apertar enter, digitar algo, apertar enter novamente.

Ja fiz os testes e estou conseguindo fazer o programa identificar a imagem e entrar na condição if, o problema é que quando entra nesta condição o script fecha, ele some do menu próximo ao relógio. Fiz alguns testes, deixei a imagem que quero que entre na condição de IF aberta, se eu executar o programa, iniciar o script bem rapidamente ele executa as 5 primeiras linhas do IF e depois fecha, por favor poderiam me ajudar com este loop?

Agradeço antecipadamente pois este programa com o suporte do fórum é demais! :superhappy:

Code: Select all

 ^q::

FoundX = 0

Loop
{
ImageSearch, FoundX, FoundY, 0, 0, 2000, 2000, C:\Users\renan\OneDrive\Área de Trabalho\381.png

If (FoundX >0){
	Send, {tab}{Enter}
	sleep, 500
	Sendraw, /Reset
	Sleep, 500
	Send, {enter}
	sleep, 500
	send,{tab}{Enter}
	Sendraw, /a15000
	Sleep, 500
	Send, {enter}
	sleep, 500
	Send, {tab}{Enter}
	Sendraw, /f15000
	Sleep, 500
	Send, {enter}
	sleep, 500
	Send, {tab}{Enter}
	Sendraw, /e5000
	Sleep, 500
	Send, {enter}
	}
	Else {
	
		}
	}
	return
User avatar
Yakshongas
Posts: 591
Joined: 21 Jan 2020, 08:41
Facebook: Yakshongas

Re: Script fecha quando entra na condição IF

11 Jun 2020, 12:36

Code: Select all

^q::
    FoundX = 0
    Loop
    {
        ImageSearch, FoundX, FoundY, 0, 0, 2000, 2000, C:\Users\renan\OneDrive\Área de Trabalho\381.png
        If (FoundX > 0)
        {
            Send, {Tab}{Enter}
            Sleep, 500
            Sendraw, /Reset
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /a15000
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /f15000
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /e5000
            Sleep, 500
            Send, {Enter}
            Break
        }
        Else
        {
            Break
        }
    }
Return
Please mark your topics as solved if you don't need any further help. ✅

Need a little more help? Discord : Yakshongas#9893 🕹
User avatar
Gio
Posts: 1058
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Script fecha quando entra na condição IF

11 Jun 2020, 16:03

Boa tarde Pichol.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Não consegui reproduzir o problema relatado com o código que você postou. Tente rodar o código no bloco de notas, com a imagem em exibição na tela através do paint, mas sem que o jogo esteja aberto. O mesmo efeito relatado (interrupção abrupta) ocorre?
Pichol
Posts: 3
Joined: 11 Jun 2020, 10:16

Re: Script fecha quando entra na condição IF

15 Jun 2020, 12:30

Yakshongas wrote:

Code: Select all

^q::
    FoundX = 0
    Loop
    {
        ImageSearch, FoundX, FoundY, 0, 0, 2000, 2000, C:\Users\renan\OneDrive\Área de Trabalho\381.png
        If (FoundX > 0)
        {
            Send, {Tab}{Enter}
            Sleep, 500
            Sendraw, /Reset
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /a15000
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /f15000
            Sleep, 500
            Send, {Enter}
            Sleep, 500
            Send, {Tab}{Enter}
            Sendraw, /e5000
            Sleep, 500
            Send, {Enter}
            Break
        }
        Else
        {
            Break
        }
    }
Return
Obrigado, mas minha intenção é não entrar em break :D
Pichol
Posts: 3
Joined: 11 Jun 2020, 10:16

Re: Script fecha quando entra na condição IF

15 Jun 2020, 12:32

Gio wrote: Boa tarde Pichol.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Não consegui reproduzir o problema relatado com o código que você postou. Tente rodar o código no bloco de notas, com a imagem em exibição na tela através do paint, mas sem que o jogo esteja aberto. O mesmo efeito relatado (interrupção abrupta) ocorre?
Exatamente, fora do jogo não apresenta o erro, até mesmo com o jogo aberto identificando a imagem direto da tela porém com a janela do notepad aberta ele executa a condição IF, o problema é que dentro do game ele entra nesta condição.
User avatar
Gio
Posts: 1058
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Script fecha quando entra na condição IF

16 Jun 2020, 11:41

Bom dia Pichol.

Ok, vamos tentar entender onde está o problema então.

Primeiro: Você tem certeza absoluta de que o script está identificando a imagem na tela do jogo? Por exemplo, você experimentou colocar uma msgbox na primeira linha dentro do bloco {} que vem logo após o If (FoundX > 0) e ver se o script exibe a msgbox quando roda dentro do jogo?

:arrow: As vezes um jogo implementa uma funcionalidade que "torna a tela preta" para a visão do ImageSearch, mesmo que o jogador possa ver a imagem normalmente. Se for esse o caso, será necessário estudar outra forma de buscar a imagem.


Segundo: Você relatou que o ícone de H verde some quando o problema ocorre. Quando isso acontece, o script exibe alguma mensagem de erro ou simplesmente tem o seu processo finalizado?

:arrow: As vezes os jogos implementam códigos que impedem a automação ou o debugging, e esses códigos podem estar forçando a finalização do script. Se for este o caso, criar uma automação efetiva pode ser mais complicado do que parece, pois vai depender de como funciona a inteligência do código do jogo em detectar o script. Mas se este for mesmo o caso, eu na verdade recomendo que pense em parar por aí: muitas vezes os programadores implementam esse tipo de rotina para impedir a automatização do seu programa/jogo por questões de multiplayer e para evitar abusos. Se for este o caso, automatizar este jogo pode ser contra os termos de uso do jogo e até resultar em penalidades para você.

Mas se você tiver certeza absoluta de que não tem nada de errado em automatizar esse jogo (por sua própria conta e risco), pode tentar usar um script compilado (com um nome que não faça referência ao AutoHotkey) e ver se o jogo continua a fechar o novo programa. Se continuar, aí de fato a única solução seria dentro do hacking (engenharia reversa) mesmo, e isso nós não discutimos aqui.

:arrow: DICA: além do msgbox, que você pode colocar entre cada linha para saber exatamente em qual linha o script é terminado, você também pode utilizar-se dos comandos Listlines e ListVars para ajudar a encontrar problemas no seu script, pois eles exibem respectivamente as últimas linhas executadas (na ordem de execução delas) e o conteúdo atual de todas variáveis (e essas informações podem ser pesquisadas enquanto o script estiver em uma pausa através de um msgbox).

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 2 guests