Я так понимаю. При выкачке скилла - герой получает скрытый модификатор,который чекает каждые 0.5 секунды взят ли талант или нет? и если взят = накидывает модификатор?Я делал это так (наследуешь от "special_bonus_undefined"):
Тут при вкачке основного таланта, герою дается способность linked_talent. Она уже может быть написана как угодно: на дд, луа, или еще как. Можешь изменить под себя, и давать модификатор вместо способности.Код:function Talents:LinkTalent( hero, talent_name, linked_talent_name ) if hero:HasAbility( talent_name ) then local modifier = hero:AddNewModifier( hero, nil, "modifier_talent_linker", {} ) modifier:StartCheck( hero:FindAbilityByName( talent_name ), linked_talent_name ) end end modifier_talent_linker = class( {} ) function modifier_talent_linker:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_MULTIPLE + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE end function modifier_talent_linker:IsHidden() return true end function modifier_talent_linker:StartCheck( talent, linked_talent_name ) if IsServer() then self.talent = talent self.linked_talent_name = linked_talent_name self:StartIntervalThink( 0.5 ) end end function modifier_talent_linker:OnIntervalThink() if self.talent:IsTrained() then local linked_talent = self:GetParent():AddAbility( self.linked_talent_name ) linked_talent:UpgradeAbility( true ) self:Destroy() end end
Возможно есть способ проще, но тут так-то тоже ничего сложного.
Но вот вопрос. Как он определяет выкачанность таланта? Он вроде всегда даёт модификатор.Я делал это так (наследуешь от "special_bonus_undefined"):
Тут при вкачке основного таланта, герою дается способность linked_talent. Она уже может быть написана как угодно: на дд, луа, или еще как. Можешь изменить под себя, и давать модификатор вместо способности.Код:function Talents:LinkTalent( hero, talent_name, linked_talent_name ) if hero:HasAbility( talent_name ) then local modifier = hero:AddNewModifier( hero, nil, "modifier_talent_linker", {} ) modifier:StartCheck( hero:FindAbilityByName( talent_name ), linked_talent_name ) end end modifier_talent_linker = class( {} ) function modifier_talent_linker:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_MULTIPLE + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE end function modifier_talent_linker:IsHidden() return true end function modifier_talent_linker:StartCheck( talent, linked_talent_name ) if IsServer() then self.talent = talent self.linked_talent_name = linked_talent_name self:StartIntervalThink( 0.5 ) end end function modifier_talent_linker:OnIntervalThink() if self.talent:IsTrained() then local linked_talent = self:GetParent():AddAbility( self.linked_talent_name ) linked_talent:UpgradeAbility( true ) self:Destroy() end end
Возможно есть способ проще, но тут так-то тоже ничего сложного.
Но вот вопрос. Как он определяет выкачанность таланта? Он вроде всегда даёт модификатор.
Ставь каждой команде фонтан.как сделать общий фонтан? у меня 10 команд и надо сделать 1 общий
Создай нейтрального юнита и впиши ему абилку фонтана.как сделать общий фонтан? у меня 10 команд и надо сделать 1 общий
где взять абилку фонтана?Создай нейтрального юнита и впиши ему абилку фонтана.
У меня на карте есть вд - аналог общего фонтана !где взять абилку фонтана?
"fountain_aura"
{
// General
//-------------------------------------------------------------------------------------------------------------
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_PASSIVE"
"BaseClass" "ability_datadriven"
"AbilityTextureName" "witch_doctor_voodoo_restoration"
"OnSpellStart"
{
"ApplyModifier"
{
"ModifierName" "fountain_aura_regen"
"Target" "CASTER"
}
}
"AbilitySpecial"
{
// This Values are mostly for tooltips, the unit stats are not affected
"01"
{
"var_type" "FIELD_INTEGER"
"hp_reg" "6"
}
"02"
{
"var_type" "FIELD_INTEGER"
"mp_reg" "6"
}
}
// Modifiers
//-------------------------------------------------------------------------------------------------------------
"Modifiers"
{
"fountain_aura_regen"
{
"IsHidden" "1"
"Passive" "1"
"Aura_ApplyToCaster" "0"
"Aura" "modifier_fountain_regen"
"Aura_Radius" "600"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL"
"Aura_Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE"
"Aura_ApplyToCaster" "0"
}
"modifier_fountain_regen"
{
"IsBuff" "1"
"Passive" "0"
"IsHidden" "0"
"EffectName" "particles/generic_gameplay/rune_regeneration.vpcf" //"particles/items_fx/healing_flask.vpcf" //"particles/econ/events/ti4/radiant_fountain_regen_ti4.vpcf"
"EffectAttachType" "follow_origin"
"Properties"
{
"MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE" "%hp_reg"
"MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE" "%mp_reg"
}
}
}
}
Но вот вопрос. Как он определяет выкачанность таланта? Он вроде всегда даёт модификатор.
LinkTalent надо делать вручную в начале игры. Модификатор этот будет висеть, пока не вкачаешь талант, которой по сути будет пустышкой. Просто при этом добавиться уже нормальный талант (способность), который можешь сам написать. Либо сразу давать модификатор вместо способности, но лучше все-таки давать способность-пассивку.if self.talent:IsTrained() then
Благодарствую,ты топУ меня на карте есть вд - аналог общего фонтана !
вот абилка
Код:"fountain_aura" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_PASSIVE" "BaseClass" "ability_datadriven" "AbilityTextureName" "witch_doctor_voodoo_restoration" "OnSpellStart" { "ApplyModifier" { "ModifierName" "fountain_aura_regen" "Target" "CASTER" } } "AbilitySpecial" { // This Values are mostly for tooltips, the unit stats are not affected "01" { "var_type" "FIELD_INTEGER" "hp_reg" "6" } "02" { "var_type" "FIELD_INTEGER" "mp_reg" "6" } } // Modifiers //------------------------------------------------------------------------------------------------------------- "Modifiers" { "fountain_aura_regen" { "IsHidden" "1" "Passive" "1" "Aura_ApplyToCaster" "0" "Aura" "modifier_fountain_regen" "Aura_Radius" "600" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "Aura_ApplyToCaster" "0" } "modifier_fountain_regen" { "IsBuff" "1" "Passive" "0" "IsHidden" "0" "EffectName" "particles/generic_gameplay/rune_regeneration.vpcf" //"particles/items_fx/healing_flask.vpcf" //"particles/econ/events/ti4/radiant_fountain_regen_ti4.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE" "%hp_reg" "MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE" "%mp_reg" } } } }
Будешь таких кормить - на шею сядутУ меня на карте есть вд - аналог общего фонтана !
вот абилка
Код:"fountain_aura" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_PASSIVE" "BaseClass" "ability_datadriven" "AbilityTextureName" "witch_doctor_voodoo_restoration" "OnSpellStart" { "ApplyModifier" { "ModifierName" "fountain_aura_regen" "Target" "CASTER" } } "AbilitySpecial" { // This Values are mostly for tooltips, the unit stats are not affected "01" { "var_type" "FIELD_INTEGER" "hp_reg" "6" } "02" { "var_type" "FIELD_INTEGER" "mp_reg" "6" } } // Modifiers //------------------------------------------------------------------------------------------------------------- "Modifiers" { "fountain_aura_regen" { "IsHidden" "1" "Passive" "1" "Aura_ApplyToCaster" "0" "Aura" "modifier_fountain_regen" "Aura_Radius" "600" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "Aura_ApplyToCaster" "0" } "modifier_fountain_regen" { "IsBuff" "1" "Passive" "0" "IsHidden" "0" "EffectName" "particles/generic_gameplay/rune_regeneration.vpcf" //"particles/items_fx/healing_flask.vpcf" //"particles/econ/events/ti4/radiant_fountain_regen_ti4.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE" "%hp_reg" "MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE" "%mp_reg" } } } }
Нет, просто удаляешь дотовский манабар и добавляешь свой, это очень легкоХочу сделать 70к+ маны, не переписывая манабар (для этого вроде вообще всю нижнюю панель надо пересоздавать). Есть идеи, как ето можно сделать?
А как переделать только манабар? Это же вроде кусок спелбара?Нет, просто удаляешь дотовский манабар и добавляешь свой, это очень легко
Весь спелбар - это куча разных панелек. Пройдись по нему панорама дебаггером. Там все можно изменить и удалить и добавить.А как переделать только манабар? Это же вроде кусок спелбара?