bash.im ithappens.me zadolba.li
3399

Процесс важнее результата

Играли мы как-то с другом в одну браузерную онлайн-игрушку. Месяца через три надоело совсем. Нарыли в инете бота для неё: сам кликает по карте и собирает бонусы, разбросанные по галактике. Бонусы мелкие, но если собирать их долго, можно неплохо подняться. Бот был написан одним из админов, и как только код утёк в паблик, на карте что-то поменяли, и болванчик стал кликать всегда в одну точку, а то и вообще не двигался, хотя на бонусы исправно щёлкал.

Вспомнили, что где-то не компе валялась ранняя версия известной программы, управляющей курсором мыши. Тогда там ещё не было всяких наворотов, только самые простые функции: клик в точку экрана, перемещение, двойной клик, подождать столько-то секунд. Стали тестировать. Опытным путём забили цикл зигзагообразных перемещений по карте и запустили кликер вместе с работающим ботом. Радости не было предела: он работал! Десять минут созерцания полной автоматизации сбора бонусных коробок пробудили аппетит, и мы пошли пить чай с ништяками. По возвращении нас постигло разочарование: сервер перезагрузился, соединение оборвалось, на экране всплыло окошко с двумя кнопками: «Отмена» и «Подключиться снова». Бот кликал по серому экрану без всякого толку.

Решили предусмотреть такой вариант. Алгоритм был переписан: траектория изменена на более оптимальную, пересмотрены величины пауз между кликами, в середине и начале цикла добавлены три быстрых клика на окошки с ошибкой соединения и на кнопку переподключения. Потестировали с ручным отключением интернета — работает. Оставили всё это дело на ночь.

С утра бот продолжал летать. Остановили процесс, кликнули на ангар посмотреть, сколько насобиралось добра. Разочарование: при активности только на карте звёздного неба коннект с игрой терялся. Получалось, что кораблик летал на карте из кеша, и никаких данных на сервер не передавалось.

Была написана версия цикла 3.0. Добавлены клики на переключение окон Мозиллы, клик на меню ангара, клик на главную, переключение на вкладку с картой, продолжение сбора коробок. Все ошибки, зависящие от игры, были учтены.

Сбор коробок продолжался около трёх ночей. Богатство росло, а интерес уменьшался. Потом и вовсе перестали заходить в игру: комп ночью шумел слишком сильно.