Author Topic: Поиск "зависшей" картинки.  (Read 996 times)

0 Members and 2 Guests are viewing this topic.

ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Поиск "зависшей" картинки.
« on: November 07, 2020, 08:42:02 PM »
Уважаемые, помогите пожалуйста со следующей задачей. Есть скрипт формата
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "1.bmp", -1, 100)
ELSE
Все картинки в нем появляются на экране в разное время и при нажатии на них либо пропадают с экрана сразу, либо спустя какое то время. Но бывает, что какая то из картинок "висит" на экране длительное время. По факту в этот момент игра зависает. Как сделать условие, чтобы когда эта картинка "зависла" на экране больше чем на 5 минут, а не пропала после нажатия на нее как это происходит в стандартном режиме работы без подвисания игры, кликер выполнял определенные действия?
Думал решить мою проблему методом из этой темы http://crapware.aidf.org/forum/index.php?topic=4464.msg30475#msg30475, но у меня когда картинка висит курсор продолжает двигаться пытаясь нажать на остальные картинки.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Поиск "зависшей" картинки.
« Reply #1 on: November 07, 2020, 11:34:50 PM »
Code: (clickermann) [Select]
$time = $_time_t + 3000 // таймер на 5 минут
WHILE($time > $_time_t)   
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
      //картинка есть, действуем в течении пяти минут     
   ELSE
      $time = 0  //картинки нет, выход из цикла
   END_IF
END_CYC

IF($time > 0)
   //картинка была на экране более пяти минут.
   //действия.
END_IF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск "зависшей" картинки.
« Reply #2 on: November 09, 2020, 02:39:41 PM »
Смотря как зависает. Может зависать, но происходят движения (возможно циклические), шевелится, короче. А может всё замирать.
Замирание.

у меня когда картинка висит курсор продолжает двигаться пытаясь нажать на остальные картинки.

Если такая беда с зависаниями, нужно после каждого действия дожидаться результата - изменения экрана если картинка должна пропадать. Не ломиться по коду вперёд.
Можно в цикле искать ту же картинку с выходом если не нашлась. Или если нет анимации считать CRC области до и после и сравнивать.
Как пример из одного проекта:
Code: (clickermann) [Select]
SUB(save_hash) //===  сохраняем хэш  ===========================================
    GETSCREEN($centr_x-5, 100, $centr_x+5, $_ymax-100)
    $hash = PXLCRC($centr_x-5, 100, $centr_x+5, $_ymax-100)
END_SUB

SUB(read_hash, $hashwait) //===  ждём смены хэша  ==============================
    $hash_new = $hash
    $time = $_ms + $hashwait
    WHILE(($hash_new = $hash) & ($time > $_ms))
        GETSCREEN($centr_x-5, 100, $centr_x+5, $_ymax-100)
        $hash_new = PXLCRC($centr_x-5, 100, $centr_x+5, $_ymax-100)
        WAITMS(50)
    END_CYC
    IF($hash_new = $hash)
        LOGWRITE ("Вышло время ожидания изменения страницы")
        HINTPOPUP("Вышло время ожидания изменения страницы")
    END_IF
END_SUB


$centr_x = INT($_xmax/2)

save_hash()     // запоминаем хэш
KEYPRESS(#END)  // действие
read_hash(7000) // ждём изменений в течении 7 сек