Как удалить древо талантов? Можно ли частично взаимодействовать с худ панелью?

Алексей1488

Пользователь
2 Авг 2023
17
3
Кто-нибудь знает как убрать ветку талантов? Можно ли вообще взаимодействовать в худ панелью доты частично? Понятно, что можно полностью её скрыть, но слишком тяжко будет всё делать с нуля. Нужно убрать
дерево талантов. Перешерстил всё, проверил всю инфу. За древо талантов отвечает id "StatBranch".Через js попытался к нему подступиться чтобы удалить, но по итогу он не видит этот элемент. Пробовал через css, но тоже взаимодействия нет. Нашел гайд → https://github.com/SinZ163/Twilight...ama/layout/custom_game/custom_ui_manifest.xml , но в xml файлах более нельзя писать js. Я отделил сам js от xml, но вылезает ошибка, что StatBranch не найден. Хотя смотрел через панораму (F6), сама строка такая имеется и она отвечает за ветку талантов.
 
в js скрипте пишешь
JavaScript:
var parentHUDElements = $.GetContextPanel().GetParent().GetParent().GetParent().FindChild("HUDElements");
так ты доберешся до панелей абилок айтемов и т.д.
в редакторе жмешь f6 появляется дебагер В нем нажимешь кнопку посмотреть
1740070031104.png
дальше кликай курсором на место которое тебя интересует
в дебагере у тебя откроется иерархия всего худа в доте
то что тебе нужно будет выделенно
1740070232367.pngпосле как нашел id панели которая тебя интересует просто отключай ее в js коде:
JavaScript:
var StatBranch = parentHUDElements.FindChildTraverse("StatBranch") 
StatBranch.visible = false
тут ты сперва береш дочернюю панель тоесть главное тело талантов
после редактируешь (помимо visible = false ты можешь много чего написать(поищи))
P.s. как подключить js и т.д. ты сам сможешь найти на форуме.
 
Учти если будеш удалять элементы игрового худа(инвентарь слот тп и так далее то у тебя могут быть краши.)
 
  • Нравится
Реакции: Алексей1488
Я так понимаю, ты хочешь удалить стандартные таланты и установить кастомные ?
 
Я так понимаю, ты хочешь удалить стандартные таланты и установить кастомные ?
Да. В целом я почти всё сделал. Осталось кастомную панель перенести чуток, но это позже)

Если вдруг кому-то понадобиться подробная инструкция, то я её напишу здесь.
В файле панарамы custom_ui_manifest.xml.
КОД↓
<root>
<Panel>
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/hud_test.xml" />
</Panel>
</root>
Подключил отдельный файл. По этому пути и сам файл hud_test.xml. В самом файле прописал следующее.
КОД↓

<root>
<scripts>
<include src="file://{resources}/scripts/custom_game/hud_test.js"/>
</scripts>
<Panel>
<Label text="" style="color: white; font-size: 24px;" />
</Panel>
</root>
В самом файле hud_test.js писал следующее.
КОД↓


(function() {
$.Schedule(1.0, ModifyHUD); // Ждёт на всякий

function ModifyHUD() {

var parentHUDElements = $.GetContextPanel().GetParent().GetParent().GetParent().FindChild("HUDElements"); // подключаемся к худу доты

var ManaProgress_Left = parentHUDElements.FindChildTraverse("ManaProgress_Left"); // Изменяем цвет полоски снизу
var ManaProgress_Right = parentHUDElements.FindChildTraverse("ManaProgress_Right"); // Изменяем цвет полоски сверху
var ManaRegenLabel = parentHUDElements.FindChildTraverse("ManaRegenLabel"); // цвет регена

if (ManaProgress_Left) ManaProgress_Left.style.backgroundColor = "rgb(230, 180, 0)"; //прописываем цвета полоски маны
if (ManaProgress_Right) ManaProgress_Right.style.backgroundColor = "rgb(125, 125, 90)"; //прописываем цвета полоски маны
if (ManaRegenLabel) ManaRegenLabel.style.color = "#ffff00"; //меняем цвет регена маны

// Не работает. Позже глянуть.
var abilityItems = parentHUDElements.FindChildTraverse("AbilitiesAndStatBranch").FindChildrenWithClassTraverse("InventoryItem");
abilityItems.forEach(item => {
var manaCost = item.FindChildTraverse("ManaCost");
if (manaCost) manaCost.style.color = "rgb(255, 215, 0)";
});

// Удаление дичи
var elementsToHide = [
"StatBranch", "LevelUpTab", "FacetHolder", "InnateIcon", "Levelup",
"inventory_neutral_madstone_holder", "right_flare", "level_stats_frame",
"inventory_composition_layer_container", "ContentsContainer", "QuickBuySlot8",
"GlyphScanContainer", "RoshanTimerContainer", "Strength", "Agility", "Intelligence"
];

elementsToHide.forEach(id => {
var element = parentHUDElements.FindChildTraverse(id);
if (element) element.visible = false;
});
}
})();

Если нужно удалить только древо талантов и плюсик который появится на 10 уровне для прокачки древа, то прописываем список →
var elementsToHide = [ "StatBranch", "LevelUpTab" ];

Готово! Вот мой результат
1740246803531.png
 
Да. В целом я почти всё сделал. Осталось кастомную панель перенести чуток, но это позже)
Давай может обновим тогда уже существующий гайд, дополним его твоими наработками.
Как тебе идея ?
Также залей рабочий вариант на гит, картиночки добавим
 
Давай может обновим тогда уже существующий гайд, дополним его твоими наработками.
Как тебе идея ?
Также залей рабочий вариант на гит, картиночки добавим
Не особо шарю за гитхаб. В целом весь рабочий код я скинул, если хочешь, то можешь залить сам
 
  • Нравится
Реакции: vulkantsk
Реклама: