Dúvida sobre definir prioridades no script. Topic is solved

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

Moderator: Gio

josueh
Posts: 11
Joined: 08 Feb 2020, 06:07
Contact:

Dúvida sobre definir prioridades no script.

10 Feb 2020, 16:07

Olá, estou aprendendo a fazer scripts no AutoHotkey.

Quero criar um script para um jogo, ele precisa usar magias de cura e poções. Sendo assim optei por usar o SetTimer, porque não quero que o tempo de espera de uma coisa interfira na outra.

O problema que estou tentando resolver é o seguinte, tenho duas magias de cura e duas poções diferentes (uma forte e uma fraca). Estou usando os pixels para identificar quando usa-las. Quero dar prioridade a magia e poção forte.

Por exemplo: ao usar a cura forte quero que o script verifique se precisa usa-la novamente. Caso não seja necessário ele verifica se precisa usar a cura fraca. A mesma coisa com as poções.

Ou seja, só quero que ele tente usar a cura fraca caso não seja necessário usar a forte.

Pesquisei bastante, mas não consigo achar uma forma de fazer isso. Mudei varias vezes, mas ou ele acaba usando a cura forte e a fraca junto ou só usa a forte.


Code: Select all

SetTimer, Cura, 1000 

SetTimer, Pot, 1000 

Return 

  

Cura: 

PixelGetColor, Color,1808, 393 

If color = 0x8B4F33 

Send {F10 down} 

Send {F10 up} 

  

PixelGetColor, Color,1832, 392 

If color = 0x944B2A 

Send {F9 down} 

Send {F9 up} 

Return 

  

 Pot: 

  

PixelGetColor, Color, 1796,394 

If color = 0x7E4E39 

Send {F12 down} 

Send {F12 up} 

  

PixelGetColor, Color,1800, 410 

If color = 0x7D4A33 

Send {F11 down} 

Send {F11 up} 

Return
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Dúvida sobre definir prioridades no script.

10 Feb 2020, 18:03

Boa tarde Josueh.

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

A cura forte seria o F10 e a cura fraca o F9 ou o contrário?

E o Pot forte seria o F12 e o Pot fraco o F11 ou o contrário?
josueh
Posts: 11
Joined: 08 Feb 2020, 06:07
Contact:

Re: Dúvida sobre definir prioridades no script.

10 Feb 2020, 18:10

Coloquei as fortes primeiro

Cura forte F10

Poção forte F12
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Dúvida sobre definir prioridades no script.

10 Feb 2020, 18:22

Certo.

Pelo que entendi no seu script, no caso da rotina "cura" ele buscaria a cor da barra vazia mais à esquerda na barra (posição X 1808) e se encontrar, efetua a cura forte. DEPOIS, busca a cor da barra vazia mais à direita na barra (posição X 1832) e se encontrar, efetua a cura fraca. Seria isso? Se for, faz sentido.

:arrow: Porém ele está buscando duas cores BGR diferentes (0x8B4F33 e 0x944B2A). Porque seria isso? O que cada cor representa de fato?

Com relação ao pot, a mesma coisa: está buscando 2 cores diferentes.

Tem como vc postar um printscreen dessas barras que está monitorando?
josueh
Posts: 11
Joined: 08 Feb 2020, 06:07
Contact:

Re: Dúvida sobre definir prioridades no script.

10 Feb 2020, 18:48

Da uma olhada nessa imagem: https://imgur.com/a/x14g1jl

Tem duas barras a de vida (vermelha) e de mana (azul), quando chega no ponto que eu determinei, que esta marcado em roxo o pixel fica cinza. Esse é o indicativo que precisa curar. As cores tem nomes diferentes porque como voce pode ver na imagem aproximada, cada pixel tem uma cor um pouquinho diferente e de longe parecem ser todas iguais.
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Dúvida sobre definir prioridades no script.  Topic is solved

11 Feb 2020, 09:17

Bom, a lógica do seu script de cura está assim no momento:

1. Primeiro vê o pixel mais à esquerda da barra (posição X menor) e se estiver cinza, usa a cura maior (F10).
2. Depois (independente do que aconteceu acima) vê o pixel mais à direita (posição X maior) e se estiver cinza, usa a cura menor (F9).

Agora vamos à sua pergunta.
Ou seja, só quero que ele tente usar a cura fraca caso não seja necessário usar a forte.
... mas ou ele acaba usando a cura forte e a fraca junto ou só usa a forte.
Você precisa condicionar a parte do seu código que aplica a cura fraca à não-execução da parte que aplica a cura forte. Isso pode ser feito com uma variável e uma condicional.

Exemplo:

Code: Select all

SetTimer, Cura, 1000 
Return 

Cura: 
CUROU_FORTE := 0
PixelGetColor, Color,1808, 393 
If color = 0x8B4F33 
{
	Send {F10 down} 
	Send {F10 up} 
	CUROU_FORTE := 1
}
If (CUROU_FORTE = 0)
{
	PixelGetColor, Color,1832, 392 
	If color = 0x944B2A 
	Send {F9 down} 
	Send {F9 up} 
}
Return 

:arrow: Então basicamente fizemos o seguinte acima: Iniciamos a rotina da cura definindo uma variável (CUROU_FORTE) que iniciará no valor 0 (zero). Depois, efetuados a busca da cor e condicionamos à cor ser encontrada tanto o envio da tecla F10 quanto a troca do valor variável CUROU_FORTE de 0 para 1. Isso significa que se a cor for encontrada (e somente nesse caso), o valor da variável CUROU_FORTE se tornará 1.

Em seguida condicionamos todo bloco de códigos da da cura fraca à variável CUROU_FORTE conter ainda o valor 0. Isso significa que se o bloco de códigos da cura forte rodou na execução atual da rotina "Cura", ela não vai mais conter esse valor e portanto o bloco da fraca NÃO vai executar. Em contrapartida, se o bloco da cura forte NÃO rodou, então a variável CUROU_FORTE vai continuar com o valor 0 (visto que no início de toda execução da rotina "Cura" ela recebe o valor 0), portanto nesse caso o bloco de códigos da cura fraca VAI rodar.

Espero que tenha ficado claro. O segredo é apenas o uso das condicionais e dos blocos de códigos (quando você quer que mais de uma linha esteja atrelada à uma condicional, você deve delimitar um bloco de códigos logo abaixo dessa condicional. O bloco de códigos é composto por todas as linhas que estejam dentro dos símbolos de chaves (ou seja, entre { e }.
josueh
Posts: 11
Joined: 08 Feb 2020, 06:07
Contact:

Re: Dúvida sobre definir prioridades no script.

11 Feb 2020, 09:29

Entendi, com esse sistema de variáveis vai ficar bem mais facil. Eu tinha pesquisado sobre, mas não saberia aplicar no meu script, agora ja sei o que fazer.

Muito obrigado pela ajuda Gio! :D
josueh
Posts: 11
Joined: 08 Feb 2020, 06:07
Contact:

Re: Dúvida sobre definir prioridades no script.

11 Feb 2020, 10:27

Oi, voltei para dizer que funcionou perfeitamente.

Obrigado novamante. :dance:
marlontomazi
Posts: 4
Joined: 09 Jul 2020, 07:15

Re: Dúvida sobre definir prioridades no script.

09 Jul 2020, 11:22

Josue, está funcionando ainda?

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 45 guests