Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Piano GX on March 05, 2016, 04:28:45 PM
-
Можно ли провести прямую между двуямя найденными точками, найти нужный пиксель на этой прямой?
-
вот тебе ссылка, на уравнение прямой. проверяешь все точки по этому уравнению +- вниз/вверх на соответствие с твоим цветом
http://ru.onlinemschool.com/math/library/analytic_geometry/line/ (http://ru.onlinemschool.com/math/library/analytic_geometry/line/)
-
через if-pixel-in находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие
-
за основу взят скрипт Vint'a "плавное перемещение мыши в координаты" из http://crapware.aidf.org/forum/index.php?topic=1147.msg5166#msg5166
SUB(pxl_online,$x1_line,$y1_line,$x2_line,$y2_line,$color_line)
$dist_line = DIST($x2_line,$y2_line,$x1_line,$y1_line)
$step_line=$dist_line-1
$X_step = ($x2_line-$x1_line)/$step_line
$Y_step = ($y2_line-$y1_line)/$step_line
$X_line = $x1_line
$Y_line = $y1_line
FOR($i=0, $i<INT($step_line))
$X_line = $X_line + $X_step
$Y_line = $Y_line + $Y_step
IF(pxl(ROUND($X_line,0), ROUND($Y_line,0)) = $color_line)
arrpush($pxl_arr, ROUND($X_line,0))
arrpush($pxl_arr, ROUND($Y_line,0))
END_IF
WAITMS(1)
END_CYC
END_SUB
//----------------------------------------------
GETSCREEN
pxl_online($x1,$y1,$x2,$y2,$color)
//вызов с параметрами $x1,$y1 - точка 1, $x2,$y2 - точка 2, $color - искомый цвет
// получаем массив с координатами всех найденных пикселей в линии между двумя точками
IF(ARRSIZE ($pxl_arr)>0)
FOR($a=0,$a<ARRSIZE ($pxl_arr),2)
print($pxl_arr[$a],", ",$pxl_arr[$a+1])
END_CYC
ELSE
print("не найдено")
END_IF
halt
если сложно, то вот попроще
SUB(pxl_online,$x1_line,$y1_line,$x2_line,$y2_line,$color_line)
$dist_line = DIST($x2_line,$y2_line,$x1_line,$y1_line)
$step_line=$dist_line-1
$X_step = ($x2_line-$x1_line)/$step_line
$Y_step = ($y2_line-$y1_line)/$step_line
$X_line = $x1_line
$Y_line = $y1_line
$check_pxl=0
FOR($i=0, $i<INT($step_line))
$X_line = $X_line + $X_step
$Y_line = $Y_line + $Y_step
IF(pxl(ROUND($X_line,0), ROUND($Y_line,0)) = $color_line)
$check_pxl=1
$i=INT($step_line)
END_IF
WAITMS(1)
END_CYC
END_SUB
//----------------------------------------------
GETSCREEN
pxl_online($x1,$y1,$x2,$y2,$color)
//вызов с параметрами $x1,$y1 - точка 1, $x2,$y2 - точка 2, $color - искомый цвет
//получаем переменную $check_pxl. если она равна 1, то в линии есть искомый пиксель. если 0 , то нету.
IF($check_pxl=1)
print("пиксель есть")
ELSE
print("пикселя нету")
END_IF
halt
-
через if-pixel-in находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие
проверяешь на припятствия в TZ при стрельбе?
Уравнение прямой.
Скажу сразу, этого мало.