Как включить скрипты в доте 2
Скрипты в Dota 2: плюсы и минусы
В Доте на определенных персонажей иногда необходимо прожимать несколько умений и предметов. Придется много тренироваться, чтобы сделать это только своими руками. При этом надо быстро думать и реагировать. Но ошибаются иногда даже рейтинговые игроки. О том, что нужно продавливать некоторые клавиши, иногда не помнят даже профессионалы. Чтобы не допускать таких ошибок, программисты создают скрипты для Dota 2. Они представляют собой перечень команд, выполняемых продавливанием одной горячей клавиши.
Что нужно знать?
В матче за набор действий отвечает соответствующая горячая клавиша. Чтобы сработало одновременно несколько предустановленных команд, что и делает скрипт по сути. Например, по клику одной кнопки с помощью скрипта может нажаться несколько навыков и вещей.
Установка скриптов
Горячих клавиш, назначенных в коде скрипта, не должно быть в настройках, которые являются стандартными для игры. Тогда инсталляция пройдет с успехом. В противном случае, по поводу идентичных кнопок могут возникнуть конфликты. В результате они станут причиной сбоев и зависаний. Обратите внимание, что несколько десятков горячих клавиш скрыто в кнопке «дополнительное». Она располагается в настройках. Перед тем, как через console активизировать в игре скрипт (то есть до его инсталляции), все они должны быть проверены.
Скрипты Dota 2 устанавливаются в специальной папке. Чтобы ее найти, нужно действовать по следующему алгоритму:
- Зайдите в в Steam.
- Кликните по клавише «Библиотека».
- Найдите игру в списке.
- Нажмите на нее вспомогательной кнопкой мышки.
- Выберите «свойства».
- Перейдите в раздел, где можно увидеть локальные файлы.
- Кликните на соответствующую надпись.
- В директории с игрой найдите каталог cfg. В нее и нужно будет скачать скрипты.
В качестве скриптов игра воспринимает только файлы формата «.cfg». Открыть такой документ можно с помощью простого блокнота. Читать и стараться вникнуть в его содержимое вам не понадобится. Напротив слова «bind» есть возможность назначать клавиши на какие-либо определенные действия. После этой надписи расположено число или буква, которую нужно изменить, чтобы назначить кнопку на выполнение определенного скрипта.
Какие бывают скрипты?
Обычно Scripts Dota 2 необходимы не всем персонажам. Мипо – один из самых придирчивых. Он нуждается в тщательном надзоре. Поэтому, чтобы управлять им, можно использовать списки команд, приготовленные заблаговременно.
С их помощью все Мипо способны подскочить одновременно на месте или телепортироваться к одному. Представляете, какое количество клавиш придется нажать, чтобы проделать это собственноручно? На каждого из 5 клонов придется прожать 3 кнопки. То есть, получается всего 15 нажатий. В первую очередь продавить прыжок, затем клавишу мышки, куда именно нужно прыгнуть. Потом вы должны будете перейти на следующего и повторить эти же действия. Какая бы молниеносная реакция у вас ни была, нажать всего одну кнопку займет много меньше времени.
Такие скрипты существуют практически для любого героя. Особенно они популярны для Тинкера, Инвокера и других персонажей, которым нужно прожимать много предметов и умений за один раз. Также многие ищут скрипты на Петуха и Течиса. Их работа базируется на основе функции консоли в игре.
Консоль в Доте предназначена для того, чтобы помогать геймерам получать информацию о настройке их персональной игры. Однако многие хакеры на этом не остановились. Читеры используют консоль в личных целях и создают собственные модификации кодов для упрощения игрового процесса.
Используя определенные скрипты без особенного труда можно поднять свой рейтинг. Античит Valve очень редко определяет нечестных игроков и, соответственно, почти не блокирует. Поэтому, как правило, владельцы приватных скриптов, остаются безнаказанными. То есть продолжительного решения на перспективу для предупреждения использования скриптов или читов в игре до сих пор не придумано. На данный момент только явных мошенников могут забанить по жалобе.
Часто читеры продают инструмент на собственных сайтах и получают денежные средства незаконно. Если вы наберете купить скрипты дота 2 в одном из поисковиков, то сразу получите в выдаче несколько миллионов результатов. К сожалению, игроку легче за секунду приобрести и установить такой скрипт, чтобы побеждать, чем длительное время тренировать свои игровые навыки.
Иными словами, скрипт дает игроку огромные преимущества, выполняя сложные вещи в игре на автомате. Читы в Dota 2 сильно отличаются друг от друга. Например, это может быть автоматическое использование вещей, авто-комбо навыков, автоматических добиваний последним ударов своих или чужих крипов, добивание собственных войск или самого себя, блокирования крипов на автомате, приобретения способности видеть в мареве битвы.
Вышеупомянутый скрипт на автоблок крипов дает многочисленные команды на передвижение персонажа. Непосредственно перед крипом он изменяет местонахождение персонажа. В результате скорость волны creeps на направлении значительно уменьшается.
Это приводит к тому, что вы получаете превосходство оптимального расположения на центральной линии. Если у вас нет скрипта, чтобы преуспеть, вам потребуется многочасовой опыт. Так как в этом случае речь идет о навыке высокого уровня.
Популярные скрипты могут обладать общими для всех персонажей командами, а могут быть сделаны под каких-либо определенных героев. Они помогают игроку быть всегда впереди как в макро, так и в микро игре. Например, самодействующее употребление вещей представляет собой на самом деле сложный набор команд.
Минусы
Бесплатные скрипты Dota 2 необходимо активизировать в консоли при каждом вашем входе. Этот элемент управления еще не автоматизирован. Скиллы очень быстро используются – это еще один недостаток. Бывает, что игра не успевает осуществить все команды. Еще один важный момент, о котором стоит не забывать: можно легко найти скрипты для скачивания, но они нередко будут заражены вирусами. Так что помните, если вдруг решите использовать, что делаете это исключительно на свой страх и риск.
Скрипты для Дота 2: что это такое и как они работают?
В этой прекрасной игре на многих героях в некоторых типичных ситуациях требуется прожимать несколько скиллов и пару-тройку артефактов. Чтобы сделать это вручную, нужно долго тренироваться, быстро соображать и иметь отменную реакцию. Однако все мы люди и очень много ошибаемся, даже топовые игроки, истинные профессионалы киберспорта часто ошибаются, забывают прожимать некоторые кнопки, хотя их навык доведен до автоматизма. Чтобы этого не было, существуют скрипты. Скрипты для Дота 2 – это список команд, которые выполняются по нажатию одной кнопки.
Следует сказать, что в этой игре каждая предустановленная кнопка отвечает за свою команду. А скрипт делает так, чтобы выполнялось сразу несколько предустановленных команд. Например, можно сделать так, чтобы по нажатию одной кнопки нажималось пару скиллов и несколько артефактов.
Установка скриптов: что следует знать?
Во-первых, для успешной установки скриптов в стандартных игровых настройках не должно быть кнопок, которые назначены в файле скрипта. Это очень важно, так как Дота может конфликтовать по поводу одинаковых кнопок, это может привести к зависаниям, вылетам и тому подобное. Следует сказать, что в настройках есть кнопка «дополнительное», где сокрыто еще пару десятков назначенных кнопок. Проверьте их все до установки скрипта, а точнее, прежде чем активировать в игре через консоль.
Чтобы найти папку для установки скриптов, нужно зайти в Steam, потом нажать кнопку «Библиотека», в списке игр найти Dota 2 и кликнуть на ней правой кнопкой мыши, затем нажать «Свойства», выбрать вкладку «Посмотреть локальные файлы» и нажать на нее. Откроется папка с игрой и по этому пути вы найдете папку «gamedotacfg», в нее и нужно бросать ваши скрипты.
У каждого скрипта должно быть расширение «.cfg», только такой тип файлов воспринимается игрой в качестве скрипта. Открывается такой тип файлов обычным блокнотом, разбираться в том, что там написано совершенно не обязательно. Назначить кнопки на определенные действия можно напротив надписи «bind», после нее идет цифра или буква, ее и нужно менять, чтобы назначить кнопку на исполнение определенной группы команд.
Какие бывают скрипты в Дота 2?
Как правило, скрипты для Дота 2 нужны на не многих героев. Например, самый требовательный герой – Мипо, он требует тонкого контроля и чтобы ним управляться, можно использовать заранее заготовленные списки команд. Они помогут телепортировать всех Мипо к одному или, например, они могут прыгнуть на одном месте. Для любого из этих действий требуется лишь одна кнопка, а теперь представим сколько нужно нажать кнопок, чтобы сделать это без скриптов, нужно прожать по три кнопки на каждого из пяти клонов. Сначала нажать прыжок, потом кнопку мыши, в какое место нужно прыгнуть, потом переключиться на другого и повторить еще раз. В итоге мы получаем 15 нажатий, даже при молниеносной реакции, выработанной годами, это займет больше времени, чем нажать одну кнопку.
Такие скрипты могут быть на любого героя, в частности в интернете очень популярны скрипты на Инвокера, Тинкера, Мипо и других героев, которым требуется прожимать несколько способностей и предметов одновременно.
Недостатки скриптов
Во-первых, их нужно активировать в консоли каждый раз, когда вы заходите, все-таки до автоматизма не доведен этот элемент управления. Еще один минус – скиллы используются слишком быстро, иногда игра не успевает воспроизвести все команды. А также порой бывает, что скилл, который требуется использовать первым, требует некоторой анимации, а тот, что нужен вторым, применяет мгновенно. Яркий пример выглядит так: используется Эзериал Блейд и Дагон. Эзериал применяется не сразу, снаряд должен прилететь в цель, а Дагон используется мгновенно. Таким образом жертва получает заряд Дагона, не усиленный Эзериалом.
Все скрипты для Dota 2 + скрипты на инвокера, скрипты на Мипо
И стар и млад, и нуб и про — никто не брезгует воспользоваться тем громадным преимуществом, которое дают вам скрипты. Только представьте фулл-прокаст инвокера нажатием всего одной кнопки! Все больше и больше игроков начинают изучать и использовать скрипты для Dota 2 — они очень востребованы и в этом полном гайде по скриптам вы узнаете как ими пользоваться. Я за честную игру, но считаю, что пользоваться скриптами, которые не вносят дисбаланса в геймплей, а лишь делают игру для вас чуть удобнее нужно! Тем более, что такая возможность предусмотрена в Доте самими разработчиками.
Видя, какой дисбаланс скрипты вносят в игровой процесс, Valve полностью запретило их использование профессиональными игроками на крупном турнире Мейджор. А также в одном из обновлений слегка подпортила жизнь использующим их игрокам, а именно запретила привязывать больше одной консольной команды к одной кнопке. Тем не менее, их все еще можно использовать и, хорошо зная как работает скрипт, вы всегда сможете адаптировать его работу под актуальный патч. Итак, давайте разбираться как работают скрипты для dota 2.
Как сделать Бэкап изменяемых файлов Dota 2
Прежде чем очертя голову приниматься править файлы игрового клиента их нужно скопировать, чтобы можно было быстро и без проблем их заменить (
50 KB) без необходимости заново переустанавливать весь клиент (
20 GB). Поэтому сделайте резервную копию тех файлов, которые вы, собственно, и будете заменять:
Путь файла настроек Dota 2 (Где находится файл настроек доты)
Настройки игрового клиента находятся по следующему адресу:
Настройки, подгружаемые SteamCloud (этот файл может являться причиной регулярного сброса ваших настроек):
Когда бэкап сделан можно приступать к самому интересному — программированию и изменению скриптов по вашему усмотрению!
Как активировать консоль в Дота 2
Без активной консоли у вас не будут работать вообще никакие скрипты, поэтому, если вы этого еще не сделали, то обязательно активируйте ее! Чтобы включить консоль щелкните правой кнопкой мыши по названию «Dota 2» в списке игр в вашей библиотеке Steam и выберите «Свойства». Далее выбираете пункт «Установить параметры запуска» и в появившейся строке прописываете БЕЗ КАВЫЧЕК «-console». Нажимаете «Ок». Поздравляем, вы активировали консоль Dota 2!
Общие скрипты для Дота 2
alias «leftclick» «+sixense_left_click; -sixense_left_click»
alias +pressQ «dota_ability_execute 0»
alias -pressQ «leftclick»
bind «q» «+pressQ»
alias +pressW «dota_ability_execute 1»
alias -pressW «leftclick»
bind «w» «+pressW»
alias +pressE «dota_ability_execute 2»
alias -pressE «leftclick»
bind «e» «+pressE»
alias +pressD «dota_ability_execute 3»
alias -pressD «leftclick»
bind «d» «+pressD»
alias +pressF «dota_ability_execute 4»
alias -pressF «leftclick»
bind «f» «+pressF»
alias +pressR «dota_ability_execute 5»
alias -pressR «leftclick»
bind «r» «+pressR»
Если нужны такие же для предметов:
dota_disable_range_finder «0»
alias «leftclick» «+sixense_left_click; -sixense_left_click»
alias +press1 «dota_item_execute 0»
alias -press1 «leftclick»
bind «1» «+press1»
alias +press2 «dota_item_execute 1»
alias -press2 «leftclick»
bind «2» «+press2»
alias +press3 «dota_item_execute 2»
alias -press3 «leftclick»
bind «3» «+press3»
alias +press4 «dota_item_execute 3»
alias -press4 «leftclick»
bind «4» «+press4»
alias +press5 «dota_item_execute 4»
alias -press5 «leftclick»
bind «5» «+press5»
alias +press6 «dota_item_execute 5»
alias -press6 «leftclick»
bind «6» «+press6»
Скрипты на Мипо
Существует 3 наиболее полезных скриптов на Мипо Дота 2. Мы разберем как установку сразу всех так и по отдельности.
Установка всех meepo скриптов:
- Скачать архив с файлом скриптов
- Разархивировать его по пути «dota 2 betagamedotacfg»
- Активировать скрипт в игре командой «exec meepo.cfg» (без кавычек) через консоль
Dota 2 meepo скрипты по отдельности:
bind «1» «poof2; dager;»
alias «dager» «dota_item_execute 0»
alias «poof2» «dota_select_all_others; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_select_all»
//self combo
bind «2» «poof3;»
alias «poof3» «dota_ability_quickcast 1; dota_select_all_others; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_cycle_selected; dota_ability_quickcast 1; dota_select_all»
//net
alias «tab» «dota_cycle_selected;»
alias «net» «dota_ability_execute 0;»
alias «net1» «tab;net;»
bind «3» «net1;»
Dota 2 скрипты на Инвокера
Под спойлером ниже приведен один из самых важных скриптов для инвокера. Данный скрипт на Инвокера Дота 2 позволяет вам автоматически комбинации заклинаний, и, если вы задавались вопросом: «Как моментально вызвать сразу три сферы (Quas, Wex или Exort) вместо одной», то смело используйте этот скрипт.
bind «q» «dota_ability_execute 0;dota_ability_execute 0;dota_ability_execute 0» // Q = 3x Quas
bind «w» «dota_ability_execute 1;dota_ability_execute 1;dota_ability_execute 1» // W = 3x Wex
bind «e» «dota_ability_execute 2;dota_ability_execute 2;dota_ability_execute 2» // E = 3x Exort
bind «r» «dota_ability_execute 5» // R = Invoke
/////////// These are the buttons that Invoke the spells:
// 1 for sunstrike
bind «1» «dota_ability_execute 2;dota_ability_execute 2;dota_ability_execute 2;dota_ability_execute 5»
// 2 for forge spirits
bind «2» «dota_ability_execute 0;dota_ability_execute 2;dota_ability_execute 2;dota_ability_execute 5»
// 3 for meteor
bind «3» «dota_ability_execute 1;dota_ability_execute 2;dota_ability_execute 2;dota_ability_execute 5»
// 4 for cold snap
bind «4» «dota_ability_execute 0;dota_ability_execute 0;dota_ability_execute 0;dota_ability_execute 5»
// 5 for ghost walk
bind «5» «dota_ability_execute 0;dota_ability_execute 0;dota_ability_execute 1;dota_ability_execute 5»
// 6 for icewall
bind «6» «dota_ability_execute 0;dota_ability_execute 0;dota_ability_execute 2;dota_ability_execute 5»
// 7 for emp
bind «7» «dota_ability_execute 1;dota_ability_execute 1;dota_ability_execute 1;dota_ability_execute 5»
// 8 for tornado
bind «8» «dota_ability_execute 1;dota_ability_execute 1;dota_ability_execute 0;dota_ability_execute 5»
// 9 for alacrity
bind «9» «dota_ability_execute 1;dota_ability_execute 1;dota_ability_execute 2;dota_ability_execute 5»
// 0 for deafening blast
bind «0» «dota_ability_execute 0;dota_ability_execute 1;dota_ability_execute 2;dota_ability_execute 5»
Спасибо за прочтение! Также, вы можете поделиться своими интересными скриптами прямо здесь — в комментариях!
Скрипты на Meepo
Описание программы
p, blockquote 1,0,0,0,0 –>
Для начала рассмотрим Meepo с точки зрения его плюсов и минусов.
p, blockquote 2,0,1,0,0 –>
p, blockquote 3,0,0,0,0 –>
- При игре данным героем против Виверна и Шейкера, велик шанс смерти в одну кнопку. Присутствуют так же герои, против которых сложно играть за Мипо (Лина, Кентавр, Лион и прочие).
- Meepo не подходит для игры в агрессивном стиле.
p, blockquote 4,1,0,0,0 –>
- Мипо очень силен в игре на центральной линии. Это обусловлено быстрым фармом опыта и золота в начале игры.
- Герой быстро забирает Рошу на 10 уровне с тп и 3 Врейсбендами.
- При проигрыше мида, в большинстве случаев можно вернуть преимущество с леса.
- Без особых трудностей возможность забрать любого Кора в игре на центральной линии.
Установка скрипта
p, blockquote 5,0,0,0,0 –>
- Скопировать файл скрипта.
- Перейти в библиотеку скриптов Доты 2 (файл со скриптами) — нажать правой кнопкой мыши на игру в Steam и перейти во вкладку свойства.
- Затем перейти в «Локальные файлы» и «Посмотреть локальные файлы»
- Перейти в папку «game» — «dota» — «cfg»
- Вставить скрипт Meepo в «cfg».
Ссылка на скачивание скрипта Мипо
p, blockquote 6,0,0,1,0 –>
Описание скрипта
Активация скрипта
Для того, чтобы script на meepo в Dota2 начал функционировать, вам необходимо активировать его в игре.
p, blockquote 7,0,0,0,0 –>
- Для активации необходимо открыть консоль и прописать «exec meepo.cfg»
- Далее вам необходимо скачать и поместить в библиотеку скриптов файл под названием «Meepo.cfg».
- При совершении правильной последовательности действий и после нажатия кнопки Enter должна появиться строчка: execing meepo.cfg
Редактирование скрипта
- Для этого по файлу скрипта нажимаете правой кнопкой мыши и в подменю выбираем «Открыть с помощью».
- Выбираем Блокнот. Важно не изменять имя файла.
- Далее меняем bind «1», где 1 – кнопка по умолчанию, на удобную игроку. Таким образом, можно изменить кнопки на всех биндах в скрипте.
after –>
Как включить скрипты в доте 2
1.1 Создание файла конфигурации
Перед использованием файла конфигурации его необходимо создать. Делается это просто:
- Открываете блокнот, либо другой текстовый редактор (wordpad, notepad++ и др.) и нажимаете Файл -> Сохранить как в поле имя указываете Имя конфига.cfg (рисунок 1)
- Либо создаете текстовый файл и вручную переименовываете его на Имя конфига.cfg (рисунок 2)
Рисунок 1 — Создание файла конфигурации блокнотом
Рисунок 2 — Создание файла конфигурации изменением имени
Созданный конфигурационный файл необходимо поместить в папку с установленной игрой Диск:Steamsteamappscommondota 2 betadotacfg
1.2 Использование файла конфигурации
Существует два способа ипользовать файлы конфигурации:
- Автозагрузка файла при старте игры. Для этого необходимо в параметрах запуска Библиотека -> Все игры -> Dota 2 -> Свойства (рисунок 3) дописать оператор +exec configname.cfg (рисунок 4)
- Подгружать во время игры. Для этого необходимо запустить консоль (по умолчанию клавиша
) и ввести там exec configname.cfg. Консоль можно включить дописав в параметрах запуска (рисунок 3,4) параметр -console. Обращаю ваше внимание, что если у Вас есть 2 файла конфигурации, например, tinker.cfg и invoker.cfg, в которых используются одинаковые кнопки, то приоритет имеет последный конфиг, подгруженный командой exec (аналогично и в самом конфиге: приоритет имеет нижняя строчка)
Рисунок 3 — Свойства
Рисунок 4 — Параметры запуска
Рисунок 5 — Внешний вид консоли в игре
Кнопки имеет смысл переназначить на удобные лично вам (т.к. в данном конфиге они могут дублироваться. Лучше иметь несколько конфигов и подгружать их командой exec configname.cfg в консольке). Комментарии из своих конфигов тоже лучше удалить (ибо негоже смущать движок).
Прокасты на тинкера (прокаст дается в цель, на которую указывает курсор)
Конфиги на мипо (для работы биндите 2 группы: первая – главный мипо, вторая – остальные). Как работает: блинкуемся основным, переключаемся на вторую группу и спамим нужную кнопку. Коряво объяснил. Практика и все поймете).
Фастспеллс (каст трех нужных шариков и инвока) на инвокера (прокасты ручками давать быстрее). Лично у меня бинды стоят на нижний ряд клавиатуры (от z до /).
Автоматизация рутины в 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 отдаёт обрезанные данные, из полезного доступно
Прошедшее количество секунд с начала игры
Игровое время в секундах
Пример данных (в игре запущена карта с демо режимом)
Если просматривать реплей или чужую игру, то доступно гораздо больше информации – вся она описана тут. Что-ж, самая важная информация нам уже доступна – 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 часть)
Парсинг Dota 2 реплеев – там не сложно, используется Protobuff и все структуры легко находятся на гитхабе. Вот только что дальше с этим огромным объёмом данных делать?
Вывод: интегрироваться с Dota2 не вызывает труда, можно делать быстрый анализ прямо во время игры, при просмотре киберспортивных игр можно сделать огромное количество красивого оверлея для Twitch стрима, также можно развивать эту тему в сторону ретроспективного анализа из реплеев, что скорее всего будет полезно профессионалам.
Надеюсь вам было интересно почитать про то, как я собрал на коленке читы (на самом деле хороший вопрос – читы это или нет?), да ещё и на JS, если есть орфографические или лексические ошибки, то пишите пожалуйста в ЛС, спасибо за внимание.