Скрипт кликер при обнаружении картинки Topic is solved

Помощь в написании скриптов для игр.
User avatar
Tibro
Posts: 14
Joined: 20 Oct 2022, 17:38

Скрипт кликер при обнаружении картинки  Topic is solved

20 Oct 2022, 17:55

Добрый день.
Хочу написать некий скрипт, который будет работать в мини игре по типу "Flappy Bird"
Допустим проплывает рыбка "X" и есть крючок "Y". Крючок двигается только при зажатой ЛКМ и уходит из на стандартную позицию, если отпустить ЛКМ
Нужен скрипт.
Чтобы при обнаружении на экране картинки "X" скрипт кликал по мышке(которая постоянно уходит вверх) и удерживал картинку "X" на позиции картинки "Y"

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

Code: Select all

F2::

 imgFound := false
 while(imgFound = false)
 {
   
  ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, test.png
  if (x тут скобки угловые "")

  {
   click, %x%, %y%
   Sleep 100
   click, %x%, %y%
   Sleep 100
   click, %x%, %y%
   MsgBox Изображение найдено в координатах x=%x%, y=%y%.
   imgFound := true
  }
 }
return
Почему он никак не реагирует?

Image
Image
Image

Что я делаю не так?
Если вы мне поможете в написании или просто чтобы понять, почему не работает, то я буду очень благодарен!
Attachments
12.png
12.png (729.15 KiB) Viewed 3539 times
123123.png
123123.png (629.06 KiB) Viewed 3541 times
image.png
image.png (9.21 KiB) Viewed 3549 times
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Скрипт кликер при обнаружении картинки

21 Oct 2022, 14:07

Чтобы ImageSearch нашёл изображение, оно должно точно (до пикселя) совпадать с искомым.
Можно попробовать сделать поиск менее строгим с помощью опций *n и *TransN:

Code: Select all

; Искать картинку с отличиями в цвете (опция *20 после имени файла):
; 20 - вариативность цвета, от 0 (требуется точное совпадение) до 255 (любой цвет подойдёт, совпадение в любом случае).
ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, test.png *20
Если фон анимированный или неоднородный, а искомая картинка появляется в разных местах, стоит исключить фон из поиска.
Его можно замазать в любом редакторе другим цветом и пропускать эти пиксели при поиске (считать их прозрачными).

Code: Select all

; Искать картинку, пропуская все белые пиксели (опция *TransFFFFFF после имени файла):
; FFFFFF - шестнадцатиричное представление белого цвета; 000000 - чёрного; FF0000  - красного.
ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, test.png *TransFFFFFF
Важно: исключается только указанный цвет, поэтому замазывать надо без алиасинга (сглаживания).
Например, на вашей последней картинке по краям белого есть алиасинг и много переходных цветов (от бледно-голубого до чуть-светлее-фона), и ImageSearch будет пытаться (разумеется, безуспешно) их найти.

Наконец, можно полностью отказаться от ImageSearch и просто проверять цвет определённых пикселей на отличие от известного цвета фона. Это чуть сложнее, зато более гибко и, возможно, производительней.
User avatar
Tibro
Posts: 14
Joined: 20 Oct 2022, 17:38

Re: Скрипт кликер при обнаружении картинки

23 Oct 2022, 13:37

mcl wrote:
21 Oct 2022, 14:07
Чтобы ImageSearch нашёл изображение, оно должно точно (до пикселя) совпадать с искомым.
Можно попробовать сделать поиск менее строгим с помощью опций *n и *TransN:

Code: Select all

; Искать картинку с отличиями в цвете (опция *20 после имени файла):
; 20 - вариативность цвета, от 0 (требуется точное совпадение) до 255 (любой цвет подойдёт, совпадение в любом случае).
ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, test.png *20
Если фон анимированный или неоднородный, а искомая картинка появляется в разных местах, стоит исключить фон из поиска.
Его можно замазать в любом редакторе другим цветом и пропускать эти пиксели при поиске (считать их прозрачными).

Code: Select all

; Искать картинку, пропуская все белые пиксели (опция *TransFFFFFF после имени файла):
; FFFFFF - шестнадцатиричное представление белого цвета; 000000 - чёрного; FF0000  - красного.
ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, test.png *TransFFFFFF
Важно: исключается только указанный цвет, поэтому замазывать надо без алиасинга (сглаживания).
Например, на вашей последней картинке по краям белого есть алиасинг и много переходных цветов (от бледно-голубого до чуть-светлее-фона), и ImageSearch будет пытаться (разумеется, безуспешно) их найти.

Наконец, можно полностью отказаться от ImageSearch и просто проверять цвет определённых пикселей на отличие от известного цвета фона. Это чуть сложнее, зато более гибко и, возможно, производительней.

Code: Select all

 imgFound := false
 while(imgFound = false)
 {
   
  ImageSearch, X, Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *10 *TransRed test_red.png
    ;if (x != "")
     if !ErrorLevel
  {
   click, %x%, %y%
   Sleep 100
   click, %x%, %y%
   Sleep 100
   click, %x%, %y%
   MsgBox Screen Coords x=%x%, y=%y%.
   imgFound := true
  }
 }
return
 
 
Спасибо большое. Вот что я сделал исходя из вашего ответа и это отлично работает, но к сожалению за пределами игры. В самой же игре увы никакой реакции на скрипт.
Спасибо за ваш ответ, но к сожалению это не помогло) В чем может быть причина? Может я не правильно понял?
(Как работать с пикселями я еще не разобрался)
Attachments
12.png
12.png (729.15 KiB) Viewed 3482 times
test_cropped.png
test_cropped.png (1.03 KiB) Viewed 3482 times
test_red.png
test_red.png (2.44 KiB) Viewed 3482 times
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Скрипт кликер при обнаружении картинки

24 Oct 2022, 17:05

Tibro wrote: …это отлично работает, но к сожалению за пределами игры. В самой же игре увы никакой реакции на скрипт.
Если игра запущена в полноэкранном режиме, ImageSearch может не работать. Проверьте, работает ли скрипт с игрой, запущенной в оконном режиме.
User avatar
Tibro
Posts: 14
Joined: 20 Oct 2022, 17:38

Re: Скрипт кликер при обнаружении картинки

27 Oct 2022, 20:58

mcl wrote:
24 Oct 2022, 17:05
Tibro wrote: …это отлично работает, но к сожалению за пределами игры. В самой же игре увы никакой реакции на скрипт.
Если игра запущена в полноэкранном режиме, ImageSearch может не работать. Проверьте, работает ли скрипт с игрой, запущенной в оконном режиме.
К сожалению не помогло

Return to “Скрипты для Игр”

Who is online

Users browsing this forum: No registered users and 4 guests