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

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

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля
так как проверка изменения башни при наведении курсора или кода курсора вас не устроили, то остаётся только таймер принудительно завершающий цикл через некоторое время, я не знаю сколько обычно длится бой поставил 10 сек можете настроить максимальное время самостоятельно.
Код: 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.    $time = $_time_t + 10 // таймер на 10 секунд
  31.      $check = 0
  32.      WHILE(($check = 0)&($time > $_time_t))
  33.         GETSCREEN
  34.         IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  35.           Yes("победа",$_return1, $_return2)        
  36.         ELSE
  37.            IF_PIXEL_IN(220,612, 238,623, 10181433)
  38.              Yes("поражение",$_return1, $_return2)            
  39.            END_IF
  40.         END_IF
  41.      END_CYC
  42.      WAIT(1)
  43.      LOGWRITE ("атака завершена")
  44.   END_IF
  45. END_SUB
  46.  
  47. GETSCREEN                         // (svoboda)
  48. IF_PIXEL_IN(237,363, 253,377, 5262149) //если баст захвачен на карте
  49.   Yes("баст под щитом",346,956)  // альянс  
  50.   LCLICK(446,624)  // бастион
  51.   WAIT(1)
  52. ELSE
  53.   Yes("баст без щита",257,500)  // клик на баст  
  54.   LCLICK(246,571)  // обьявить войну
  55.   WAIT(1)
  56.   LCLICK(264,64)  // пустое
  57. END_IF
  58.  
  59. GETSCREEN
  60. IF_PIXEL_IN(306,339, 321,362, 11495748) //если баст захвачен
  61.   LCLICK($_return1, $_return2)  //клик на освободить
  62.   WAIT(1)
  63. END_IF
  64.  
  65. GETSCREEN
  66. IF_PIXEL_IN(102,547, 117,566, 10116150) //Да
  67.   LCLICK($_return1, $_return2)  //клик на освободить
  68.   WAIT(1)
  69.   LCLICK(49,945)  // на карту
  70.   WAIT(1)
  71.   LCLICK(257,500)  // клик на баст
  72.   WAIT(1)
  73.   LCLICK(246,571)  // обьявить войну
  74.   WAIT(1)
  75.   DBLCLICK(264,64)  // пустое
  76. END_IF
  77. WAIT(1)
  78. bashnya(191,467,198,475,1053206,"башня 1",206,453) // башня 1
  79. bashnya(161,506,167,510,328984, "башня 2",177,495) // башня 2
  80. bashnya(126,528,136,535,1250585,"башня 3",146,520) // башня 3
  81. bashnya(155,559,165,567,1710876,"башня 4",176,549) // башня 4
  82. bashnya(182,594,196,604,1119256,"башня 5",205,585) // башня 5
  83. bashnya(249,595,258,600,1119514,"башня 6",268,586) // башня 6
  84. bashnya(344,594,355,602,1447962,"башня 7",334,584) // башня 7
  85. bashnya(374,561,386,569,1316376,"башня 8",363,552) // башня 8
  86. bashnya(374,527,384,536,987671, "башня 9",391,519) // башня 9
  87. bashnya(341,503,353,515,856084, "башня 10",360,498)// башня 10
  88. bashnya(309,466,320,475,1775636,"башня 11",331,457)// башня 11
  89. WAIT(1)
  90.  
« Последнее редактирование: Январь 14, 2018, 09:22:40 am от kiril »

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Сразу говорю что очень благодарен Вам за помощь и за уделенное мне время.
Так как стояло жесткое условие ничего не делать пока не увидит окно Атаки я поставил таймер и туда.
Работает как и положено но очень часто не срабатывают клики и он заново пробует спустя 15+ сек (так как максимальное время по моим подсчетам до 15 сек) Но тут есть дна проблемка. С момента первой атаки на башню (тоесть с момента обьявления войны на бастион) появляется отсчет времени, дается 5 минут на атаку всех 11 башен и нужно успеть вложиться в это время. Но из за этих не понятных не страбативаний кликов это часто не получается((

Вот так поставил таймер
Код: Clickermann
  1. SUB(bashnya, $par1,$par2,$par3,$par4,$par5,$par6,$par7,$par8)
  2.   GETSCREEN
  3.   IF_PIXEL_IN($par1,$par2,$par3,$par4,$par5)  // башня
  4.      Yes( $par6,$par7,$par8)
  5.  
  6.      $time = $_time_t + 2
  7.      $check = 0   // (atk)
  8.      WHILE(($check = 0)&($time > $_time_t))
  9.         GETSCREEN
  10.         IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
  11.            Yes("окно атака",$_return1, $_return2)
  12.            WAIT(1)
  13.            LCLICK(283,517)  // 8210987
  14.            WAIT(1)
  15.            LCLICK(200,581)  // 9656633
  16.            WAIT(1)
  17.            LCLICK(316,810)  // выбор армии
  18.            WAIT(1)
  19.            LCLICK(250,846)  // начать бой
  20.            WAITMS(300)
  21.            LCLICK(263,783)  // ускорение
  22.         ELSE
  23.            WAITMS(50)
  24.         END_IF
  25.      END_CYC
  26.  
  27.      $time = $_time_t + 15 // таймер на 10 секунд
  28.      $check = 0
  29.      WHILE(($check = 0)&($time > $_time_t))
  30.         GETSCREEN
  31.         IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  32.            Yes("победа",$_return1, $_return2)
  33.         ELSE
  34.            IF_PIXEL_IN(220,612, 238,623, 10181433)
  35.               Yes("поражение",$_return1, $_return2)
  36.            END_IF
  37.         END_IF
  38.      END_CYC
  39.      WAITMS(100)
  40.      LOGWRITE ("атака завершена")
  41.   END_IF
  42. END_SUB

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля
это вы немножко зря в первый цикл время добавили, теперь лучше второй внутрь первого вкладывать, чтоб простои сократить.
А в не понятных пропусках кликов ничего непонятного нет, причины я вам объяснил они обычные для браузерных игр и методы решения то-же
Код: Clickermann
  1. SUB(bashnya, $par1,$par2,$par3,$par4,$par5,$par6,$par7,$par8)
  2.   GETSCREEN
  3.   IF_PIXEL_IN($par1,$par2,$par3,$par4,$par5)  // башня
  4.      Yes( $par6,$par7,$par8)
  5.  
  6.      $time = $_time_t + 2
  7.      $check = 0   // (atk)
  8.      WHILE(($check = 0)&($time > $_time_t))
  9.         GETSCREEN
  10.         IF_PIXEL_IN(179,571, 200,592, 12415305) //окно атака "напасть"
  11.            Yes("окно атака",$_return1, $_return2)
  12.            WAIT(1)
  13.            LCLICK(283,517)  // 8210987
  14.            WAIT(1)
  15.            LCLICK(200,581)  // 9656633
  16.            WAIT(1)
  17.            LCLICK(316,810)  // выбор армии
  18.            WAIT(1)
  19.            LCLICK(250,846)  // начать бой
  20.            WAITMS(300)
  21.            LCLICK(263,783)  // ускорение
  22.            $time = $_time_t + 15 // таймер на 10 секунд
  23.            $check = 0
  24.            WHILE(($check = 0)&($time > $_time_t))
  25.               GETSCREEN
  26.               IF_PIXEL_IN(251,645, 267,660, 12809804)  //победа "продолжить"
  27.                  Yes("победа",$_return1, $_return2)
  28.               ELSE
  29.                  IF_PIXEL_IN(220,612, 238,623, 10181433)
  30.                     Yes("поражение",$_return1, $_return2)
  31.                  END_IF
  32.               END_IF
  33.            END_CYC
  34.            WAITMS(100)
  35.            LOGWRITE ("атака завершена")
  36.         ELSE
  37.            WAITMS(50)
  38.         END_IF
  39.      END_CYC        
  40.   END_IF
  41. END_SUB
  42.  

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля

изменённая подпрограмма пишет код курсора при клике на не прошедших кликах код может быть другим.
Код: Clickermann
  1. SUB(Yes, $par9,$par10,$par11)
  2.   MOVE($par10,$par11) //предварительное наведение курсора    
  3.   $check = 1
  4.   WAIT(1.5)
  5.   LCLICK($par10,$par11)
  6.   LOGWRITE ($par9,"  ",$_cursor) //пишет код курсора при клике
  7.   WAIT(1)
  8. END_SUB
  9.  

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля
если меняется курсор, тогда такая версия ожидающая его
Код: Clickermann
  1. $curs= 31 // здесь вписать код курсора возвращаемый прежней версией подпрограммы
  2. SUB(Yes, $par9,$par10,$par11)
  3.   MOVE($par10,$par11) //предварительное наведение курсора
  4.   $check = 1
  5.   LOGWRITE ($par9,"  ",$_cursor) //пишет код курсора при клике
  6.   WHILE($_cursor!=$curs) // != верно только для Clickermann 4.13.007bond  для ранних писать !
  7.      WAITMS(60)
  8.   END_CYC    
  9.   LCLICK($par10,$par11)  
  10.   WAIT(1)
  11. END_SUB
  12.  

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Игра мобильная, запускаю с эмулятора NOX

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля
Игра мобильная, запускаю с эмулятора NOX
Откровение от Иоанна.  :o  подловил!

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Нее)) Это я к тому что возможно эта информация как-то поможет в этом деле))

kiril

  • Герой форума
  • *****
  • Сообщений: 845
    • Просмотр профиля
Нее)) Это я к тому что возможно эта информация как-то поможет в этом деле))
Да и я к тому, что информация важнейшая, жалко-очень, что так поздно всплыла.

Eney

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
В логах выводит цифру 3 в кликах, я поставил $curs=3 . Клики по прежнему не всегда срабатывают но за счёт того что вложили время второго цикла в первый общая скорость работы скрипта намного возросла.  Поэтому работает намного стабильнее, если не сработал клик по башне в первый раз то на 3 уж точно срабатывает)

kiril

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