Автор Тема: Прошу помочь со скриптом  (Прочитано 150 раз)

0 Пользователей и 1 Гость просматривают эту тему.

MacKlaud

  • Зашел в гости
  • *
  • Сообщений: 6
    • Просмотр профиля
Прошу помочь со скриптом
« : Октябрь 03, 2018, 06:55:47 pm »
Всем привет.
Приводить скрипт наверно смысла нет.
Есть скрипт с подпрограммой для сравнения с картинкой в 5 окнах.
Бесконечным циклом по этим 5 окнам вызывается подпрограмма.

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3184
  • Лечу куда хочу. cman 4.13.014x32, xp32
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #1 : Октябрь 03, 2018, 10:10:22 pm »
При нахождении в окне картинки запоминать это на 30 сек...
Что 'это'? То, что нашли? Или в каком окне нашли?

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

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

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

Без уточнений не решить. Да и код лишним не будет.
« Последнее редактирование: Октябрь 04, 2018, 06:01:26 pm от Vint »


MacKlaud

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

$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
« Последнее редактирование: Октябрь 04, 2018, 04:16:58 pm от MacKlaud »

MacKlaud

  • Зашел в гости
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #3 : Октябрь 04, 2018, 04:01:47 pm »
Цитировать
Что 'это'? То, что нашли? Или в каком окне нашли?
Что нашли и в каком окне. И то и то важно.

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

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

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

MacKlaud

  • Зашел в гости
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #4 : Октябрь 11, 2018, 07:28:00 pm »
Всем спасибо за помощь(сарказм).
Разобрался сам

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #5 : Октябрь 11, 2018, 08:04:19 pm »
Всем спасибо за помощь(сарказм).
Разобрался сам
ну хоть один честно признался, что спасибо его не искреннее, а с сарказмом.
Как видим любой, кто умеет читать справку, форум и имеет мотивацию - способен "разобраться сам".  ;)

MacKlaud

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

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #7 : Октябрь 12, 2018, 12:25:42 pm »
именно для этого и нужен форум. два дня посмотрел здесь темы  многому научился.
А за пять минут использовал чужое  готовое решение своей задачи и остался-бы дурак-дураком.
Форум - школа жизни!

MacKlaud

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

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Прошу помочь со скриптом
« Ответ #9 : Октябрь 12, 2018, 04:00:07 pm »
я бывает так и пишу, когда точно знаю что тема многократно описана на форуме.
но вы в корне не правы.
Вы ведь не в сети гуглили своё решение, а на этом форуме зависали, зная что решение здесь есть и не ошиблись, так как решение нашлось.
Бывает, что после двух десятков сообщений на элементарные темы выясняется, что у пользователя "не открывается" справка!!!
так что тыкать носом  в источник запаха информации, бывает полезно для воспитуемого.(сарказм)  ;D