1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Автоматизация рутины в DotA 2 или читы

Автоматизация рутины в DotA 2 или читы?

Привет, в этой статье будут рассматриваться легальные способы получить преимущество перед противником с помощью таких простых средств, как NodeJS, Electron и React, при этом обходя бан стороной. На эксперименты меня вдохновила другая статья Визуализация времени возрождения Рошана и желание автоматизировать часть рутины. Стоит заметить что сейчас будут рассматриваться инструменты не модифицирующие каким либо нечестным способом игру — все API открыты, данные получены честным путём, никакого вмешательства в процесс игры не происходит. Под катом будет несколько картинок и немного кода.

Пример использования в демо режиме игры

Весь исходный код расположен на Github, с ним можно ознакомится, лайкнуть, форкнуть, предложить изменения. Писал его левой пяткой правой ноги, прямо во время игры, поэтому просьба не ругаться сильно за стилистику.

Если честно, то я ничего нового не придумал, уже всё до меня придумали и даже есть готовые приложения, которые примерно тоже самое умеют.

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

Disclaimer: Автор не несёт ответственности за применение вами знаний полученных в данной статье или ущерб в результате их использования. Вся информация здесь изложена только в познавательных целях. Особенно для компаний разрабатывающих MOBA, чтобы помочь им бороться с читерами. И, естественно, автор статьи ботовод, читер и всегда им был.

В итоге созданные инструменты умеют:

Статья в тему:  Что такое рефрешер дота 2

Отслеживать игровое время

Воспроизводить звуки до начала важных событий

Отображать текущие показатели золота (GPM)

Отображать статистику по герою из открытого источника OpenDota.com

Отслеживать время возрождения рошана

Собирать данные о любимых героях противника

Какие ещё можно сделать улучшения:

Отображать историю средних показателей противника

Добавить ретроспективный анализ игры по её окончанию

Добавить больше звуковых/визуальных уведомлений

Дать возможность отслеживать «ультимейты»

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

Добавить подробнейшие руководства прямо во время игры

С чего всё начиналось

У Dota 2 неожиданно есть GSI (Game State Integration), который придумали для интеграции сторонних приложений / оверлеев (наложение картинки поверх игры) и синхронизации этих самых оверлеев с игрой в реальном времени. Это говорит о том, что можно получать состояние игры и дальше что — то с ним делать. Для интеграции с NodeJS есть готовое решение в виде библиотеки. Для работы GSI сервера, в первую очередь, нужно создать файл конфигурации в «Steamsteamappscommondota 2 betagamedotacfg», в этом файле прописываются настройки, например, такие:

После перезапуска игры, подтягиваются новые настройки и запускается сервер GSI, который будет отправлять данные по HTTP на localhost:3001, на котором и поднимается NodeJS сервер:

Собственно, после запускается код слушателя, который как раз и позаимствован из сторонней библиотеки NodeJS

Сервер получения данных об игровом мире готов.

Данные, которые не дают преимущества

Во время рейтингового матча в Dota 2, GSI отдаёт обрезанные данные, из полезного доступно

Прошедшее количество секунд с начала игры

Игровое время в секундах

Пример данных (в игре запущена карта с демо режимом)

Если просматривать реплей или чужую игру, то доступно гораздо больше информации — вся она описана тут. Что-ж, самая важная информация нам уже доступна — GPM, игровое время, Id героя.

Статья в тему:  Что лучше дота или heroes of the storm

После получения информации мы должны с ней что — то поделать, например, отрисовать или предупредить о наступившем моменте в игре.

UI, Оповещения, Electron

Для UI решено было использовать Electron и внутри этого электрона запускать React. Идея заключается в том, чтобы рисовать Electron приложение поверх игры (оверлей). Исходник оверлея можно найти тут, немного задержимся на нём — есть пару особенностей.

Для начала нужно настроить окно, в котором будет всё отображаться:

Сначала у меня не получалось поверх доты что — то вывести, пока не наткнулся на настройку в файле machine_convars.vcfg (Dota 2) под названием «dota_mouse_window_lock», которую нужно выставить в «0», а в самой игре (либо в тех же файлах конфигурации) настроить режим отображения в окне без рамки.

UI написан с использованием React, поэтому решено его было загружать прямо с dev сервера разработки (да, я ленивый):

Если dev сервер не успел загрузиться, то мы попробуем ещё разок через 3 секунды, вот для этого и нужен setTimeout.

Всё, с overlay закончили, теперь UI часть.

Styled-Components, Typescript, Хуки, — стильно, модно, молодёжно

В UI был выбран мой любимый стек: TS, CRA (Styled только для одного/двух классов использовался — рисовать то особо нечего). После того, как GSI Dota2 отправил данные на express сервер, их нужно передать на фронт. Пишется простая GET ручка для отдачи данных. Затем на фронте пишется хук, который раз в секунду запрашивает эти данные и дальше они попадают сразу во все остальные хуки. То есть в приложении каждую секунду запускаются все хуки — это важный факт, ведь иногда понадобится хранить время запуска хука, чтобы случайно его не запустить несколько раз (если этого не делать, то у вас произойдёт в лучшем случае два оповещения подряд, в худшем случае взрыв из оповещений). Логика получения данных:

Статья в тему:  Торговая площадка дота 2 как открыть

Теперь, когда есть все данные на фронте, можно написать хук для звуковых оповещений, что пора бы пойти (за 30 секунд до начала оповещает) забрать руны богатства, появляющиеся на каждой минуте кратной пяти (5, 10, 15, 20 минута):

Запись о последнем воспроизведении (setLastIntervalPlay) нужна чтобы не повторить оповещение случайно дважды.

И вот уже в игре одно преимущество, может быть оно несущественное, но как мне кажется неплохо управляет вниманием команды. Что — ж можно пойти дальше и сделать такую же кнопку возрождения рошана, как из прошлой статьи:

Хук useRoshanSpawn для кнопки

С рошаном всё немного запутаннее, чем с рунами — он может возрождаться в интервале от 9 до 12 минут. То есть у него есть состояния:

Точно мёртв (прошло до 9 минут с момента смерти)

Он жив или мёртв (прошло от 9 до 12 минут с момента смерти)

Он точно жив (прошло свыше 12 минут с момента смерти или это начало игры)

Поэтому у таймера есть три визуальных состояния:

Кнопка — для запуска таймера

Таймер тикает и сообщает о том что роша точно мёртв

Таймер тикает и сообщает о том что роша возможно жив, а возможно мёртв

И одно звуковое оповещение: Рошан будет в состоянии Шредингера через 30 секунд (то есть, и жив, и мёртв одновременно — пока не проверишь, не узнаешь). Также есть возможность сбросить таймер, ведь если мы проверили и узнали, что он жив — то таймер больше не нужен, а нужна кнопка о том чтобы сообщить о новой смерти рошана. Из минусов — иногда забываешь запускать таймер, было бы здорово в будущем это тоже автоматизировать.

Статья в тему:  Как использовать смайлы дота 2

Обогащаем данные

Ещё есть информация о том, на каком герое мы играем, поэтому пускай клиент запрашивает бенчмарки с сайта OpenDota.com и отображаем их, чтобы было понятно, на сколько мы отстаём от ритма игры. Я взял перцентиль 99%, то есть мне интересно, с какими показателями отыгрывается 1% лучших игр на том или ином герое.

Бенчмарки на героя Abaddon

Вся логика описана в хуке useBenchmark:

Узнаём предпочтения игрока

Было бы здорово получать информацию о том, на каких героях вероятнее всего будет играть противник, чтобы забанить, отобрать, законтрить их у него. Для этого нужно считывать память файл игры: «server_log.txt» и дальше распарсить его регуляркой, найти там ID ваших оппонентов, затем запросить историю игр в OpenDota или Dotabuff. У этого способа есть минусы — если оппоненты сделал свой игровой профиль скрытым в Dota 2, то никакой информации о нём вы не получите. Есть ещё один момент, который я забыл учесть — данные могут быть устаревшими, но в коде это легко исправляется добавлением фильтра по времени.

Attention: код по ссылке может совершить BSoD ваших глаз.

После, будет здорово это тоже вывести, поэтому решено было сделать отдельное React приложение на localhost:3002. Без дизайна выглядит оно совсем по страшному, но это уже был просто спортивный интерес и вообще я им не пользуюсь. В нём есть информация о прошлых десяти играх. Кнопочка «Ban this id», чтобы убирать друзей, с которыми играешь, из этой статистики и ссылка на Dotabuff профиль, если вдруг хочется подробностей.

Это приложение тоже можно было бы красиво оформить в виде Electron оверлея и запускать его на стадии выбора героев, но кажется я слишком много играю в игры и мало уделяю времени действительно полезным вещам 🙂

Статья в тему:  В чем смысл игры дота 2

Что ещё пробовалось:

Пробовался DLL Injection из прошлой статьи и чтение памяти с помощью Rust, но там был большой изъян в том, что все найденные указатели на структуры данных жили до обновления игры, поэтому эта идея была заброшена.

Попытка создать сервис подбора героев на основе ML обучения по выгрузке игр из OpenDota.com или с тех же серверов Valve (провал — хотя мне кажется я просто не сумел правильно приготовить ML часть)

Парсинг Dota 2 реплеев — там не сложно, используется Protobuff и все структуры легко находятся на гитхабе. Вот только что дальше с этим огромным объёмом данных делать?

Вывод: интегрироваться с Dota2 не вызывает труда, можно делать быстрый анализ прямо во время игры, при просмотре киберспортивных игр можно сделать огромное количество красивого оверлея для Twitch стрима, также можно развивать эту тему в сторону ретроспективного анализа из реплеев, что скорее всего будет полезно профессионалам.

Надеюсь вам было интересно почитать про то, как я собрал на коленке читы (на самом деле хороший вопрос — читы это или нет?), да ещё и на JS, если есть орфографические или лексические ошибки, то пишите пожалуйста в ЛС, спасибо за внимание.

Распространенная причина

Начать надо с самого очевидного – проверки целостности игрового кэша. Игра бесплатная, и сделать это можно через стим. Нужно зайти в библиотеку игр, выбрать Доту и пункт проверки целостности в ее настройках. После его активизации система проверит игровые файлы на компьютере геймера и сравнит их с оригинальными. Если какие-то из них окажутся поврежденными или удаленными, то автоматически запустится процесс восстановления.

Обычно файлы оказываются поврежденными из-за антивируса, который воспринимает какие-то элементы игры как потенциально опасные и удаляет их. Во избежание проблем нужно заблаговременно добавить игру в исключения.

Статья в тему:  Почему в дота 2 не все герои

Как выйти из гильдии Дота 2?

Если определенное сообщество не понравилось, то его всегда можно сменить. Для этого нужно:

  1. Навести курсор на аватарку гильдии в правом нижнем углу;
  2. Кликнуть на клавишу «Покинуть гильдию».

Стоит помнить, что пользователь может вступать в одну гильдию за сутки. В противном случае будет наложено ограничение.

Другие полезные консольные команды

Представленные ниже читы не относятся к проблеме того, как создать героя в лобби «Доты 2», однако они не менее полезны.

Запомните: для того что деактивировать ту или иную команду, достаточно заменить число «1» на «0». Не забудьте удалить знак «-» при вставке кода в консоль.

  • do-ta_pla-yer_un-its_au-to_atta-ck «1» — автоматическая атака;
  • do-ta_sh-op_for-ce_hot-keys «1» — активирует возможность приобретения предметов из магазина при помощи горячих клавиш;
  • do-ta_ap-m — указывает на количество совершаемых действий за одну минуту;
  • do-ta_alwa-ys_sh-ow_he-ro_nam-es «1» — высвечивает ник над персонажем;
  • do-ta_un-it_us-e_pla-yer_co-lor «1» — теперь юниты имеют подсветку;
  • do-ta_no_min-imap «1» — отключение мини-карты;
  • do-ta_min-map_sim-ple_co-lors «1» — делит карту на два цвета: зеленым обозначаются дружественные войска, а красным — вражеские;
  • do-ta_hu-d_fli-p «1» — мини-карта теперь отображается справа;
  • do-ta_hu-d_heal-tbar_num-ber «1» — здоровье указывается в виде числа и высвечивается над головой героя.

Есть два случая:

  1. Если вы создаете игру — выбираете нужный бот(ниже описал).
  2. Если вы подключаетесь к игре, смотрите на картинку заставки.

Как создать новую версию Доты в Iccup

На данный момент есть только несколько серверов в Iccup, в которых можно создать новую версию Дота. Соответственно вот список тех самых серверов:

  • iCCup.DotA.RU1
  • iCCup.DotA.RU4
  • iCCup.DotA.RU5
  • iCCup.DotA.RU7
  • iCCup.DotA.UA1
  • iCCup.DotA.EU1

Как создать Dota 6.83s в Iccup

Для создания старой и стабильной версии Дота, зайдите на один из ниже перечисленных ботов:

Статья в тему:  Kale что это дота

Понерфили метовых героев

Патч 7.30 точечно пофиксил некоторых героев, которые прежде часто пикались на про-сцене:

Ancient Apparition — подняли кулдаун ультимейта до 60 секунд на первом уровне. Это очень значительный нерф. Теперь команда с АА значительно реже может делать вылазки под Ice Blast. Да, на 18-м уровне cooldown 40 секунд, но аппараты пятерки медленно получают экспу.

Keeper of the Light (в балансном патче 7.30c). В основном патче его внезапно подняли, снизив CD на чакру и длительность волны. После этого его внезапно стали брать почти в каждом матче на про-сцене. Стали появляться котлы оффлейнеры и мидеры. После этого занефирили Illuminate, увеличив CD на 2 секунды, снизив урон (на 25 на каждом уровне) и скорость полета до 900. Также котел теперь получает меньше скорости передвижения в Spirit Form.

Axe — изменили имбовый шард, керри Акс теперь появляться не будет (разве что в low MMR паблике). Фармить всю карту с мантой и убивать любого героя за агр он больше не способен.

Энигма фармит крипов

Малозаметное, но весьма важное изменение — процентное снижение перезарядки заклинаний больше не складывается. Теперь не будет бешеных Энигм, купивших Октарин, взявших талант на CDR и поднявших из леса Quickening Charm или Spell Prism, которые дают БХ раз в минуту. Данное изменение ударяет по позициям героев, сила которых состоит в одном заклинании с высоким CD:

Tidehunter (у него еще был талант на 20% перезарядки на 25-м уровне, который убрали)

Зевса, конечно, нельзя назвать зацикленным на ульте, но ему всегда почти собирали октарин и по возможности брали нейтральные предметы на CDR. Такие фиксы будут мотивировать команды брать героев с небольшими кулдаунами.

Статья в тему:  Компендиум дота 2 до какого числа

Начинать следует играть с ботами. Советую сыграть 10-15 игр, чтобы понять основы игры, способности различных героев, а также подробнее узнать про предметы. Кстати про предметы. Для каждого героя существует разная сборка предметов, и пока вы новичок, то советую просто покупать предметы по руководству.

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

Дальше играйте, играйте и играйте, но когда у вас откроется рейтинг, не нужно проходить каллибровку. Лучше всего сыграть еще пару сотен игр, а затем уже приступать к рейтингу. Не нужно сразу идти в рейтинговый матч, не повторяйте моих ошибок.

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

На этом статья окончена. Подписывайтесь в группу ВК, чтобы не пропустить выход новой статьи. До скорого!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Продвижение петиции и сбор подписей

Создание петиции – это лишь первый шаг на пути к успеху и реализации цели. Вам надо добиться того, чтобы её увидело и подписалось как можно большее число людей. Делитесь своей петицией в социальных сетях, отправляйте ссылку на неё на сайте change org своим друзьям по электронной почте, в скайпе, ватсап, вайбере и пр. Просите их тоже поделиться в свою очередь со своими друзьями и т.д. Будьте активными и ни в коем случае не останавливайтесь!

Как собрать максимум подписей под своей петицией, как привлекать к ней внимание людей и пр. – рассказал координатор кампаний «Change.org» в Восточной Европе и Центральной Азии Дмитрий Савелов:

Статья в тему:  Как передать управление в дота 2

Если изложенные Вами требования будут действительно справедливы, то Вы несомненно получите поддержку тысяч людей и заставите прислушаться к своему мнению, потому что резонанс от таких петиций возникает действительно большой!

Как поднять свой ммр в Dota 2 в 2021

Как выиграть в Dota 2? Никак не можете выйти с 2к рейтинга? Надоело выигрывать игры через раз? Не знайте, как апнуть ммр? Наша редакция составили список главных правил и советов. Мы обещаем, что следуя им, вы перестанете стоять на месте и увеличите ваш показатель рейтинга.

Не имеет значение, сколько именно у вас ММР: на любом уровне стоит придерживаться главных принципов, тем более на профессиональном.

Совет

Выберите одну роль для игры. Да, Valve для оптимизации рейтинговой системы добавила систему жетонов, по которой у игроков больше нет возможностей играть постоянно на первых трёх позициях. Тем не менее их можно заработать или найти саппорта в чате.

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

Совет

Выбирайте сильных (метовых) героев. Мета возникает не просто так, с выходом обновлений в Dota 2, которые затрагивают не только героев, но, иногда, и саму механику игры, меняется винрейт героев. Одни становиться сильнее, другие уходят на второй план, а некоторые и вовсе забываются.

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

Совет

Коммуницируйте с командой. Общайтесь! Просто общайтесь, возьмите на себя роль капитана, если нужно. Для этого вовсе не надо “пройти игру”, достаточно минимальное понимание того, что происходит на карте. Зачастую, особенно на низком ммр, если команда не коммуницирует, игра протекает в пассивном ключе – игроки просто фармят и пытаются делать соло убийства, и каждый играет сам за себя.

Возьмите штурвал игры в свои руки и предложите разбить смоки. Если соперник имеет преимущество, это станет отличным решением для старта комбэка.

Совет

Не будьте токсичным. Пожалуй, одно из самых главных правил. Зачастую игроки могут проиграть игру ещё на стадии пиков и вовсе не из-за взятых героев. Если кто-то сильно ошибся, необязательно критиковать: это не приведёт к победе в матче. Всё что вы можете сделать – это подбодрить. Но, как выйти из ситуации, если тиммейт попался чересчур токсичным и портит игру? Просто замутьте или попытайтесь успокоить, если это возможно. Самый легкий способ – это не провоцировать агрессивного тиммейта, так как вам это тоже испортит настроение и скорее всего понизит шансы на победу в игре.

Совет

Выигрывайте линии. В нынешней мете очень важно выигрывать лайн. Это не всегда получается, тем не менее нужно взять на заметку, что даже, если ваш герой идеально подходит против вражеской команды, надо предположить, какой будет лайн у вас. Такая тактика гарантирована на более низких рангах. Всё что нужно – это выиграть лайны. Но, если у вас не фулл пати – это не всегда получится. Поэтому берите друга и пробуйте разные связки героев, чтобы выиграть линию. Или вы сами можете взять персонажа, который будет чувствовать себя комфортно.

Соблюдая эти простые простые правила можно значительно улучшить свою игру и сделать её намного комфортнее и приятнее.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector