на счет второго кода, куча ошибок.
В каждом цикле перепутаны строки
end_cyc
end_if
но самое забавное началось когда мы дошли до свитча
Вот это полнейшая бредятина
switch($eda) // у массива не указан номер ячейки памяти
case(0) | (16708320) // нельзя комбинировать условия!
print("покупай фирму")
case(0) | (8257535)
print("бери, иначе проиграешь")
case(16708320) & (8257535)
print("не трать деньги")
halt
END_SWITCH
Вообще не пойму что ты этим хотел добиться. Чтобы switch каким то волшебным образом извлек из массива то что ты хочешь?
Массив это таблица в один столбик.
Чтобы сократить повторяющийся код нужно использовать подпрограммы
$cvet[0] = 12303604
$cvet[1] = 16571048
$cvet[2] = 8257535
$cvet[3] = 7338922
$cvet[4] = 14796284
$cvet[5] = 13697023
$cvet[6] = 16708320
$cvet[7] = 15132667
$cvet[8] = 16050942
$cvet[9] = 13369056
$cvet[10] = 15066597
SUB(analiz,$pxl_x,$pxl_y)
$e1 = 0
GETSCREEN
FOR($e=0,$e<11)
IF(PXL($pxl_x,$pxl_y) = $cvet[$e1]) // на самом деле при совпадении в массив до 11 раз может быть записано одно и тоже
print($cvet[$e1])
ARRPUSH($eda, $cvet[$e1])
ELSE
INC($e1,1)
END_IF
END_CYC
END_SUB
analiz(424,219) // кафе
analiz(512,219) // бар
analiz(557,219) // ресторан
LOGWRITE ("== Массив ==")
FOR($a=0,$a<ARRSIZE($eda))
LOGWRITE ($eda[$a]) // вывод значений массива в лог
END_CYC
HALT
Может быть правильно будет так?
$cvet[0] = 12303604
$cvet[1] = 16571048
$cvet[2] = 8257535
$cvet[3] = 7338922
$cvet[4] = 14796284
$cvet[5] = 13697023
$cvet[6] = 16708320
$cvet[7] = 15132667
$cvet[8] = 16050942
$cvet[9] = 13369056
$cvet[10] = 15066597
SUB(analiz,$pxl_x,$pxl_y)
GETSCREEN
FOR($e=0,$e<11)
IF(PXL($pxl_x,$pxl_y) = $cvet[$e]) // прогоняем все цвета и записываем совпадения
print($cvet[$e])
ARRPUSH($eda, $cvet[$e])
END_IF
END_CYC
END_SUB
analiz(424,219) // кафе
analiz(512,219) // бар
analiz(557,219) // ресторан
LOGWRITE ("== Массив ==")
FOR($a=0,$a<ARRSIZE($eda))
LOGWRITE ($eda[$a]) // вывод значений массива в лог
END_CYC
HALT