Author Topic: Какая команда?  (Read 2202 times)

0 Members and 1 Guest are viewing this topic.

pitahok21

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Какая команда?
« on: March 03, 2019, 03:06:19 PM »
Всем привет, есть ли в кликермене возможность исключить все цвета фона и искать только определённый цвет по СКРИНУ. Ничего подобного придумать не могу кроме как скриншотить новый крест с таким фоном...
Т.Е. Прикладываю скриншот (вложение), нужно что бы каждый раз не зависимо от фона он нажимал на этот белый крест. Или команда для обнаружения только такой формы пикселей? Благодарю всех кто откликнется на помощь =)
Code: (clickermann) [Select]
#name "Фарм монет"
SUB(поиск, $par1) // подпрограмма с параметрами
   // тело выполняется только после вызова   
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax,$par1, -1, 100)//поиск картинки
         $check = 1
         LCLICK($_return1, $_return2)// клик по найденому
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF     
END_SUB
 
//начало скрипта
$check = 0
WHILE($check = 0)
 поиск("Запуск.bmp") // вызов подпрограммы (обязательно ниже подпрограммы)
поиск("Монетка.bmp")
поиск("Посмотреть.bmp")
поиск("Крестик.bmp")
поиск("Крестик2.bmp")
  поиск("Крестик3.bmp")
  поиск("Крестик4.bmp")
  поиск("Крестик5.bmp")
  поиск("Крестик6.bmp")
  поиск("Крестик7.bmp")
поиск("Крестик8.bmp")
поиск("Крестик9.bmp")
  поиск("Крестик10.bmp")
  поиск("Крестик11.bmp")
поиск("Крестик12.bmp")
поиск("Крестик13.bmp")
поиск("Крестик14.bmp")
поиск("Крестик15.bmp")
  поиск("Крестик16.bmp")
поиск("Крестик17.bmp")
поиск("Крестик18.bmp")
поиск("Крестик19.bmp")
поиск("Крестик20.bmp")
  поиск("Крутить.bmp")
END_CYC

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Какая команда?
« Reply #1 on: March 03, 2019, 03:54:35 PM »
Закрась фон в пеинте и укажи новый цвет фона в поиске IF_PICTURE_IN (x, y, x2, y2, file, [bgcolor], [currency] )
« Last Edit: March 03, 2019, 03:57:12 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Какая команда?
« Reply #2 on: March 03, 2019, 04:11:18 PM »
Закрасить то можно, только мы будем искать белое пятно и найдем его где угодно на белом фоне.

Вот пример, я ищу крайний белый пиксел на крестике, и проверяю также 3 других конца крестика + проверяю два пиксела по бокам чтоб они небыли белыми.

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPXL($ARR_SCAN, 574,309, 1029,766, 16777215)
FOR($i=0,$i<ARRSIZE($ARR_SCAN),2)
   IF((PXL($ARR_SCAN[$i]+7, $ARR_SCAN[$i+1]+1) = 16777215)&(PXL($ARR_SCAN[$i], $ARR_SCAN[$i+1]+10) = 16777215)&(PXL($ARR_SCAN[$i]+8, $ARR_SCAN[$i+1]+10) = 16777215)&(PXL($ARR_SCAN[$i]-1, $ARR_SCAN[$i+1]+6) ! 16777215)&(PXL($ARR_SCAN[$i]+9, $ARR_SCAN[$i+1]+5) ! 16777215))
      MOVE($ARR_SCAN[$i]+5, $ARR_SCAN[$i+1]+5)
      WAITMS(100)
      $i=ARRSIZE($ARR_SCAN)
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)

HALT

PS: Тут для себя обнаружил что 64 битная версия кликера выдает ошибку если массив превышает определенную длинну данных. 32 работает нормально.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Какая команда?
« Reply #3 on: March 04, 2019, 12:21:53 AM »
PS: Тут для себя обнаружил что 64 битная версия кликера выдает ошибку если массив превышает определенную длинну данных. 32 работает нормально.
Я от 64 вообще отказался...
Я не ду... Потому и не бу...

pitahok21

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Какая команда?
« Reply #4 on: March 06, 2019, 01:30:10 AM »
Закрасить то можно, только мы будем искать белое пятно и найдем его где угодно на белом фоне.

Вот пример, я ищу крайний белый пиксел на крестике, и проверяю также 3 других конца крестика + проверяю два пиксела по бокам чтоб они небыли белыми.

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
SCANPXL($ARR_SCAN, 574,309, 1029,766, 16777215)
FOR($i=0,$i<ARRSIZE($ARR_SCAN),2)
   IF((PXL($ARR_SCAN[$i]+7, $ARR_SCAN[$i+1]+1) = 16777215)&(PXL($ARR_SCAN[$i], $ARR_SCAN[$i+1]+10) = 16777215)&(PXL($ARR_SCAN[$i]+8, $ARR_SCAN[$i+1]+10) = 16777215)&(PXL($ARR_SCAN[$i]-1, $ARR_SCAN[$i+1]+6) ! 16777215)&(PXL($ARR_SCAN[$i]+9, $ARR_SCAN[$i+1]+5) ! 16777215))
      MOVE($ARR_SCAN[$i]+5, $ARR_SCAN[$i+1]+5)
      WAITMS(100)
      $i=ARRSIZE($ARR_SCAN)
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)

HALT

PS: Тут для себя обнаружил что 64 битная версия кликера выдает ошибку если массив превышает определенную длинну данных. 32 работает нормально.
Ох, разобраться бы)

pitahok21

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Какая команда?
« Reply #5 on: March 06, 2019, 01:30:27 AM »
Спасибо всем =)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Какая команда?
« Reply #6 on: March 06, 2019, 11:43:44 AM »
PS: Тут для себя обнаружил что 64 битная версия кликера выдает ошибку если массив превышает определенную длинну данных. 32 работает нормально.
Я от 64 вообще отказался...

А я даже не представляю, что б я делал без нее  ::). По началу тоже думал, что смысла в ней нету.

Пример: купил я длл библиотеку у артмани с набором функций чтения памяти, защищенной от чтения, с их драйвером какимто. Так там две версии, для 32бит винды и для х64. Для вызова этих функций кликерманом я пишу длл, которая использует функции из артмановской длл и передает результат кликерману.

Так вот, для работы с версией длл для х64 винды, потребовалось написать именно х64 длл-ку, а эту длл-ку читает только х64 кликерман... Во как. Такчто смысл в существовании Кликрманна х64 всеже есть  :D.
« Last Edit: March 06, 2019, 11:45:53 AM by dramster »