Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: UniBlack on March 07, 2015, 04:07:27 PM
-
Здравствуйте. Пишу скрипт для онлайн игры, который будет определять какая буква написана на экране и нажимать её. Так вот для теста я написал код и заскринил картинку буквы которая мне нужна: (http://i.imgur.com/novBscy.png), в данном случае это "Y". И написал вот такой код по примеру, но я так понял что код который я написал бредовый:
GETSCREEN
IF_PICTURE_IN (0,0, 1920,1080, "1.bmp", -1, 10)
KEYPRESS(89)
WAITMS(100)
END_IF
Так вот, как мне реализовать мою задачу?
-
ну зачем так самокритично, вы на практике работоспособность проверяли, почему всего 10% совпадение картинки? при таком проценте скрипт будет принимать за нужную букву практически весь алфавит.
Дело в том, что я даже пробовал и 100% и 90%, и 80% всё равно не работает. Специально в игре находил момент, когда нужно нажать "Y", но он не нажимает её.
-
Если используешь процент совпадения то в месте с этим нужно применять цветокоррекцию! На экране миллион цветов а после COLORMODE(6) их станет всего 64 и соответственно процент совпадения можно поставить куда выше. Вообще рабочие значения там 70-100. Чем больше процент совпадения тем дольше поиск.
Вот таким отдельным скриптом получаешь скорректированный скриншот, с него вырезаешь картинку для поиска.
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT
В своем скрипте используешь тот же уровень.
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920,1080, "Y.bmp", -1, 80) // ограничь область поиска тем местом где должны появляться эти буквы!
KEYPRESS(#Y)
WAITMS(100)
END_IF
-
А если я уберу фон у букв и сделаю его прозрачным, то он найдёт её?
-
Найдет, если и пограничные пикселы сделаешь прозрачными.
Заодно любой участок этого цвета достаточного размера.
-
Найдет, если и пограничные пикселы сделаешь прозрачными.
Заодно любой участок этого цвета достаточного размера.
И если я уберу эти самые пиксели в фотошопе, то мне эту картинку в 24 битах нужно сохранять?
-
В фотошопе не забудь отключить коррекцию цвета, а то он исказит цвета. Картинка должна быть 24 bit
-
В фотошопе не забудь отключить коррекцию цвета, а то он исказит цвета. Картинка должна быть 24 bit
Спасибо, сейчас попробую
-
Убрал фон, а он стал белым. Что делать? Ещё я не нашёл где отключать коррекцию цвета.
Было: (http://i.imgur.com/eogSV0W.png)
Стало: (http://i.imgur.com/TV7QJbN.png)
-
У тебя есть фотошоп но ты не умеешь им тользоваться?!
(http://cs416818.vk.me/v416818596/5f84/z0TOVi2St6g.jpg)
Настройка цветов
(http://savepic.net/6448390.png)
Используй слои!
(http://savepic.net/6454534.png)
Цвет прозрачности 65280
-
Вот образец скрипта
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920,1080, "Y.bmp", 65280, 80) // ограничь область поиска тем местом где должны появляться эти буквы!
KEYPRESS(#Y)
WAITMS(100)
END_IF
-
Окей, тогда получается "n":
Было: (http://i.imgur.com/LhsO1Ge.png)
Стало: (http://i.imgur.com/80KX9Bb.png)
Код получается такой:
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920, 1080, "Y.bmp", 65280, 80) // где искать
KEYPRESS(#Y)
WAITMS(100)
ELSE
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920, 1080, "N.bmp", 65280, 80) // где искать
KEYPRESS(#N)
WAITMS(100)
ELSE
END_IF
И если это правильно, то как зациклить?
-
Чуть чуть не так
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920, 1080, "Y.bmp", 65280, 80) // где искать
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "N.bmp", 65280, 80) // где искать
KEYPRESS(#N)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_IF
Если это весь код то он и так будет крутить бесконечно.
-
Даже если я ещё два условия добавлю всё равно два END_IF в конце?
-
Даже если я ещё два условия добавлю всё равно два END_IF в конце?
Запомни правило, сколько в скрипте IF столько должно быть и END_IF!
IF - это начало условия
END_IF - обозначение его конца.
Некоторые функции типо IF_PICTURE_IN IF_PIXEL_IN тоже своего рода условия и для них тоже нужно писать END_IF
-
Получился такой код:
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, 1920, 1080, "Y.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "Y1.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "Y2.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yy.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yy1.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yy2.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yyy.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yyy1.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "yyy2.bmp", 65280, 80)
KEYPRESS(#Y)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "n.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "n1.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "n2.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "nn.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "nn1.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "nn2.bmp", 65280, 80)
KEYPRESS(#N)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "h.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "h1.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "h2.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "HH.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "HH1.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "HH2.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "hhh.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "hhh1.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
ELSE
IF_PICTURE_IN (0,0, 1920, 1080, "hhh2.bmp", 65280, 80)
KEYPRESS(#H)
WAITMS(100)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
Но он, не работает
-
В коде ошибок нет, единственное в конце стоит добавить небольшую задержку для уменьшения нагрузки на проц. Думай что не так с твоими картинками.