Randomly alternate between loop 1 and loop 2

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
SamuelSemalu
Posts: 1
Joined: 13 Feb 2020, 17:28

Randomly alternate between loop 1 and loop 2

Post by SamuelSemalu » 13 Feb 2020, 17:50

How can I make it choose a random loop each time it loops?

Code: Select all

Random ranWheel, 0 2

Loop { ;loop 1
    Random mousePosX, 0, 1000
    Random mousePosY, 0, 1000
    Random mouseSpeed, 0, 100
    MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
    MouseClick, Left
    MouseClick, WheelUp, , , %ranWheel%
    Send {Enter}
    Send {Delete}
}
Loop { ;loop 2
    Random mousePosX, 0, 1000
    Random mousePosY, 0, 1000
    Random mouseSpeed, 0, 100
    MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
    MouseClick, Left
    MouseClick, WheelUp, , , %ranWheel%
    Send {Enter}
    Send {Delete}
}
Loop { ;loop 3
    Random mousePosX, 0, 1000
    Random mousePosY, 0, 1000
    Random mouseSpeed, 0, 100
    MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
    MouseClick, Left
    MouseClick, WheelUp, , , %ranWheel%
    Send {Enter}
    Send {Delete}
}
I will do more with the different loops later (for now they are all the same)

User avatar
Thoughtfu1Tux
Posts: 125
Joined: 31 May 2018, 23:26

Re: Randomly alternate between loop 1 and loop 2

Post by Thoughtfu1Tux » 13 Feb 2020, 21:39

SamuelSemalu wrote:
13 Feb 2020, 17:50

Turn your loops into https://www.autohotkey.com/docs/Functions.htm then generate a random number, and then based on that number select the correct function to call.

Code: Select all

Random, FuncNumberToGoTo, 1,3 	; generate  a number between 1 and 3 to decide which funciton to call on
Random ranWheel, 0 2

if(FuncNumberToGoTo = 1)	; if random number is 1, go to funciton 1 and pass it the parameter %randwheel%
	func1(randwheel)
if(FuncNumberToGoTo = 2)	; if random number is 2, call on funciton 2 and pass it the parameter %randwheel%
	func2(randwheel)
if(FuncNumberToGoTo = 3)
	func3(randwheel)




func1(ranWheel){	; define function 1 and make it accept a parameter named ranwheel

Loop { ;loop 1
    Random mousePosX, 0, 1000
    Random mousePosY, 0, 1000
    Random mouseSpeed, 0, 100
    MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
    MouseClick, Left
    MouseClick, WheelUp, , , %ranWheel%
    Send {Enter}
    Send {Delete}
}
}

func2 (ranWheel){
Loop { ;loop 2
    Random mousePosX, 0, 1000
    Random mousePosY, 0, 1000
    Random mouseSpeed, 0, 100
    MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
    MouseClick, Left
    MouseClick, WheelUp, , , %ranWheel%
    Send {Enter}
    Send {Delete}
}
}

func3 (randwheel){
Loop { ;loop 3
	Random mousePosX, 0, 1000
	Random mousePosY, 0, 1000
	Random mouseSpeed, 0, 100
	MouseMove, %mousePosX%, %mousePosY%, %mouseSpeed%
	MouseClick, Left
	MouseClick, WheelUp, , , %ranWheel%
	Send {Enter}
	Send {Delete}
}
}
It's very ugly code though because you've got A TON of repeating code. it would be much more efficient if you had just 1 function and then inside that funciton a bunch of {if} statements to run different tasks.

User avatar
Xtra
Posts: 2750
Joined: 02 Oct 2015, 12:15

Re: Randomly alternate between loop 1 and loop 2

Post by Xtra » 14 Feb 2020, 01:55

Code: Select all

Loop
{
    switch Rnd(1,3)
    {
        case 1:Sub1()
        case 2:Sub2()
        case 3:Sub3()
    }
    Sleep Rnd(1,1000)
}

Sub1()
{
    MouseMove, Rnd(0,1000), Rnd(0,1000), Rnd(0,100)
    MouseClick, Left
    MouseClick, WheelUp, , , % Rnd(0,2)
    Send {Enter}
    Send {Delete}
}

Sub2()
{
    MouseMove, Rnd(0,1000), Rnd(0,1000), Rnd(0,100)
    MouseClick, Left
    MouseClick, WheelUp, , , % Rnd(0,2)
    Send {Enter}
    Send {Delete}
}

Sub3()
{
    MouseMove, Rnd(0,1000), Rnd(0,1000), Rnd(0,100)
    MouseClick, Left
    MouseClick, WheelUp, , , % Rnd(0,2)
    Send {Enter}
    Send {Delete}
}

Rnd(min,max)
{
    Random rnd, min, max
    return rnd
}
HTH

Post Reply

Return to “Ask for Help (v1)”