Еще ошибку нашел, $X2 и $Y2 тоже нужно обнулять перед первым циклом.
Вот примерно так должно все работать без записи в файл:
GETSCREEN // POISK POSICIY @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SCANPXL($ARR_SCAN, 558,76, 639,760, 0)
$ARR_NUM = 0
$SHIFT_X = 72 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 50
$X2 = 0
$Y2 = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
IF(($X > $X2) | ($Y > $Y2))
$X2 = $X + $SHIFT_X
$Y2 = $Y + $SHIFT_Y
LCLICK($X, $Y) // KLICK PO POSICIY
wait(1)
GETSCREEN
IF_PICTURE_IN (273,106, 1057,726, "sobaka.bmp")
LCLICK($_return1+13, $_return2+3)
waitms(50)
LCLICK($_return1+13, $_return2+3)
waitms(50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#C)
KEYUP (#CTRL)
$nik = FROMCLIP()
TFWRITE("nik.txt", $nik)
waitms(50)
GETSCREEN
IF_PICTURE_IN (750,78,905,754, "Close.bmp")
LCLICK($_return1+4, $_return2+2)
waitms(50)
END_IF
ELSE
GETSCREEN
IF_PICTURE_IN (750,78,905,754, "Close.bmp")
LCLICK($_return1+4, $_return2+2)
waitms(50)
END_IF
END_IF
END_IF
END_CYC
UNDEFINE($ARR_SCAN)
TFCLEAR("position.txt", 0)
waitms(50)
move(643,421) // v centr
waitms(50)
WHEELDOWN
waitms(150)
WHEELDOWN
waitms(150)
WHEELDOWN
waitms(150)
WHEELDOWN
waitms(150)
WHEELDOWN
waitms(150)
WHEELDOWN
waitms(150)
И еще, в условии IF(($X > $X2) | ($Y > $Y2)) скорее всего должно быть логическое И - and; &