Иконки героев на миникарте

Сандаль

Новичок
15 Окт 2021
7
0
Вопрос, который до меня задавали сотни людей, и никому не было дано нормального ответа:
Untitled.jpg
Как кастомному герою указать иконку на миникарте?
Начал изучать моддинг, сделал себе первого собственного героя, наследника hero_base. В игре для него не отображаются никакие изображения (в чате, в логе событий, на миникарте), что вполне ожидаемо, моя задача предоставить игре эти иконки.

Как скомпилировать изображение в vtex_c используя панораму знаю. Методом декомпиляции чужих модов установил что если положить компилированную текстуру с системным именем героя (например npc_dota_hero_example.png.vtex_c) в game/.../panorama/images/heroes то она будет использоваться как иконка в чате, а в game/.../panorama/images/heroes/selection будет использоваться для тех элементов UI, которые требуют landscape версию (выбор персонажа, таблица счёта).

А вот иконка на миникарте никак не работает. В чужих модах иконки миникарты вроде лежат в game/.../panorama/images/heroes/icons, но у меня они с тем же подходом не подтягиваются. И в консоли ничего про эти файлы или их отсутствие не пишется, что за чёрную магию нужно применять для них?
 

Niker323

Пользователь
25 Сен 2018
61
53
Проект
Element Arena
В npc_units_custom.txt
Код:
"MinimapIcon"               "minimap_heroicon_npc_dota_hero_axe"
"MinimapIconSize"           "500"
Как создавать кастомные "minimap_heroicon_*" я не знаю
 

.фи

Активный
21 Мар 2018
117
16
Скорее всего CSS:
Я в исходниках Аганима копался, там кастомный готовили...
Рабочий, однако до релиза он не дожил.
Но как мы поняли - тебе нужен стандартный минимап, — нужно ковырять исходники доты.
1634503492672.png
 

Сандаль

Новичок
15 Окт 2021
7
0
Апдейт:
Как выяснилось панорама используется не для всего UI, миникарта и полоски здоровья над героями всё ещё рисуются "в движке", с тех давних времён, когда первая обезьяна валв захардкодила эти графические элементы.

По совету моддеров клиента доты (которые не кастомки пилят, а меняют внешний вид самой игры) полез в vpk игры, нарыл там materials/vgui/hud/minimap_hero_sheet.vtex_c, где лежат иконки героев. Если в кастомке создать свою текстуру с таким же адресом и именем, и сослаться на неё в addon_hud_textures с волшебным названием текстуры "minimap_heroicon_npc_dota_hero_что-то-там", пример которого можно подсмотреть в файле mod_textures игры, движок начнёт использовать эту текстуру в некоторых случаях для кастомного героя. Таким образом я внезапно смог заставить иконку героя отображаться слева от здоровья (раньше там было пустое место), с миникартой пока всё равно успеха нет.

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

Сандаль

Новичок
15 Окт 2021
7
0
Апдейт 2:
Вопрос частично решен. Проблема крылась в том что я проверял всё это дело с базовыми классами моего кастомного героя "npc_dota_hero_base" и "npc_dota_hero". Не знаю что именно с ними не так, но если указать базой любого реального героя, иконка подгружается на миникарту корректно даже без трюка в посте выше. Но чтобы она отображалась рядом с полосой здоровья всё-таки нужен этот трюк.

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