Author Topic: Прошу помочь со скриптом  (Read 3473 times)

0 Members and 1 Guest are viewing this topic.

MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Прошу помочь со скриптом
« on: October 03, 2018, 06:55:47 PM »
Всем привет.
Приводить скрипт наверно смысла нет.
Есть скрипт с подпрограммой для сравнения с картинкой в 5 окнах.
Бесконечным циклом по этим 5 окнам вызывается подпрограмма.

Не могу придумать, как реализовать проверку.
Надо примерно так. При нахождении в окне картинки запоминать это на 30 сек, после чего сбрасывать и проверять нашлась ли картинка именно в этом окне в течении след 30 сек. Если нет, то halt.
И так для каждого окна.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Прошу помочь со скриптом
« Reply #1 on: October 03, 2018, 10:10:22 PM »
При нахождении в окне картинки запоминать это на 30 сек...
Что 'это'? То, что нашли? Или в каком окне нашли?

после чего сбрасывать
Что сбрасывать? Запоминание? Тогда зачем?
Чёт полно неясностей.

Когда нашли и идут первые 30 сек мы стоим и ждём? По окнам не ходим? И потом 30 сек проверяем только в этом окне? Или мы всегда проверяем окyа по кругу без остановки и все эти действия нужно делать параллельно? Картинка может найтись сразу в нескольких окнах?

Запоминай в массив номер окна и время окончания... то ли 30, то ли 60 сек. хз для этого же окна.

Без уточнений не решить. Да и код лишним не будет.
« Last Edit: October 04, 2018, 06:01:26 PM by Vint »


MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Прошу помочь со скриптом
« Reply #2 on: October 04, 2018, 03:54:37 PM »
Без уточнений не решить. Да и код лишним не будет.
Игра Покер. 5 окон. Очередность их всегда разная, поэтому не могу ждать в окне, когда найдется очередная картинка.
Картинки ищутся поэтому каждые 50мс в цикле по всем окнам.
Нужно раз в 30 сек проверять была ли найдена картинка в каждом из окон.
Пытался сделать отдельным потоком со временем, но никак не могу понять как и куда запихать инфу, что картинка была найдена.
Собственно совсем немного не хватает. Нужно для каждого окна записать нахождение картинки, а в отдельный поток я уже сделал и там просто проходит проверка.

Code: [Select]
$h = hgetpid($_hwnd_self)
HSET($h,0)
$pos_x1 = 0
$pos_y1 = 0
$width = 840
$height = 610
$var = 0
while($var < 5)                                          //запись id окон
   $win[$var] = HGET (377, 200)
   WNDPOS ($win[$var], $pos_x1, $pos_y1)
   WNDSIZE ($win[$var], $width, $height)
   wndstate($win[$var], 0)
   print($win[$var])
   inc($var)
end_cyc

$fold_l_x1 = 252
$fold_l_y1 = 565
$fold_l_x2 = 355
$fold_l_y2 = 585
$hide_l_x1 = 515
$hide_l_y1 = 565
$hide_l_x2 = 640
$hide_l_y2 = 585

$chk1 = 0

sub(fold, $window)          //подпрограмма поиска одного из изображений в окне
   //   HSET($window,1)
   GETSCREEN
   
   SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l.bmp", -1, 90)
   
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      lclick($X+10, $Y+10)
      $chk1 = 1
   END_CYC
   UNDEFINE($ARR_SCAN)
   
   SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l2.bmp", -1, 90)
   
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      lclick($X+10, $Y+10)
//      $chk1 = 1
   END_CYC
   UNDEFINE($ARR_SCAN)

   SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l.bmp", -1, 90)
   
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      lclick($X+10, $Y+10)
   END_CYC
   UNDEFINE($ARR_SCAN)
   
   SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l2.bmp", -1, 90)
   
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      lclick($X+10, $Y+10)
   END_CYC
   UNDEFINE($ARR_SCAN)
   
end_sub

//setthread(t_alert, 1)

//thread(t_alert)    //отдельный поток с проверкой по времени
//   wait(40)
//   $var1 = 0
//   while($var1 < 5)
//      print($chk[$var1])
//      if($chk[$var1] = 0)
//         execute("alert.bat")
//         halt
//      end_if
//      inc($var1)
//   end_cyc
//   $chk1 = 0
//   setthread(t_alert, 2)
//end_thread


1:
$var = 0
while($var < 5)        //вызов каждого из 5 окон в цикле раз 50 млсек. По окончании все сначала.
   $window = $win[$var]
   wndstate($win[$var], 1)
   HSET($win[$var],1)
   fold($window)
   //print($chk1)
//   if($chk1 = 1)
//      waitms(100)
//      $chk[$var] = $chk1
//      waitms(100)
//   end_if
//   $chk1 = 0
//   //print("chk",$var," - ",$chk[$var])
   inc($var)
   waitms(50)
//   setthread(t_alert, 1)
end_cyc

goto(1)


halt
« Last Edit: October 04, 2018, 04:16:58 PM by MacKlaud »

MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Прошу помочь со скриптом
« Reply #3 on: October 04, 2018, 04:01:47 PM »
Quote
Что 'это'? То, что нашли? Или в каком окне нашли?
Что нашли и в каком окне. И то и то важно.

Quote
Что сбрасывать? Запоминание? Тогда зачем?
Запись, что нашли для каждого окна. После проверки, если у всех нашли картинку, сброс данных.

Quote
Или мы всегда проверяем окна по кругу без остановки и все эти действия нужно делать параллельно? Картинка может найтись сразу в нескольких окнах?
По кругу без остановки. Картинка находится только в одном, но после нажатия на нее картинка появляется в другом. ФОЛД в покере

Quote
Запоминай в массив номер окна и время окончания... толи 30, толи 60 сек. хз для этого же окна.
Не очень понял что и как

MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Прошу помочь со скриптом
« Reply #4 on: October 11, 2018, 07:28:00 PM »
Всем спасибо за помощь(сарказм).
Разобрался сам

MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Прошу помочь со скриптом
« Reply #5 on: October 12, 2018, 11:07:28 AM »
Всем спасибо за помощь(сарказм).
Разобрался сам
ну хоть один честно признался, что спасибо его не искреннее, а с сарказмом.
Как видим любой, кто умеет читать справку, форум и имеет мотивацию - способен "разобраться сам".  ;)
А зачем тогда нужен форум?
Опытный помог бы затратив 5 минут. Мне пришлось экспериментировать 2 дня

MacKlaud

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Прошу помочь со скриптом
« Reply #6 on: October 12, 2018, 03:08:40 PM »
именно для этого и нужен форум. два дня посмотрел здесь темы  многому научился.
А за пять минут использовал чужое  готовое решение своей задачи и остался-бы дурак-дураком.
Форум - школа жизни!
Так я и говорю. Форум не нужен. На все темы можете  писать - гугл в помощь, умнее станете.