Урок Кастомные Таланты [Библиотека]

Дикий Пёс

Друзья CG
28 Июн 2017
415
96
Проект
Petri Reborn
эту библиотеку делал не я, меня просто попросили сделать гайд и я её чуток упростил и улучшил

Особенности:

  • Дерево талантов с любым количеством веток, а также уникальными талантами и уровнями прокачки таланта для каждого героя.
  • Талант на самом деле является просто скрытой абилкой, которая выдаётся герою.
  • Если на одном уровне несколько веток то можно прокачать только одну из них.
  • Выдачу поинтов прокачки можно настроить под себя: от выдачи по 10 поинтов за каждый уровень, до выдачи 10.000 поинтов только на 236 уровне.
  • Кнопку сброса прокачанных талантов можно отключить.
  • Таланты можно использовать для изменения способностей, если они сделаны через Lua.
Screenshot_2.pngScreenshot_1.png

Распаковываем папки:
  • game в 'dota 2 beta/game/dota_addons/ИМЯ_АДДОНА'
  • content в 'dota 2 beta/content/dota_addons/ИМЯ_АДДОНА'
В файле 'addon_game_mode.lua' прописываем модуль:
Lua:
require("talent_tree")

В файле 'npc/npc_abilities_custom.txt' прописываем абилки талантов:
KV:
#base "npc_hero_talents.txt"

В файл локализации 'resource/addon_english.txt' добавляем строчки:
Код:
"talent_tree_column_0_title"            "Required Level"
"talent_tree_column_1_title"            "Magical Damage"
"talent_tree_column_2_title"            "Physical Damage"
"talent_tree_current_talent_points"        "Current Points: %POINTS%"
"talent_tree_reset_talents"                "Reset Talents"

В файле 'panorama/layout/custom_game/custom_ui_manifest.xml' прописываем интерфейс дерева:
XML:
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/talent_tree/window.xml" />
Выдача очков и прописывание талантов героям:
Настраиваются в файле 'scripts/kv/hero_talents.txt', примеры там есть.

Прописывание абилок талантов:
В файл 'scripts/npc/npc_hero_talents'

Кнопка:
  • Расположение кнопки можно поменять в 'panorama/layout/custom_game/talent_tree/talent_tree.css', класс #TalentTreeWindowButton
  • Картинки кнопки и свечения вокруг лежат в 'panorama/images/custom_game/ui/talents/icons'
Кнопка сброса талантов:
в файле 'panorama/layout/custom_game/talent_tree/talent_tree.js' в самом верху строчка
JavaScript:
var DISABLE_RESET_TALENTS_BTN = false // true - отключить кнопку

Если с форума не качаеться попробуй туть

UPD: github
 

Вложения

Последнее редактирование:
Круто, но не много разочаровало, думал можно будет сделать для отдельных героев отельные таланты, но тут делаются сразу для всех, а я не настолько профи, чтобы пофиксить это. Если всё же можно как-то для отельных героев сделать, объясните.
 
  • Нравится
Реакции: Sannin
Круто, но не много разочаровало, думал можно будет сделать для отдельных героев отельные таланты, но тут делаются сразу для всех, а я не настолько профи, чтобы пофиксить это. Если всё же можно как-то для отельных героев сделать, объясните.
так ты же в самом файле вписываешь имя героя
 
так ты же в самом файле вписываешь имя героя
Да, я написал помимо "npc_dota_hero_bloodseeker" Ещё снайпера, но пикнув снайпера у него оказалось просто в 2 раза больше талантов, то есть таланты сикера были у снайпера
 
1623233378607.png
C++:
"TalentTree"
{
    "Points" // points for level up
    {
        "min_level" "0"     // min level for giving points
        "max_level" "30"     // max level for giving points
        "amount"    "1"     // points per level
        "special_levels"     // special cases of giving points (still respects min_level and max_level)
        {
            "1"    "2"
        }
    }
    
    // heroes talents
    "npc_dota_hero_bloodseeker"
    {
        "Physical"
        {
            "0"    //level required
            {
                "1"       "talent_lifesteal"
            }
            "5"
            {
                "2"        "talent_bonus_damage"
            }
            "10"
            {
                "3"        "talent_krit"
            }
            "15"
            {
                "4"        "talent_bash"
            }
            "20"
            {
                "5"        "talent_mana_burn"
            }
            "25"
            {
                "6"        "talent_agi"
            }
            "30"
            {
                "7"        "talent_truestrike"
            }
        }
        "Magical"
        {
            "0"    //level required
            {
                "1"   "talent_bonus_manaregen"
            }
            "5"
            {
                "2"        "talent_bonus_spellamp"
            }
            "10"
            {
                "3"        "talent_bonus_cooldown"
            }
            "15"
            {
                "4"        "talent_bonus_manabonus"
            }
            "20"
            {
                "5"        "talent_bonus_casttime"
            }
            "25"
            {
                "6"        "talent_int"
            }
            "30"
            {
                "7"        "obsidian_destroyer_equilibrium"
            }
        }
        "Strength"
        {
            "0"    //level required
            {
                "1"       "talent_bonus_hp_regen"
            }
            "5"
            {
                "2"        "talent_bonus_move_speed"
            }
            "10"
            {
                "3"        "talent_bonus_armor"
            }
            "15"
            {
                "4"        "talent_bonus_magic_res"
            }
            "20"
            {
                "5"        "talent_bonus_hp"
            }
            "25"
            {
                "6"        "talent_str"
            }
            "30"
            {
                "7"        "faceless_void_backtrack"
            }
        }
    }
    "npc_dota_hero_omniknight"
    {
        "Support"
        {
            "0"    //level required
            {
                "1"       "talent_slow_enemy"
            }
            "5"
            {
                "2"        "talent_degree_armour"
            }
            "10"
            {
                "3"        "talent_radiance"
            }
            "15"
            {
                "4"        "bakedanuki_frolic_aura"
            }
            "20"
            {
                "5"        "talent_sacred_earth"
            }
            "25"
            {
                "6"        "dota_talent_reveal_invis"
            }
            "30"
            {
                "7"        "talent_mana_shield"
            }
        }
    }
}
 
Да, я написал помимо "npc_dota_hero_bloodseeker" Ещё снайпера, но пикнув снайпера у него оказалось просто в 2 раза больше талантов, то есть таланты сикера были у снайпера
Такая же проблема, как правильно сделать для разных героев?
 
не отображается это меню в игре, как сделать что бы она работала?
 
Эта тема всё ещё работает? Просто сделал всё по инструкции и консоль выдаёт ошибки за ошибкой
 
  • Нравится
Реакции: zerotwo
Реклама: