13.04.2018 02:55
 2просмотров 39 0

О скриптах и ботах

Кратко

В статье сделана попытка разобраться, какие существуют боты и др. автоматика в онлайн играх, почему они появляются и как могут применяться.
А также попытка предположить, что может означать пресловутое "не злоупотребляйте".
Все написанное (кроме пролога) является личным мнением и домыслами автора и не претендует на истину.
Все совпадения и ассоциации - случайность.

Пролог

Это было примерно 10 лет назад. Заинтригованный восторженным рассказом знакомого о "великолепной" экономической модели в "зеленой игре", я пошел туда и зарегился. Но... сразу же обнаружил, что посмотреть эту экономическую модель не могу, надо докачаться до 5 уровня. Ну ладно, подумал я - и пошел в бой. А бой в этой игре был тогда (может, и сейчас) стандартный, "удар-блок"... Проведя несколько боев, я понял: до 5 лвл мне не дойти, слишком скучно и нудно. А экономику глянуть хотелось.
На форуме "зеленой игры" было море "гайдов" от всяких горе-психологов о том, что "девочки бьют в грудь, а мальчики в голову" и т.д. Почитал, веселее не стало.
Немного поразмыслив, я подумал, что такой примитивный выбор из 2 радио-кнопок вполне можно сделать браузерным скриптом Greasemonkey. И полез смотреть код страницы...
Там в интересующем меня месте увидел комментарий (скрытый текст, видимый только в коде): "Поверьте, менять тут какие-то параметры абсолютно бесполезно. Честно)". Т.к. параметры (силу, защиту и пр) я менять не хотел, то все же сделал скрипт для выбора 2 радио-кнопок "удар-блок". Проверил - работает, выбирает! Через 2-3 часа у меня был скрипт, выжидающий несколько секунд (рандомно) после загрузки страницы, а затем выбирающий по рандому вариант "удар-блок" и жмущий кнопку "в бой". Т.е. боевой бот.
Наблюдать и отлаживать поведение бота в бою оказалось намного интереснее, чем нажимать "удар-блок" самому))). Рос уровень и моя умелка снайпера. Дойдя до 5 уровня, я посмотрел на экономику, не нашел ничего уж очень интересного... и вернулся к боям. Новое оружие, необходимость подойти поближе, если у противника (доната) дальнобойнее, гранаты - в бот вносились соответствующие изменения.
Бои там были массовые, и мне нужно было только встать в заявку, после чего я мог вернуться к работе. Как пауза в работе - заглядывал в браузер, вставал в новую заявку и т.д. Результаты в боях были если и не лучше всех, но в лучшей тройке-пятерке почти всегда. Рандомный выбор прекрасно работал и в ПВП, и в ПВЕ (там был какой-то остров.. точно не помню). Нужно было покупать оружие, чинить его, устраиваться на работу, куда-то ходить... но от самой нудной части - боев,- бот меня освободил.
Так я дошел до 20+ уровня. Потом закончился один проект на работе, начался новый... и я бросил там играть.


Какие бывают боты/скрипты.

Сейчас практически для любой онлайн игры существуют боты. Для большинства браузерных - еще и браузерные скрипты. Разумеется, правилами боты (а иногда и все подряд) категорически запрещены...  Однако заголовки новостей вроде  "Runescape bot nuking event bans 1.5 million bots in one day" (Зачистка ботов в Runescape блокнула 1,5 млн ботов за 1 день - см. ссылки в конце статьи) показывают реальное положение дел.
Разберем в общих чертах, какие бывают боты/скрипты.

По базированию можно выделить

1) Клиентские (в браузере или просто на компьютере клиента). Пример из ГВД - все скрипты.
2) Серверные (онлайн сервис, читающий страницы или делающий запросы к базе). Примеры из ГВД - сервисы Дейли, статистика lgnd (это все согласовано с администрацией и одобрено)

По способу работы

1) Запускающие игровой механизм (например, переходящие на другую страницу, нажимающие кнопки и пр)
2) Отправляющие запросы на сервер самостоятельно (например, бот, выкупающий на рынке лот, который невозможно купить "руками")
3) Просто браузерные скрипты, анализирующие код страницы и не производящие никаких действий. Это абсолютно безобидная категория. Пример из ГВД - любимые всеми счетчики.

Боты для клиентских игр ("вовка с линейкой") и флеш игр обычно работают, имитируя клики в определенных точках. В браузерных (см пролог или ГВД) - работают с элементами страницы, давая команды браузеру.

Почему они появляются и как могут применяться

Причины появления

1) Рутина и однообразие.
Любая онлайн игра основана на каче ("пока ты спишь - враг качается"). Кач однообразен, и даже при самой прекрасной картинке становится
надоевшим и занудным.
Кроме того, многие действия в игре могут быть реализованы не слишком удобно для пользователя, требовать лишних кликов и пр. Где-то (как в ГВД) это просто низкий приоритет ("до удобств руки не доходят у админов"). Но во многих играх это сделано намеренно, а избавление от рутины предлагается как бонус за реал ("что-то длинно-нудное в 1 клик", VIP-статус и др).
Выше описан мой собственный опыт в "зеленой игре".
2) Желание получить выгоду, преимущество перед другими.
Тут разнообразные рыночные/экономические боты, авто-качалки и пр. Опять же, в некоторых играх такие вещи предлагаются как бонусы за реал.

Применение

Действия, выполняемые в игре программой, можно разделить на 2 вида
1) То, что игрок может сделать сам, "руками". Думаю, тут все понятно.
2) То, что сделать "руками" невозможно.
Последний пример из ГВД - выкуп на рынке лота, который невозможно купить "руками" (а программа может, отправив запрос на сервер напрямую, без кнопки). Еще пример (слышанный мной от старожилов, сам не видел, но долго смеялся) - удар по взлетевшему грифону. Дело в том, что во флеш играх часто скрывают что-то, просто убрав из зоны видимости. И гриф, взлетая, летит вверх и замирает там где-то за пределами видимого поля. Если отправить запрос на сервер с ударом в это место, например, огнешаром, попадешь в грифа. Руками этого сделать, конечно, нельзя.

Автоматика и злоупотребления.

Наконец, подошли к наболевшему - можно ли пользоваться какой-то автоматикой и "не злоупотреблять"? Ответ - да, можно!
Дело в том, что грамотно написанный бот, выполняющий действия 1го типа (которые можно сделать "руками"), при разумном использовании невозможно отличить от живого игрока.
Разумное использование состоит в том, что не только каждое отдельное действие доступно живому игроку, но и все в совокупности тоже могло бы быть сделано живым игроком "руками" (пусть даже для этого он должен быть чокнутым задротом).
Как и во многих других вопросах, тут главное - умение пользоваться))).
Рассмотрим для примера скрипт патруля (HWM_map_patrol), которым пользуется большинство рейнджеров. Некоторые называют его "запрещенным" и даже "багом", хотя, конечно, ничего такого там нет.
Скрипт всего лишь начинает переход по карте (то же можно сделать через быстрые ссылки), а после прибытия, выждав время, начинает следующий переход. Может живой игрок "руками" такое сделать?  Легко! Знай себе сиди перед компом и сторожи прибытие.
Идем дальше. Допустим, наш герой золота не считает, а временем дорожит. Он кладет в рюкзак зеркало. Будучи "тепло одетым", проиграть голому вору в мин ОА практически невозможно, даже для ИИ. Получаем патруль + автобой. Может живой игрок "руками" такое сделать? Конечно, особенно с зеркалом.
Идем еще дальше. К сожалению, после героического победного (разумеется, противник то голый) боя герой попадает на домашнюю страницу, откуда, увы, вернуться к парулю можно только руками... Герой огорченно вздыхает... и добавляет переход обратно на карту с домашней страницы после некоторого ожидания. Может живой игрок "руками" такое сделать? Да.
Герой спокойно "работает" на своей синекуре в московском офисе, его персонаж-рейнджер, не щадя себя, патрулирует и борется с ворами... Но после 50-80 боев арты ломаются, и патруль перестает быть героическим. Поражения от воров? Ни за что! Наш герой ставит скрипт, который после боя на домашней странице проверяет обвес и, если что-то износилось, надевает новое из инвентаря. Может живой игрок "руками" такое сделать? Да.
Ок, скажете вы, а если сломался крафт? Не вопрос, не так сложно сделать скрипт, который в таком случае отправляет арт в ремонт в свою кузницу (если герой-кузнец) или "подвешивает" знакомому кузнецу. Конечно, лучше еще и второй комплект крафта иметь, чтобы воры там не безобразничали безнаказанно. Но, если второго комплекта нет, придется тем же скриптом (периодически) проверять, есть ли что надеть. А если нечего, откладывать патрулирование до лучших времен. Может живой игрок "руками" отправить арт в ремонт? Конечно. Посмотреть в инвентарь? Тоже.
Наш герой не только идейный рейнджер, но и перфекционист, поэтому что-то в этой схеме ему не нравится, не хватает чего-то... Присмотревшись, он понимает, чего - кодотырка! Для автоматического устройства на работу надо иметь подписку на приличном сервисе по чтению капчи... На что только не приходится идти в борьбе за "законность"!
Итак, в результате имеем полностью автоматического рейнджера, который громит воров, проверяет надетый шмот, переодевается, ремонтирует сломанные арты и устраивается на работу. Можно еще и закупать арты в магазине/на карте/на рынке, сути это не меняет.
Внимание, вопрос!  Может живой игрок "руками" все указанное делать? Ответ - да, конечно может!
Второй вопрос: можно ли обвинить игрока в ботоводстве в нормальном режиме, т.е. не используя невыкупаемые лоты и прочие хитрости? Ответ - нет.

Ок, скажете вы, а что же тогда будет "злоупотреблением"?
Ответ - все дело в объеме и режиме работы.

Живой рейнджер может нести свою героическую вахту непрерывно часов 5-6.. ну ладно, 8-10. Рейнджер-задрот, наверное, способен довести эту цифру до 15-18 и удерживать ее 1-2 дня... НО не больше.
Представим, что наш герой должен уехать в командировку/отпуск. Чтобы не оставлять воров без присмотра, он оставляет комп включенным, ГВД - открытым, скрипты - работающими. И вот, в течение 2-4 недель его авто-рейнджер живет самостоятельно. Воры плачут, Скайнет курит в сторонке.
Однако, если кто-то захочет проследить его активность в этот период (а это 2-4 недели в режиме 24/7), станет понятно, что работает бот. Потому что 1 живой игрок "руками" такой режим держать 2 недели просто не сможет. Вот это да, явное злоупотребление.

Радуетесь? Рано. Наш герой-перфекционист тоже прочитал предыдущий абзац, поэтому скрипты будут работать только в рабочее время. Ну или по нескольку часов в день по рандому. Короче, без злоупотреблений).

А теперь можно спокойно спросить
1) Наносит ли вред кому-то описанный выше авто-рейнджер, если "без злоупотреблений"?
Ответ - нет. Т.к. неизвестно, живой это игрок или бот,  а как проводить время (жить или задротить) - личное дело каждого. Более того, живой игрок, воодушевившись целеустремленностью нашего рейнджера, скажет: "А я что, хуже? Да я еще лучше могу задротить, если захочу!", - и будет еще больше играть, может быть, даже донатить.
2) Наносит ли вред кому-то описанный выше авто-рейнджер, если он "злоупотребляет"?
Ответ - да!
- Сам герой нарывается и получает всеобщее осуждение, возможно даже штраф/блок (точнее, блок/штраф).
- Живые герои, глядя на его "совершенный" график, впадают в депрессию ("ууу, я так не смогууу...") и начинают роптать и ныть
- Кто-то, возможно, даже придержит руку, занесенную для доната...

Практические рекомендации

Для тех читателей, которые решили "попробовать с  ботом" или просто установить безобидные счетчики, несколько советов

1) Следите за безопасностью

В идеале - полностью просмотреть и разобраться в коде самому, понять, что именно делает каждая строчка. Если понимаете и уверены, что все безопасно - ОК.
Если сами не разбираетесь - можно послушать и поспрашивать других. На форуме есть специальная тема для вопросов по скриптам.
Если скрипт давно известен и используется сотнями игроков, то, скорее всего, он безопасен. Например, на мой взгляд, полностью безопасны счетчики, наборы, скрипты Демина с расширенной инфой по рынку/инвентарю. Вобщем, практически все скрипты, перечисленные в неофициальной справке, можно считать безопасными. Кстати, скрипт патруля тоже вполне безопасен.
В то же время, есть скрипты, вызывающие сомнения. Сомнения 2-х типов. Первый - автоматическая загрузка множества страниц, пусть даже и с задержкой (пример - поиск по протоколам). При частом использовании будет создавать значительную нагрузку на сервер. Второй - загрузка сторонних ресурсов. Если скрипт загружает страницы НЕ с сервера игры, вы не можете быть уверены в безопасности их содержимого. Пример - скрипт статистики рулетки от тамплиеров. Он просто создает на странице рулетки окошко (iframe), куда грузит страницу с сайта автора. К сожалению, в попытке заработать туда напихали рекламы и... какой только гадости там нет... Не знаю, как там доход у автора, а вот риск у пользователя очень большой, т.к. в стороннем контенте может быть все, что угодно,  от майнеров до фишинга.

2) Бесплатный сыр - в мышеловке.

Если на каком-то сайте вам предлагают "онлайн бот для ГВД" и просят логин-пароль к игре или к почте - это развод. Тут я согласен с Лехой - риск потерять персонажа 99%.
Вообще, всегда полезно подумать о том, какие интересы преследуют те, кто что-то вам предлагает бесплатно. Или, иначе говоря, в какой момент "они" получат свою прибыль или иную выгоду. Если это неясно, следует насторожиться и, желательно, отказаться.
Кстати, если онлайн-бот предлагается платно, это все равно развод. Просто вы еще и карточку/телефон отдадите.

3) Задумался об автоматике - это сигнал!

Сигнал о том, что, вероятно, настало время поменять режим игры. Или сделать перерыв на месяц-другой. Или посмотреть вокруг и поискать другие цели в жизни, кроме "добить 12 ГР". Или завязать вообще. Все потраченные часы, нервы, силы и деньги УЖЕ выполнили свою роль, УЖЕ окупились. Какие-то "будушие цели в игре" - это мираж.

4) Чуть не забыл)

. Не надо обращаться ко мне с просьбой написать или посоветовать бот. Я этим не занимаюсь, даже скрипты не пишу. Просящих буду посылать подальше, особо настойчивых - к хранителю.

Ссылки по теме

Статья в Википедии о ботах (ENG)

Зачистка ботов в Runescape (2016) (ENG)

Цитата с Баша про автоматизацию "рабочего процесса" (РУС)

Возможность комментировать доступна после регистрации