Привожу полный текст скрипта. Правда я его уже причесал как мог и поудалял отладочные вспомагательные команды. Добавил коментарии.
Код
set #a findwindow (Фантазиум (RU))
set workwindow #a
showwindow #a
set %ax [1 1] 549 // начальные координаты по которым идёт поиск
set %ax [2 1] 608
set %ax [3 1] 666
set %ax [4 1] 726
set %ax [1 2] 539
set %ax [2 2] 598
set %ax [3 2] 656
set %ax [4 2] 716
set %ax [1 3] 558
set %ax [2 3] 617
set %ax [3 3] 675
set %ax [4 3] 735
:begin
wait 1500
set $b1 0
set $b2 0
set $b1 findcolor (1062, 754 1063, 755 1 1 1184461 %arr 2 abs)
set $b2 findcolor (547, 616 548, 617 1 1 2397184 %arr 2 abs)
if ($b1 > 0) and ($b2 > 0) // проверка по двум точкам когда начинать выполнение скрипта
for #i 1 4
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %ax [#i 1]
set #xu2 %ax [#i 1] + 1
set #xl1 %ax [#i 2]
set #xl2 %ax [#i 2] + 1
set #xr1 %ax [#i 3]
set #xr2 %ax [#i 3] + 1
set $u findcolor (#xu1, 653 #xu2, 654 1 1 7266294 %arr 2 abs) //если тут вместо #xu2 написать #xu1 + 1, то поиск не срабатывает.
set $d findcolor (#xu1, 672 #xu2, 673 1 1 2982898 %arr 2 abs)
set $l findcolor (#xl1, 662 #xl2, 663 1 1 5355252 %arr 2 abs)
set $r findcolor (#xr1, 662 #xr2, 663 1 1 5355252 %arr 2 abs)
if $u > 0
post {Up}
end_if
if $d > 0
post {Down}
end_if
if $l > 0
post {Left}
end_if
if $r > 0
post {Right}
end_if
end_for
wait 4000
end_if
goto begin
На мониторе стоит разрешение 1280х1024, игра запущена в оконном режиме с разрешением 1280х960. При запуске автоматически центрируется, обычными методами двигать нельзя. По ширине получается в притык по экрану. Скрин прилагается.
Если не считать фреймами изображение стрелок, из-за которых и были сложности с определением цвета, то больше в зону поиска ничего не попадает.
Скрипт расчитан на 4-х кнопочную комбинацию, на скрине их 7. Это решается расширением масивов с координатами с их заменой на новые и увеличением цикла for с 4 до 7.

откопал промежуточный отладочный сейв, может поможет разобраться
промежуточная отладка
set #a findwindow (Фантазиум (RU))
set workwindow #a
//showwindow #a
set %axu [1 1] 549
set %axu [2 1] 608
set %axu [3 1] 666
set %axu [4 1] 726 //712
set %axd [1 2] 545
set %axd [2 2] 604
set %axd [3 2] 662
set %axd [4 2] 722
set %axl [1 3] 558
set %axl [2 3] 606
set %axl [3 3] 675
set %axl [4 3] 735
set $b1 0
set $b2 0
set $b3 0
set $b1 findcolor (1063, 754 1065, 756 1 1 1184461 %arr 2 abs)
set $b2 findcolor (548, 616 550, 618 1 1 2397184 %arr 2 abs)
set $b3 findcolor (249, 758 250, 759 1 1 9464066 %arr 2 abs)
//if ($b1 > 0) and ($b2 > 0) and ($b3 > 0)
set #i 4
//repeat 4
//set #i #i + 1
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %axu [#i 1]
set #xu2 %axu [#i 1] + 1
set #xd1 %axd [#i 2]
set #xd2 %axd [#i 2] + 1
set #xl1 %axl [#i 3]
set #xl2 %axl [#i 3] + 1
while ( $u = 0 ) and ( $d = 0 ) and ( $l = 0 ) and ($r = 0)
set $u findcolor (#xu1, 652 #xu2, 653 1 1 7129819 %arr1 2 abs)
set $d findcolor (#xd1, 653 #xd2, 654 1 1 7397878 %arr2 2 abs)
if #i = 1
set $l findcolor (558, 648 559, 677 1 1 5795961 %arr3 2 abs)
end_if
if #i = 2
set $l findcolor (609, 648 610, 677 1 1 6141658 %arr4 2 abs)
end_if
if (#i = 3) or (#i = 4)
set $l findcolor (#xl1, 648 #xl2, 677 1 1 4939129 %arr5 2 abs)
end_if
if #i = 1
set $r findcolor (539, 648 540, 677 1 1 5796217 %arr6 2 abs)
end_if
if #i = 2
set $r findcolor (597, 648 598, 677 1 1 5519145 %arr7 2 abs)
end_if
if #i = 3
set $r findcolor (663, 648 664, 677 1 1 5452838 %arr8 2 abs)
end_if
if #i = 4
set $r findcolor (716, 648 717, 677 1 1 4939129 %arr9 2 abs)
end_if
end_while
set logging open
if $u > 0
post {Up}
set #z1 %arr1 [1 1]
set #z2 %arr1 [1 2]
set logging arr1 #z1 #z2 #i
goto end
end_if
if $d > 0
post {Down}
set #z1 %arr2 [1 1]
set #z2 %arr2 [1 2]
set logging arr2 #z1 #z2 #i
goto end
end_if
if $l > 0
post {Left}
if #i = 1
set #z1 %arr3 [1 1]
set #z2 %arr3 [1 2]
set logging arr3 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr4 [1 1]
set #z2 %arr4 [1 2]
set logging arr4 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
goto end
end_if
if $r > 0
post {Right}
if #i = 1
set #z1 %arr6 [1 1]
set #z2 %arr6 [1 2]
set logging arr6 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr7 [1 1]
set #z2 %arr7 [1 2]
set logging arr7 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr8 [1 1]
set #z2 %arr8 [1 2]
set logging arr8 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr9 [1 1]
set #z2 %arr9 [1 2]
set logging arr9 #z1 #z2 #i
end_if
goto end
end_if
:end
//end_repeat
//end_if
end_script
u 5025524
d 5421044
l110325120
l2 10324860
r1 7230537
r2 10325121