Автор Тема: Запись "сложного" скрипта.  (Прочитано 550 раз)

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

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #30 : Декабрь 02, 2019, 11:36:10 pm »
Если на середину там разница 200 пикселей, нужно по оси х отнять 200 пикселей
Код: Clickermann
  1. LCLICK($_return1 - 200, $_return2 + 145) // Клик по напасть (средняя кнопка)
Не могу понять как заставить скрипт работать на закрытие диалогового окна в миссиях. При запуске он как положено ждет прохождения миссии и после того как миссия пройдена и появляется кнопка продолжить жмет пропустить. Все ок. Но вот не нажимает после этого на кнопку закрыть. Хотя я поставил смещение курсора как положено.
// Ожидаем появления продолжить
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "продолжить.bmp", -1, 60)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по продолжить
      WAITMS(500)
      LCLICK($_return1 - 5, $_return2 + 5) // Клик по пропустить
      WAITMS(500)
      LCLICK($_return1 + 360, $_return2 - 510) // Клик по закрыть
      $check = 1
   ELSE
      WAITMS(50)
   END_IF
END_CYC
 
HALT
И почему то при параметрах картинки -1,70 или больше(80,90) он на нее не нажимает. Я так понял что вторая цифра отвечает за процент совпадения пикселей в игре и картинки? и чем меньше значение тем дольше он ее анализирует? Просто при выскакивании картинки "Продолжить" в игре, нажатие на нее происходить лишь спустя секунды 3-4 а то и все 5.
« Последнее редактирование: Декабрь 02, 2019, 11:38:05 pm от lahesis333 »

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #31 : Декабрь 03, 2019, 12:08:40 pm »
Там такое условие, запуск игры появляется окно с крестиком, первое всегда, второе может быть а может и нет, 5 сек хватает что бы 2 окна поймать, надо проверить первое и закрыть потом в течении 5 сек чекать второе, если есть закрыть, если нет пойти дальше.
Так можно это проверять? Вроде работает, но не уверен что сделал правильно.
Код: Clickermann
  1. $check = 2
  2. $time = $_time_t + 8 // таймер на 8 секунд
  3. WHILE($time > $_time_t) | ($check > 0)
  4.   GETSCREEN
  5.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  6.      INC($check,-1)
  7.      LCLICK($_return1 + 10, $_return2 + 10)
  8.      WAITMS(1500)
  9.   ELSE
  10.      WAITMS(1500)
  11.   END_IF
  12. END_CYC
  13. IF($time ! 0)
  14. END_IF

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #32 : Декабрь 03, 2019, 12:11:05 pm »
Проверяй такой вариант
Код: Clickermann
  1. #name "Хроники хаоса"
  2.  
  3. // Проверяем и закрываем рекламу
  4. $check = 2
  5. $time = $_time_t + 8 // таймер на 8 секунд
  6. WHILE($time > $_time_t) | ($check > 0)
  7.   GETSCREEN
  8.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  9.      INC($check,-1)
  10.      LCLICK($_return1 + 10, $_return2 + 10)
  11.      WAITMS(1500)
  12.   ELSE
  13.      WAITMS(1500)
  14.   END_IF
  15. END_CYC
  16. IF($time ! 0)
  17. END_IF
  18. WAITMS(800)
  19.  
  20. // Ищим арену
  21. GETSCREEN
  22. COLORMODE(6)
  23. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Арена.bmp", -1, 90)
  24.   LCLICK($_return1 + 15, $_return2 + 15) // Клик по арена
  25.   WAITMS(1500)
  26.   LCLICK($_return1, $_return2 + 145) // Клик по напасть
  27.   WAITMS(1500)
  28.   LCLICK($_return1 + 280, $_return2 + 205) // Клик по в бой
  29.   WAITMS(1200)
  30. END_IF
  31.  
  32. // Ожидаем появления паузы
  33. $check = 0
  34. WHILE($check = 0)
  35.   GETSCREEN
  36.   COLORMODE(6)
  37.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Пауза.bmp", -1, 90)
  38.      LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза
  39.      WAITMS(500)
  40.      LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить
  41.      $check = 1
  42.      WAITMS(100)
  43.   ELSE
  44.      WAITMS(50)
  45.   END_IF
  46. END_CYC
  47.  
  48. HALT // Удали это если надо что бы скрипт работал без остановки

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #33 : Декабрь 03, 2019, 12:14:08 pm »
Подскажите пожалуйста, как вы высчитываете нужные координаты куда кликнуть после нахождения нужной картинки? на этом примере:
// Ожидаем появления паузы
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Пауза.bmp", -1, 90)
      LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза
      WAITMS(500)
      LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить
      WAITMS(1500)
      LCLICK($_return1 - 32, $_return2 + 44) // Клик по закрыть
      $check = 1
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
"Пауза.bmp", -1, 90 - Это нахождение части картинки(что такое -1,90?пытался понять через справку, но еще больше запутался)
LCLICK($_return1 + 10, $_return2 + 10) // Клик по пауза - Это клик непосредственно по нашедшейся картинке(почему стоит смещение +10 и +10?или это не смещение?)
LCLICK($_return1 - 460, $_return2 + 340) // Клик по пропустить - Это клик по кнопке пропустить. -460 и +340 смещение относительно какой точки? И можно ли быстро узнать на сколько идет смещение до нужно точки нажатия? А то вчера полвечера просидел с калькулятором считал куда нажать ;D

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #34 : Декабрь 03, 2019, 12:35:17 pm »
Это из справки кликермена
IF_PICTURE_IN ... END_IF

Производит поиск изображения в прямоугольной области буфера анализа.

Синтаксис

IF_PICTURE_IN (x, y, x2, y2, file, [bgcolor], [currency] )
...
END_IF



Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..100)



Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-



Пример
Код: Clickermann
  1. getscreen
  2.  
  3. IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
  4. move($_return1, $_return2)
  5. END_IF


Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #35 : Декабрь 03, 2019, 12:53:45 pm »
После поиска картинки, переменные примут значения координат, найденной картинки (левый верх куска картинки) и дальнейшие расчеты надо делать относительно этих координат. например картинка, которую мы ищем, находится в координатах 10 10 переменные  $_return1 и $_return2 присвоили значение 10 10, что бы попасть по картинке, желательно прибавить к ним пару пикселей получится ($_return1 + 5, $_return2 + 5) теперь нам надо кликнуть ниже и правее от найденной картинки на 10 по х и на 20 по у, мы помним что $_return1 и $_return2 = х10 у10 значит надо прибавить получится ($_return1 + 10, $_return2 + 20) и скажем нужно еще кликнуть левее на 20 и ниже на 30 получится ($_return1 - 20, $_return2 + 30). что бы узнать координаты искомой картинки, можно после поиска картинки, прописать запись в лог такую строчку
Код: Clickermann
  1. GETSCREEN
  2. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  3.  LOGWRITE ($_return1, " х ", $_return2)
  4. END_IF
или такую
Код: Clickermann
  1. GETSCREEN
  2. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Крестик.bmp", -1, 90)
  3.  MOVE($_return1, $_return2) // Курсор прыгнет на эти координаты, потом можно запомнить их или нахать Alt+Q они запишутся в открытом редакторе кликермана
  4. END_IF

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #36 : Декабрь 03, 2019, 12:59:50 pm »
Цитировать
И можно ли быстро узнать на сколько идет смещение до нужно точки нажатия? А то вчера полвечера просидел с калькулятором считал куда нажать ;D
Есть проги которые все это высчитывают, я привык сам с добрым калюкулятором, нахожу координаты картинки потом от них отнимаю те в которые надо нажать после поиска, если значение положительное тогда прибавляешь к $_return если отрицательно то отнимаешь все просто

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #37 : Декабрь 03, 2019, 01:26:30 pm »
Да и еще, учти такой момент, когда ты найдешь картинку переменные $_return запомнят координаты картинки 1 и все расчеты производишь относительно этих координат, но когда ты запустишь поиск второй картинки или пикселя,в переменные $_return запишутся уже координаты картинки 2.

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #38 : Декабрь 03, 2019, 08:54:29 pm »
Да и еще, учти такой момент, когда ты найдешь картинку переменные $_return запомнят координаты картинки 1 и все расчеты производишь относительно этих координат, но когда ты запустишь поиск второй картинки или пикселя,в переменные $_return запишутся уже координаты картинки 2.
Я не совсем понял как пользоваться логом для поиска координаты искомой картинки...В лог то прописал команду чтобы курсор прыгнул на картинку но не знаю как применить чтобы все работало...
И еще вопрос. Как сделать условие:если картинка найдена, то мы нажимаем на нее. а если не найдена то нажимаем на другую(или ESC)?
И как бы сделать так, чтобы при нажатии на картинку, если она снова появляется в том же месте, на нее нажималось именно столько раз, сколько она будет появляться?
« Последнее редактирование: Декабрь 03, 2019, 11:31:42 pm от lahesis333 »

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #39 : Декабрь 04, 2019, 11:54:58 am »
Не совсем понятно, что ты не понял, вроде я довольно понятно все написал.
По поводу если не найдена картинка:
Код: Clickermann
  1. GETSCREEN
  2. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Если найдено
  3.   LCLICK($_return1, $_return2) // Клик по картинке
  4.   WAITMS(100)
  5. ELSE  // Если не найдено
  6.   WAITMS(300)
  7.   KEYPRESS(#ESC) // Жмем ESC
  8.   WAITMS(50)
  9. END_IF
Цитировать
И как бы сделать так, чтобы при нажатии на картинку, если она снова появляется в том же месте, на нее нажималось именно столько раз, сколько она будет появляться?
Напиши прямо куда нажимать? Ты про подарки от друзей? Добавь меня в скайп ggk-vova, вечером если не буду занят, пообщаемся, и попробуем собрать то что тебе нужно.

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #40 : Декабрь 04, 2019, 07:25:26 pm »
Напиши прямо куда нажимать? Ты про подарки от друзей? Добавь меня в скайп ggk-vova, вечером если не буду занят, пообщаемся, и попробуем собрать то что тебе нужно.
Когда заходишь в ежедневные задания, то там есть кнопки завершить(когда выполнил арену и миссии и тд). Там может быть 3,4,5,6 и тд картинок завершить. Когда на нее нажимаешь, она пропадает и на ее месте появляется следующая(если еще есть такие). Нужно чтобы нажималось на одинаковую картинку ЗАВЕРШИТЬ, пока она будет появляться. Как только они закончатся то начать ESC. У меня идея только продублировать несколько раз поиск этой картинки. И везде вставить ELSE с нажатием ESC. Но скрипт и так большой получается а тут еще и 6-7 штук одного и того же. Может можно как то более грамотно организовать?
А также вопрос по мигающей кнопке. Есть мигание, но оно каждый день в другом место. Цвет один и тот же. Нужно найти пиксель(и) в произвольной точке и нажать. Пробовал скринить в тот момент когда появляется "свечение" кнопки, но не находит...
« Последнее редактирование: Декабрь 04, 2019, 07:55:15 pm от lahesis333 »

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #41 : Декабрь 04, 2019, 09:01:24 pm »
Пробуй так
Код: Clickermann
  1. $check = 0
  2. WHILE($check = 0)
  3.   GETSCREEN
  4.   COLORMODE(6)
  5.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Завершить.bmp", -1, 95)
  6.      LCLICK($_return1, $_return2)
  7.      WAITMS(500)
  8.      MOVE($_return1 - 50, $_return2)
  9.   ELSE
  10.      KEYPRESS(#ESC)
  11.      $check = 1
  12.      WAITMS(150)
  13.   END_IF
  14. END_CYC
Цитировать
А также вопрос по мигающей кнопке.
А ее надо увидеть что бы понять что с ней делать

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #42 : Декабрь 05, 2019, 11:26:00 am »
А ее надо увидеть что бы понять что с ней делать
Вот она. Она постоянно мерцает от менее желтой рамки к более желтой. Нужно нажимать на саму картинку в центре.
« Последнее редактирование: Декабрь 05, 2019, 12:18:28 pm от lahesis333 »

Ramzesia

  • Активный участник
  • ***
  • Сообщений: 237
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #43 : Декабрь 05, 2019, 12:48:36 pm »
Целиком окно заскринь, и как ты скрины делаешь?
Если через пеинт то при сохранении выбери BMP формат

lahesis333

  • Освоившийся
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: Запись "сложного" скрипта.
« Ответ #44 : Декабрь 05, 2019, 01:15:22 pm »
Целиком окно заскринь, и как ты скрины делаешь?
Если через пеинт то при сохранении выбери BMP формат
Это я чисто для форума быстро скриню с работы. У нас тут плагин установлен и он сразу сохраняет автоматом.
Вот все окно