Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Irina on March 23, 2023, 02:45:19 PM
-
Доброго времени суток!
Подскажите, пожалуйста, что я не так делаю.
Это мой первый опыт работы в кликере (Clickermann v4.13 x32), мне нужна программа, решающая маджонг.
Просмотрела мануалы по автокликеру, в этой теме был похожий вопрос (venedict).
Принцип работы: кликаю по костяшке, кликер делает ее снимок, и ищет похожую картинку. Работает очень через раз, находя либо 0 вариантов (почти всегда), либо вагон и маленькую тележку. Кликер настроен на игру в левой половине экрана.
проверялка $cLicer отключает режим поиска, когда кликаем по найденной картинке. Надеюсь, имеющихся комментариев хватит для понимания принципа работы программы.
Проверка большой картинки отключена, потому что и маленькая-то не находится.
Заранее спасибо.
// 15.03.2023
$cLicer=1
IF (ISKEYDOWN(1)=1) // запись координат клика
if($cLicer=1)
//включаем проверялку
$sx = $_xmouse
$sy = $_ymouse
GETSCREEN // получаем скриншот экрана
COLORMODE(3)
//картинка 20х30 для проверки и 9х9=($capt+1+$capt x $capt+1+$capt) для поиска
$capt=4 //размер картинки для поиска
SCREENSHOTFIX($sx-10,$sy-15, $sx+10,$sy+15, "cost20x30.bmp")
SCREENSHOTFIX($sx-$capt,$sy-$capt, $sx+$capt,$sy+$capt, "cost9x9.bmp")
//сообщим клик мыши
print(STRCONCAT("клик мыши ", $_xmouse," x ", $_ymouse))
//Задержка 0,2 секунды
WHILE(ISKEYDOWN(1)=1)
WAITMS(200)
END_CYC
GETSCREEN // получаем скриншот экрана с закрашенной костяшкой
COLORMODE(3)
//ищем маленькую картинку
undefine($ARR)
SCANPICTURE($ARR, 20,25, 1020,$_ymax-30, "cost9x9.bmp", -1, 20)
//SCANPXL($ARR, 20,25, $_xmax-20,$_ymax-30, $clr)
print(STRCONCAT(ARRSIZE($ARR)/2, " возможных координат"))
if (ARRSIZE($ARR)<10)
//отключаем проверялку
$cLicer=0
$size = ARRSIZE($ARR)
$number=1
FOR($i=0,$i<$size,2)
//перечислим найденные картинки
print(STRCONCAT($number, " ", $ARR[$i]+$capt," х ", $ARR[$i+1]+$capt))
//сделаем снимки для проверки
SCREENSHOTFIX($ARR[$i],$ARR[$i+1],$ARR[$i]+$capt*2,$ARR[$i+1]+$capt*2, STRCONCAT("scr_", $number, ".bmp"))
SCREENSHOTFIX($ARR[$i]-10+$capt,$ARR[$i+1]-15+$capt,$ARR[$i]+10+$capt,$ARR[$i+1]+15+$capt, STRCONCAT("scrBig_", $number, ".bmp"))
//проверим большой картиной
//IF_PICTURE_IN($ARR[$i]-10+capt,$ARR[$i+1]-15+capt,$ARR[$i]+10+capt,$ARR[$i+1]+15+capt, "cost20x30.bmp", -1, 50)
MOVE($ARR[$i]+$capt,$ARR[$i+1]+$capt)
//wait(3)
LCLICK($ARR[$i]+$capt,$ARR[$i+1]+$capt)
//$i=$size
//HALT
//END_IF
$number=$number+1
END_CYC
end_if
$cLicer=1
print(" ")
END_IF
END_IF
-
Подскажите, пожалуйста, что я не так делаю.
Работает очень через раз, находя либо 0 вариантов (почти всегда), либо вагон и маленькую тележку.
Нет паузы в конце действующей если ЛКМ не нажата. Одно ядро процессора будет сильно загружено.
Если мы ищем в области (20,25, 1020,$_ymax-30), то и гетскрину с колормодом можно указать эту область.
COLORMODE(3)
слишком маленький режим колормода, ещё слишком много оттенков. На практике никогда ниже 5 не применял. Самые ходовые 6,7,8
SCANPICTURE($ARR, 20,25, 1020,$_ymax-30, "cost9x9.bmp", -1, 20)
слишком маленький процент совпадения. При таком проценте может находить даже то чего нет, там где его нет. 60 - минимальный край. Лучше не опускаться ниже 70. В любом случае чем выше, тем лучше и быстрее. Поэтому % нужно подбирать сверху-вниз.
проверялка $cLicer отключает режим поиска, когда кликаем по найденной картинке.
не очень понятно что отключает $cLicer. Точнее, в этом коде он не делает ничего, потому, что все манипуляции с ним находятся внутри условия куда мы по нему и зашли.
Второй GETSCREEN+COLORMODE можно не делать, ведь у нас уже есть снимок и ничего не изменилось. Так... "скриншот экрана с закрашенной костяшкой"... т.е. она после клика подкрашивается? Тогда мы в первом гетскрине скорее всего ловим уже закрашенную. А при наведении цвет не меняется?
Не видя скринов на всех этапах трудно сказать в чём причина.
P.S. Хотелось бы отделить в отдельную тему, а то здесь свалка получается.
-
Спасибо за анализ ситуации.
Как задумывалась программа: кликаем по костяшке, снимаем ее изображение. Ждем 0,2 секунды, игра ее закрашивает (обычно в голубой цвет). Снимаем снова, и кликер картинку с белой костяшкой с голубой уже не сравнивает (это чтобы не проверять, не является ли найденная картинка исходной).
проверялка $cLicer. Изначально она 1 и позволяет проверять картинку, при 0 нет. Эта "хитрость" работает, т.е. когда кликерман кликает по найденным рисункам, поиск не запускается.
Для контроля процесса я создаю маленькую картинку (чтобы посмотреть, что кликер нашел).
-
Колормоды тоже проверяла все, включая 9. Все равно при % совпадений выше 30 он ничего не находит.
Возможно, дело в том (как я предполагаю), что костяшки специально смещают на полпикселя, чтобы нельзя было использовать подобные костыли.
Иногда кликерман срабатывает, причем при проверке я целенаправленно не выбираю похожие костяшки. Не могу понять, при каких условиях кликер срабатывает. Использование команды PXLXOR не помогает, хоть это и выглядит заманчиво (http://crapware.aidf.org/forum/index.php?topic=3743.0).
Кликер проверяю по игре https://www.mahjongclubgame.com/ru/, очень удобно.
-
Колормоды тоже проверяла все, включая 9. Все равно при % совпадений выше 30 он ничего не находит.
Возможно, дело в том (как я предполагаю), что костяшки специально смещают на полпикселя, чтобы нельзя было использовать подобные костыли.
Никто это специально не делает. Это простое раздолбайство и лень разработчиков. Уж кучу таких игр повидал. Просто при разработке или указывают % сдвига положения или кратную часть окна 1/2, 1/3, 1/4... что при чётном и нечётном размере окна или блока окна даёт сдвиг на пол пикселя и сглаживание выглядит по другому.
-
проверялка $cLicer. Изначально она 1 и позволяет проверять картинку, при 0 нет. Эта "хитрость" работает, т.е. когда кликерман кликает по найденным рисункам, поиск не запускается.
Для контроля процесса я создаю маленькую картинку (чтобы посмотреть, что кликер нашел).
Почти весь код выполняется внутри условия при $cLicer = 1. Внутри этого условия значение меняется туда-сюда, но это не на что не влияет, мы в это время из условия не выходим, мы в него попали и всё.
-
Спасибо огромное за подсказку!
Здесь действительно нужно подбирать колормод, плюс поиграть %-м совпадения и разрешением маленькой картинки. Подключила проверку большой картинки, тоже подбираю % совпадения.
Интересный костыль получается.