I've made a script that search image and push buttons for a game it's simple. There is 4 numbers written (1, 2, 3, 4) that the script should press in order, for instance : 1 2 3 are displayed so the script must push 1 2 3 in order to win the game.
The problem is that we don't know when the numbers spawn on the screen as well as how many number we can have it goes from 1 number in the middle of the screen to 3 so I captured the possibilities and where the numbers spawn on the screen.
[1|2|3|4] [1|2|3|4] [1|2|3|4]
[1|2|3|4] [1|2|3|4]
[1|2|3|4]
Above is the pattern of how numbers can spawn on the screen : 3 numbers, 2 or 1 and here is my not-working code :
Code: Select all
#NoEnv
name1=1.png
name2=2.png
name3=3.png
name4=4.png
; all 450, 420, 1500, 750
ifWinExist, XX
{
OutputDebug, %A_Now%: Launching.
WinActivate
Sleep, 50
Loop
{
Left()
CoordMode, Mouse, Screen
MouseGetPos, xx, yy
Tooltip %xx%`, %yy%
}
}
Left()
{
OutputDebug, %A_Now%: Left()
ImageSearch, AX, AY, 700, 590, 830, 710, *30 %name1%
if ErrorLevel = 0
{
Send, {1 down}
Sleep, 10
Send, {1 up}
OutputDebug, %A_Now%: 1 found for left.
Middle()
}
else if ErrorLevel = 1
{
ImageSearch, AX, AY, 700, 590, 830, 710, *30 %name2%
if ErrorLevel = 0
{
Send, {2 down}
Sleep, 10
Send, {2 up}
OutputDebug, %A_Now%: 2 found for left.
Middle()
}
else if ErrorLevel = 1
{
ImageSearch, BZ, BY, 700, 590, 830, 710, *30 %name3%
if ErrorLevel = 0
{
Send, {3 down}
Sleep, 10
Send, {3 up}
OutputDebug, %A_Now%: 3 found for left.
Middle()
}
else if ErrorLevel = 1
{
ImageSearch, CX, CZ, 700, 590, 830, 710, *30 %name4%
if ErrorLevel = 0
{
Send, {4 down}
Sleep, 10
Send, {4 up}
OutputDebug, %A_Now%: 4 found for left.
Middle()
}
else if ErrorLevel = 1
{
LeftMiddle()
}
}
}
}
}
LeftMiddle()
{
OutputDebug, %A_Now%: LeftMiddle()
ImageSearch, AX, AY, 800, 590, 930, 710, *30 %name1%
if ErrorLevel = 0
{
Send, {1 down}
Sleep, 10
Send, {1 up}
OutputDebug, %A_Now%: 1 found for left middle.
RightMiddle()
}
else if ErrorLevel = 1
{
ImageSearch, AX, AY, 800, 590, 930, 710, *30 %name2%
if ErrorLevel = 0
{
Send, {2 down}
Sleep, 10
Send, {2 up}
OutputDebug, %A_Now%: 2 found for left middle.
RightMiddle()
}
else if ErrorLevel = 1
{
ImageSearch, BZ, BY, 800, 590, 930, 710, *30 %name3%
if ErrorLevel = 0
{
Send, {3 down}
Sleep, 10
Send, {3 up}
OutputDebug, %A_Now%: 3 found for left middle.
RightMiddle()
}
else if ErrorLevel = 1
{
ImageSearch, CX, CZ, 800, 590, 930, 710, *30 %name4%
if ErrorLevel = 0
{
Send, {4 down}
Sleep, 10
Send, {4 up}
OutputDebug, %A_Now%: 4 found for left middle.
RightMiddle()
}
else if ErrorLevel = 1
{
Middle()
}
}
}
}
}
Middle()
{
Sleep, 5
OutputDebug, %A_Now%: Middle()
ImageSearch, AX, AY, 900, 590, 1030, 710, *30 %name1%
if ErrorLevel = 0
{
Send, {1 down}
Sleep, 10
Send, {1 up}
OutputDebug, %A_Now%: 1 found for middle.
}
else if ErrorLevel = 1
{
ImageSearch, AX, AY, 900, 590, 1030, 710, *30 %name2%
if ErrorLevel = 0
{
Send, {2 down}
Sleep, 10
Send, {2 up}
OutputDebug, %A_Now%: 2 found for middle.
}
else if ErrorLevel = 1
{
ImageSearch, BZ, BY, 900, 590, 1030, 710, *30 %name3%
if ErrorLevel = 0
{
Send, {3 down}
Sleep, 10
Send, {3 up}
OutputDebug, %A_Now%: 3 found for middle.
}
else if ErrorLevel = 1
{
ImageSearch, CX, CZ, 900, 590, 1030, 710, *30 %name4%
if ErrorLevel = 0
{
Send, {4 down}
Sleep, 10
Send, {4 up}
OutputDebug, %A_Now%: 4 found for middle.
}
}
}
}
}
RightMiddle()
{
Sleep, 5
OutputDebug, %A_Now%: RightMiddle()
ImageSearch, AX, AY, 1000, 590, 1130, 710, *30 %name1%
if ErrorLevel = 0
{
Send, {1 down}
Sleep, 10
Send, {1 up}
OutputDebug, %A_Now%: 1 found for right middle.
}
else if ErrorLevel = 1
{
ImageSearch, AX, AY, 1000, 590, 1130, 710, *30 %name2%
if ErrorLevel = 0
{
Send, {2 down}
Sleep, 10
Send, {2 up}
OutputDebug, %A_Now%: 2 found for left right middle.
}
else if ErrorLevel = 1
{
ImageSearch, BZ, BY, 1000, 590, 1130, 710, *30 %name3%
if ErrorLevel = 0
{
Send, {3 down}
Sleep, 10
Send, {3 up}
OutputDebug, %A_Now%: 3 found for right middle.
}
else if ErrorLevel = 1
{
ImageSearch, CX, CZ, 1000, 590, 1130, 710, *30 %name4%
if ErrorLevel = 0
{
Send, {4 down}
Sleep, 10
Send, {4 up}
OutputDebug, %A_Now%: 4 found for right middle.
}
}
}
}
}
Right()
{
Sleep, 5
OutputDebug, %A_Now%: 3 Right()
ImageSearch, AX, AY, 1100, 590, 1230, 710, *30 %name1%
if ErrorLevel = 0
{
Send, {1 down}
Sleep, 10
Send, {1 up}
OutputDebug, %A_Now%: 1 found for right.
}
else if ErrorLevel = 1
{
ImageSearch, AX, AY, 1100, 590, 1230, 710, *30 %name2%
if ErrorLevel = 0
{
Send, {2 down}
Sleep, 10
Send, {2 up}
OutputDebug, %A_Now%: 2 found for right.
}
else if ErrorLevel = 1
{
ImageSearch, BZ, BY, 1100, 590, 1230, 710, *30 %name3%
if ErrorLevel = 0
{
Send, {3 down}
Sleep, 10
Send, {3 up}
OutputDebug, %A_Now%: 3 found for right.
}
else if ErrorLevel = 1
{
ImageSearch, CX, CZ, 1100, 590, 1230, 710, *30 %name4%
if ErrorLevel = 0
{
Send, {4 down}
Sleep, 10
Send, {4 up}
OutputDebug, %A_Now%: 4 found for right.
}
}
}
}
}