Olá, preciso de uma ajuda com um script, não consigo pensar em uma forma de faze-lo...
Então, o que eu estou querendo fazer é o seguinte...
1° Quero que o script use o ImageSearch para verificar uma imagem na tela, isso eu já tenho pronto..
2° Após a verificação da Imagem ele executa uma Hotkey, até ai é moleza..
o problema começa agora...
Após verificar a Imagem ele executa a hotkey, porém, pra executar essa hotkey novamente eu teria que esperar 10 segundos e dentro desses 10 segundos eu quero que ele mude e use outra Hotkey,
Exemplo:
Script Verificou a imagem e executou a Hotkey (F1), verificou novamente, porém, a hotkey (F1) ta em cooldown 10sec, então executar Hotkey(F2)...
Se alguém puder me iluminar.... agradeço
Verificação de tempo após uma action
Moderator: Gio
Re: Verificação de tempo após uma action
Bom dia Caiomesq.
Você pode usar a variável embutida A_tickCount para isso. Ela contém o número aproximado de milisegundos desde a inicialização do sistema, logo, você pode:
1. Salvar o valor dela em algum momento da execução em outra variável
2. Substrair a qualquer tempo o valor dela (que é sempre atualizado) de qualquer das variáveis salvas para encontrar a diferença de tempo em milisegundos entre aquele momento e o momento atual.
Um exemplo básico:
No script acima veja que nós não salvamos o tempo do sleep em variável nenhuma, logo, o resultado obtido adveio exclusivamente da diferença entre os valores da variável A_tickCount no início da execução e após a execução. Mas como sabemos que o sleep foi de 5 segundos, podemos comprovar que de fato o cálculo das variáveis é bastante preciso. Agora vamos aplicar isso em um processo diferente, no qual não sabemos o tempo que vai demorar, mas sabemos que teremos a informação do mesmo jeito no final do processo:
Portanto, no script acima, o tempo exibido na segunda msgbox é de fato o tempo que o script levou para incrementar uma variável 5 milhões de vezes (sem usar SetBatchLines, -1). Viu como foi possível contar o tempo de um processo usando a variável embutida A_tickCount?
OBS: Em ambos os scripts a divisão por 1000 é necessária porque o tempo é contado em milisegundos (milésimos de segundo) e queremos exibir a informação em segundos.
Agora vamos usar isso para implementar o esquema de "cooldown" de 5 segundos em uma hotkey...
No script abaixo, a hotkey F2 ativa uma mensagem de parabéns. Se a última vez que a mensagem ativou tiver mais de 5 segundos ela te dá parabéns de novo. Mas se tiver menos de 5 segundos, ela te dá um erro.
Perceba que há ainda uma outra possibilidade: poderíamos (se quisessemos) reiniciar o contador quando o usuário pressionasse F2 antes de 5 segundos. Para fazer isso bastaria salvar novamente o valor de A_TickCount em ULTIMO_TEMPO antes do return final.
Espero ter ajudado, se ainda tiver alguma dúvida sobre isso, basta postar abaixo.
Você pode usar a variável embutida A_tickCount para isso. Ela contém o número aproximado de milisegundos desde a inicialização do sistema, logo, você pode:
1. Salvar o valor dela em algum momento da execução em outra variável
2. Substrair a qualquer tempo o valor dela (que é sempre atualizado) de qualquer das variáveis salvas para encontrar a diferença de tempo em milisegundos entre aquele momento e o momento atual.
Um exemplo básico:
Code: Select all
msgbox, 0, aviso, vamos iniciar uma contagem de 5 segundos após você clicar em ok...
TEMPO_INICIAL := A_tickCount
Sleep 5000
TEMPO_FINAL := (A_tickCount - TEMPO_INICIAL) / 1000
msgbox, 0, aviso, Passaram-se %TEMPO_FINAL% segundos.
No script acima veja que nós não salvamos o tempo do sleep em variável nenhuma, logo, o resultado obtido adveio exclusivamente da diferença entre os valores da variável A_tickCount no início da execução e após a execução. Mas como sabemos que o sleep foi de 5 segundos, podemos comprovar que de fato o cálculo das variáveis é bastante preciso. Agora vamos aplicar isso em um processo diferente, no qual não sabemos o tempo que vai demorar, mas sabemos que teremos a informação do mesmo jeito no final do processo:
Code: Select all
msgbox, 0, aviso, Agora nós vamos contar o tempo necessário para incrementar uma variável 5 milhões de vezes (OBS: sem usar SetBatchLines!)
TEMPO_INICIAL := A_tickCount
Var := 0
loop 5000000
{
Var++
}
TEMPO_FINAL := (A_tickCount - TEMPO_INICIAL) / 1000
msgbox, 0, aviso, Passaram-se %TEMPO_FINAL% segundos.
Portanto, no script acima, o tempo exibido na segunda msgbox é de fato o tempo que o script levou para incrementar uma variável 5 milhões de vezes (sem usar SetBatchLines, -1). Viu como foi possível contar o tempo de um processo usando a variável embutida A_tickCount?
OBS: Em ambos os scripts a divisão por 1000 é necessária porque o tempo é contado em milisegundos (milésimos de segundo) e queremos exibir a informação em segundos.
Agora vamos usar isso para implementar o esquema de "cooldown" de 5 segundos em uma hotkey...
No script abaixo, a hotkey F2 ativa uma mensagem de parabéns. Se a última vez que a mensagem ativou tiver mais de 5 segundos ela te dá parabéns de novo. Mas se tiver menos de 5 segundos, ela te dá um erro.
Code: Select all
F2::
TEMPO_ATUAL := A_tickCount
If (ULTIMO_TEMPO = "")
{
msgbox, 0, Aviso, Parabéns !! Essa é a primeira vez que você pressiona F2.
ULTIMO_TEMPO := A_TickCount
Return
}
If (TEMPO_ATUAL - ULTIMO_TEMPO > 5000)
{
msgbox, 0, Aviso, Parabéns !! Já faz MAIS DE 5 SEGUNDOS que você foi parabenizado.
ULTIMO_TEMPO := A_TickCount
Return
}
msgbox, 0x10, ERROU, Você foi parabenizado há menos de 5 segundos, espere o cooldown terminar !!
Return
Perceba que há ainda uma outra possibilidade: poderíamos (se quisessemos) reiniciar o contador quando o usuário pressionasse F2 antes de 5 segundos. Para fazer isso bastaria salvar novamente o valor de A_TickCount em ULTIMO_TEMPO antes do return final.
Espero ter ajudado, se ainda tiver alguma dúvida sobre isso, basta postar abaixo.
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: No registered users and 8 guests