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

Основной раздел => Использование => Topic started by: HD1521 on June 04, 2022, 11:44:16 AM

Title: Детектировать разнонаправленные треугольники
Post by: HD1521 on June 04, 2022, 11:44:16 AM
Всем доброго.

Появился вот такой вопрос.
На экране имеется карта, на которой "противники" отображаются в виде краных треугольников, которые могут быть ориентированы как угодно по оружности 360 градусов.
Ориентация и координаты центра треугольника  непрерывно меняются.

Как можно анализируя буфер экрана найти все координаты таких треугольников ? Поиск картинки не работает.
Памажите кто может.
Title: Re: Детектировать разнонаправленные треугольники
Post by: Иван_Васильевич on June 04, 2022, 01:53:33 PM
Сначала ищется красный пиксель, потом подсчитывается число красных пикселей в ограниченной области от найденного и если соответствует требованиям, то координаты запоминаются в массив, делается отступ на заданное число пикселей и сканирование миникарты продолжается. В игре WoT, мой бот так успешно и быстро  находил цели для арты.
Title: Re: Детектировать разнонаправленные треугольники
Post by: HD1521 on June 04, 2022, 03:41:06 PM
А можно попросить кусок кода ?
Title: Re: Детектировать разнонаправленные треугольники
Post by: Иван_Васильевич on June 04, 2022, 04:22:06 PM
А можно попросить кусок кода ?
Code: (clickermann) [Select]

SUB(тип.танка) // --- опред. тип цели на поле  --------------
   // === переменные для выбора  направления  к цели
   $cel_x=$_return1
   $cel_y=$_return2+$korr_markera
   $strelka_x = $_return1 //
   $strelka_y =  $_return2
   $opr_tip = PXLCOUNT ($_return1-7,$_return2-2, $_return1+7,$_return2+19,2039775)
   LOGWRITE($cwic_tip,"  ","тип-",$opr_tip,"  ", $cel_x,"-",$cel_y,)
   $tip_cel1 =  $opr_tip
  IF ($opr_tip >28)    //  было 28  при нормальном увеличении 
   HINTPOPUP ($cwic_tip,"тип-",$opr_tip)
   LOGWRITE("есть цель-",$cwic_tip,"  ", $cel_x,"-",$cel_y," тип",$opr_tip)
   goto(skip_cel)
ELSE
   SWITCH($cwic_tip)
      CASE(1)
         goto(skip_poisk_celi_1)
      case(2)
         goto(skip_poisk_celi_2)
      DEFAULT
         goto(skip_poisk_celi_3)
   END_SWITCH
END_IF

END_SUB

skip111:
GETSCREEN
WAITMS(30)
COLORMODE(5)    // 350,248,1070,600
WAITMS(30)
$cel_y = 400
skip_poisk_celi_1:
$cwic_tip = 1
IF_PIXEL_IN ( 680,$cel_y+5,760,485, 2039775)
   тип.танка()
END_IF  // ===== 1 поиск в центре завершён===
$cel_y = 340
skip_poisk_celi_2:
$cwic_tip = 2
IF_PIXEL_IN (620,$cel_y+5,820,545, 2039775)
   тип.танка()
END_IF   // ===== второй поиск в центре завершён===
$cel_y = 248
skip_poisk_celi_3:
$cwic_tip = 3
IF_PIXEL_IN (350,$cel_y+5,1070,600, 2039775)
   тип.танка()
ELSE
   goto(skip_2_poisk_celi)
END_IF // ===== 3 поиск в центре завершён===
// ===  поиск цели завершён  ====
Вот небольшой кусок. Насколько помню, бот проверял последовательно три сектора, чтоб выбивать сначала ближайших к себе и подсчитав число пикселей определял тип найденной цели, танк, ПТ ,арта или групповая цель если в область подсчёта попадало несколько врагов стоящих очень близко.
Title: Re: Детектировать разнонаправленные треугольники
Post by: HD1521 on June 04, 2022, 05:11:35 PM
Да, идею уловил, спасибо