Author Topic: Анализ экрана  (Read 2958 times)

0 Members and 1 Guest are viewing this topic.

ZverEEE

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Анализ экрана
« on: January 06, 2019, 06:00:24 AM »
Здравствуйте. Начал писать свой первый скрипт, бот для гвинта, все шло до момента анализа карт в игровом пространстве.

Ситуация:

Стадия мулигана, нужно с определенным алгоритмом потыкать по картам. Карты расположены статично, поэтому первым делом я написал код и заскринил нужные участки.

Проверил его в той же игре, все сработало. В следующем матче карты поменяли свое положение на экране и ничего не произошло, скорее всего из за того что карты расположены не идеально.

Попробовал колор мод, сделал новые скрины - ничего. Снизил точность, это дало свои результаты, но уже того как время мулигана закончилось, то есть из за большого количества условий, времени на просчет не хватает.

Есть еще пара идей но они уж больно кстыльные, крч, да: Как научить кликер распознавать карты в игровом пространстве?
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (122,260,1711,1058, "Весемир.bmp", -1, 100)          //Мулиган
$ved = $ved + 1
end_if
IF_PICTURE_IN (122,260,1711,1058, "Ламберт.bmp", -1, 100)
$ved = $ved + 1
if($ved > 1)
LCLICK($_return1,$_return2)
waitms(200)
$ved = 1
end_if
end_if
IF_PICTURE_IN (122,260,1711,1058, "Эскель.bmp", -1, 100)
$ved = $ved + 1
if($ved > 1)
LCLICK($_return1,$_return2)
waitms(200)
$ved = 0
end_if
end_if
SCANPICTURE ($house, 122,260,1711,1058, "Лошадь.bmp")
if(arrsize($house) = 4)
$h_y = arrpop($var)
$h_x = arrpop($var)
LCLICK($h_x,$h_y)
waitms(200)
end_if
IF_PICTURE_IN (122,260,1711,1058, "Плотва.bmp", -1, 100)
LCLICK($_return1,$_return2)
waitms(200)
end_if


Для полноты картины выложу весь скипт:
Code: (clickermann) [Select]
$end = 0
$coin = 0
$do = 0

THREAD(main, 0)

SUB(TURN)
GETSCREEN
WHILE(PXL (2500,659) ! 1) // ожидание хода
   WAITMS (100)
   GETSCREEN
END_CYC
END_SUB



sub(do)                  //Ход
getscreen
if (PXL (1234,110) = 16777215)
waitms(500)
IF_PIXEL_IN (2453,765, 2505,796, 6992588)
goto(skipdo)
end_if
end_if
LCLICK(1275,1284) 
waitms(300)
if ($do = 1)
move(1303,1064)
waitms(300)
LCLICK(1303,1064) 
$do = 0
else
move(1526,784)
waitms(300)
LCLICK(1526,784)
$do = 1
end_if
if ($coin = 0)        // использование монетки
wait(3)
GETSCREEN
COLORMODE(7,1014,865,1014,865)
if(PXL (1014,865) ! 16777087)
LCLICK(1176,774)
waitms(500)
move(1392,773)
waitms(100)
LCLICK(1392,773)
else
LCLICK(1004,783)
waitms(500)
move(1392,773)
waitms(100)
LCLICK(1392,773)
end_if
$coin = 1
end_if
waitms(500)
GETSCREEN
IF_PICTURE_IN (59,1378, 78,1413, "end.bmp", -1, 100)    //Ожидание конца руки
$end = 1
END_IF
if($end ! 1)
$time = $_time_t + 10
GETSCREEN
WHILE(PXL (2436, 625) ! 16777215) // ожидание конца анимаций, для завершения хода
   if ($time > $_time_t)
   waitms(100)
   else
   RCLICK($_xmouse,$_ymouse)      //скипаю ход, если залип
waitms(300)   
   LCLICK(1275,1284)
waitms(300)
   LCLICK(435,1288)
wait(2)
   end_if
   GETSCREEN
END_CYC
LCLICK(2436,625)
end_if
waitms(100)
end_sub





GETSCREEN
WHILE(PXL (1233, 1359) ! 16777215) // Поиск обмена
GETSCREEN
if(pxl (1282,818) ! 16777215)
WAITMS (100)
else
LCLICK(1284,831)
waitms(300)
LCLICK(818,737)
end_if
END_CYC

move(2362,159)
waitms(50)
GETSCREEN
COLORMODE(6, 122,260,1711,1058)
IF_PICTURE_IN (122,260,1711,1058, "Весемир.bmp", -1, 100)          //Мулиган
$ved = $ved + 1
end_if
IF_PICTURE_IN (122,260,1711,1058, "Ламберт.bmp", -1, 100)
$ved = $ved + 1
if($ved > 1)
LCLICK($_return1,$_return2)
waitms(200)
$ved = 1
end_if
end_if
IF_PICTURE_IN (122,260,1711,1058, "Эскель.bmp", -1, 100)
$ved = $ved + 1
if($ved > 1)
LCLICK($_return1,$_return2)
waitms(200)
$ved = 0
end_if
end_if
SCANPICTURE ($house, 122,260,1711,1058, "Лошадь.bmp")
if(arrsize($house) = 4)
$h_y = arrpop($var)
$h_x = arrpop($var)
LCLICK($h_x,$h_y)
waitms(200)
end_if
IF_PICTURE_IN (122,260,1711,1058, "Плотва.bmp", -1, 90)
LCLICK($_return1,$_return2)
waitms(200)
end_if

LCLICK(1233,1359)       //клик "Закончить обмен"
WAITMS(100)
LCLICK(1153,823)  // "да"
WAITMS(700)

GETSCREEN
WHILE(PXL (1662, 102) = 16777215)  //ожидание мулигана
   WAITMS (100)
   GETSCREEN
END_CYC


GETSCREEN
COLORMODE(7,1281,864,1281,864)
if(PXL (1281,864) = 8355839) //  Проверка монетки
   $coin = 0
else
   $coin = 1   
END_if
waitms(1500)

TURN()
wait(1)
GETSCREEN
if(PXL (170,1397) = 11075329)
LCLICK(313,956)
waitms(300)
WHILE(PXL (1511,70) ! 16777215) // Абилка
   LCLICK(313,956)
   GETSCREEN
   WAITMS (500)
END_CYC
LCLICK(1922,908)
end_if
waitms(1000)



while($end = 0)   // цикл ожидания конца раунда
turn()
do()
end_cyc


GETSCREEN
WHILE(PXL (2454, 643) ! 16777215) // ожидание паса
   WAITMS (100)
   GETSCREEN
END_CYC
skipdo:
LDOWN(2476,673)  // пас
waitms(600)
LUP(2476,673)


GETSCREEN
WHILE(PXL (1255,87) ! 16777215)  // ожидание паса противника
   WAITMS (100)
   GETSCREEN
END_CYC
wait(5)

KEYPRESS(#ESC)
waitms(150)
LCLICK(1219,821)  // консид
$exit = 1
$score = $score + 1
Print($score)
SETTHREAD(main, 2)
end_thread

GETSCREEN(1688,1101,1688,1101)
WHILE(PXL (1688,1101) ! 5469067) // ждем главное меню
   WAITMS (300)
   GETSCREEN(1688,1101,1688,1101)
END_CYC

LCLICK(720,680)  // 5012657



SETTHREAD(main, 1)
wait(1)
$check = 0
while($check = 0)
if($exit = 1)
$check = 1
$exit = 0
else
IF_PICTURE_IN (1264,811, 1299,832, "ok.bmp", -1, 100)  //Реагирование на внезапные ошибки
$check = 1
LCLICK(1279,817)
else
waitms(100)
end_if
end_if
END_CYC
SETTHREAD(main, 2)


if(PXL (1688,1101) = 5469067)
goto(skip)
end_if


 
GETSCREEN(1183,311,1183,311)
WHILE(PXL (1183,311) ! 2959385) // ожидание статистики/GG
   WAITMS (100)
   GETSCREEN(1183,311,1183,311)
END_CYC
LCLICK(1819,1302)
waitms(500)
LCLICK(1191,1373)

skip:

P.S: Это мой первый скрипт, буду рад всем кто захочет потыкать нуба по ошибкам)
« Last Edit: January 07, 2019, 06:04:56 PM by ZverEEE »

ZverEEE

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Анализ экрана
« Reply #1 on: January 06, 2019, 12:31:42 PM »
так ведь в игре полным-полно анимированных карт, как вы их собираетесь решать , если с простыми картинками не справляетесь?
Бетта тестирование закончилось? Смотрю игру уже начали рекламировать, она теперь работает в 32 разрядных системах?
Давно хотел написать для Гвинта, но он только на 64 в бетте работал и купленный игровой ключ валяется без дела.

Требования к боту приземленные, и будет достаточно обучить бота игре на одной колоде без анализа действий противника, и в случае необходимости заменить анимированые карты обычными. Если конкретнее то: Основное задача - прокачка аккаунта, что тянет за собой необходимость держатся на уровне 50% винтрета, для чего достаточно игры на темповой колоде с несложным геймплэем, к примеру биг леший. И единственная очевидная проблема которая возникает - это анализ карт и способность разыгрывать их в нужной последовательности. Решение которой я попытаюсь найти здесь, повторюсь это первый мой опыт взаимодействия с кодом, поэтому не глупо будет допустить свою неопытность и не попытаться найти решение среди знающих людей. Из бэты вышел, больше не скажу.

ZverEEE

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Анализ экрана
« Reply #2 on: January 06, 2019, 12:44:22 PM »
из за большого количества условий, времени на просчет не хватает.
в вашем коде условий не много, а основное время тратится на  постоянное обновление графического буфера, а судя по указанным координатам монитор у вас не маленький.
Везде указывайте область, ещё старайтесь использовать одинаковый  COLORMODE, он у вас 6, 7, 0 и в случае потоков возможны ошибки, когда разные условия проверяют одну область одновременно.
Code: (clickermann) [Select]
// 06.01.2019
#name "Гвинт"
$end = 0
$coin = 0
$do = 0

THREAD(main, 0)
   SUB(ожидание_1,$par13,$par14,$par15,$par16)  // подпрограмма ожидания в параметрах; координаты, цвет, задержка
      GETSCREEN($par13,$par14,$par13,$par14)
      WHILE(PXL ($par13,$par14) ! $par15)
         WAITMS ($par16)
         GETSCREEN($par13,$par14,$par13,$par14)
      END_CYC
   END_SUB
   
   GETSCREEN (1233, 1359,1233, 1359)
   WHILE(PXL (1233, 1359) ! 16777215) // Поиск обмена
      GETSCREEN(1282,818,1282,818)
      if(pxl (1282,818) ! 16777215)
         WAITMS (100)
      else
         LCLICK(1284,831)
         waitms(300)
         LCLICK(818,737)
      end_if
      GETSCREEN (1233, 1359,1233, 1359)
   END_CYC
   
   move(2362,159)
   waitms(50)
   GETSCREEN (122,260,1711,1058)
   COLORMODE(6, 122,260,1711,1058)
   IF_PICTURE_IN (122,260,1711,1058, "Весемир.bmp", -1, 100)          //Мулиган
      $ved = $ved + 1
   end_if
   IF_PICTURE_IN (122,260,1711,1058, "Ламберт.bmp", -1, 100)
      $ved = $ved + 1
      if($ved > 1)
         LCLICK($_return1,$_return2)
         waitms(200)
         $ved = 1
      end_if
   end_if
   IF_PICTURE_IN (122,260,1711,1058, "Эскель.bmp", -1, 100)
      $ved = $ved + 1
      if($ved > 1)
         LCLICK($_return1,$_return2)
         waitms(200)
         $ved = 0
      end_if
   end_if
   SCANPICTURE ($house, 122,260,1711,1058, "Лошадь.bmp")
   if(arrsize($house) = 4)
      $h_y = arrpop($var)
      $h_x = arrpop($var)
      LCLICK($h_x,$h_y)
      waitms(200)
   end_if
   IF_PICTURE_IN (122,260,1711,1058, "Плотва.bmp", -1, 90)
      LCLICK($_return1,$_return2)
      waitms(200)
   end_if
   
   LCLICK(1233,1359)       //клик "Закончить обмен"
   WAITMS(100)
   LCLICK(1153,823)  // "да"
   WAITMS(700)
   
   ожидание_1(1662,102,16777215,100)  //ожидание мулигана
   
   GETSCREEN (1281,864,1281,864)
   COLORMODE(7,1281,864,1281,864)
   if(PXL (1281,864) = 8355839) //  Проверка монетки
      $coin = 0
   else
      $coin = 1
   END_if
   waitms(1500)
   
   ожидание_1(2500,659,1,100)  // ожидание хода
   wait(1)
   GETSCREEN (170,1397,170,1397)
   if(PXL (170,1397) = 11075329)
      LCLICK(313,956)
      waitms(300)
      WHILE(PXL (1511,70) ! 16777215) // Абилка
         LCLICK(313,956)
         GETSCREEN (1511,70,1511,70)
         WAITMS (500)
      END_CYC
      LCLICK(1922,908)
   end_if
   waitms(1000)
   
   while($end = 0)   // цикл ожидания конца раунда
      ожидание_1(2500,659,1,100)  // ожидание хода
      //Ход
      getscreen (1234,110,1234,110)
      if (PXL (1234,110) = 16777215)
         waitms(500)
         IF_PIXEL_IN (2453,765, 2505,796, 6992588)
            $end = 2
            goto(skipdo)
         end_if
      end_if
      LCLICK(1275,1284)
      waitms(300)
      if ($do = 1)
         move(1303,1064)
         waitms(300)
         LCLICK(1303,1064)
         $do = 0
      else
         move(1526,784)
         waitms(300)
         LCLICK(1526,784)
         $do = 1
      end_if
      if ($coin = 0)        // использование монетки
         wait(3)
         GETSCREEN (1014,865,1014,865)
         COLORMODE(7,1014,865,1014,865)
         if(PXL (1014,865) ! 16777087)
            LCLICK(1176,774)
            waitms(500)
            move(1392,773)
            waitms(100)
            LCLICK(1392,773)
         else
            LCLICK(1004,783)
            waitms(500)
            move(1392,773)
            waitms(100)
            LCLICK(1392,773)
         end_if
         $coin = 1
      end_if
      waitms(500)
      GETSCREEN (59,1378, 78,1413)
      IF_PICTURE_IN (59,1378, 78,1413, "end.bmp", -1, 100)    //Ожидание конца руки
         $end = 1
      END_IF
      if($end ! 1)
         $time = $_time_t + 10
         GETSCREEN (2436,625,2436,625)
         WHILE(PXL (2436, 625) ! 16777215) // ожидание конца анимаций, для завершения хода
            if ($time > $_time_t)
               waitms(100)
            else
               RCLICK($_xmouse,$_ymouse)      //скипаю ход, если залип
               waitms(300)
               LCLICK(1275,1284)
               waitms(300)
               LCLICK(435,1288)
               wait(2)
            end_if
            GETSCREEN(2436,625,2436,625)
         END_CYC
         LCLICK(2436,625)
      end_if
      skipdo:
      waitms(100)
   end_cyc
   
   if($end ! 2)
      ожидание_1(2454,643,16777215,100)  // ожидание паса
   end_if
   
   LDOWN(2476,673)  // пас
   waitms(600)
   LUP(2476,673)
   
   ожидание_1(1255,87,16777215,100)  // ожидание паса противника
   wait(5)
   
   KEYPRESS(#ESC)
   waitms(150)
   LCLICK(1219,821)  // консид
   $exit = 1
   $score = $score + 1
   Print($score)
   SETTHREAD(main, 2)
end_thread


SUB(ожидание_2,$par3,$par4,$par5,$par6)  // подпрограмма ожидания в параметрах; координаты, цвет, задержка
   GETSCREEN($par3,$par4,$par3,$par4)
   WHILE(PXL ($par3,$par4) ! $par5)
      WAITMS ($par6)
      GETSCREEN($par3,$par4,$par3,$par4)
   END_CYC
END_SUB

ожидание_2(1688,1101,5469067,300)   // ждем главное меню
LCLICK(720,680)  // 5012657

SETTHREAD(main, 1)
wait(1)
$check = 0
while($check = 0)
   if($exit = 1)
      $check = 1
      $exit = 0
   else
      //             здесь реагирует по чужому   GETSCREEN в другом потоке ?
      GETSCREEN (1264,811, 1299,832)  //   COLORMODE этой картинке не нужен?
      IF_PICTURE_IN (1264,811, 1299,832, "ok.bmp", -1, 100)  //Реагирование на внезапные ошибки
         $check = 1
         LCLICK(1279,817)
      else
         waitms(100)
      end_if
   end_if
END_CYC
SETTHREAD(main, 2)


if(PXL (1688,1101) = 5469067)
   goto(skip)
end_if


ожидание_2(1183,311,2959385,100) // ожидание статистики/GG
LCLICK(1819,1302)
waitms(500)
LCLICK(1191,1373)

skip:

Благодарю за исправления, теперь попробую в этом разобраться.
Раньше указывал область ГБ, но с добавлением потока решил что стоит от этого отказаться, так как циклы из потоков используют разные области буфера для анализа. С colormode, косяк явный.

ZverEEE

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Анализ экрана
« Reply #3 on: January 06, 2019, 12:58:32 PM »
По поводу основного вопроса, одна из костыльных идей: Попытаться найти координаты каждой карты и под colormode 8, считать количество пикселей одного из цветов в ограниченной области карты, тем самым определяя ее, но это громоздко в реализации и не слишком надежно, к тому же если вспомнить что карты расположены не идеально, то придется добавить погрешность, что еще снизит надежность метода, хотя и должно существенно снизить нагрузки и время на анализ.
« Last Edit: January 06, 2019, 04:24:32 PM by ZverEEE »

ZverEEE

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Анализ экрана
« Reply #4 on: January 07, 2019, 06:02:23 PM »
Немного исправил и оптимизировал код, рандомом думаю заняться как будет готова основная часть. По картам, попробую собрать и чуть позже выложить всю инфу которую имею. По сути это единственное что осталось, а так бот уже вполне способен в ущерб винрейту набивать GG-шки, апать акк, собирать ежедневный лут, достаточно только адаптировать под свое разрешение, если кому интересно.
Code: (clickermann) [Select]
// 07.01.2019
#name "Гвинт 3"
$end = 0
$coin = 0
$do = 0

THREAD(main, 0)
   SUB(ожидание_1,$par13,$par14,$par15,$par16,$par17)  // подпрограмма ожидания в параметрах; координаты, цвет, задержка, mode(!,=)
      if ($par13 <= 1299)
         if($par13 => 1264)      // Ищем общие координаты между указанной точкой и ok.bmp (226 строка)
            $par13 = 1264
         end_if
         $par18 = 1299
         $par20 = $par13
      else
         $par18 = $par13
         $par20 = 1264
      end_if
      if($par14 <= 832)
         if($par14 => 811)
            $par14 = 811
         end_if
         $par19 = 832
         $par21 = $par14
      else
         $par19 = $par14
         $par21 = 811
      end_if
      if($par17 = 1)
         GETSCREEN($par20,$par21,$par18,$par19)
         WHILE(PXL ($par13,$par14) = $par15)
            WAITMS ($par16)
            GETSCREEN($par20,$par21,$par18,$par19)
         END_CYC
      else
         GETSCREEN($par20,$par21,$par13,$par14)
         WHILE(PXL ($par13,$par14) ! $par15)
            WAITMS ($par16)
            GETSCREEN($par20,$par21,$par13,$par14)
         END_CYC
      end_if
   END_SUB
   
   SUB(гетскрин,$cord1,$cord2)
      if ($cord1 <= 1299)
         if($cord1 => 1264)      // Подпрограмма синхронизации координат между указанной точкой и ok.bmp (226 строка)
            $cord1 = 1264
         end_if
         $cord3 = 1299
      else
         $cord3 = $cord1
         $cord1 = 1264
      end_if
      if($cord2 <= 832)
         if($cord2 => 811)
            $cord2 = 811
         end_if
         $cord4 = 832
      else
         $cord4 = $cord2
         $cord2 = 811
      end_if
      GETSCREEN($cord1,$cord2,$cord3,$cord4)
   END_SUB
   
   ожидание_1(1688,1101,5469067,300,0)   // ждем главное меню
   
   LCLICK(1866,671)  // 4281709
   
   гетскрин (1233, 1359)
   WHILE(PXL (1233, 1359) ! 16777215) // Поиск обмена
      гетскрин(1282,818)
      if(pxl (1282,818) ! 16777215)
         WAITMS (100)
      else
         LCLICK(1284,831)
         waitms(300)
         LCLICK(818,737)
      end_if
      гетскрин (1233, 1359)
   END_CYC
   
   //   move(2362,159)
   //   waitms(50)
   //   GETSCREEN (122,260,1711,1058)
   //   COLORMODE(6, 122,260,1711,1058)
   //   IF_PICTURE_IN (122,260,1711,1058, "Весемир.bmp", -1, 100)          //Мулиган
   //      $ved = $ved + 1
   //   end_if
   //   IF_PICTURE_IN (122,260,1711,1058, "Ламберт.bmp", -1, 100)
   //      $ved = $ved + 1
   //      if($ved > 1)
   //         LCLICK($_return1,$_return2)
   //         waitms(200)
   //         $ved = 1
   //      end_if
   //   end_if
   //   IF_PICTURE_IN (122,260,1711,1058, "Эскель.bmp", -1, 100)
   //      $ved = $ved + 1
   //      if($ved > 1)
   //         LCLICK($_return1,$_return2)
   //         waitms(200)
   //         $ved = 0
   //      end_if
   //   end_if
   //   SCANPICTURE ($house, 122,260,1711,1058, "Лошадь.bmp")
   //   if(arrsize($house) = 4)
   //      $h_y = arrpop($var)
   //      $h_x = arrpop($var)
   //      LCLICK($h_x,$h_y)
   //      waitms(200)
   //   end_if
   //   IF_PICTURE_IN (122,260,1711,1058, "Плотва.bmp", -1, 90)
   //      LCLICK($_return1,$_return2)
   //      waitms(200)
   //   end_if
   
   LCLICK(1233,1359)       //клик "Закончить обмен"
   WAITMS(100)
   LCLICK(1153,823)  // "да"
   WAITMS(700)
   
   ожидание_1(1662,102,16777215,100,1)  //ожидание мулигана
   
   гетскрин (1281,864)
   COLORMODE(7,1281,864,1281,864)
   if(PXL (1281,864) = 8355839) //  Проверка монетки
      $coin = 0
   else
      $coin = 1
   END_if
   waitms(1500)
   
   ожидание_1(2500,659,1,100,0)  // ожидание хода
   wait(1)
   гетскрин (170,1397)
   if(PXL (170,1397) = 11075329)
      LCLICK(313,956)
      waitms(300)
      WHILE(PXL (1511,70) ! 16777215) // Абилка
         LCLICK(313,956)
         гетскрин (1511,70)
         WAITMS (500)
      END_CYC
      waitms(200)
      LCLICK(1922,908)
   end_if
   waitms(1000)
   
   while($end = 0)   // цикл ожидания конца раунда
      ожидание_1(2500,659,1,100,0)  // ожидание хода
      //Ход
      GETSCREEN
      if (PXL (1234,110) = 16777215)
         IF_PIXEL_IN (2453,765, 2505,796, 6992588)
            $end = 2
            goto(skipdo)
         end_if
      end_if
      LCLICK(1275,1284)
      waitms(300)
      if ($do = 1)
         move(1303,1064)
         waitms(300)
         LCLICK(1303,1064)
         $do = 0
      else
         move(1526,784)
         waitms(300)
         LCLICK(1526,784)
         $do = 1
      end_if
      if ($coin = 0)        // использование монетки
         wait(3)
         гетскрин (1014,865)
         COLORMODE(7,1014,865,1014,865)
         if(PXL (1014,865) ! 16777087)
            LCLICK(1176,774)
            waitms(500)
            move(1392,773)
            waitms(100)
            LCLICK(1392,773)
         else
            LCLICK(1004,783)
            waitms(500)
            move(1392,773)
            waitms(100)
            LCLICK(1392,773)
         end_if
         $coin = 1
      end_if
      waitms(500)
      GETSCREEN (59,1378, 78,1413)
      IF_PICTURE_IN (59,1378, 78,1413, "end.bmp", -1, 100)    //Ожидание конца руки
         $end = 1
      END_IF
      if($end ! 1)
         $time = $_time_t + 10
         гетскрин (2436,625)
         WHILE(PXL (2436, 625) ! 16777215) // ожидание конца анимаций, для завершения хода
            if ($time > $_time_t)
               waitms(100)
            else
               RCLICK($_xmouse,$_ymouse)      //скипаю ход, если залип
               waitms(300)
               LCLICK(1275,1284)
               waitms(300)
               LCLICK(435,1288)
               wait(2)
            end_if
            гетскрин(2436,625)
         END_CYC
         LCLICK(2436,625)
      end_if
      waitms(100)
   end_cyc
   
   if($end ! 2)
      ожидание_1(2454,643,16777215,100,0)  // ожидание паса
   end_if
   
   skipdo:
   LDOWN(2476,673)  // пас
   waitms(600)
   LUP(2476,673)
   
   ожидание_1(1255,87,16777215,100,0)  // ожидание паса противника
   wait(5)
   
   KEYPRESS(#ESC)
   waitms(150)
   LCLICK(1219,821)  // консид
   $exit = 1
   $score = $score + 1
   Print($score)
   SETTHREAD(main, 2)
end_thread


SETTHREAD(main, 1)
wait(1)
$check = 0
while($check = 0)
   if($exit = 1)
      $check = 1
      $exit = 0
   else                                                      //colormode не нужен, снимок берем из потока, каждый getscreen должен влючать в себя кусок 1264,811, 1299,832
      IF_PICTURE_IN (1264,811, 1299,832, "ok.bmp", -1, 100)  //Реагирование на внезапные ошибки
         $check = 1
         LCLICK(1279,817)
         SETTHREAD(main, 2)
      else
         waitms(100)
      end_if
   end_if
END_CYC

if(PXL (1688,1101) ! 5469067)          //этот блок нужен для завершенного потока, либо после реакции на ошибку
   GETSCREEN(1183,311,1183,311)
   WHILE(PXL (1183,311) ! 2959385)   // ожидание статистики/GG
      WAITMS (100)
      GETSCREEN(1183,311,1183,311)
   END_CYC
   LCLICK(1819,1302)
   waitms(500)
   LCLICK(1191,1373)
end_if
« Last Edit: January 07, 2019, 06:04:12 PM by ZverEEE »