Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Piano GX on March 05, 2016, 04:28:45 PM

Title: цвет мужду двумя точками
Post by: Piano GX on March 05, 2016, 04:28:45 PM
Можно ли провести прямую между двуямя найденными точками,  найти нужный пиксель на этой прямой?
Title: Re: цвет мужду двумя точками
Post by: Кликермен on March 05, 2016, 04:53:12 PM
вот тебе ссылка, на уравнение прямой. проверяешь все точки по этому уравнению +- вниз/вверх на соответствие с твоим цветом
http://ru.onlinemschool.com/math/library/analytic_geometry/line/ (http://ru.onlinemschool.com/math/library/analytic_geometry/line/)
Title: Re: цвет мужду двумя точками
Post by: Piano GX on March 05, 2016, 05:16:07 PM
через if-pixel-in  находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие
Title: Re: цвет мужду двумя точками
Post by: dramster on March 06, 2016, 12:17:54 AM
за основу взят скрипт Vint'a "плавное перемещение мыши в координаты" из http://crapware.aidf.org/forum/index.php?topic=1147.msg5166#msg5166
Code: (clickermann) [Select]
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

если сложно, то вот попроще
Code: (clickermann) [Select]
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
Title: Re: цвет мужду двумя точками
Post by: Vint on March 07, 2016, 01:59:18 PM
через if-pixel-in  находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие
проверяешь на припятствия в TZ при стрельбе?
Уравнение прямой.
Скажу сразу, этого мало.