Executar 2 ImageSearch SE o 1 ImageSearch não estiver presente Topic is solved

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

Moderator: Gio

User avatar
Hologram
Posts: 140
Joined: 06 May 2020, 16:47

Executar 2 ImageSearch SE o 1 ImageSearch não estiver presente

03 Jun 2020, 07:37

Eu Tava Tentando Dar Uma Melhorada No Nível Do Scrit E Eliminar Um Pouco Uma Massa De Buttons Que Fiz kk, Ai To Tentando Juntar O Máximo De Linhas Possiveis Para Serem Executadas Por Uma CheckBox ( Desde Que Envolvam O Mesmo Conteudo É Claro..)

Problema: Como Diz O Titulo Como Eu Poderia Fazer Pro 2 Image Search Rodar Somente "SE" O Primeiro Não Estiver Presente?

Código Em Desenvolvimento ( não liga que ainda não coloquei um OFF pro Set Timer, depois coloco)

Code: Select all

Gui, Add, Button, x0 y0 w85 h25 gMENU_FISH, Fishing ; Botao Principal
Gui, Show, w430 h95, Test ; Tela Inicial
return ; Fim do Menu Princiap

MENU_FISH: ; Botao Criado Na Primeira Linha
Gui, New  ; Nova Gui
Gui, Show, w530 h200, Auto-Fishing ; Tamanho e Nome Da GUI

Gui, Add, Edit, x155 y111 vFishing w25 h15 Limit3 Uppercase ; Tecla Que Rodara Ba 2 Parte Do Script Caso Necessario
Gui, Add, CheckBox, gFISHING vFish x300 y111, ON/OFF ; Pra Ligar E Desligar o Script
Gui, Add, Text, x101 y111, Jogar vara ; Texto Simples
return

FISHING: ; Botao Criado Na CheckBox
Gui, submit, nohide ;...
SetTimer, EXECUTAR_FISHING, 100 ; Set Timer Juntamente Com Novo Botao
return ; Fim Do Botao Da CheckBox

EXECUTAR_FISHING: ; Botao Criado Junto Ao Set Timer
;
;Primeira Parte 
;
Gui, submit, nohide ; ...
If (Fish = 1) ; Variavel Relacionada A CheckBox
{
	Gui, submit, nohide ; ...
	CoordMode, Mouse, Window ; Mouse Funcionar Somente Na Janela Especifica
	ACHOU_A_IMAGEM := 0 ; Uma Nova Varivel iniciada em 0 criada aqui 
	ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/vara.png ; Procurar Se A Vara Ja Esta Na Agua
	If (ErrorLevel = 0) ; Se A Imagem A Cima For Encontrada Irá Ativar Oq Estiver Entre Os Colchetes Abaixo
	{
		ACHOU_A_IMAGEM := 2 ; A Variavel De Numero 2 é designada para o "ACHOU_A_IMAGEM"
	}


;
; Segunda Parte
;
	Gui, submit, nohide ; ...
	CoordMode, Mouse, Window ; Mouse Funcionar Somente Na Janela Especifica
	ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/agua.png ; Acaso A Primeira Imagem Não Esteja Presente Na Tela Devera Iniciar A Procura Pela Agua
	If (ErrorLevel = 0) ; ; Se A Imagem A Cima For Encontrada Irá Ativar Oq Estiver Entre Os Colchetes Abaixo
	{
		ACHOU_A_IMAGEM := 1 ; A Variavel De Numero 1 é designada para o "ACHOU_A_IMAGEM"
	}
	If (ACHOU_A_IMAGEM  = 1) ; No Fim Se A Variavel De Numero 1 Estiver Ativada Esta Parte Do Script Será Ativada1 (Tudo Entre Os Colchetes)
	{
		Send, {%Fishing%} ; Tecla Enviada Pelo Edit 
		X_Um_Pouco_Mais_A_Esquerda := PosX + 0 ; Pra Opcionalmente Jogar O Mouse Mais A Direita Ou Esquerda Da Imagem Encontrada
		Y_Um_Pouco_Mais_Abaixo := PosY + 0 ; Pra Opcionalmente Jogar O Mouse Mais A Cima Ou Baixo Da Imagem Encontrada
		MouseMove, %X_Um_Pouco_Mais_A_Esquerda%, %Y_Um_Pouco_Mais_Abaixo% ; Joga O Mouse Na Posição Exata Da Imagem
		Mouseclick ; Click Normal Do Mouse ( Botao Esquerdo)
	}
	else if (ACHOU_A_IMAGEM  = 2) ; No Fim Se A Variavel De Numero 1 Estiver Ativada Esta Parte Do Script Será Ativada1 (Tudo Entre Os Colchetes)
	{
		MsgBox, A vara ja esta ativada portanto não devera ser executada a segunda parte do script! ; Mensagem Acaso A Vara Ja Esteja Na Agua
	}
}
return
Attachments
agua.png
agua.png (83 Bytes) Viewed 898 times
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Executar 2 ImageSearch SE o 1 ImageSearch não estiver presente  Topic is solved

03 Jun 2020, 11:18

Bom dia Hologram.

Uma grande parte dos comandos utiliza a variável embutida ErrorLevel para indicar se houve algum erro na execução (ou para identificar qual o resultado do comando quando vários resultados são possíveis). O ImageSearch é um dos comandos que faz uso dessa variável.

O que você deve ter em mente em relação à variável ErrorLevel é que, como ela serve para muitos comandos diferentes, ela só é útil para um comando alvo se for utilizada logo após a execução dele. Mas por sorte, se você aproveitar esse momento, você pode "salvar" os estados dessa variável para uso futuro.


:arrow: No código abaixo, veja os comentários nas linhas adicionadas:

Code: Select all

EXECUTAR_FISHING: 
;
;Primeira Parte 
;
Gui, submit, nohide ; ...
If (Fish = 1)
{
	Gui, submit, nohide ; ...
	CoordMode, Mouse, Window
	ACHOU_A_IMAGEM := 0 
	
	ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/vara.png 
	If (ErrorLevel = 0) ; AS LINHAS ABAIXO ESTÃO CONDICIONADAS AO RESULTADO DE ERRORLEVEL
	{
		PRIMEIRO_IMAGESEARCH_FUNCIONOU := 1 ; SALVAMOS O RESULTADO DE ERROLEVEL PARA USO FUTURO CRIANDO VARIÁVEL CONDICIONADA AO ERRORLEVEL. ERRORLEVEL MUDARÁ APÓS OUTROS COMANDOS, MAS ESSA VARIÁVEL QUE SALVOU SEU ESTADO PERMANECERÁ COM SEU VALOR.
		ACHOU_A_IMAGEM := 2
	}

;
; Segunda Parte
;

	Gui, submit, nohide ; ...
	CoordMode, Mouse, Window
	If (PRIMEIRO_IMAGESEARCH_FUNCIONOU != 1) ; AGORA, PODEMOS TESTAR A VARIÁVEL SALVA E CONDICIONAR O SEGUNDO IMAGESEARCH AO CONTEÚDO DELA.
	{
		ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/agua.pngIniciar A Procura Pela Agua
		If (ErrorLevel = 0)
		{
			ACHOU_A_IMAGEM := 1
		}
	}
	
	If (ACHOU_A_IMAGEM  = 1) 
	{
		Send, {%Fishing%} ; Tecla Enviada Pelo Edit 
		X_Um_Pouco_Mais_A_Esquerda := PosX + 0 
		Y_Um_Pouco_Mais_Abaixo := PosY + 0 
		MouseMove, %X_Um_Pouco_Mais_A_Esquerda%, %Y_Um_Pouco_Mais_Abaixo% 
		Mouseclick
	}
	else if (ACHOU_A_IMAGEM  = 2) 
	{
		MsgBox, A vara ja esta ativada portanto não devera ser executada a segunda parte do script!
	}
}
return

:arrow: OBS: O operador ! significa "NÃO", de modo que VAR1 != VAR2 significa "VAR1 NÃO É IGUAL a VAR2". Com este operador também é possível verificar a falsidade de um parêntesis inteiro. Exemplo: If !(Var1 = Var2) significa "se Var1 NÃO for igual a Var2". É um operador bastante útil, mesmo que seja possível escrever negativas sem ele (usando Else por exemplo).

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 38 guests