1 (изменено: Странникх, 2015-07-10 09:43:55)

Тема: AHK: Синтаксическая проблема PixelSearch

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
Top := 538
Bot := 907
x2 := 499
x2_Var := x2
x2_Var_Numer := 1

Loop
{
        if x2_Var_Numer = 24
                {
                x2_Var = %x2%                                    
                x2_Var_Numer = 1                                
                }

        PixelSearch, Outx, Outy, x2_Var, Top, x2_Var, Bot, 0x0000FF,, fast                          ; red
        if ErrorLevel = 1
            {
            PixelSearch,,, x2_Var, Top, x2_Var, Bot, 0xFF0000,, fast                    ; blue
            if ErrorLevel = 0
                MsgBox, Ура
            }
        if ErrorLevel = 0
            {
            if x2_Var_Numer < 24
            {
            x2_Var--                                    
            x2_Var_Numer++                                    
            }
            }


sleep, 150
}
Return

Напрочь не хочет искать синий цвет, хотя отсутствие красного цвета обнаруживает. Подскажите как обойти это недоразумение.

Пока нашел решение такое:

Loop
{
        if x2_Var_Numer > 24
                {
                x2_Var = %x2%                                    ; Установить координаты по X в начальное состояние
                x2_Var_Numer = 1                                ; Установить счетчик в исходное состояние (в начальные координаты, т.е. x2)
                }

        PixelSearch, Outx, Outy, x2_Var, Top, x2_Var, Bot, 0x0000FF,, fast                          ; red
        if ErrorLevel = 1
            {
            PixelSearch,,, x2_Var, Top, x2_Var, Bot, 0xFF0000,, fast                    ; blue
            if ErrorLevel = 0
                MsgBox, Ура
            }


            x2_Var--                                    ; Отнять координаты, чтобы ось X сдвинулась влево
            x2_Var_Numer++                                    ; Счетчик +1



sleep, 150
}
Return

Но не понятно почему из-за ErrorLevel = 0 перестает работать корректно ErrorLevel = 1.

Добавлено:
Кстати, с Else все нормально работает!