Арамаис Манасян djenjoy96
Сайты, Telegram-боты и AI-решения под ключ
Рейтинг
5 602
№ 252 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
10 /10
Город
Москва
Опыт работы
6 лет
На сайте с
2026 года
Юридический статус
Частное лицо

Автопрохождение подземелий в «Мире Теней»: юзерскрипт

Используемые навыки Git JavaScript Python Vue.js Веб Сканирование

Описание

Заказчик - частное лицо, браузерная онлайн-игра с мобильной веб-версией на Apache Wicket с фрагментами Vue. Нужен был юзерскрипт для Tampermonkey под Chrome и Firefox, который по кругу и без участия человека проходит подземелья: выбирает подземелье на карте с учётом вкладок по уровню и заданной сложности (откл / норм / герой / брутал), входит, ведёт бой на всех этапах, собирает добычу, разбирает рюкзак по правилам, следит за свободным местом и износом снаряжения, при гибели возрождается, ждёт откат подземелий и начинает новый круг.

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

Ограничения из ТЗ: работа только через интерфейс игры, без прямых запросов к серверу. Случайные паузы между действиями. Автоматическая остановка с понятным сообщением при капче, отказе в доступе, незнакомом всплывающем окне, отсутствии прогресса, переполненном рюкзаке и выходе из аккаунта. Обход капчи и защиты игры не делался и в задачу не входил. Кнопка «Стоп» и горячая клавиша. Всё необратимое выключено по умолчанию: скрипт стартует в сухом прогоне и только пишет, что сделал бы с вещами, пока заказчик не подтвердит боевой режим.

Решение

Сначала ТЗ с критериями приёмки и границами: арены, PvP, события, крафт, покупки, вход в аккаунт и обход капчи не входят. Потом разведка интерфейса на тестовом аккаунте через DevTools: 25 дампов DOM по экранам, проверка кликов из JS, дословные тексты сюжетных фаз.

Скрипт. Один файл около 3300 строк JavaScript (ES2015+). Автомат состояний поверх DOM: 22 типа экранов игры и 18 обработчиков, экран распознаётся по стабильным признакам (id, классы, тексты), без привязок к автогенерируемым id и адресам с идентификаторами сессии. Больше 20 настраиваемых параметров плюс редактируемые списки: подземелья и сложности, слоты боя с приоритетами, порогами здоровья и откатами, правила вещей (не личное на аукцион, личное разобрать, остальное выкинуть по списку названий; трогается только свежая добыча), кнопки окон, надписи фаз. Панель настроек и журнала встроена в страницу и переживает подмену body игрой; настройки мигрируют при обновлении версии.

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

Устойчивость. Тик из Web Worker, чтобы фоновая вкладка не замораживала таймеры: это нужно для диалога, который живёт секунды. MutationObserver и поллинг с таймаутами вместо слепых задержек. Защита от петли на окнах, которые не закрываются; ожидание с нарастающей паузой и обновление страницы при ответах сервера 429 и 5xx; восстановление карты подземелий, когда карусель в фоновой вкладке не дорисовывается; учёт одинаковых вещей в добыче.

Журнал. Настройки и журнал в GM_getValue / GM_setValue с запасным вариантом на localStorage. Кольцевой буфер с отдельным блоком событий, хвост пишется при каждой строке и переживает перезагрузки страницы, которые игра делает сама. Кнопка «Скопировать журнал», отчёт «что сделал бы с рюкзаком» для сухого прогона.

Как проверял. Ежедневные прогоны на тестовом аккаунте с разбором журналов. Первый боевой заход вхолостую, переход в боевой режим по подтверждению заказчика. Три ночных прогона перед сдачей.

Инструменты и документы: git и приватный репозиторий, 140 коммитов, Node.js для проверки синтаксиса, Python 3 для сборки PDF. К сдаче: README на 250 строк (установка, настройки, особые подземелья, сухой прогон и боевой режим, таблица причин остановок и что делать, ограничения), краткое резюме, PDF-версии документов.

Результат

Сдано на пятый день при сроке 14 дней по договору: разведка, разработка и три ночных прогона уложились в пять дней.

На приёмке 42 полных круга подряд за ночь без вмешательства, следующей ночью 49. Все четыре особых подземелья пройдены скриптом без гибели персонажа, одно из них семь раз, другое четыре. Добыча обработана по правилам, ожидание отката и возобновление работы сами. Установка проверена в Chrome и Firefox.

Поддержка после сдачи: по договору 14 дней бесплатных правок. За первые шесть дней вышло 11 версий, каждая в тот же день, по журналам и скриншотам заказчика: каждая проблема разбиралась по журналу, а не по догадкам.

К чужому аккаунту отношение аккуратное: ничего платного и необратимого скрипт не нажимает, всё необратимое выключено по умолчанию. Капчу и защиту игры скрипт не обходит: распознаёт и останавливается.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Разработка интернет-магазина Hobby Games — крупнейшего магазина настольных игр и хобби-товаров.
Разработка интернет-магазина Hobby Games — крупнейшего магазина настольных игр и хобби-товаров.
71
Веб-разработка и IT Telegram-бот для операторов обменника: заявки через API провайдера без дублей
Telegram-бот для операторов обменника: заявки через API провайдера без дублей
11
Веб-разработка и IT Перенос 1840 товаров в интернет-магазин на OpenCart 3: поиск дублей, удаление водяного знака с 6275 фото, 1840 описаний заново, формы согласия, кнопка «Уточнить наличие»
Перенос 1840 товаров в интернет-магазин на OpenCart 3: поиск дублей, удаление водяного знака с 6275 фото, 1840 описаний заново, формы согласия, кнопка «Уточнить наличие»
16
Веб-разработка и IT Починка и ускорение интернет-магазина швейного оборудования на OpenCart 2.3 (ocStore): поиск, оформление заказа 13 с => 1 с, кэш опкодов, мобильная вёрстка, формы кредита
Починка и ускорение интернет-магазина швейного оборудования на OpenCart 2.3 (ocStore): поиск, оформление заказа 13 с => 1 с, кэш опкодов, мобильная вёрстка, формы кредита
20