В классных кастомках они используют таланты из доты, но ещё делают в скилле проверку на талант если успешна то какой-то параметр круче работаетЕсть ли какой-нибудь шаблон по созданию кастомных талантов??? Понятно что таланты, это обычные скилы, но отличается их структура? Есть ли пример создания своего таланта?
"tiny_talent"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityType" "DOTA_ABILITY_TYPE_ATTRIBUTES"
"OnUpgrade"
{
"RunScript"
{
"ScriptFile" "newabilities/tiny.lua"
"Function" "add"
"old" "tiny_ult"
"new" "tiny_ult2"
}
"RemoveModifier"
{
"Target" "CASTER"
"ModifierName" "modifier_tiny_ult"
}
"LevelUpAbility"
{
"Target" "CASTER"
"AbilityName" "tiny_ult2"
}
"LevelUpAbility"
{
"Target" "CASTER"
"AbilityName" "tiny_ult2"
}
"LevelUpAbility"
{
"Target" "CASTER"
"AbilityName" "tiny_ult2"
}
}
}
"ScriptFile" "newabilities/tiny.lua"В классных кастомках они используют таланты из доты, но ещё делают в скилле проверку на талант если успешна то какой-то параметр круче работает
Но можно делает талант который делает замену абилок
C++:"tiny_talent" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ATTRIBUTES" "OnUpgrade" { "RunScript" { "ScriptFile" "newabilities/tiny.lua" "Function" "add" "old" "tiny_ult" "new" "tiny_ult2" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_tiny_ult" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } } }
"ScriptFile" "newabilities/tiny.lua"
а там что?
function add( keys )
local caster = keys.caster
local old = keys.old
local new = keys.new
caster:RemoveAbility(old)
caster:AddAbility(new)
end
В классных кастомках они используют таланты из доты, но ещё делают в скилле проверку на талант если успешна то какой-то параметр круче работает
Но можно делает талант который делает замену абилок
C++:"tiny_talent" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ATTRIBUTES" "OnUpgrade" { "RunScript" { "ScriptFile" "newabilities/tiny.lua" "Function" "add" "old" "tiny_ult" "new" "tiny_ult2" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_tiny_ult" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tiny_ult2" } } }
"BaseClass" "special_bonus_undefined"
и проверять изучен ли он (онли луа), однако сам талант по факту будет просто тегом. Его нельзя будет расширить как lua или dd способность. В идеале нужно менять само дерево в худе.HasModifier()
.Есть ивентДа харош этим раскидываться, выяснили же уже, что с ability_datadriven дерево в худе не работает нормально.
Нормальной системы для работы с талантами в доте пока нет. Чтобы талант работал в худе, ему нужно ставить"BaseClass" "special_bonus_undefined"
и проверять изучен ли он (онли луа), однако сам талант по факту будет просто тегом. Его нельзя будет расширить как lua или dd способность. В идеале нужно менять само дерево в худе.
Если нужно сделать таланту какой-либо пассивный эффект, могу предложить такой вариант: Накладывай на героев модификатор, который постоянно чекает изученные таланты и накладывает другой модификатор с именем изученного таланта. А еще такой способ позволит делать проверку наличия таланта на клиенте, так как там работаетHasModifier()
.