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

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

Содержание

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

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

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

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

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

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

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

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

Статья в тему:  Герои первой доты которых нет во второй

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Как фармить лес в доте 2 7.00

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

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

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

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

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 ручка для отдачи данных. Затем на фронте пишется хук, который раз в секунду запрашивает эти данные и дальше они попадают сразу во все остальные хуки. То есть в приложении каждую секунду запускаются все хуки — это важный факт, ведь иногда понадобится хранить время запуска хука, чтобы случайно его не запустить несколько раз (если этого не делать, то у вас произойдёт в лучшем случае два оповещения подряд, в худшем случае взрыв из оповещений). Логика получения данных:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Сколько стоит игра танки онлайн

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Что собирать storm spirit в доте 1

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

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

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

Открыть всех героев дота 2

Новый игрок здесь, как я могу разблокировать героев? Я могу получить доступ только к игре за 20 героев. Могу ли я использовать деньги, чтобы купить сразу всех персонажей? хорошо, я купил DotaPlus и есть какие то очки или осколки, как я могу использовать их, чтобы купить нужного героя?

p, blockquote 7,0,0,0,0 —>

  • Я не могу найти цены на них. сколько из них стоил допустим гуля ? он же мой любимый герой.
  • Ответ простой. Покупать в доте 2 героев нельзя –это вам не лол.

Играйте просто 25 игр. должен автоматически разблокировать любой персонаж

p, blockquote 8,0,1,0,0 —>

20 героев, которых выбрал вольво, считаются более простыми в использовании. Все герои разблокируются после 25 игр. Тогда что я могу сделать с этими очками от дота плюса? Такие вопросы тоже задавали люди, которые сталкивались впервые с Дота 2

p, blockquote 10,0,0,0,0 —>

Как открыть всех персонажей в дота 2

Не уверен, что троллинг или вы просто новичок в игре, но здесь я скажу уже без шуток. Очки — это просто особенность DotaPlus, они позволяют вам покупать реликвии (например, счетчики статистики для ваших героев), некоторые наборы из магазина (перейдите в магазин и там есть вкладка для + наборов), и на этом пока все.

Статья в тему:  Что такое адк в доте

p, blockquote 11,0,0,0,0 —>

Если вы включите консоль, есть команда, которая разблокирует всех героев независимо от вашего уровня / ранга / сыгранных игр.

p, blockquote 12,0,0,0,0 —>

p, blockquote 13,0,0,0,0 —>

Как отключить ограничение героев в дота 2 через консоль

Орри, но я должен спамить это. Я нашел это совершенно нелепым. Dota 2 успешно доказала миру свою отсталость. Пожалуйста, поделитесь им и скажите, что каждый Dota 2 игрок глуп. Я сыграл 3 игры, спроси своих товарищей по команде, моих противоположных членов команды.

p, blockquote 14,0,0,0,0 —>

Я потратил около двух часов, чтобы найти этот чертовски простой ответ. Dota 2 только что представила чертову игру, в которой они блокируют некоторых героев, и они не говорили новым игрокам, как их разблокировать. Никто не знает.

p, blockquote 15,0,0,0,0 —>

На форуме нет тем об этом. Нет объявлений или новостей. Нет информации или сообщений, рассказывающих игрокам об этом. Так что до сих пор мне все еще интересно … Как?

p, blockquote 16,1,0,0,0 —>

Пусть эта задержка будет известна, чтобы в команде разработчиков снова не было задействованных задержанных. Итак, тот же вопрос: банальный и фундаментальный. Как разблокировать всех героев в Dota 2? Как? Да благословятся все умственно отсталых, пусть они смогут выжить в реальном мире. Извините за их мам тоже да.

p, blockquote 17,0,0,0,0 —>

«Режимы игры разблокируются путем увеличения уровня вашего профиля, причем все режимы разблокируются на уровне 10»

p, blockquote 18,0,0,0,0 —>

На уровне 1, на котором вы начали, единственный режим игры, в который вы можете играть, это AllPick, в котором все герои разблокированы.

p, blockquote 19,0,0,0,0 —>

Кроме того, вам не нужно было спамить. Никто не заставлял вас спамить. Вы выбираете спам. Собственный.

p, blockquote 20,0,0,0,0 —>

p, blockquote 21,0,0,0,0 —>

Статья в тему:  Какая видеокарта нужна для онлайн игр

Самый дорогой инвентарь

Самый дорогой инвентарь в мире, внимание, стоит около 1,890,926.95 pуб! Принадлежит он игроку с ником PAADA. Его инвентарь открыт и просмотреть его можно здесь: https://steamcommunity.com/id/PAADA/inventory/#570

Самый дорогой инвентарь

Данная настройка позволяет посторонним игрокам найти вашу историю матчей на одноименном сайте. Чтобы ее отключить – вам будет нужно сделать:

Заходите в настройки игры.

Переходите во второй пункт «настройки».

Внизу – вы увидите надпись «расширенные настройки». Она вам и понадобится. Кликаете на нее.

Во вкладке сообщество – первый пункт будет помечен галочкой (общедоступная история матчей). Убирайте эту галочку. Именно благодаря ей – ваши матчи будут доступны на дотабаффе, а с ними вместе – и ваши любимые персонажи.

Автоматизация рутины в 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 героя.

Статья в тему:  Какой пик лучше в доте 2

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

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 ручка для отдачи данных. Затем на фронте пишется хук, который раз в секунду запрашивает эти данные и дальше они попадают сразу во все остальные хуки. То есть в приложении каждую секунду запускаются все хуки — это важный факт, ведь иногда понадобится хранить время запуска хука, чтобы случайно его не запустить несколько раз (если этого не делать, то у вас произойдёт в лучшем случае два оповещения подряд, в худшем случае взрыв из оповещений). Логика получения данных:

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

Статья в тему:  Сколько стоит игра танки онлайн

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Какой пик лучше в доте 2

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

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

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

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

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

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

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

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

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

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

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

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

Открыть всех героев дота 2

Новый игрок здесь, как я могу разблокировать героев? Я могу получить доступ только к игре за 20 героев. Могу ли я использовать деньги, чтобы купить сразу всех персонажей? хорошо, я купил DotaPlus и есть какие то очки или осколки, как я могу использовать их, чтобы купить нужного героя?

p, blockquote 7,0,0,0,0 —>

  • Я не могу найти цены на них. сколько из них стоил допустим гуля ? он же мой любимый герой.
  • Ответ простой. Покупать в доте 2 героев нельзя –это вам не лол.

Играйте просто 25 игр. должен автоматически разблокировать любой персонаж

p, blockquote 8,0,1,0,0 —>

20 героев, которых выбрал вольво, считаются более простыми в использовании. Все герои разблокируются после 25 игр. Тогда что я могу сделать с этими очками от дота плюса? Такие вопросы тоже задавали люди, которые сталкивались впервые с Дота 2

p, blockquote 10,0,0,0,0 —>

Как открыть всех персонажей в дота 2

Не уверен, что троллинг или вы просто новичок в игре, но здесь я скажу уже без шуток. Очки — это просто особенность DotaPlus, они позволяют вам покупать реликвии (например, счетчики статистики для ваших героев), некоторые наборы из магазина (перейдите в магазин и там есть вкладка для + наборов), и на этом пока все.

p, blockquote 11,0,0,0,0 —>

Если вы включите консоль, есть команда, которая разблокирует всех героев независимо от вашего уровня / ранга / сыгранных игр.

Статья в тему:  Какая видеокарта нужна для онлайн игр

p, blockquote 12,0,0,0,0 —>

p, blockquote 13,0,0,0,0 —>

Как отключить ограничение героев в дота 2 через консоль

Орри, но я должен спамить это. Я нашел это совершенно нелепым. Dota 2 успешно доказала миру свою отсталость. Пожалуйста, поделитесь им и скажите, что каждый Dota 2 игрок глуп. Я сыграл 3 игры, спроси своих товарищей по команде, моих противоположных членов команды.

p, blockquote 14,0,0,0,0 —>

Я потратил около двух часов, чтобы найти этот чертовски простой ответ. Dota 2 только что представила чертову игру, в которой они блокируют некоторых героев, и они не говорили новым игрокам, как их разблокировать. Никто не знает.

p, blockquote 15,0,0,0,0 —>

На форуме нет тем об этом. Нет объявлений или новостей. Нет информации или сообщений, рассказывающих игрокам об этом. Так что до сих пор мне все еще интересно … Как?

p, blockquote 16,1,0,0,0 —>

Пусть эта задержка будет известна, чтобы в команде разработчиков снова не было задействованных задержанных. Итак, тот же вопрос: банальный и фундаментальный. Как разблокировать всех героев в Dota 2? Как? Да благословятся все умственно отсталых, пусть они смогут выжить в реальном мире. Извините за их мам тоже да.

p, blockquote 17,0,0,0,0 —>

«Режимы игры разблокируются путем увеличения уровня вашего профиля, причем все режимы разблокируются на уровне 10»

p, blockquote 18,0,0,0,0 —>

На уровне 1, на котором вы начали, единственный режим игры, в который вы можете играть, это AllPick, в котором все герои разблокированы.

p, blockquote 19,0,0,0,0 —>

Кроме того, вам не нужно было спамить. Никто не заставлял вас спамить. Вы выбираете спам. Собственный.

p, blockquote 20,0,0,0,0 —>

p, blockquote 21,0,0,0,0 —>

Где можно купить инвентарь

Купить или продать вещи можно на всевозможных трейдах или на официальной площадке в Стиме.
Если вы проводите различные манипуляции с вашими вещами из инвентаря, не забудьте убедиться, что ваш инвентарь не скрыт, и что у вас установлен мобильный аутентификатор. Сейчас без него не совершает сделки ни один уважающий себя трейд, не говоря уже о площадке Стим.

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

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

Открытый инвентарь

Данная настройка позволяет посторонним игрокам найти вашу историю матчей на одноименном сайте. Чтобы ее отключить – вам будет нужно сделать:

Заходите в настройки игры.

Переходите во второй пункт «настройки».

Внизу – вы увидите надпись «расширенные настройки». Она вам и понадобится. Кликаете на нее.

Во вкладке сообщество – первый пункт будет помечен галочкой (общедоступная история матчей). Убирайте эту галочку. Именно благодаря ей – ваши матчи будут доступны на дотабаффе, а с ними вместе – и ваши любимые персонажи.

Автоматизация рутины в 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 героя.

Статья в тему:  Что такое адк в доте

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

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 ручка для отдачи данных. Затем на фронте пишется хук, который раз в секунду запрашивает эти данные и дальше они попадают сразу во все остальные хуки. То есть в приложении каждую секунду запускаются все хуки — это важный факт, ведь иногда понадобится хранить время запуска хука, чтобы случайно его не запустить несколько раз (если этого не делать, то у вас произойдёт в лучшем случае два оповещения подряд, в худшем случае взрыв из оповещений). Логика получения данных:

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

Статья в тему:  Герои первой доты которых нет во второй

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Как фармить лес в доте 2 7.00

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Что собирать storm spirit в доте 1

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

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

Открыть всех героев дота 2

Новый игрок здесь, как я могу разблокировать героев? Я могу получить доступ только к игре за 20 героев. Могу ли я использовать деньги, чтобы купить сразу всех персонажей? хорошо, я купил DotaPlus и есть какие то очки или осколки, как я могу использовать их, чтобы купить нужного героя?

p, blockquote 7,0,0,0,0 —>

  • Я не могу найти цены на них. сколько из них стоил допустим гуля ? он же мой любимый герой.
  • Ответ простой. Покупать в доте 2 героев нельзя –это вам не лол.

Играйте просто 25 игр. должен автоматически разблокировать любой персонаж

p, blockquote 8,0,1,0,0 —>

20 героев, которых выбрал вольво, считаются более простыми в использовании. Все герои разблокируются после 25 игр. Тогда что я могу сделать с этими очками от дота плюса? Такие вопросы тоже задавали люди, которые сталкивались впервые с Дота 2

p, blockquote 10,0,0,0,0 —>

Как открыть всех персонажей в дота 2

Не уверен, что троллинг или вы просто новичок в игре, но здесь я скажу уже без шуток. Очки — это просто особенность DotaPlus, они позволяют вам покупать реликвии (например, счетчики статистики для ваших героев), некоторые наборы из магазина (перейдите в магазин и там есть вкладка для + наборов), и на этом пока все.

Статья в тему:  Что такое адк в доте

p, blockquote 11,0,0,0,0 —>

Если вы включите консоль, есть команда, которая разблокирует всех героев независимо от вашего уровня / ранга / сыгранных игр.

p, blockquote 12,0,0,0,0 —>

p, blockquote 13,0,0,0,0 —>

Как отключить ограничение героев в дота 2 через консоль

Орри, но я должен спамить это. Я нашел это совершенно нелепым. Dota 2 успешно доказала миру свою отсталость. Пожалуйста, поделитесь им и скажите, что каждый Dota 2 игрок глуп. Я сыграл 3 игры, спроси своих товарищей по команде, моих противоположных членов команды.

p, blockquote 14,0,0,0,0 —>

Я потратил около двух часов, чтобы найти этот чертовски простой ответ. Dota 2 только что представила чертову игру, в которой они блокируют некоторых героев, и они не говорили новым игрокам, как их разблокировать. Никто не знает.

p, blockquote 15,0,0,0,0 —>

На форуме нет тем об этом. Нет объявлений или новостей. Нет информации или сообщений, рассказывающих игрокам об этом. Так что до сих пор мне все еще интересно … Как?

p, blockquote 16,1,0,0,0 —>

Пусть эта задержка будет известна, чтобы в команде разработчиков снова не было задействованных задержанных. Итак, тот же вопрос: банальный и фундаментальный. Как разблокировать всех героев в Dota 2? Как? Да благословятся все умственно отсталых, пусть они смогут выжить в реальном мире. Извините за их мам тоже да.

p, blockquote 17,0,0,0,0 —>

«Режимы игры разблокируются путем увеличения уровня вашего профиля, причем все режимы разблокируются на уровне 10»

p, blockquote 18,0,0,0,0 —>

На уровне 1, на котором вы начали, единственный режим игры, в который вы можете играть, это AllPick, в котором все герои разблокированы.

p, blockquote 19,0,0,0,0 —>

Кроме того, вам не нужно было спамить. Никто не заставлял вас спамить. Вы выбираете спам. Собственный.

p, blockquote 20,0,0,0,0 —>

p, blockquote 21,0,0,0,0 —>

Самый дорогой инвентарь

Самый дорогой инвентарь в мире, внимание, стоит около 1,890,926.95 pуб! Принадлежит он игроку с ником PAADA. Его инвентарь открыт и просмотреть его можно здесь: https://steamcommunity.com/id/PAADA/inventory/#570

Самый дорогой инвентарь

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