Ajuda e Dicas para aprimoramento

Tire suas dúvidas sobre programação em AutoHotkey
edsonservi
Posts: 3
Joined: 27 Dec 2018, 22:59

Ajuda e Dicas para aprimoramento

30 Jan 2019, 14:09

Ola, aprendendo através de CTR+C, CTR+V, muita tentativa e erro e bastante consultas aqui nestes fóruns, fiz um loop para executar ações de tempos em tempos em um jogo (anti-idle).

Code: Select all

Loop
{
Random tintimeA, 15000, 30000
Random tintimeB, 15000, 30000
Random tintimeC, 15000, 30000
Random tintimeD, 15000, 30000
Random tintimeE, 15000, 30000
Random tintimeF, 15000, 30000

	SoundBeep, 750, 500 
		Send +{F4}
			sleep %tintimeA%
			sleep %tintimeF%

	SoundBeep, 750, 500 
		Send {UP}
			sleep %tintimeB%
			sleep %tintimeE%

	SoundBeep, 750, 500 
		Send +{F3}
			sleep %tintimeC%
			sleep %tintimeD%

	SoundBeep, 750, 500 
		Send +{F4}
			sleep %tintimeD%
			sleep %tintimeC%

	SoundBeep, 750, 500 
		Send +{F3}
			sleep %tintimeE%
			sleep %tintimeB%

	SoundBeep, 750, 500 
		Send {DOWN}
			sleep %tintimeF%
			sleep %tintimeA%

	SoundBeep, 750, 500 
		Send +{F4}
			sleep %tintimeA%
			sleep %tintimeF%

	SoundBeep, 750, 500 
		Send +{F3}
			sleep %tintimeB%
			sleep %tintimeE%

	SoundBeep, 750, 500 
		Send +{F4}
			sleep %tintimeC%
			sleep %tintimeD%

	SoundBeep, 750, 500 
		Send +{F3}
			sleep %tintimeD%
			sleep %tintimeC%

	SoundBeep, 750, 500 
		Send ^{UP}
			sleep %tintimeE%
			sleep %tintimeB%

	SoundBeep, 750, 500 
		Send %A_Index%
			sleep %tintimeF%
		Send {Enter}
			sleep %tintimeA%
}



Gostaria de dicas para "otimizar" tal loop, bem como, se alguém puder me ajudar, a chegar no seguinte resultado

De tempos em tempos (algo entre 30 a 90 segundos) uma entre as ações possíveis seja executada, mas o intervalo entre as ações bem como a sequencia de ações fiquem o mais aleatórias possíveis.

Grato por qualquer ajuda ou dica que possam me passar.
User avatar
sinkfaze
Posts: 589
Joined: 01 Oct 2013, 08:01

Re: Ajuda e Dicas para aprimoramento

30 Jan 2019, 15:08

Desculpe-me, eu não falo português.

Code: Select all

aitKeys=	; list of the key presses except for the last sequence
(
+{F4}
{UP}
+{F3}
+{F4}
+{F3}
{DOWN}
+{F4}
+{F3}
+{F4}
+{F3}
^{UP}
)
i=1		; acts as A_Index



SetTimer, AntiIdleTimer, On



AntiIdleTimer:
Loop, parse, aitKeys, `n, `r
{
	Random, tintimeA, 15000, 30000
	Random, tintimeB, 15000, 30000
	SoundBeep, 750, 500
	Send, %A_LoopField%
	Sleep, %	tintimeA + tintimeB
}
Random, tintimeA, 15000, 30000
Random, tintimeB, 15000, 30000
SoundBeep, 750, 500 
Send %i%
sleep %tintimeA%
Send {Enter}
sleep %tintimeB%
i++
return
User avatar
Gio
Posts: 545
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ajuda e Dicas para aprimoramento

30 Jan 2019, 15:18

Boa tarde Edsonservi.

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

Tentativa e erro é a chave para aprender qualquer linguagem de programação, então posso dizer que você está no caminho certo.
De tempos em tempos (algo entre 30 a 90 segundos) uma entre as ações possíveis seja executada, mas o intervalo entre as ações bem como a sequencia de ações fiquem o mais aleatórias possíveis.
Se entendi corretamente, você quer algo como isto:

Code: Select all

Loop
{
	Random, Tempo, 30000, 90000
	Random, Acao, 1, 6
	If (Acao = 1)
	{
		SoundBeep, 750, 500 
		Send +{F4}
		Sleep %Tempo%
	}
	Else If (Acao = 2)
	{
		SoundBeep, 750, 500 
		Send {UP}
		Sleep %Tempo%
	}
	Else If (Acao = 3)
	{
		SoundBeep, 750, 500 
		Send +{F3}
		Sleep %Tempo%
	}
	Else If (Acao = 4)
	{
		SoundBeep, 750, 500 
		Send {DOWN}
		Sleep %Tempo%
	}
	Else If (Acao = 5)
	{
		SoundBeep, 750, 500 
		Send ^{UP}
		Sleep %Tempo%
	}
	Else If (Acao = 6)
	{
		SoundBeep, 750, 500 
		Send %A_Index%
		Send {Enter}
		Sleep %Tempo%
	}
}
Explicando o código:

Repete-se a seguinte sequência indefinidamente:
1. Escolha de um valor aleatório entre 30.000 e 90.000 (que será usado como lapso de tempo entre cada ação)
2. Escolha de um valor aleatório entre 1 e 6
3. Condicionais testam o valor escolhido no item 2, para decidir entre 6 ações possíveis. Apenas uma é executada, e depois se espera o intervalo de tempo escolhido no item 1 (onde o número é interpretado como milisegundos à esperar).
edsonservi
Posts: 3
Joined: 27 Dec 2018, 22:59

Re: Ajuda e Dicas para aprimoramento

30 Jan 2019, 18:07

Gio wrote:
30 Jan 2019, 15:18
Boa tarde Edsonservi.

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

Tentativa e erro é a chave para aprender qualquer linguagem de programação, então posso dizer que você está no caminho certo.
Obrigado pela recepção, tenho acompanhado tuas respostas em outros tópicos e são de grande ajuda, faz um excelente trabalho neste fórum.

Gostei da elaboração da tua dica, de colocar um contador de ações, vou estudar ele e possivelmente vou tentar mesclar com a sugestão do Sinkfaze em um código novo e melhorado!!!
sinkfaze wrote:
30 Jan 2019, 15:08
Desculpe-me, eu não falo português.
Grato por responder, seu código é extremamente elegante e se encaixa exatamente no que desejo fazer. Vou estudar ele para implementar.
Thank you for responding, your code is extremely stylish and fits in exactly what you want to do. I will study it to implement.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 1 guest