Автор Тема: Помогите упорядочить действия выполнения подпрограм  (Прочитано 828 раз)

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

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Нужно чтобы в подпрограмме SUB(bast) все действия выполнялись последовательно и другое не начиналось пока не закончится выполнение предыдущего. По факту доходит до выполнения подпрограммы atk() и там после выполнения 1 условия все останавливается.
Сама по себе подпрограмма atk() работает корректно.


SUB(bast)
GETSCREEN
IF_PIXEL_IN(1294,467, 1302,473, 1711650)  // áàøíÿ 1
   LCLICK(1307,457)
   WAITMS(500)
atk()
END_IF   
IF_PIXEL_IN(1290,504, 1302,511, 855307) //áàøíÿ 2
   LCLICK(1280,494)
   WAITMS(500)
atk()
END_IF   
IF_PIXEL_IN(1227,528, 1238,533, 1579808) //áàøíÿ 3
   LCLICK(1249,517)
   WAITMS(500)
atk()
END_IF   
IF_PIXEL_IN(1255,559, 1268,566, 1448222) //áàøíÿ 4
   LCLICK(1280,550)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1288,593, 1299,602, 1843493) //áàøíÿ 5
   LCLICK(1309,584)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1350,593, 1362,601, 1711908) //áàøíÿ 6
   LCLICK(1370,587)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1445,594, 1460,603, 2566701) //áàøíÿ 7
   LCLICK(1437,584)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1476,559, 1489,569, 2171943) //áàøíÿ 8
   LCLICK(1464,551)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1507,528, 1519,535, 2040358) //áàøíÿ 9
   LCLICK(1497,519)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1444,504, 1455,512, 1975080) //áàøíÿ 10
   LCLICK(1464,498)
   WAITMS(500)
atk()
END_IF
IF_PIXEL_IN(1414,467, 1424,475, 2235671) //áàøíÿ 11
   LCLICK(1433,458)
   WAITMS(500)
atk()
END_IF
END_SUB

SUB(atk)
GETSCREEN
IF_PIXEL_IN(1296,571, 1330,590, 14385747) //îêíî àòàêà "íàïàñòü"
   LCLICK($_return1, $_return2)
   WAITMS(500)
END_IF   
IF_PIXEL_IN(1400,796, 1437,812, 2071390)  // îêíî âûáîðà àðìèè "íà÷àòü áîé"
   LCLICK($_return1, $_return2)
   WAITMS(500)
END_IF   
IF_PIXEL_IN(1294,832,1322,846, 13729617) //íà÷àëî áîÿ "íà÷àòü áîé"
   LCLICK($_return1, $_return2)
   WAITMS(500)
LCLICK(1352,774)  // êëèê íà óñêîðåíèå àíèìàöèè
END_IF   
   IF_PIXEL_IN(1354,639,1374,654, 13794897) //çàâåðøåíèå "ïðîäîëæèòü"
   LCLICK($_return1, $_return2)
   WAITMS(1000)
END_IF   
   IF_PIXEL_IN(1221,608, 1233,618, 10313019) //ïîðàæåíèå "ïðîäîëæèòü"
   LCLICK($_return1, $_return2)
   WAITMS(1000)
END_IF
END_SUB

WHILE($var < 5)
bast()
WAITMS(500)
END_CYC
« Последнее редактирование: Январь 11, 2018, 12:40:20 am от Eney »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3103
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Чудеса прям. Все подпрограммы вызываются до тела и что не вылазит ошибка pop() ?
Не верю!


Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Чудеса прям. Все подпрограммы вызываются до тела и что не вылазит ошибка pop() ?
Не верю!
Ошибки нет. Извиняюсь тело у меня в конце подпрограм, это я в примере почему то вверх прилепил.
Я немного разобрался почему подпрограмма atk() прерывалась , так как содержимое экрана менялось то надо опять прописывать функцию GETSCREEN.
Но тогда возникает другая проблема в определенном месте действие происходит дольше чем появляется новое окно для сканирования через GETSCREEN и в итоге на этом месте зависает.
Видимо надо добавить условие что если не находит нужный пиксель то возвращает опять на GETSCREEN. Только как это сделать еще не разобрался.
И вообще все у меня очень громоздко и наляписто я уверен что это можно сделать все намного проще.
« Последнее редактирование: Январь 11, 2018, 12:45:39 am от Eney »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3103
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Слева в редакторе есть раздел "шаблоны". Самые важные паттерны уже прописаны там. Всякие ожидания и пр.


Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Подскажите где тут ошибка, при выполнении цикла нажимает 2 раза "поражение" либо "победа" в зависимости от условия но должно же кликнуть только 1 раз.


SUB(atk)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
         $check = 1
         LOGWRITE ("окно атака")
         WAIT(1)
         LCLICK($_return1, $_return2)
         WAIT(1)
         LCLICK(316,810)  // выбор армии
         WAIT(1)
         LCLICK(250,846)  // начать бой
         WAIT(1)
         LCLICK(263,783)  // ускорение
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
         $check1 = 1
         LCLICK($_return1, $_return2)
         LOGWRITE ("победа")
      ELSE
         IF_PIXEL_IN(220,612, 238,623, 10181433)
            $check1 = 1
            LCLICK($_return1, $_return2)
            LOGWRITE ("поражение")
         END_IF
      END_CYC
   END_SUB
« Последнее редактирование: Январь 13, 2018, 01:18:33 am от Eney »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3149
  • Котэ
    • Просмотр профиля
Во втором цикле не хватает окончания END_IF

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Спасибо, не заметил.

Возникла такая проблема. При выполнении программы bast() почему то не всегда срабатывает клик мышкой, тоесть в скрипте по логам все нормально а в игре нет и поэтому на этом моменте скрипт останавливается.
Логика скрипта такая что он проверяет захвачены ли башни (определяет по черным полоскам под ними) если да то делается клик по нему мышкой после чего открывается окно для атаки и запускается программа atk(), по ее завершении скрипт продолжает дальше проверять.
Как тут можно реализовать чтобы делал попытки сделать клик мышкой по башне если с 1 раза не получилось?
Для наглядности вот скриншот башни


SUB(atk)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
         $check = 1
         LOGWRITE ("окно атака")
         WAIT(1)
         LCLICK($_return1, $_return2)
         WAIT(1)
         LCLICK(316,810)  // выбор армии
         WAIT(1)
         LCLICK(250,846)  // начать бой
         WAIT(1)
         LCLICK(263,783)  // ускорение
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
         $check1 = 1
         WAIT(1)
         LCLICK($_return1, $_return2)
         LOGWRITE ("победа")
      ELSE
         IF_PIXEL_IN(220,612, 238,623, 10181433)
            $check1 = 1
            WAIT(1)
            LCLICK($_return1, $_return2)
            LOGWRITE ("поражение")
         END_IF
      END_IF
   END_CYC
   WAIT(1)
END_SUB





SUB(svoboda)
   GETSCREEN
   IF_PIXEL_IN(237,363, 253,377, 5262149) //если баст захвачен на карте
      LOGWRITE ("баст под щитом")
      WAIT(1)
      LCLICK(346,956)  // альянс
      WAIT(1)
      LCLICK(446,624)  // бастион
      WAIT(1)
   ELSE
      LOGWRITE ("баст без щита")
      WAIT(1)
      LCLICK(257,500)  // клик на баст
      WAIT(1)
      LCLICK(246,571)  // обьявить войну
      WAIT(1)
      LCLICK(264,64)  // пустое
   END_IF
   
   GETSCREEN
   IF_PIXEL_IN(306,339, 321,362, 11495748) //если баст захвачен
      LCLICK($_return1, $_return2)  //клик на освободить
      WAIT(1)
   END_IF
   
   GETSCREEN
   IF_PIXEL_IN(102,547, 117,566, 10116150) //Да
      LCLICK($_return1, $_return2)  //клик на освободить
      WAIT(1)
      LCLICK(49,945)  // на карту
      WAIT(1)
      LCLICK(257,500)  // клик на баст
      WAIT(1)
      LCLICK(246,571)  // обьявить войну
      WAIT(1)
      DBLCLICK(264,64)  // пустое
   END_IF
END_SUB

SUB(bast)
   svoboda()
   WAIT(1)
   GETSCREEN
   IF_PIXEL_IN(191,467, 198,475, 1053206)  // башня 1
      WAIT(1)
      LCLICK(206,453)
      LOGWRITE ("башня 1")
      WAIT(1)
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(161,506, 167,510, 328984) //башня 2
      WAIT(1)
      LCLICK(177,495)
      LOGWRITE ("башня 2")
      WAIT(1)
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(126,528, 136,535, 1250585) //башня 3
      WAIT(1)
      LCLICK(146,520)
      LOGWRITE ("башня 3")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(155,559, 165,567, 1710876) //башня 4
      WAIT(1)
      LCLICK(176,549)
      LOGWRITE ("башня 4")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(182,594, 196,604, 1119256) //башня 5
      WAIT(1)
      LCLICK(205,585)
      LOGWRITE ("башня 5")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(249,595, 258,600, 1119514) //башня 6
      WAIT(1)
      LCLICK(268,586)
      LOGWRITE ("башня 6")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(344,594, 355,602, 1447962) //башня 7
      WAIT(1)
      LCLICK(334,584)
      LOGWRITE ("башня 7")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(374,561, 386,569, 1316376) //башня 8
      WAIT(1)
      LCLICK(363,552)
      LOGWRITE ("башня 8")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(374,527, 384,536, 987671) //башня 9
      WAIT(1)
      LCLICK(391,519)
      LOGWRITE ("башня 9")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(341,503, 353,515, 856084) //башня 10
      WAIT(1)
      LCLICK(360,498)
      LOGWRITE ("башня 10")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(309,466, 320,475, 1775636) //башня 11
      WAIT(1)
      LCLICK(331,457)
      LOGWRITE ("башня 11")
      atk()
      LOGWRITE ("атака завершена")
   END_IF
END_SUB

WHILE($var < 5)
   bast()
   WAIT(1)
END_CYC
« Последнее редактирование: Январь 20, 2018, 11:19:21 pm от Eney »

Spw

  • Зашел в гости
  • *
  • Сообщений: 13
  • Addicted
    • Просмотр профиля
После 17 строки добавить повторную проверку bast() ?

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
После 17 строки добавить повторную проверку bast() ?
Не выйдет так ошибку pop() выдает

kiril

  • Герой форума
  • *****
  • Сообщений: 1027
    • Просмотр профиля
конкретно упорядочил, ваши "подпрограммы"- это просто не повторяющиеся куски кода, а весь их смысл в повторении, поэтому написал нормальные, с параметрами.
Клики не проходят из за того что в этот момент комп выполняет другую задачу и если предварительное наведение курсора не сильно поможет, то нужно будет писать цикл ожидания проверяющий изменение кода курсора или картинки под ним.

Код: Clickermann
  1. SUB(Yes, $par9,$par10,$par11)
  2.   MOVE($par10,$par11) //предварительное наведение курсора
  3.   LOGWRITE ($par9)
  4.   $check = 1
  5.   WAIT(1.5)
  6.   LCLICK($par10,$par11)
  7.   WAIT(1)
  8. END_SUB
  9.  
  10. SUB(bashnya, $par1,$par2,$par3,$par4,$par5,$par6,$par7,$par8)
  11.   IF_PIXEL_IN($par1,$par2,$par3,$par4,$par5)  // башня
  12.      Yes( $par6,$par7,$par8)
  13.  
  14.      $check = 0   // (atk)
  15.      WHILE($check = 0)
  16.         GETSCREEN
  17.         IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
  18.           Yes("окно атака",$_return1, $_return2)            
  19.            LCLICK(316,810)  // выбор армии
  20.            WAIT(1)
  21.            LCLICK(250,846)  // начать бой
  22.            WAIT(1)
  23.            LCLICK(263,783)  // ускорение
  24.         ELSE
  25.            WAITMS(50)
  26.         END_IF
  27.      END_CYC
  28.  
  29.      $check = 0
  30.      WHILE($check1 = 0)
  31.         GETSCREEN
  32.         IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  33.           Yes("победа",$_return1, $_return2)        
  34.         ELSE
  35.            IF_PIXEL_IN(220,612, 238,623, 10181433)
  36.              Yes("поражение",$_return1, $_return2)            
  37.            END_IF
  38.         END_IF
  39.      END_CYC
  40.      WAIT(1)
  41.      LOGWRITE ("атака завершена")
  42.   END_IF
  43. END_SUB
  44.  
  45. GETSCREEN                         // (svoboda)
  46. IF_PIXEL_IN(237,363, 253,377, 5262149) //если баст захвачен на карте
  47.   Yes("баст под щитом",346,956)  // альянс  
  48.   LCLICK(446,624)  // бастион
  49.   WAIT(1)
  50. ELSE
  51.   Yes("баст без щита",257,500)  // клик на баст  
  52.   LCLICK(246,571)  // обьявить войну
  53.   WAIT(1)
  54.   LCLICK(264,64)  // пустое
  55. END_IF
  56.  
  57. GETSCREEN
  58. IF_PIXEL_IN(306,339, 321,362, 11495748) //если баст захвачен
  59.   LCLICK($_return1, $_return2)  //клик на освободить
  60.   WAIT(1)
  61. END_IF
  62.  
  63. GETSCREEN
  64. IF_PIXEL_IN(102,547, 117,566, 10116150) //Да
  65.   LCLICK($_return1, $_return2)  //клик на освободить
  66.   WAIT(1)
  67.   LCLICK(49,945)  // на карту
  68.   WAIT(1)
  69.   LCLICK(257,500)  // клик на баст
  70.   WAIT(1)
  71.   LCLICK(246,571)  // обьявить войну
  72.   WAIT(1)
  73.   DBLCLICK(264,64)  // пустое
  74. END_IF
  75. WAIT(1)
  76. GETSCREEN
  77. bashnya(191,467,198,475,1053206,"башня 1",206,453) // башня 1
  78. bashnya(161,506,167,510,328984, "башня 2",177,495) // башня 2
  79. bashnya(126,528,136,535,1250585,"башня 3",146,520) // башня 3
  80. bashnya(155,559,165,567,1710876,"башня 4",176,549) // башня 4
  81. bashnya(182,594,196,604,1119256,"башня 5",205,585) // башня 5
  82. bashnya(249,595,258,600,1119514,"башня 6",268,586) // башня 6
  83. bashnya(344,594,355,602,1447962,"башня 7",334,584) // башня 7
  84. bashnya(374,561,386,569,1316376,"башня 8",363,552) // башня 8
  85. bashnya(374,527,384,536,987671, "башня 9",391,519) // башня 9
  86. bashnya(341,503,353,515,856084, "башня 10",360,498)// башня 10
  87. bashnya(309,466,320,475,1775636,"башня 11",331,457)// башня 11
  88. WAIT(1)
  89.  
« Последнее редактирование: Январь 13, 2018, 10:35:24 pm от kiril »

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Огромное спасибо. Я еще изучаю скипты)
Только я не понимаю как тут реализован цикл. Действия все проходят отлично до атаки 1 башни потом останавливается весь скипт.
Еще не понятно для чего нужен $par6
« Последнее редактирование: Январь 13, 2018, 11:31:05 pm от Eney »

kiril

  • Герой форума
  • *****
  • Сообщений: 1027
    • Просмотр профиля
тогда такой вариант
Код: Clickermann
  1. SUB(Yes, $par9,$par10,$par11)
  2.   MOVE($par10,$par11) //предварительное наведение курсора
  3.   LOGWRITE ($par9)
  4.   $check = 1
  5.   WAIT(1.5)
  6.   LCLICK($par10,$par11)
  7.   WAIT(1)
  8. END_SUB
  9.  
  10. SUB(bashnya, $par1,$par2,$par3,$par4,$par5,$par6,$par7,$par8)
  11.  GETSCREEN
  12.   IF_PIXEL_IN($par1,$par2,$par3,$par4,$par5)  // башня
  13.      Yes( $par6,$par7,$par8)
  14.  
  15.      $check = 0   // (atk)
  16.      WHILE($check = 0)
  17.         GETSCREEN
  18.         IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
  19.           Yes("окно атака",$_return1, $_return2)            
  20.            LCLICK(316,810)  // выбор армии
  21.            WAIT(1)
  22.            LCLICK(250,846)  // начать бой
  23.            WAIT(1)
  24.            LCLICK(263,783)  // ускорение
  25.         ELSE
  26.            WAITMS(50)
  27.         END_IF
  28.      END_CYC
  29.  
  30.      $check = 0
  31.      WHILE($check1 = 0)
  32.         GETSCREEN
  33.         IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  34.           Yes("победа",$_return1, $_return2)        
  35.         ELSE
  36.            IF_PIXEL_IN(220,612, 238,623, 10181433)
  37.              Yes("поражение",$_return1, $_return2)            
  38.            END_IF
  39.         END_IF
  40.      END_CYC
  41.      WAIT(1)
  42.      LOGWRITE ("атака завершена")
  43.   END_IF
  44. END_SUB
  45.  
  46. GETSCREEN                         // (svoboda)
  47. IF_PIXEL_IN(237,363, 253,377, 5262149) //если баст захвачен на карте
  48.   Yes("баст под щитом",346,956)  // альянс  
  49.   LCLICK(446,624)  // бастион
  50.   WAIT(1)
  51. ELSE
  52.   Yes("баст без щита",257,500)  // клик на баст  
  53.   LCLICK(246,571)  // обьявить войну
  54.   WAIT(1)
  55.   LCLICK(264,64)  // пустое
  56. END_IF
  57.  
  58. GETSCREEN
  59. IF_PIXEL_IN(306,339, 321,362, 11495748) //если баст захвачен
  60.   LCLICK($_return1, $_return2)  //клик на освободить
  61.   WAIT(1)
  62. END_IF
  63.  
  64. GETSCREEN
  65. IF_PIXEL_IN(102,547, 117,566, 10116150) //Да
  66.   LCLICK($_return1, $_return2)  //клик на освободить
  67.   WAIT(1)
  68.   LCLICK(49,945)  // на карту
  69.   WAIT(1)
  70.   LCLICK(257,500)  // клик на баст
  71.   WAIT(1)
  72.   LCLICK(246,571)  // обьявить войну
  73.   WAIT(1)
  74.   DBLCLICK(264,64)  // пустое
  75. END_IF
  76. WAIT(1)
  77. bashnya(191,467,198,475,1053206,"башня 1",206,453) // башня 1
  78. bashnya(161,506,167,510,328984, "башня 2",177,495) // башня 2
  79. bashnya(126,528,136,535,1250585,"башня 3",146,520) // башня 3
  80. bashnya(155,559,165,567,1710876,"башня 4",176,549) // башня 4
  81. bashnya(182,594,196,604,1119256,"башня 5",205,585) // башня 5
  82. bashnya(249,595,258,600,1119514,"башня 6",268,586) // башня 6
  83. bashnya(344,594,355,602,1447962,"башня 7",334,584) // башня 7
  84. bashnya(374,561,386,569,1316376,"башня 8",363,552) // башня 8
  85. bashnya(374,527,384,536,987671, "башня 9",391,519) // башня 9
  86. bashnya(341,503,353,515,856084, "башня 10",360,498)// башня 10
  87. bashnya(309,466,320,475,1775636,"башня 11",331,457)// башня 11
  88. WAIT(1)
  89.  
$par6 - задаёт текст сообщения в лог , при наступлении события.
цикл не нужен, Clickermann  повторяет скрипт неограниченное число раз, если не изменить это в настройках программы.

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
тогда у меня что то с кликером так как скрипты не повторяются. В настройках стоит выполнять неограниченное количество раз. Если записывать действия мыши то повторяется а так скрипт доходит до 1 башни и все

kiril

  • Герой форума
  • *****
  • Сообщений: 1027
    • Просмотр профиля
обычная опечатка, у меня ведь нет возможности проверить данный скрипт в работе :)
Код: Clickermann
  1. SUB(Yes, $par9,$par10,$par11)
  2.   MOVE($par10,$par11) //предварительное наведение курсора
  3.   LOGWRITE ($par9)
  4.   $check = 1
  5.   WAIT(1.5)
  6.   LCLICK($par10,$par11)
  7.   WAIT(1)
  8. END_SUB
  9.  
  10. SUB(bashnya, $par1,$par2,$par3,$par4,$par5,$par6,$par7,$par8)
  11.  GETSCREEN
  12.   IF_PIXEL_IN($par1,$par2,$par3,$par4,$par5)  // башня
  13.      Yes( $par6,$par7,$par8)
  14.  
  15.      $check = 0   // (atk)
  16.      WHILE($check = 0)
  17.         GETSCREEN
  18.         IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
  19.           Yes("окно атака",$_return1, $_return2)            
  20.            LCLICK(316,810)  // выбор армии
  21.            WAIT(1)
  22.            LCLICK(250,846)  // начать бой
  23.            WAIT(1)
  24.            LCLICK(263,783)  // ускорение
  25.         ELSE
  26.            WAITMS(50)
  27.         END_IF
  28.      END_CYC
  29.  
  30.      $check = 0
  31.      WHILE($check = 0)
  32.         GETSCREEN
  33.         IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  34.           Yes("победа",$_return1, $_return2)        
  35.         ELSE
  36.            IF_PIXEL_IN(220,612, 238,623, 10181433)
  37.              Yes("поражение",$_return1, $_return2)            
  38.            END_IF
  39.         END_IF
  40.      END_CYC
  41.      WAIT(1)
  42.      LOGWRITE ("атака завершена")
  43.   END_IF
  44. END_SUB
  45.  
  46. GETSCREEN                         // (svoboda)
  47. IF_PIXEL_IN(237,363, 253,377, 5262149) //если баст захвачен на карте
  48.   Yes("баст под щитом",346,956)  // альянс  
  49.   LCLICK(446,624)  // бастион
  50.   WAIT(1)
  51. ELSE
  52.   Yes("баст без щита",257,500)  // клик на баст  
  53.   LCLICK(246,571)  // обьявить войну
  54.   WAIT(1)
  55.   LCLICK(264,64)  // пустое
  56. END_IF
  57.  
  58. GETSCREEN
  59. IF_PIXEL_IN(306,339, 321,362, 11495748) //если баст захвачен
  60.   LCLICK($_return1, $_return2)  //клик на освободить
  61.   WAIT(1)
  62. END_IF
  63.  
  64. GETSCREEN
  65. IF_PIXEL_IN(102,547, 117,566, 10116150) //Да
  66.   LCLICK($_return1, $_return2)  //клик на освободить
  67.   WAIT(1)
  68.   LCLICK(49,945)  // на карту
  69.   WAIT(1)
  70.   LCLICK(257,500)  // клик на баст
  71.   WAIT(1)
  72.   LCLICK(246,571)  // обьявить войну
  73.   WAIT(1)
  74.   DBLCLICK(264,64)  // пустое
  75. END_IF
  76. WAIT(1)
  77. bashnya(191,467,198,475,1053206,"башня 1",206,453) // башня 1
  78. bashnya(161,506,167,510,328984, "башня 2",177,495) // башня 2
  79. bashnya(126,528,136,535,1250585,"башня 3",146,520) // башня 3
  80. bashnya(155,559,165,567,1710876,"башня 4",176,549) // башня 4
  81. bashnya(182,594,196,604,1119256,"башня 5",205,585) // башня 5
  82. bashnya(249,595,258,600,1119514,"башня 6",268,586) // башня 6
  83. bashnya(344,594,355,602,1447962,"башня 7",334,584) // башня 7
  84. bashnya(374,561,386,569,1316376,"башня 8",363,552) // башня 8
  85. bashnya(374,527,384,536,987671, "башня 9",391,519) // башня 9
  86. bashnya(341,503,353,515,856084, "башня 10",360,498)// башня 10
  87. bashnya(309,466,320,475,1775636,"башня 11",331,457)// башня 11
  88. WAIT(1)
  89.  
« Последнее редактирование: Январь 14, 2018, 01:49:50 am от kiril »

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Большое спасибо скрипт теперь проверяет все башни. Но проблема с неудачным кликом по башне осталась. Когда он делает клик по башне и он не срабатывает то он начинает ждать появления окна атаки и ничего дальше не предпринимает пока ее не увидит.