Что такое скрипты в доте
Скрипты для Дота 2: что это такое и как они работают?
В этой прекрасной игре на многих героях в некоторых типичных ситуациях требуется прожимать несколько скиллов и пару-тройку артефактов. Чтобы сделать это вручную, нужно долго тренироваться, быстро соображать и иметь отменную реакцию. Однако все мы люди и очень много ошибаемся, даже топовые игроки, истинные профессионалы киберспорта часто ошибаются, забывают прожимать некоторые кнопки, хотя их навык доведен до автоматизма. Чтобы этого не было, существуют скрипты. Скрипты для Дота 2 – это список команд, которые выполняются по нажатию одной кнопки.
Следует сказать, что в этой игре каждая предустановленная кнопка отвечает за свою команду. А скрипт делает так, чтобы выполнялось сразу несколько предустановленных команд. Например, можно сделать так, чтобы по нажатию одной кнопки нажималось пару скиллов и несколько артефактов.
Установка скриптов: что следует знать?
Во-первых, для успешной установки скриптов в стандартных игровых настройках не должно быть кнопок, которые назначены в файле скрипта. Это очень важно, так как Дота может конфликтовать по поводу одинаковых кнопок, это может привести к зависаниям, вылетам и тому подобное. Следует сказать, что в настройках есть кнопка «дополнительное», где сокрыто еще пару десятков назначенных кнопок. Проверьте их все до установки скрипта, а точнее, прежде чем активировать в игре через консоль.
Чтобы найти папку для установки скриптов, нужно зайти в Steam, потом нажать кнопку «Библиотека», в списке игр найти Dota 2 и кликнуть на ней правой кнопкой мыши, затем нажать «Свойства», выбрать вкладку «Посмотреть локальные файлы» и нажать на нее. Откроется папка с игрой и по этому пути вы найдете папку «game\dota\cfg», в нее и нужно бросать ваши скрипты.
У каждого скрипта должно быть расширение «.cfg», только такой тип файлов воспринимается игрой в качестве скрипта. Открывается такой тип файлов обычным блокнотом, разбираться в том, что там написано совершенно не обязательно. Назначить кнопки на определенные действия можно напротив надписи «bind», после нее идет цифра или буква, ее и нужно менять, чтобы назначить кнопку на исполнение определенной группы команд.
Какие бывают скрипты в Дота 2?
Как правило, скрипты для Дота 2 нужны на не многих героев. Например, самый требовательный герой – Мипо, он требует тонкого контроля и чтобы ним управляться, можно использовать заранее заготовленные списки команд. Они помогут телепортировать всех Мипо к одному или, например, они могут прыгнуть на одном месте. Для любого из этих действий требуется лишь одна кнопка, а теперь представим сколько нужно нажать кнопок, чтобы сделать это без скриптов, нужно прожать по три кнопки на каждого из пяти клонов. Сначала нажать прыжок, потом кнопку мыши, в какое место нужно прыгнуть, потом переключиться на другого и повторить еще раз. В итоге мы получаем 15 нажатий, даже при молниеносной реакции, выработанной годами, это займет больше времени, чем нажать одну кнопку.
Такие скрипты могут быть на любого героя, в частности в интернете очень популярны скрипты на Инвокера, Тинкера, Мипо и других героев, которым требуется прожимать несколько способностей и предметов одновременно.
Недостатки скриптов
Скрипты в Dota 2: плюсы и минусы
В Доте на определенных персонажей иногда необходимо прожимать несколько умений и предметов. Придется много тренироваться, чтобы сделать это только своими руками. При этом надо быстро думать и реагировать. Но ошибаются иногда даже рейтинговые игроки. О том, что нужно продавливать некоторые клавиши, иногда не помнят даже профессионалы. Чтобы не допускать таких ошибок, программисты создают скрипты для Dota 2. Они представляют собой перечень команд, выполняемых продавливанием одной горячей клавиши.
Что нужно знать?
В матче за набор действий отвечает соответствующая горячая клавиша. Чтобы сработало одновременно несколько предустановленных команд, что и делает скрипт по сути. Например, по клику одной кнопки с помощью скрипта может нажаться несколько навыков и вещей.
Установка скриптов
Горячих клавиш, назначенных в коде скрипта, не должно быть в настройках, которые являются стандартными для игры. Тогда инсталляция пройдет с успехом. В противном случае, по поводу идентичных кнопок могут возникнуть конфликты. В результате они станут причиной сбоев и зависаний. Обратите внимание, что несколько десятков горячих клавиш скрыто в кнопке «дополнительное». Она располагается в настройках. Перед тем, как через console активизировать в игре скрипт (то есть до его инсталляции), все они должны быть проверены.
Скрипты Dota 2 устанавливаются в специальной папке. Чтобы ее найти, нужно действовать по следующему алгоритму:
В качестве скриптов игра воспринимает только файлы формата «.cfg». Открыть такой документ можно с помощью простого блокнота. Читать и стараться вникнуть в его содержимое вам не понадобится. Напротив слова «bind» есть возможность назначать клавиши на какие-либо определенные действия. После этой надписи расположено число или буква, которую нужно изменить, чтобы назначить кнопку на выполнение определенного скрипта.
Какие бывают скрипты?
Обычно Scripts Dota 2 необходимы не всем персонажам. Мипо – один из самых придирчивых. Он нуждается в тщательном надзоре. Поэтому, чтобы управлять им, можно использовать списки команд, приготовленные заблаговременно.
С их помощью все Мипо способны подскочить одновременно на месте или телепортироваться к одному. Представляете, какое количество клавиш придется нажать, чтобы проделать это собственноручно? На каждого из 5 клонов придется прожать 3 кнопки. То есть, получается всего 15 нажатий. В первую очередь продавить прыжок, затем клавишу мышки, куда именно нужно прыгнуть. Потом вы должны будете перейти на следующего и повторить эти же действия. Какая бы молниеносная реакция у вас ни была, нажать всего одну кнопку займет много меньше времени.
Такие скрипты существуют практически для любого героя. Особенно они популярны для Тинкера, Инвокера и других персонажей, которым нужно прожимать много предметов и умений за один раз. Также многие ищут скрипты на Петуха и Течиса. Их работа базируется на основе функции консоли в игре.
Консоль в Доте предназначена для того, чтобы помогать геймерам получать информацию о настройке их персональной игры. Однако многие хакеры на этом не остановились. Читеры используют консоль в личных целях и создают собственные модификации кодов для упрощения игрового процесса.
Используя определенные скрипты без особенного труда можно поднять свой рейтинг. Античит Valve очень редко определяет нечестных игроков и, соответственно, почти не блокирует. Поэтому, как правило, владельцы приватных скриптов, остаются безнаказанными. То есть продолжительного решения на перспективу для предупреждения использования скриптов или читов в игре до сих пор не придумано. На данный момент только явных мошенников могут забанить по жалобе.
Часто читеры продают инструмент на собственных сайтах и получают денежные средства незаконно. Если вы наберете купить скрипты дота 2 в одном из поисковиков, то сразу получите в выдаче несколько миллионов результатов. К сожалению, игроку легче за секунду приобрести и установить такой скрипт, чтобы побеждать, чем длительное время тренировать свои игровые навыки.
Иными словами, скрипт дает игроку огромные преимущества, выполняя сложные вещи в игре на автомате. Читы в Dota 2 сильно отличаются друг от друга. Например, это может быть автоматическое использование вещей, авто-комбо навыков, автоматических добиваний последним ударов своих или чужих крипов, добивание собственных войск или самого себя, блокирования крипов на автомате, приобретения способности видеть в мареве битвы.
Вышеупомянутый скрипт на автоблок крипов дает многочисленные команды на передвижение персонажа. Непосредственно перед крипом он изменяет местонахождение персонажа. В результате скорость волны creeps на направлении значительно уменьшается.
Это приводит к тому, что вы получаете превосходство оптимального расположения на центральной линии. Если у вас нет скрипта, чтобы преуспеть, вам потребуется многочасовой опыт. Так как в этом случае речь идет о навыке высокого уровня.
Популярные скрипты могут обладать общими для всех персонажей командами, а могут быть сделаны под каких-либо определенных героев. Они помогают игроку быть всегда впереди как в макро, так и в микро игре. Например, самодействующее употребление вещей представляет собой на самом деле сложный набор команд.
Минусы
Бесплатные скрипты Dota 2 необходимо активизировать в консоли при каждом вашем входе. Этот элемент управления еще не автоматизирован. Скиллы очень быстро используются – это еще один недостаток. Бывает, что игра не успевает осуществить все команды. Еще один важный момент, о котором стоит не забывать: можно легко найти скрипты для скачивания, но они нередко будут заражены вирусами. Так что помните, если вдруг решите использовать, что делаете это исключительно на свой страх и риск.
Самые популярные скрипты для Дота 2 в 2020 году
В статье ты найдешь:
Что такое скрипты для Дота 2?
В Dota 2 есть огромное количество героев, у каждого из которых свой набор активных и пассивных способностей. У некоторых персонажей, 1-2 активных способности, да и те работают лишь по одной цели. Есть же в этой игре персонажи, у которых мало того, что все способности активные, так ими ещё нужно научиться попадать или нажимать в определённой последовательности, чтобы реализовать их на полную. Дабы освоить таких персонажей, потребуется множество часов тренировок, хорошая реакция и неплохой ум. Тем не менее, никто не отменял человеческого фактора, поэтому даже профессиональные игроки часто допускают ошибки. Чтобы избежать подобного, сообществом были придуманы скрипты: набор команд, которые выполняются автоматически, нажатием лишь одной кнопки.
Почему скрипты на Дота 2 так популярны среди игроков?
Всё больше людей обращаются к использованию различных скриптов и читов на Дота 2, поскольку они позволяют выполнять несколько действий одновременно, что обычному человеку, даже профессионалу, просто не по силам. Популярность скриптов обусловлена несколькими причинами. Вот лишь самые значимые из них.
Функционал скриптов
Скрипты имеют высокий функционал, а это означает быстрое поднятие рейтинга. Зачем вам заказывать буст, если вы и сами сможете поднять рейтинг при помощи скриптов.
Скрипты обладают какими-то общими, для всех героев, командами, а также есть скрипты, заточенные под определённых персонажей. Отдельно стоит выделить таких героев, как Pudge с его автохуком, Tinker с полностью автоматизированным прокастом, Meepo с автоматическим использованием способностей на всех его клонах, Techies и многие другие. Важно знать, что со скриптами вы всегда сможете давать на всех героях моментальный прокаст. Скрипты помогут вам быть всегда впереди как по макро, так и по микроигре.
Безопасность скриптов
Многих волнует вопрос, а не забанят ли за использование скриптов? – Нет, хотя такая вероятность и не исключается. Полноценного античита у Valve нет, поэтому единственная возможность получить баны за использование скриптов – это жалобы от других игроков, поэтому вы должны играть так, чтобы у людей не возникло подозрений.
Valve всё равно на скрипты
Dota 2 скоро исполнится 10 лет, а Valve за это время так и не обзавелись хорошей защитой от скриптов и читов. Конечно, если вам удастся нарисовать себе 10,000 золотых на первой минуте, то скорее всего, бан вы получите. За автоматические использование способностей и предметов вас никто банить не будет.
Скрипты – это весело
Помните те старые времена, когда все играли с читами в GTA: San Andreas? Люди использовали читы не потому, что не могли пройти игру, а просто для веселья. Точно такая же ситуация и со скриптами. Для подавляющего большинства игроков, Dota 2 – это не путь в киберспорт, а инструмент для получения хорошего настроения.
Какие бывают скрипты на Дота 2?
На Дота 2 можно найти огромное количество всевозможных скриптов. Одними из самых распространённых являются скрипты на Techies, Meepo, Skywrath Mage, Invoker, ластхиты и карту. Все эти скрипты работают с длинными строками команд через функционал консоли в Dota 2.
Доступ к консоли в Dota 2 есть абсолютно у всех игроков. Valve решили дать доступ к ней для помощи игрокам, а также для индивидуальной настройки игры под свои нужды. Однако некоторые решили использовать консоль для получения преимущества в игре не самым честным путём.
В Интернете вы найдёте огромное количество скриптов для Дота 2. Их продавцы даже не особо шифруются, так как Valve практически не борются с такими людьми. На YouTube можно найти множество видеороликов, демонстрирующих работу того или иного скрипта на ластхит, курьера, Tinker, Techies и так далее.
Скрипт на добивание крипов в Дота 2
Скрипты на ластхит и дэнай рассчитывают урон игрока и противника и исходя из математических расчётов, скрипт делает решение, когда нужно атаковать крипа, чтобы добить его. Конечно, этому можно научиться и самостоятельно, но на это потребуется несколько месяцев или даже лет, чтобы полностью овладеть навыком добивания крипов. Скрипты на ластхит и дэнаи освобождают вас от этого. Теперь вам просто достаточно включить скрипт и вы начнёте добивать крипов без каких либо проблем.
Скрипт на автостопинг крипов в Дота 2
Этот скрипт отдаёт вашему персонажу огромное количество команд на перемещение, заставляя того передвигаться прямо перед крипом. Скрипт на автоматическую блокировку крипов значительно замедляет продвижение волны союзных крипов по линии. Особенно полезным этот скрипт будет для мидеров, для которых стопинг крипов является одним из важнейших умений игры. Как и в случае с ластхитом, чтобы научиться стопить крипов, вам может понадобиться очень много времени.
Скрипты на автоматическое использование предметов
Это самый полезный и популярный скрипт в Дота 2, так как он позволяет делать прокасты при помощи нажатия одной лишь кнопки без каких либо задержек. Самому, научиться этому практически невозможно, так как в любом случае у вас будут пустые промежутки, хоть и минимальные, между использованием способностей и предметов.
Скрипт позволяет извлечь максимальную пользу из этих предметов для реализации полного потенциала персонажа. Скрипты на автоматическое использование предметов и способностей в игре выглядят так, словно игрок обладает нечеловеческой реакцией, поэтому ожидайте, что на вас будет кидаться огромное количество жалоб от других игроков.
Скрипт на автоматическое использование Soul Ring
Ещё один из самых популярных скриптов на сегодня – это скрипт на Soul Ring, который позволяют вам одним кликом убирать из инвентаря все предметы, увеличивающие максимальный запас маны, что позволяет максимизировать пользу от использования Soul Ring.
Скрипты на автоматическое использование способностей
Такие скрипты популярны на тех героях, на которых важно быстрое использование всех своих способностей и предметов в определённом порядке. Одним из таких персонажей является Skywrath Mage. У этого героя четыре активных способности, которые должны быть использованы в определённом порядке, для нанесения максимального урона по врагу.
Зачастую, прокаст на Скаймаге выглядит так:
Весь этот прокаст наносит колоссальное количество урона в одну цель.
Наиболее ярким примером является Arc Warden с его ультимэйтом, который создаёт копию самого героя. В отличии от других копий, копия Arc Warden от ультимэйт может использовать все способности и предметы, которые есть у оригинала, поэтому получается, что игроку приходится управлять сразу двумя героями.
Скрипты на обзор по карте
Этот скрипт является самым сильным и нечестным в игре. Скрипты, которые дают свободный обзор на всей карте, предоставляют вам информацию о местоположении команды противника и их вардов. В результате, игра становится слишком нечестной. Тем не менее, использование таких скриптов очень легко обнаружить, и вот за них, вероятность получить баны наиболее высокая, чем за все остальные.
Проблемы и пути их решения в Dota 2. Скрипты и конфиги
Многие любители профессиональной доты явно заметили, что многие игроки, комментаторы и аналитики стали много говорить о скриптах для доты. Давайте же попробуем разобраться что такое скрипты и всё что с ними связанно. Если вкратце:
Давайте же подумаем, нужны ли в доте скрипты и консольные команды.
Никто не будет спорить, если я скажу, что Dota 2 – это в первую очередь соревновательная игра. Это одна из популярнейших и крупных киберспортивных дисциплин. В Dota 2 соревнования происходят не только на профессиональном уровне, но и в обычных пабах люди сражаются за очередные +25, для того чтобы стать лучшими. И естественно, логично предположить, что лучшими должны становится сильнейшие. Что определяет силу игрока в Dota 2? Его способности быстро принимать решения и прожимать необходимые кнопки в нужное время. Его реакция, внимание, стойкость и многие другие качества влияют на скилл игрока. Однако вернёмся к самому главному. Нажимать кнопки вовремя и быстрее твоего соперника – вот что определяет победителя. Но скрипты – это то, что уничтожает эту соревновательную систему, возможно не полностью, ибо каждый имеет право использовать скрипты. Но давайте задумаемся, как сильно влияют консольные команды и скрипты на соревнования.
Например, возьмём стандартную ситуацию с отбиранием первой руны. Представьте, что на реке вы встретились с вражеским алхимиком 1 на 1, остаётся 5 секунд до появления руны, вы подходите, встаёте на точку спавна и яростно начинаете кликать правой кнопкой мышки в точку появления руны с целью не дать вражескому алхимику большого преимущества в начале игры, а вражеский алхимик спокойно, с полной уверенностью подходить к месту появлению руны, не напрягаясь зажимает ПКМ и ждёт. Обычный игрок, даже если он очень на тренированный не сможет сделать более 4-5 кликов за секунду, в то время ваш оппонент возможно даже ещё медленнее вас, но он использую консольную команду, благодаря которой он превышает возможные для человека нормы и делает более 10 кликов в секунду. Естественно в 99% именно человек, использовавший консольные команды заберёт руну. Многие скажут, что первому мешает использовать эту же команду. Я отвечу, да в принципе ничего, только если встретятся 2 человека, использующих эту команду, то тут уже будет включена система рандома и руну получит тот, кому повезёт. И где же тут соревновательный элемент?
Ещё один пример, но уже со скриптами. Представьте, турнир 1 на 1 среди мидеров всей планеты. Вот финальный этап, решающая карта и последним героем на этом турнире для вас станет Invoker.Первый финалист – человек, который очень много играл на инвокере, ещё со времён первой доты, он очень хорошо знает героя, тайминги, никогда не путается в кнопках и возможно именно он является лучшим игроком в доте на этом герое. А его соперник – обычный неизвестный игрок, который конечно играл на инвокере и тоже его не плохо знает, ведь он в финале турнира среди мидеров всей планеты. И логично что в большинстве случаев побеждать должен задрот инвокера. Однако второй игрок имеет скрипты на инвокера, благодаря которым, при нажатии всего на 1 кнопку, компьютер сам прожмёт за него каждую сферу, скастует каждый скилл идеально в тайминги, что позволит нанести ему лишние
300-500 урона. Конечно в такой борьбе ещё влияет интеллект, понимание героя, настроение и прочие факторы. Однако сам факт того, что какой-то левый игрок с “5-а” сможет скастовать способности инвокера лучше, чем известные и сильнейшие игроки Dendi, Arteezy, Suma1L, которые тренировались ни год, ни два, а более 5, а некоторые и более 7 лет, очень пугает.
А ведь скрипты бывают не только такие, есть множество разных моментов, которые можно упростить, использовав скрипты – абуз боттла, проверка рун, стаки нейтралов и прочие другое. Все это множество действий будут выполняться компьютером, и всё что сделает для этого человек – нажмёт одну кнопку. Это очень сильно влияет на соревновательную составляющую Dota 2.
Как по мне, стоит отключить консоль, а все консольные команды, которые никак не влияют на игру (показ fps, изменение размеров иконок героев на карте и прочие) вынести в меню настроек Dota 2. Либо же просто запретить использовать большинство консольных команд, как это было с командами на отдаление камеры и демонстрацией радиуса получения опыта вокруг героя.
На этом у меня всё. Я против большинства скриптов и консольных команд, и невозможно решить эту проблему, просто не играя с ними. Очень трудно победить у игрока, который использует всё возможное для облегчения игры. И пока скрипты официально работают и разрешены ими будут пользоваться все – игроки, профессионалы и я в том числе.
Скриптинг Dota 2 — руководство для начинающих
В этом уроке мы попытаемся объяснить основы программирования пользовательских модов (кастомок/аддонов) Dota 2.
Скриптинг
Для начала вам понадобится уже созданная кастомная игра, с которой вы уже провели некоторые опыты. Самое время начать учиться программировать на Lua и вообще разобраться со всем этим дерьмом.
Эти файлы используют систему KeyValues (KV, ключ-значение) и являются ядром в системе DataDriven. Это таблицы, содержащие всевозможные данные и они помогают движку Source 2 понять, что есть что. В этих файлах очень простой синтаксис. Всё что там есть — это таблицы (начинаются и заканчиваются фигурными скобочками), в которых содержатся ключ и его параметр (значение).
KV задают базовые параметры способностей, предметов, юнитов. А вот с Lua, уже будет немного сложней.
На этом подготовку закончим. Сейчас самое время, чтобы попробовать написать Dota 2 скрипт (сценарий). Лучшим редактором я считаю Sublime Text Editor с этими 2 сниппетами (плагинами), которые добавляют дополнения для некоторых часто используемых функций и дают подсветку синтаксиса для KV и Lua.
Это будет просто вводный пример системы DataDriven, чтобы понять, что и как устроено, где что нужно менять.
Создайте новый документ в Sublime Text Editor и убедитесь, что вы используете Dota KV синтаксис (нажмите Ctrl + Shift + P и впишите Dota KV, чтобы выбрать его быстро).
Мы будем делать очень простую способность, которая наносит один урон для одной цели. Начните с написания имени способности между « « и без пробелов. Затем напишите BaseClass… и нажмите Enter, чтобы вставить авто завершение (вот зачем нужны были сниппеты выше). Перемещайтесь с помощью клавиши Tab.
«BaseClass» имеет важное значение для каждого DataDriven определения, заставляет игру интерпретировать, что это способность DataDriven. Предметы, юниты и герои имеют свои собственные базовые классы (BaseClass).
AbilityTextureName — иконка вашей способности или любое внутреннее название способности доты, например lina_laguna_blade.
Другое важное KV — AbilityBehavior, запишите AbilityB и используйте автозаполнение
Теперь нам нужно событие (event) способности — это триггер, когда определенное событие происходит с владельцем способности. Самый основной из них — OnSpellStart, добавьте его с автозаполнением, и вы увидите новый «уровень» созданным в < >, это называется блок. В [ДЕЙСТВИЯХ], напишите «Damage» действие, какой-нибудь ключ и %AbilityDamage. Знак процента % представляет значение, которое будет принято где-то еще, в этом случае, в ключе-значении AbilityDamage. Добавить этот последний ключ, и первая основа заклинания должна выглядеть так:
Теперь, эту способность нужно добавить в npc_abilities_custom.txt файл для героя или юнита, чтобы иметь возможность использовать её.
После добавления test_ability, которую вы только что создали, пора добавить способность и герою. В папке вашего мода есть папка heroes, которая имеет различные файлы с описанием способностей героя. Откройте любого героя и измените стандартную способность на test_ability.
Всякий раз, когда вам необходимо создать «маникен» (в игрострое это dummy unit), используйте в консоли -createhero (unit_name) enemy.
unit_name — имя, доступного для пика, героя или любое имя юнита, который также доступен. Можно использовать сокращенные имена, например «ancient», а не «ancient_apparition». Быстрая команда -createhero kobold enemy создаст противника — нейтрала кобольда. Полное имя юнита «npc_dota_neutral_kobold», но короткая команда будет работать. Вы также можете отключить перезарядки способностей путем написания -wtf (и -unwtf будет включать её).
Обширную документацию и углубленные примеры системы DataDriven можно найти на страницах Dota 2 Workshop Tools Wiki.
Lua скриптинг
Возвращаясь к папке game/scripts, мы увидим папку vscripts. Это как раз то место, где находятся все скрипты Lua. Lua довольно легко изучить и синтаксис очень прост. По-большей степени, программирование в Dota, на Lua — это просто знания готовых функций API, которые необходимо использовать (подробнее об этом позже).
Вот 4 главных разработок на Lua в Dota:
Игровая Логика — Структура
После того как выполнится Precache и Activate, первая функция, которая выполнится в файле lua — GameMode: InitGameMode ().
И здесь начинается игра с инициализацией всех видов правил и функций, которые зарегистрированы во всех GameRules и GameMode файлах. Для этого, многие переменные определены на начало файла, чтобы нормально организовать параметры, такие как настройки золота, убийства, кастомные уровни, и т.д.
Это синтаксис функции, примененной на GameRules, с одним параметром BOOL:
Так же, как KV, Lua чувствителен к регистру. Расположение функций в основном файле Lua как правило, не имеет значения. Все строки скрипта внутри вызова функции будет выполняться один за другим, потенциально в том же кадре; один кадр в Dota — 1/30 секунды.
Глобальным функциям не нужны префиксы : в дескрипторах. Герои, юниты, способности и предметы имеют свои различные классы дескрипторов и пытаясь вызвать функцию несовместимого класса вызовет ошибку VScript — розовый текст в консоли и красным текстом на игровом экране.
Консоль
Вы можете получить доступ к игровой консоли, нажав клавишу `.
Это обеспечит тонну полезной информации для отладки. Различные цвета представляют различные «каналы» информации. По умолчанию все каналы находятся в том же журнале: вкладка по умолчанию. Очень рекомендуется делать свои собственные вкладки, чтобы разделять просмотр журнала.
В основном для Lua скриптинга, нам понадобится вкладка VScript. Сообщения о системе DataDriven в General Channel, в желтом канале что-то ещё, сделайте отдельный просмотр для него тоже.
Консоль будет уведомлять, когда происходит ошибка в скрипте Lua, либо когда игра загружается (ошибка синтаксиса компиляции) или во время выполнения. В этой ошибке, я написал GameRules.SetHeroRespawnEnabled с . вместо :
Вы можете проследить ошибку и попытаться ее решить, прописать script_reload в консоли, чтобы перезагрузить скрипт (подгрузить пересохраненный файл) и проверить, была ли она исправлена.
Синтаксическая ошибка DataDriven, как правило, выглядит следующим образом:
События в пользовательской игре Source 2
Вторым сегментом функции InitGameMode являются Слушатели:
Структура этого ListenToGameEvent читается так:
Всякий раз, когда событие dota_player_gained_level срабатывает, выполнить функцию OnPlayerLevelUp (всё то что описано в ней).
OnPlayerLevelUp и GameMode просто имена функций и основного класса, как правило, вам не нужно беспокоиться о них, это просто слушатели. Dynamic_Wrap — функция для того, чтобы script_reload команда также перезагружала слушателей. script_reload перезагружает Lua скрипты во время игры, в отличие от DataDriven файлов, которые требуют, чтобы игра была полностью перезапущена заново.
3-й и последний главный элемент в InitGameMode, который сам определяет переменные для отслеживания информации. Они используют приставку self., которая является локальной ссылкой на GameMode, сквозь все функции внутри основного файла Lua. Добавление информации к объекту entity. называется «индексация» и в основном добавляет еще одну запись к большой таблице этого объекта. Это очень полезно, потому что эта информация хранится в дескрипторе объекта и видны повсюду (можно использовать везде), и ничего не поменяется, пока мы не переназначим или уничтожим его.
Достаточно теории, давайте посмотрим, как все это приходит. Мы добавим несколько простых строк сценария в OnNPCSpawned функции, которая является слушателем к npc_spawned и вызывается каждый раз когда спавнится юнит или герой на карте.
Давайте проанализируем содержание OnNPCSpawned функции по умолчанию:
DeepPrintTable является глобальной Valve-игр функцией, которая будет отображать информацию с таблицей произошедшего. Для ключей в данном случае, это будет .entindex и .splitscreenplayer. Индекс объекта является очень важным номером для ссылки на объект. Игнорируйте splitscreenplayer, это просто остатки старого движка Source, они никогда не использовались в Dota 2.
Следующая строка определяет локальную переменную. В Lua объем локальных переменных в блоке, в котором они были объявлены, ограничивается. Это хороший стиль программирования, использовать локальные переменные, только тогда, когда нужно. Локальные переменные помогут вам избежать загромождения глобальной окружающей среды с ненужными переменными и значениями. Кроме того, доступ к локальным переменным быстрее, чем к глобальным.
Это в основном чтение информации, которая предоставляется в событиях, и хранится в локальной переменной внутри этого вызова функции. В этом примере все Слушатели и их функции уже были обработаны, но для справки, вы всегда можете проверить In_Engine_Events вики-страницу, чтобы точно знать, какие параметры каждого события переносятся.
Локальная переменная npc HScript, типа дескриптора. Все изменения, сделанные в переменной NPC будет отражать на заспавненном юните.
Следующая строка сначала проверяет, если npc герой true (это исключает иллюзии и других юнитов), а также проверяет, если индекс.bFirstSpawned не назначен. Если оба условия выполняются, изменяется логическое значение = true и вызывается функция OnHeroInGame.
Чтобы закончить этот базовый урок Dota Lua, давайте изменим OnNPCSpawned функцию, так, что, если юнит с именем npc_dota_neutral_kobold заспавнится, подождать 1 секунду, а затем он умрёт сам по-себе:
Здесь мы воспользуемся библиотекой Таймеров для простой односекундной задержки. Есть много различных функций таймера и их объяснения в timers.lua. BOOL на ForceKill это для того, чтобы воспроизвести анимацию смерти.
Таблицы
Таблицы наиболее важная структура, которую мы должны использовать. Как упоминалось ранее, все данные на объекты можно рассматривать как таблицу (хотя это технически указатель C ++ объекта), тем самым, вы сможете получить и установить значения по различным функциям API игры.
Есть некоторые функции в API, которые возвращают таблицу дескрипторов объектов.
Параметры должны быть в таком порядке. Эта функция глобальная, поэтому не нужен handle: (дескриптор), но мы должны держать в таблице в переменные, такие как:
Выяснить teamNumber — какая команда объекта находится в радиусе можно сделать с помощью GetTeamNumber () с помощью информации от дескриптора NPC. Что касается других параметров фильтра, вместо реальных чисел мы используем кучу констант, которые представляют различные числовые значения. Полный список констант на этой странице вики.
Вектор представляется в виде вектора (х, у, z) координат. Функция, чтобы получить позицию конкретного блока под названием GetAbsOrigin и принимает дескриптор (handle) NPC.
Что касается параметров кэша, просто поставьте ноль и false, от них не много пользы в целом.
Завершенная функция вызывающая героя в радиусе 500 от родившегося (заспавненого) кобольда будет выглядеть так:
Используйте дополнительные строки разрыва, чтобы сделать его более читабельным. Теперь мы хотим сделать итерацию (цикл, перебор) объектов в этой таблице, это осуществляется следующим образом:
Ключ, юнита с выбранным именем относится к позиции и переопределяется его ценность внутри блоков таблицы, которые будут читать в парах (не пар из чайника). Использование ‘_’, как имя ключа поможет вам, если вы хотите, чтобы было ясно, что первый параметр не будете использоваться. Второй параметр — юниты, используется для итерации дескрипторов (handle) найденных юнитов.
Существует еще одна вещь, на которую стоит обратить внимание: проблема «подождите один кадр». Потому что все юниты фактически родились в (0,0,0) координатах, а затем переехали в нужное положение. Во многих случаях вы должны будете создать второй таймер с задержкой 0.03 сек (1 кадр) для некоторых сценариев, чтобы всё работало.
Теперь, OnNPCSpawned выглядит так:
DataDriven RunScript
Разделение файлов lua под каждую способность — хорошая идея, так как это также помогает разделить скрипты способностей, как с файлами txt.
Давайте вернемся к первой супер простой способности, которая будет наносить урон единичной цели (target damage), и добавим этот блок в событие способности OnSpellStart:
Синтаксис выглядит так:
ScriptFile направляет относительно в папку /vscripts/. AbilityName — это название функции lua внутри этого файла.
Давайте вернемся к нашей простой способности (которую мы написали выше в статье), и добавим блок RunScript, а также создадим файл с кодом, чтобы подключение произошло успешно. Рекомендуется разделить все файлы Lua для каждой функции отдельно, а также создать отдельные папки для героев, юнитов, предметов и т.д. Это не обязательный пункт — на ваше усмотрение.
Добавьте блок RunScript в DD-событие — OnSpellStart. Теперь, при нажатии способности — будет подгружен файл example_script и выполнятся все строки, определенные в функции ScriptedAbility.
Внутри функции большинство скриптов возможностей начинаются с определения локальных переменных для целевых игровых объектов, которые выполнили определенные события. Основные целевые переменные, видимые на любом скрипте:
Этот скрипт убьет юнита, на которого направлена способность, если процент здоровья составляет менее половины, и приписывает убийство тому, кто использовал эту способность (заклинателю).
Примеры скриптинга и Исходники
Существует множество примеров, расположенных в виде репозиториев на GitHub. С помощью этого руководства, теперь, вы должны понимать как скриптить логику вашей пользовательской игры. Исходников стандартных возможностей из Dota нет. Лучшим репозиторием на GitHub для поиска скриптов стандартных переписанных абиллок на lua — SpellLibrary. Это проект сообщества, в котором переписана каждая способность Dota с использованием KV и Lua.
Если вы хотите посмотреть как работают скрипты определенной кастомки, но автор не открыл исходники, выполните следующие действия:
Whenever you have a doubt about how to use a particular GameAPI function, its possible to find examples all over GitHub by just writing the name of it, additionally filtering by lua like this:
Всякий раз, когда вы сомневаетесь в том, как использовать определенную функцию GameAPI, можно найти примеры по всему GitHub, просто записав имя этой функции, а также фильтруя lua следующим образом:
Главное убедиться, что это нужные файлы и они для Dota, а не другой игры 🙂 Дело в том, что названия функций API могут иметь одинаковые названия, хоть и относиться будут совсем не к Dota 2.
На этом с основами скриптинга можно завершить. Если у вас есть какие-то вопросы — вы всегда можете уточнить информацию в комментариях или на нашем форуме.