by Gio » 31 Jan 2020, 10:11
Bom dia.
Eu teria que usar vários comandos randons para que ele clicasse em várias diferentes posições, ou eu só teria que colocar as extremidades das coordenadas?
Não entendi muito bem o que você quiz dizer. Diferentes posições dentro da mesma área[1] ou diferentes posições em áreas diferentes[2]?
Caso [1]: O comando Random sorteia novamente os números sempre que for chamado. Sendo assim, se for colocado dentro de uma hotkey, por exemplo, ele vai sortear números diferentes sempre que a hotkey for chamada. Use as ferramentas de loop, hotkeys, objetos e funções para que você não precise escrever muitas linhas do comando.
O script abaixo implementa uma hotkey na tecla F2. Sempre que você a aperta, ele move o mouse para uma posição aleatória no quadrado 100 x 100 central à sua tela.
Code: Select all
; PRIMEIRO, CALCULAMOS O QUADRADO 100 X 100 CENTRAL DA SUA TELA.
POSICAO_CENTRAL_X := A_ScreenWidth / 2
POSICAO_CENTRAL_Y := A_ScreenHeight / 2
X1 := POSICAO_CENTRAL_X - 50
Y1 := POSICAO_CENTRAL_Y - 50
X2 := POSICAO_CENTRAL_X + 50
Y2 := POSICAO_CENTRAL_Y + 50
Return
; DEPOIS, BASTA QUE A HOTKEY RODE O RANDOM 2X SEMPRE QUE FOR CHAMADA (uma para o X e outra para o Y).
F2::
Random, X_ALEATORIO, %X1%, %X2%
Random, Y_ALEATORIO, %Y1%, %Y2%
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
Rode o script acima e depois aperte o F2 várias e várias vezes. Veja como o mouse se move para posições aleatórias dentro do quadrado 100 x 100 do centro da sua tela.
Caso [2]: Se você estiver falando de áreas em diferentes posições da tela, eu sugiro usar uma função global ou com variáveis byref para criar os 2 números aleatórios. Assim, você pode escrever apenas uma linha nova para cada área nova a ser implementada.
O código abaixo implementa 3 áreas 100x100 de movimento do mouse. Uma fica no centro (F2), outra fica no canto superior-esquerdo (F3) e a outra fica no canto superior-esquerdo (F4). Aperte repetidas vezes o F2 e veja a primeira área, depois aperte repetidas vezes o F3 para ver a segunda área, e então depois aperte repetidas vezes o F4 para ver a terceira área. Veja que para cada nova área, só foi preciso escrever 1 nova linha de código: a de chamada à função ALEATORIO().
Code: Select all
F2::
ALEATORIO(((A_ScreenWidth / 2) - 50), ((A_ScreenHeight / 2) - 50), ((A_ScreenWidth / 2) + 50), ((A_ScreenHeight / 2) + 50))
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
F3::
ALEATORIO(0, 0, 100, 100)
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
F4::
ALEATORIO(A_ScreenWidth - 100, 0, A_ScreenWidth, (A_ScreenHeight - (A_ScreenHeight - 100)))
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
ALEATORIO(X_MINIMO, Y_MINIMO, X_MAXIMO, Y_MAXIMO)
{
Global
Random, X_ALEATORIO, %X_MINIMO%, %X_MAXIMO%
Random, Y_ALEATORIO, %Y_MINIMO%, %Y_MAXIMO%
}
Return
Tente entender a matemática usada, pois ela demonstra como se calculam as posições na tela. As variáveis A_ScreenWidth e A_ScreenHeight são variáveis embutidas e contém respectivamente a resolução horizontal e a resolução vertical atual da tela do seu computador.
Outra coisa que não entendi muito bem foi X_aleatório é o y_aleatório, eu preciso determinar em qual posição vai clicar ou eles anatomicamente faz isso sozinho?
Veja a imagem que eu postei. O X_Aleatório e o X_Aleatório fazem juntos uma coordenada XY válida que sempre estará dentro da área indicada. Uma vez obtidas essas variáveis do comando Random, basta usá-las diretamente no comando click (do mesmo jeito em que eu mostrei com o comando MouseMove acima). Lembre-se apenas que as variáveis precisam ser dereferenciadas para que somente os seus valores entrem no comando (faça isso usando os percentuais, da mesma forma que fiz acima).
Bom dia.
[quote]Eu teria que usar vários comandos randons para que ele clicasse em várias diferentes posições, ou eu só teria que colocar as extremidades das coordenadas? [/quote]
Não entendi muito bem o que você quiz dizer. Diferentes posições dentro da mesma área[1] ou diferentes posições em áreas diferentes[2]?
Caso [1]: O comando Random sorteia novamente os números sempre que for chamado. Sendo assim, se for colocado dentro de uma hotkey, por exemplo, ele vai sortear números diferentes sempre que a hotkey for chamada. Use as ferramentas de loop, hotkeys, objetos e funções para que você não precise escrever muitas linhas do comando.
:arrow: O script abaixo implementa uma hotkey na tecla F2. Sempre que você a aperta, ele move o mouse para uma posição aleatória no quadrado 100 x 100 central à sua tela.
[code]; PRIMEIRO, CALCULAMOS O QUADRADO 100 X 100 CENTRAL DA SUA TELA.
POSICAO_CENTRAL_X := A_ScreenWidth / 2
POSICAO_CENTRAL_Y := A_ScreenHeight / 2
X1 := POSICAO_CENTRAL_X - 50
Y1 := POSICAO_CENTRAL_Y - 50
X2 := POSICAO_CENTRAL_X + 50
Y2 := POSICAO_CENTRAL_Y + 50
Return
; DEPOIS, BASTA QUE A HOTKEY RODE O RANDOM 2X SEMPRE QUE FOR CHAMADA (uma para o X e outra para o Y).
F2::
Random, X_ALEATORIO, %X1%, %X2%
Random, Y_ALEATORIO, %Y1%, %Y2%
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return[/code]
:arrow: Rode o script acima e depois aperte o F2 várias e várias vezes. Veja como o mouse se move para posições aleatórias dentro do quadrado 100 x 100 do centro da sua tela.
Caso [2]: Se você estiver falando de áreas em diferentes posições da tela, eu sugiro usar uma função global ou com variáveis byref para criar os 2 números aleatórios. Assim, você pode escrever apenas uma linha nova para cada área nova a ser implementada.
:arrow: O código abaixo implementa 3 áreas 100x100 de movimento do mouse. Uma fica no centro (F2), outra fica no canto superior-esquerdo (F3) e a outra fica no canto superior-esquerdo (F4). Aperte repetidas vezes o F2 e veja a primeira área, depois aperte repetidas vezes o F3 para ver a segunda área, e então depois aperte repetidas vezes o F4 para ver a terceira área. Veja que para cada nova área, só foi preciso escrever 1 nova linha de código: a de chamada à função ALEATORIO().
[code]F2::
ALEATORIO(((A_ScreenWidth / 2) - 50), ((A_ScreenHeight / 2) - 50), ((A_ScreenWidth / 2) + 50), ((A_ScreenHeight / 2) + 50))
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
F3::
ALEATORIO(0, 0, 100, 100)
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
F4::
ALEATORIO(A_ScreenWidth - 100, 0, A_ScreenWidth, (A_ScreenHeight - (A_ScreenHeight - 100)))
CoordMode, Mouse, Screen
MouseMove, %X_ALEATORIO%, %Y_ALEATORIO%
Return
ALEATORIO(X_MINIMO, Y_MINIMO, X_MAXIMO, Y_MAXIMO)
{
Global
Random, X_ALEATORIO, %X_MINIMO%, %X_MAXIMO%
Random, Y_ALEATORIO, %Y_MINIMO%, %Y_MAXIMO%
}
Return[/code]
:arrow: Tente entender a matemática usada, pois ela demonstra como se calculam as posições na tela. As variáveis A_ScreenWidth e A_ScreenHeight são variáveis embutidas e contém respectivamente a resolução horizontal e a resolução vertical atual da tela do seu computador.
[quote]Outra coisa que não entendi muito bem foi X_aleatório é o y_aleatório, eu preciso determinar em qual posição vai clicar ou eles anatomicamente faz isso sozinho?[/quote]
Veja a imagem que eu postei. O X_Aleatório e o X_Aleatório fazem juntos uma coordenada XY válida que sempre estará dentro da área indicada. Uma vez obtidas essas variáveis do comando Random, basta usá-las diretamente no comando click (do mesmo jeito em que eu mostrei com o comando MouseMove acima). Lembre-se apenas que as variáveis precisam ser dereferenciadas para que somente os seus valores entrem no comando (faça isso usando os percentuais, da mesma forma que fiz acima).