Введение Не так давно на Google+ появились игры. Прочитав, я решил во что нибудь поиграть. Выбор пал на игру. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло.Примечание: «руками» даже опытному игроку сложно набрать больше 400к Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта. UPD Добавлено видео работы скрипта. Краткое описание игры Игра представляет из себя простую «кликни-на-область-больше-трех-квадратиков-одного-цвета» головоломку.
Хочу представить вам новый скрипт для Травиан. Юзабельности хуже чем фарм машина. Даша, веьмак 3 трофеи скачать игру автоматы. Новинки игр про человека паука, линес 98 играть.
Есть поле 9 на 10, заполненное квадратиками 5 цветов. У нас есть одна минута на то, чтобы набрать максимальное количество очков. При нажатии на область из 3 или более одноцветных клеток, она исчезает, то что над ней проваливается, а сверху падает недостающее. Количество начисленных очков зависит от размера области: чем она больше — тем больше очков. Кроме того, если делать клики быстро, и почти безошибочно, поле вокруг загорается, а каждое удаление(в данном случае взрыв), захватывает соседние с удаляемой областью клетки.
И наконец последняя особенность: наверху есть шкала с алмазом в конце, которая заполняется по мере уничтожения клеток(и уменьшается при ошибочных кликах). Когда она заполняется, на поле в случайном месте появляется горящий алмаз. При клике на него время останавливается, а сверху поля падает огненный шар, уничтожая все клетки в строке и столбце, где находился камень. Определение координат окна Эта часть была добавлена в самую последнюю очередь, до этого координаты угла были жестко прописаны в коде.
Используется функция из сторонней библиотеки ImageSearch для поиска сохраненного шаблона 10 на 10 пикселей. Судя по всему, фон слегка меняется от игры к игре, потому что не любой кусок подходил.
На форумах повсеместно не рекомендуют использование ImageSearch из-за долгого времени работы. Но так как нам нужно определить координаты только один раз в начале игры, провисаний по времени можно не опасаться. Распознавание цветов и сохранение скриншотов Для определения цвета пикселя по его координатам в AutoIt есть функция PixelGetColor. Но как показала практика, измерение всего 90 пикселей занимает полторы секунды, что, конечно, не очень хорошо. Но справедливости ради надо сказать, что бот написанный с использованием этой функции набирал 400-600 тысяч очков, а это больше чем может набрать человек, даже при большой сноровке. На форумах был найден метод сохранения текущего состояния монитора в Bitmap, используя WinAPI. Кстати, этот битмап, при необходимости(например для дебага), можно сохранить в файл функцией ScreenCapture.
Далее смотрим цвета 90 пикселей, расположенных по решетке и по ним строим таблицу цветов квадратиков. Итак, я запустил-таки скрипт, с увлечением наблюдал за его работой, и теперь хочу задать несколько вопросов. Возможно, если подумать над ними — может и получится преодолеть рубеж в 2 кк очков. 1 — периодически бот начинает затупливать в конце игры (последние секунд 20-15) и тыкать абы-как, куча ошибок, цепочки не составляет, рамочка не загорается. Хотя (при дальнейшем наблюдении выяснилось) в этом может быть виновата сама игра, т.к. После пяти раз за раунд загоревшейся рамочки — она попросту не активируется. Возможно — программное ограничение самой игрушки.
2 — бриллианты — отдельная тема, самый высокий кпд у них — в последние 15 секунд (если избавиться от первой проблемы — тупняк в конце игры. Ну и как только доска сверху начинает пустеть — бриллианты могут помочь с её наполнением. Может, стоит учесть это в их использовании и выявлять их положение на доске каждый раз, как делаем скриншот, и знать, что у нас есть брюлик, если доска полупустая? 3 — совсем брутальный вопрос по улучшению поведения бота: есть такая вещь, как тетрис-бот. Он анализирует следующие выпадающие блоки и выстраивает комбинации ещё до того, как блоки выпадут.
Может имеет смысл снизить скорость скрипта, но заставить его делать клики, которые приведут к бОльшим комбинациям через 2-3 хода (т.е. Заставить его при прочих равных делать ход, который приведёт к объединению цветового массива)? Хотя (учитывая поведение игрушки в конце партии (произвольная смена цвета кубиков на поле) — все усилия могут сойти на нет. Ну по порядку: 1 — начало или конец партии — не должно иметь значения для работы скрипта. Возможно начинает тупить из за снижения FPS. Насчет загораний рамки — ограничений не замечал, единственное ограничение которое приходится учитывать — на количество ошибок (или на процент ошибок, не знаю).
Если часто ошибаться, то звук кликов становится монотонным, а рамка перестает загораться. Именно для того, чтобы этого не происходило добавлена задержка между кликами. 2 — алмазы вроде и сейчас неплохо определяются.
У меня в конце минуты редко остается больше 1-2. Если у вас есть идея по эффективному выявлению алмазов при появлении — предлагайте, испробуем. =) Насчет того, чтобы кликать на них когда доска полупустая (а не когда только нашли)- пожалуй стоит попробовать, займусь этим. 3 — в начальных версиях скрипта были различные алгоритмы просчета на несколько ходов вперед. Но есть два фактора сводящие их эффективность на нет. Первый — спецэффекты и ошибки.
ВТорой куда более важен. Если внимательно присмотреться к полю, то можно заметить, что довольно часто квадратики меняют свой цвет, чтобы составить новую область. Сделано это видимо для того, чтобы всегда было куда можно кликнуть. И такие смены, понятное дело, не дают нормально просчитать все.
Да и когда все взрывается мне кажется очков капает больше чем за большие комбинации с длинным просчетом. Спасибо за замечания!
Хочу представить вам новый скрипт для Травиан. Раньше я с ним ни когда не сталкивался, наверное по этому об этом и не писал. Travian Auto Raider - скрипт для фарма по ощущениям юзабельности хуже чем фарм машина, но я сильно привык к фарм машине так, что теоретически кто впервый раз пробует скрипты он может понравится. Из особенностей больше настроек сам скрипт гибче и на мой взгляд дает больше статистики.
Так что попробуйте может быть понравится. В принципе при тесте скрипта не возникло ни каких не поняток. Единственное что калаляет это то что нет привычной менюшки в 'пункте сбора'. А так смысл тот же: Заходим через карту в понравившуюся под фарм деревню. Щелкаем на New Farm.
Скрипт Фарма Машина Для Травиан
Настраиваемся (думаю с настройками проблем не возникнет). И поегнали кнопочка плей всем знакома. Все на самом деле просто. При тесте скрипт повел себя коректно отправил все как надо. Требования: Сервер Травиан 3.6, Firefox и обезьянку не забудьте поставить. Локализация на русский язык присутсвует, но она какая то не совсем локализованая.
Скрипт Фарма Машина Для Травиан Т4
Думаю со временем это исправят. Скачать скрипт Travian Auto Raider: hide- -/hide.