Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - doomka

Pages: [1]
1
Предложения / Re: Анализ текста в окне
« on: July 22, 2018, 11:36:11 PM »
Вечер добрый! Oraven при переходе на  новую версию кликера 4.13 ваш скрипт перестал распознавать нули, все остальные цифры без проблем, а нули ни как. Запускаю 4.12 все ок.
Взгляните если не сложно.

2
Предложения / Re: Анализ текста в окне
« on: April 01, 2018, 01:45:25 PM »
Спасибо большое Oraven. Зона снимка делалась с запасом для первого окна с числовыми данными, так как оно перемещается по Y. Соответственно для получения координат этого окна, скрипту для начала приходится искать привязку по пикселю. Примерно так:

Code: (Clickermann) [Select]
GETSCREEN (526, 174, 874, 527) // Область снимка с окнами
  IF_PIXEL_IN (527, 175, 527, 520, 16777215) // Поиск привязки к первому окну
   $x1a = $_return1 + 42   // Получаем координаты первого окна
   $y1a = $_return2 - 10
   $x2a = $_return1 + 80
   $y2a = $_return2 + 10
  END_IF
COLORMODE(8)
 
Search("0","Pic\digit_0.bmp",$x1a,$y1a, $x2a,$y2a)
Search("1","Pic\digit_1.bmp",$x1a,$y1a, $x2a,$y2a)
Search("2","Pic\digit_2.bmp",$x1a,$y1a, $x2a,$y2a)
Recognize()
$str1 = $str

Search("0","Pic2\digit_0_1.bmp",837,324,870,342)
Search("1","Pic2\digit_1_1.bmp",837,324,870,342)
Search("2","Pic2\digit_2_1.bmp",837,324,870,342)
Recognize()
$str2 = $str
 
Print ($str1, " ", $str2)
 
//waitms (250)
Halt

3
Предложения / Re: Анализ текста в окне
« on: April 01, 2018, 03:37:04 AM »
Всем доброй ночи! Имею два окна с числовыми данными в разных координатах. Скрипт выполняет один снимок в заданный промежуток времени и распознает по координатам окон ряд чисел. Есть ли возможность как то оптимизировать структуру скрипта, sub-ы уместить в один, возможно как то упростить... За основу взял скрипт распознания у Oraven за что ему большое спасибо! :D
Code: (Clickermann) [Select]
SUB(An1, $let, $pict)
   SCANPICTURE($ARR_SCAN, $x1t,$y1t, $x2t,$y2t, $pict, -1, 100)
   FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
      ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
      SWITCH($Let)
      CASE(".") // решение проблемы точки
         ARRPUSH($ARR_OUT, "..")
      DEFAULT
         ARRPUSH($ARR_OUT, $Let)
      END_SWITCH
   END_CYC
   UNDEFINE($ARR_SCAN)
END_SUB

SUB(An2, $let, $pict)
   SCANPICTURE($ARR_SCAN, $x1o,$y1o, $x2o,$y2o, $pict, -1, 100)
   FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
      ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
      SWITCH($Let)
      CASE(".") // решение проблемы точки
         ARRPUSH($ARR_OUT, "..")
      DEFAULT
         ARRPUSH($ARR_OUT, $Let)
      END_SWITCH
   END_CYC
   UNDEFINE($ARR_SCAN)
END_SUB

//--------
$x1t = 837 // координаты распознания для An1
$y1t = 324
$x2t = 870
$y2t = 342
//--------
$x1o = 543 // координаты распознания для An2
$y1o = 332
$x2o = 600
$y2o = 349
//--------
GETSCREEN (526, 174, 874, 527) // координаты основного снимка
COLORMODE(8)

An1("0","Pic\digit_0.bmp")
An1("1","Pic\digit_1.bmp")
An1("2","Pic\digit_2.bmp")
//...
$siz = ARRSIZE($ARR_OUT)
$srtcheck = 0
$srt = 0
FOR($a=$siz-2,($a>0)&($srt=0),-2)
   FOR($b=0,$b<$a,2)
      IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
         $srtcheck = 1
         $tmp = $ARR_OUT[$b]
         $tmp2 = $ARR_OUT[$b+1]
         $ARR_OUT[$b] = $ARR_OUT[$b+2]
         $ARR_OUT[$b+1] = $ARR_OUT[$b+3]
         $ARR_OUT[$b+2] = $tmp
         $ARR_OUT[$b+3] = $tmp2
      END_IF
   END_CYC
   IF($srtcheck = 0)
      $srt = 1
   END_IF
END_CYC

$str = ""
FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
   IF(STRLEN($str) > 0)
      $str = STRREPLACE(STRCONCAT($str, $ARR_OUT[$a+1]), "..", ".")
   ELSE
      $str = STRREPLACE($ARR_OUT[$a+1], "..", ".")
   END_IF
END_CYC
UNDEFINE($ARR_OUT)

An2("0","Pic2\digit_0_1.bmp")
An2("1","Pic2\digit_1_1.bmp")
An2("2","Pic2\digit_2_1.bmp")
//...
$siz = ARRSIZE($ARR_OUT)
$srt2check = 0
$srt2 = 0

FOR($a=$siz-2,($a>0)&($srt2=0),-2)
   FOR($b=0,$b<$a,2)
      IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
         $srt2check = 1
         $tmp = $ARR_OUT[$b]
         $tmp2 = $ARR_OUT[$b+1]
         $ARR_OUT[$b] = $ARR_OUT[$b+2]
         $ARR_OUT[$b+1] = $ARR_OUT[$b+3]
         $ARR_OUT[$b+2] = $tmp
         $ARR_OUT[$b+3] = $tmp2
      END_IF
   END_CYC
   IF($srt2check = 0)
      $srt2 = 1
   END_IF
END_CYC

$str2 = ""
FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
   IF(STRLEN($str2) > 0)
      $str2 = STRREPLACE(STRCONCAT($str2, $ARR_OUT[$a+1]), "..", ".")
   ELSE
      $str2 = STRREPLACE($ARR_OUT[$a+1], "..", ".")
   END_IF
END_CYC
UNDEFINE($ARR_OUT)
//--------------------------------------------------------------

Print ($str, $str2)

//waitms (250)
Halt
 

4
Общие вопросы / Re: действия по времени
« on: March 28, 2018, 02:42:55 PM »
Vint Ваш вариант рабочий, то что и хотел  :D. Большое спасибо. 
Code: (Clickermann) [Select]
$time_start = 57
$time_stop  = 2
Quote
проработает 5 сек от значения 57, до 1
Именно так и работало это чудо у меня.

5
Общие вопросы / Re: действия по времени
« on: March 28, 2018, 01:26:08 PM »
Ребят помогите пожалуйста с вариантом работы скрипта в заданном диапазоне времени.
Нужно чтобы скрипт запускался в N сек. (в моем случае нужно именно сек. без привязки к часам или минутам) и выполнялся в течении заданного времени,
это может быть от пару сек. как в примере и до минуты. Начеркал вот такое постыдное чудо  :-[
Code: (clickermann) [Select]
$time_start = 57 //Здесь задаем время ()сек.) начала работы.
$time_stop  = 5 //Время работы в сек  (Здесь вообщем то и проблема, работает 7 сек. 3 до 00 и 5 после.)
// Нужно от 1, до 60.
if (($_time_s > $time_start -1) | ($_time_s < $time_stop))
print ("Тест ",$_time_s)
end_if
wait(1)
В моем случае вроде как и можно с таким вариантом работать, но хочется все-таки знать как правильно такое реализовать, и если есть такая возможность без цикла.
Возможно как то через  $_time_t ?

6
Oraven Спасибо, работает как часики !

7
Спасибо большое Oraven.
В моем случае при запуске, выполнение действий происходит сразу, так как базовый цвет = 0
и уже после этого происходит правильный цикл.
Как пройти проверку цвета при начальном запуске скрипта?
Если цвет =0 ждет смены цвета на =30719 и только после смены цвета обратно к =0
выполняется цикл:
Code: (clickermann) [Select]
GETSCREEN
WHILE(PXL(458,443) ! 0) //  выполняем действия
   WAITMS(50)
   GETSCREEN
END_CYC
 
move(283,434)
waitms(2000)
move(458,443)

GETSCREEN
WHILE(PXL(458,443) ! 30719) // ждем смену на 0
   WAITMS(50)
   GETSCREEN
END_CYC

//halt
Если же при первом запуске скрипта цвет =30719, ждет смены на =0
и выполняем цикл.


8
Помогите ребят! Нужна подобная функция. Нужно чтобы clicker следил за сменой (базового цвета = 0), дожидался его возврата и уже после этого, выполнял последующие действия.
В моем случае цвет = 0 в постоянных координатах меняется на =30719 и рандомно по времени возвращается к =0.

Pages: [1]