FAQ по Valve Hammer Editor, скриптингу и прочему в Dota 2.
Этот топик предназначен, чтобы направлять сюда новичков, чтобы сократить количество бессмысленных тем, которые скоро начнут создаваться пачками из за выхода Souce 2 и легкости создания Custom (кастом) карт.
Я уверен в предоставляемой мною информации, и если вы нашли ошибку, напишите мне в ЛС и мы исправим ситуацию. За каждую найденную ошибку я дам вам репутацию.
1. Как сделать чтобы в карте было несколько команд и как регулировать максимальное кол-во игроков в карте?
2. Какие источники использовать, где можно почитать гайды? (обновлено)
3. С чего вообще начать, как только ты начал моддить?
4. Видео уроки есть какие-нибудь?
5. Все мы сталкиваемся с тем, что в доте на 1 уровне нужно 200 опыта чтобы перейти на след. уровень.
А как сделать чтобы было 30 например?
Как сделать свою кастомную таблицу опыта?
Видали такой файл, называется addon_game_mode.lua?
Можно сразу после функции Precache расположить это.
Есть такая функция, я точно сейчас не помню как называется, примерно так: GameMode:InitGameMode()
Воот сюда втыкаете это:
6. Можно ли изменить размер карты?
Размер карты можно назначить самостоятельно, при создании оной в редакторе. Не знаю можно ли изменить это на УЖЕ СОЗДАННОЙ карте. Да и вообще, лучше не ошибаться с размерами и взять немного побольше, поскольку вдруг вы захотите расшириться.
7. Как сделать сразу что-то после выбора героя игроком?
В barebones есть отличное событие, которое уже перехвачено, остается лишь вставить код:
Здесь у меня есть 8 точек, и я хочу чтобы как только игрок выберет героя, то героя телепортировало бы в случайную точку, чтобы они сразу не встретились. Этого требует жанр моей карты:
8. Как разбить исходный файл со способностями, юнитами, предметами на отдельные txt файлы?
Dota 2 ModKit умеет создавать в папке npc 4 папки для предметов героев, юнитов и абилок. В эти папки можно скидывать .txt файлы с любым названием. При нажатии на кнопку программа прочитает все файлы в папке и соберет из них цельный .txt файл(4 файла для 4х папок). Можно почитать документацию на том же GitHub'e: https://github.com/Myll/Dota-2-ModKit
9. Где взять список косметических предметов на героев из itemlist?
Полный список на 20.07.2015 от CryDeS
: https://gist.github.com/exotickg1/90a9bdde620c8b4ed6e1
Если вручную прописать прекеш каждого героя не загружая при каждой подгрузке гейммода itemlist, все будет работать быстрее, т.к не нужно загружать объемный файл, не нужно его записывать в переменную, и не нужно сортировать.
10. Что такое barebones? (правильно произосится "баребоунз")
Это библиотека, которая существенно облегчает работу новичкам, так как все события уже отловлены и код можно писать мгновенно.
Ещё там можно настраивать различные параметры:
[list type=decimal]
[li]максимального уровня героя[/li]
[li]отключать анноунсеры дота 2 (фб, и анонсы типа "дабл килл"), [/li]
[li]ставить кастомную таблицу опыта, [/li]
[li]убирать с экрана ненужные кнопки (кнопка курьера, глиф, верхнюю панель героев и таймер дня/ночи).[/li]
[/list]
Скачать barebones https://github.com/bmddota/barebones
Начинать следует именно с её подробного изучения, особенно новичкам.
В репозитории, чуть ниже есть мини-гайд по установке barebones, если не знаете английский используйте гугл-транслейт и не стесняйтесь спрашивать здесь, на форуме.
11. Можно ли при изменений скриптов, не загружать карту заново?
Да, если скрипт не входит в игровые константы. То есть если вы изменили стартовое золото или ещё, что обрабатывается исключительно при загрузке карты, то вы можете не выходя из доты, прописать в консоли script_reload, и ваш скрипт обработается заново.
Пример: вы написали скриптовую способность и случайно ошиблись символом. Допустим написали ubit вместо unit. Вы заходите в доту, применяете способность и консоль ругается на эту строку.
Вы исправляете ошибку и пишете script_reload, и не выходя из доты проверяете её.
12. Можно ли как то ускорить процесс компиляции карты?
Естественно. Если вы меняете скрипты, то заново компилировать ничего вам не нужно. Снимаете все галочки в компилере, кроме Bring Engine To The Front и Load Map in Engine. И как только вы нажимаете Build, карта запускается мгновенно.
13. Как выглядит процесс перевода карты на другие языки?
Просто как работа в текстовом файле. На английский переводить карты обязательно, так как бОльшую часть
целевой аудитории доты представляют китайцы и другие народы, которые владеют английским. В китае почти 90% знает английский.
Если вы делаете карту исключительно для друзей, то постарайтесь чтобы и другие зайдя в неё, получили хоть какие-то инструкции, и им было интересно. Вскоре это заинтересует других игроков.
14. Можно ли открыть/взломать карту, которую я скачал в стиме?
Да, конечно. Есть утилита GCFScape, которую легко найти в гугле. Эта программа весом в 500 кб, может открыть любой проект, и вы получите готовые исходники. Также она используется чтобы вытаскивать родные иконки и различные файлы вроде npc_units.txt.
Этот топик предназначен, чтобы направлять сюда новичков, чтобы сократить количество бессмысленных тем, которые скоро начнут создаваться пачками из за выхода Souce 2 и легкости создания Custom (кастом) карт.
Я уверен в предоставляемой мною информации, и если вы нашли ошибку, напишите мне в ЛС и мы исправим ситуацию. За каждую найденную ошибку я дам вам репутацию.
1. Как сделать чтобы в карте было несколько команд и как регулировать максимальное кол-во игроков в карте?
В папке с вашим проектом есть файл addoninfo.txt
Выглядит так:
Доп. инфа от неизвестного:
Выглядит так:
Код:
"AddonInfo"
{
"TeamCount" "2" --Количество команд (получается 2 противоборствующие команды)
"maps" "statwars" --название карты, его нужно обязательно сменить на название ВАШЕЙкарты
"IsPlayable" "1" --можно ли на ней играть (относится больше к тому, будут ли видеть её пользователи в списке карт)
"statwars" --этот блок, касается только карты statwars.vmap, и ТОЛЬКО её!
{
"MaxPlayers" "8" --максимальное кол-во игроков, максимум 20
}
}
Доп. инфа от неизвестного:
Код:
У меня установлен barebones. Для изменения кол-ва команд и их игроков я изменением addon_info.txt не отделался. Ещё нужно отредактировать \vscripts\settings.lua. Там в конце есть строки MAX_NUMBER_OF_TEAMS и CUSTOM_TEAM_PLAYER_COUNT
2. Какие источники использовать, где можно почитать гайды? (обновлено)
Конечно если изучить википедию, на которой Гейб любезно НЕ ПРЕДОСТАВИЛ информации, то умнее вы не станете. Поэтому мы предлагаем вам полезные ссылки.
https://moddota.com/forums - здесь много всего, обучалки и есть очень сильные картостроители, которые быстро разберут ваш вопрос. Единственное - нужно знать английский или уметь добротно пользоваться гугл транслейтом.
http://www.reddit.com/r/Dota2Modding/ - хороший, англоязычный канал, куча тутов, обучалок, на английском!
https://github.com/ZLOY5/LiA/ - опенсорс проект, карта в топ 10, жизнь на арене, на гитхабе, мигом изучать!)
https://github.com/MNoya/Warchasers - опенсорс проект, перенесенная ещё с Wacraft 3!
https://github.com/Rookdota/RetroDota - ретродота. Тут есть старый инвокер с 27 спеллами, и забытые герои вроде Gambler'a!)
https://github.com/MNoya/DotaCraft - Стараются возродить старые спеллы из варкрафта 3, там есть все юниты из варкрафта третьего со способностями и даже постройками
http://hex6.se/dota/modifier_functions.txt - справочник по функциям модификаторов, более понятно есть в оф. вики
https://raw.githubusercontent.com/dotabuff/d2vpk/master/dota_pak01/scripts/items/items_game.txt - постоянно обновляющийся текстовый файл, содержит "одежду" всех героев в доте2. Отсюда можно "одевать" ваших юнитов, чтобы разнообразить количество юнитов на карте.
https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API#Accessing_the_DOTA_2_Scripting_API_from_Lua - полностью описание всех команд на LUA. Проще говоря АПИшечки, которые нам нужны для кодинга.
https://moddota.com/forums - здесь много всего, обучалки и есть очень сильные картостроители, которые быстро разберут ваш вопрос. Единственное - нужно знать английский или уметь добротно пользоваться гугл транслейтом.
http://www.reddit.com/r/Dota2Modding/ - хороший, англоязычный канал, куча тутов, обучалок, на английском!
https://github.com/ZLOY5/LiA/ - опенсорс проект, карта в топ 10, жизнь на арене, на гитхабе, мигом изучать!)
https://github.com/MNoya/Warchasers - опенсорс проект, перенесенная ещё с Wacraft 3!
https://github.com/Rookdota/RetroDota - ретродота. Тут есть старый инвокер с 27 спеллами, и забытые герои вроде Gambler'a!)
https://github.com/MNoya/DotaCraft - Стараются возродить старые спеллы из варкрафта 3, там есть все юниты из варкрафта третьего со способностями и даже постройками
http://hex6.se/dota/modifier_functions.txt - справочник по функциям модификаторов, более понятно есть в оф. вики
https://raw.githubusercontent.com/dotabuff/d2vpk/master/dota_pak01/scripts/items/items_game.txt - постоянно обновляющийся текстовый файл, содержит "одежду" всех героев в доте2. Отсюда можно "одевать" ваших юнитов, чтобы разнообразить количество юнитов на карте.
https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API#Accessing_the_DOTA_2_Scripting_API_from_Lua - полностью описание всех команд на LUA. Проще говоря АПИшечки, которые нам нужны для кодинга.
3. С чего вообще начать, как только ты начал моддить?
Прежде всего запастись терпением. На процесс обучения, особенно если у вас нет опыта может уйти от месяца до шести, учитывая насколько вы обучаемы и сколько часов в день готовы потратить.
Следующие строки будут моим личным мнением, вы можете либо принять как данность, либо закрыть гайд.
1. Изучить основы библиотеки datadriven. Научиться делать кастомных юнитов, героев, магазины.
2. Изучить скриптинг, lua. Начать писать первые легкие скрипты.
а) начало, легкие скрипты
б) связывать скрипты с datadriven, делать первые шаги в lua-способностях
в) делать уникальные способности, генерируя идеи из фантазии
3. Научиться импортировать модели, иконки. Повышать уникальность карты, путем введения новых фич.
4. Непрерывно записывать идеи, иметь под рукой листочек и ручку. Я делаю так: установил на смарт программу для заметок и набрасываю туда, позже когда я спокоен, то я уже могу развить идею.
5. Смотреть как делают другие, искать популярные опенсорс карты, изучать то, что есть. Например overthrow, adventure_example. Там прекрасные скрипты, иногда даже есть комментарии.
6. Давать мозгу отдых. Бывает, что вы чувствуете что мозг не готов воспринимать так много информации за день, тогда в ход идёт отдых. Расслабьтесь, погуляйте, займитесь спортом, и через денёк вернетесь свежим)
7. Не делать ничего попусту, сформируйте сразу идею вашей карты и постепенно идите к ней.
Любой туториал должен выполнять на вашей карте и дополнять её функционал.
Думайте наперед, сравнивайте, будьте оригинальнее.
Следующие строки будут моим личным мнением, вы можете либо принять как данность, либо закрыть гайд.
1. Изучить основы библиотеки datadriven. Научиться делать кастомных юнитов, героев, магазины.
2. Изучить скриптинг, lua. Начать писать первые легкие скрипты.
а) начало, легкие скрипты
б) связывать скрипты с datadriven, делать первые шаги в lua-способностях
в) делать уникальные способности, генерируя идеи из фантазии
3. Научиться импортировать модели, иконки. Повышать уникальность карты, путем введения новых фич.
4. Непрерывно записывать идеи, иметь под рукой листочек и ручку. Я делаю так: установил на смарт программу для заметок и набрасываю туда, позже когда я спокоен, то я уже могу развить идею.
5. Смотреть как делают другие, искать популярные опенсорс карты, изучать то, что есть. Например overthrow, adventure_example. Там прекрасные скрипты, иногда даже есть комментарии.
6. Давать мозгу отдых. Бывает, что вы чувствуете что мозг не готов воспринимать так много информации за день, тогда в ход идёт отдых. Расслабьтесь, погуляйте, займитесь спортом, и через денёк вернетесь свежим)
7. Не делать ничего попусту, сформируйте сразу идею вашей карты и постепенно идите к ней.
Любой туториал должен выполнять на вашей карте и дополнять её функционал.
Думайте наперед, сравнивайте, будьте оригинальнее.
4. Видео уроки есть какие-нибудь?
[youtube]https://www.youtube.com/results?search_query=dota+2+%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80+%D1%83%D1%80%D0%BE%D0%BA[/youtube]
[youtube]https://www.youtube.com/watch?v=iycQfogQdlE[/youtube]
[youtube]https://www.youtube.com/watch?v=RIQAvlB1tvg[/youtube]
- его канал
5. Все мы сталкиваемся с тем, что в доте на 1 уровне нужно 200 опыта чтобы перейти на след. уровень.
А как сделать чтобы было 30 например?
Как сделать свою кастомную таблицу опыта?
Код:
XP_PER_LEVEL_TABLE = {
0, -- 1
1000, -- 2
2500, -- 3
4500, -- 4
7000, -- 5
10000, -- 6
13000, -- 7
16000, -- 8
22000, -- 9
27000, -- 10
30000, -- 11
41000, -- 12
45000, -- 13
52000, -- 14
59500, -- 15
67500, -- 16
76000, -- 17
85000, -- 18
94500, -- 19
104500, -- 20
115000, -- 21
126000, -- 22
137500, -- 23
149500, -- 24
162000 -- 25
}
Видали такой файл, называется addon_game_mode.lua?
Можно сразу после функции Precache расположить это.
Есть такая функция, я точно сейчас не помню как называется, примерно так: GameMode:InitGameMode()
Воот сюда втыкаете это:
Код:
GameMode:SetCustomXPRequiredToReachNextLevel( XP_PER_LEVEL_TABLE )
6. Можно ли изменить размер карты?
Размер карты можно назначить самостоятельно, при создании оной в редакторе. Не знаю можно ли изменить это на УЖЕ СОЗДАННОЙ карте. Да и вообще, лучше не ошибаться с размерами и взять немного побольше, поскольку вдруг вы захотите расшириться.
7. Как сделать сразу что-то после выбора героя игроком?
В barebones есть отличное событие, которое уже перехвачено, остается лишь вставить код:
Здесь у меня есть 8 точек, и я хочу чтобы как только игрок выберет героя, то героя телепортировало бы в случайную точку, чтобы они сразу не встретились. Этого требует жанр моей карты:
Код:
function GameMode:OnPlayerPickHero(event)
local hIndex = event.heroindex //заносим индекс героя в локальную переменную
local unit = EntIndexToHScript(hIndex) //по индексу получаем героя в переменную
local i = RandomInt(1,8) //выбираем случайную точку из 8
local wws= "pnt" //строка
local ww = ("pnt"..i) //конкатенируем (соединяем) строки, так как у меня точки называются pnt1, pnt2 и т.п.
local ent = Entities:FindByName( nil, ww ) //ищем случайную точку
local point = ent:GetAbsOrigin() //получаем её координаты
local player = unit:GetPlayerOwnerID() //получаем ID игрока, у которого телепортируемый герой
unit:SetAbsOrigin(point) //телепортируем героя в выбранную случайную точку
FindClearSpaceForUnit(unit, point, false) //это нужно чтобы герой не застрял в земле или на клиффах
unit:Stop() //так как точка далеко, то возможно герой начнет бежать назад, мы приказываем ему остановиться
PlayerResource:SetCameraTarget(player, hero) //камеру игрока центрируем на героя
Timers:CreateTimer(0.1, function()
PlayerResource:SetCameraTarget(player, nil) //отцепляем камеру
return nil
end)
end
8. Как разбить исходный файл со способностями, юнитами, предметами на отдельные txt файлы?
Dota 2 ModKit умеет создавать в папке npc 4 папки для предметов героев, юнитов и абилок. В эти папки можно скидывать .txt файлы с любым названием. При нажатии на кнопку программа прочитает все файлы в папке и соберет из них цельный .txt файл(4 файла для 4х папок). Можно почитать документацию на том же GitHub'e: https://github.com/Myll/Dota-2-ModKit
9. Где взять список косметических предметов на героев из itemlist?
Полный список на 20.07.2015 от CryDeS
: https://gist.github.com/exotickg1/90a9bdde620c8b4ed6e1
Если вручную прописать прекеш каждого героя не загружая при каждой подгрузке гейммода itemlist, все будет работать быстрее, т.к не нужно загружать объемный файл, не нужно его записывать в переменную, и не нужно сортировать.
10. Что такое barebones? (правильно произосится "баребоунз")
Это библиотека, которая существенно облегчает работу новичкам, так как все события уже отловлены и код можно писать мгновенно.
Ещё там можно настраивать различные параметры:
[list type=decimal]
[li]максимального уровня героя[/li]
[li]отключать анноунсеры дота 2 (фб, и анонсы типа "дабл килл"), [/li]
[li]ставить кастомную таблицу опыта, [/li]
[li]убирать с экрана ненужные кнопки (кнопка курьера, глиф, верхнюю панель героев и таймер дня/ночи).[/li]
[/list]
Скачать barebones https://github.com/bmddota/barebones
Начинать следует именно с её подробного изучения, особенно новичкам.
В репозитории, чуть ниже есть мини-гайд по установке barebones, если не знаете английский используйте гугл-транслейт и не стесняйтесь спрашивать здесь, на форуме.
11. Можно ли при изменений скриптов, не загружать карту заново?
Да, если скрипт не входит в игровые константы. То есть если вы изменили стартовое золото или ещё, что обрабатывается исключительно при загрузке карты, то вы можете не выходя из доты, прописать в консоли script_reload, и ваш скрипт обработается заново.
Пример: вы написали скриптовую способность и случайно ошиблись символом. Допустим написали ubit вместо unit. Вы заходите в доту, применяете способность и консоль ругается на эту строку.
Вы исправляете ошибку и пишете script_reload, и не выходя из доты проверяете её.
12. Можно ли как то ускорить процесс компиляции карты?
Естественно. Если вы меняете скрипты, то заново компилировать ничего вам не нужно. Снимаете все галочки в компилере, кроме Bring Engine To The Front и Load Map in Engine. И как только вы нажимаете Build, карта запускается мгновенно.
13. Как выглядит процесс перевода карты на другие языки?
Просто как работа в текстовом файле. На английский переводить карты обязательно, так как бОльшую часть
целевой аудитории доты представляют китайцы и другие народы, которые владеют английским. В китае почти 90% знает английский.
Если вы делаете карту исключительно для друзей, то постарайтесь чтобы и другие зайдя в неё, получили хоть какие-то инструкции, и им было интересно. Вскоре это заинтересует других игроков.
14. Можно ли открыть/взломать карту, которую я скачал в стиме?
Да, конечно. Есть утилита GCFScape, которую легко найти в гугле. Эта программа весом в 500 кб, может открыть любой проект, и вы получите готовые исходники. Также она используется чтобы вытаскивать родные иконки и различные файлы вроде npc_units.txt.
Последнее редактирование модератором: