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

Дикий Пёс

Друзья CG
28 Июн 2017
411
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
 

Вложения

  • talent_tree.zip
    58.9 KB · Просмотры: 55
Последнее редактирование:

Kpyrep

Пользователь
27 Фев 2019
39
8
Проект
Arena of purification
Круто, но не много разочаровало, думал можно будет сделать для отдельных героев отельные таланты, но тут делаются сразу для всех, а я не настолько профи, чтобы пофиксить это. Если всё же можно как-то для отельных героев сделать, объясните.
 
  • Нравится
Реакции: Sannin

Дикий Пёс

Друзья CG
28 Июн 2017
411
96
Проект
Petri Reborn
Круто, но не много разочаровало, думал можно будет сделать для отдельных героев отельные таланты, но тут делаются сразу для всех, а я не настолько профи, чтобы пофиксить это. Если всё же можно как-то для отельных героев сделать, объясните.
так ты же в самом файле вписываешь имя героя
 

Kpyrep

Пользователь
27 Фев 2019
39
8
Проект
Arena of purification
так ты же в самом файле вписываешь имя героя
Да, я написал помимо "npc_dota_hero_bloodseeker" Ещё снайпера, но пикнув снайпера у него оказалось просто в 2 раза больше талантов, то есть таланты сикера были у снайпера
 

Kpyrep

Пользователь
27 Фев 2019
39
8
Проект
Arena of purification
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"
            }
        }
    }
}
 

Sannin

Пользователь
6 Янв 2019
28
5
Проект
NWHC
Да, я написал помимо "npc_dota_hero_bloodseeker" Ещё снайпера, но пикнув снайпера у него оказалось просто в 2 раза больше талантов, то есть таланты сикера были у снайпера
Такая же проблема, как правильно сделать для разных героев?
 
Реклама: