THREAD(click)
waitms(30)
if ($i2 > $i)
if ($cl[$i] < $_ms)
lclick(404 + $clx[$i] * 50,302 + $cly[$i] * 50)
$f = $clx[$i] // Удаляем из очереди
$igx[$f] = 0 // $igx[$clx[$i]] выдаёт ошибку, потому используем левак
$f = $cly[$i]
$igy[$f] = 0
$i = $i + 1
end_if
end_if
END_THREAD
$f = 0
for ($i=0,$i<12) // Если этого не сделать - позже выдаст ошибку
arrpush($igx,0)
arrpush($igy,0) // Тут можно всего 6 раз, но зачем делать еще один цикл
end_cyc
$i = 0
$i2 = 0
SetThread(click,1)
while(1)
getscreen
if (PXL(402,476) = 15887871) // Запуск из меню
LClick(444,524)
wait(4)
getscreen
end_if
if (PXL(677,511) = 15887871) // Конец
halt
end_if
// Вот тут начинается основной код
for ($x = 0, $x < 12)
for ($y = 0, $y < 6)
if (($igx[$x] = 0) or ($igy[$y] = 0)) // Что бы десять раз не записало одну и ту же точку в очередь надо проверять не в очереди ли эта точка уже
$cx = 404 + $x * 50 // Эти переменные уже не нужны, остались после версии где ожидать после обнаружения не надо было вообще
$cy = 302 + $y * 50
if (colorR(PXL($cx,$cy)) > 50) // Если цвет не тот, то добавляем в очередь
arrpush($cl,$_ms+300)
arrpush($clx,$x)
arrpush($cly,$y)
$igx[$x] = 1
$igy[$y] = 1
$i2 = $i2 + 1
end_if
end_if
end_cyc
end_cyc
end_cyc
Таблица 12х6, в случайных местах со случайным промежутком времени (могут и 5 одновременно) цвет ячейки меняется и через 300мс после появления нужно по ней кликнуть. То бишь если появится 5 одновременно, то простой waitms(300) после обнаружения уже не канает.
Сделал через очередь в другом потоке. Всё работает, но где то в 70% случаев вместо одного клика по ячейке происходит два и я не могу понять почему.