CustomGames.ru - Dota 2 пользовательские игры

Забавный момент

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн RecoveryIt

  • 72
  • Мощь: 1
Забавный момент
« : 06-06-2016, 13:43:28 »
Делаю абилку для героя, и заметил интересный момент.
Имеется луа код который запускается от события OnSpellStart :
Код
function TrueBloodActivate( keys )
local caster = keys.caster
local ability = keys.ability
ability.bonushealth = 0
local hp_per_def = ability:GetLevelSpecialValueFor("hp_bonus", ability:GetLevel() - 1)
local duration_int = ability:GetLevelSpecialValueFor("duration_perc", ability:GetLevel() - 1)
local bonus_health = hp_per_def * caster.def
local buff_duration = 5 + duration_int * caster.int
ability.bonushealth = bonus_health
ability:ApplyDataDrivenModifier(caster, caster, "modifier_true_blood_buff", {duration=buff_duration})
caster:SetMaxHealth(caster:GetMaxHealth() + ability.bonushealth)
caster:Heal(ability.bonushealth, caster)
end

Так вот, из кода можно понять , что при активации , рассчитывается необходимое количество хитпоинтов для добавления, а также длительность модификатора.
Как видно, хитпоинты я добавляю через SetMaxHealth() , то есть по логике вещей, как только модификатор закончится, хп останется таким каким стало , пока я его не уберу сам, на исходные числа, ибо нету условий, а также события OnDestroy. Но оно становится прежним, как только модификатор исчезает. По идеи в моей способности модификатор пустышка, просто для визуального эффекта. Как это происходит?

Код модификатора:
Код
"modifier_true_blood_buff"
    {
    "Attributes"        "MODIFIER_ATTRIBUTE_NONE"
            "Passive"           "0"   
            "TextureName"       "omniknight_repel"

            "EffectName" "particles/econ/items/sven/sven_warcry_ti5/sven_warcry_buff_ti_5.vpcf"
            "EffectAttachType" "follow_origin"

            "IsDebuff"          "0"
            "IsBuff"            "1"
            "IsHidden"          "0"
            "IsPurgable"        "0"
    }

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Забавный момент
« Ответ #1 : 06-06-2016, 13:49:16 »
Делаю абилку для героя, и заметил интересный момент.
Имеется луа код который запускается от события OnSpellStart :
Код
function TrueBloodActivate( keys )
local caster = keys.caster
local ability = keys.ability
ability.bonushealth = 0
local hp_per_def = ability:GetLevelSpecialValueFor("hp_bonus", ability:GetLevel() - 1)
local duration_int = ability:GetLevelSpecialValueFor("duration_perc", ability:GetLevel() - 1)
local bonus_health = hp_per_def * caster.def
local buff_duration = 5 + duration_int * caster.int
ability.bonushealth = bonus_health
ability:ApplyDataDrivenModifier(caster, caster, "modifier_true_blood_buff", {duration=buff_duration})
caster:SetMaxHealth(caster:GetMaxHealth() + ability.bonushealth)
caster:Heal(ability.bonushealth, caster)
end

Так вот, из кода можно понять , что при активации , рассчитывается необходимое количество хитпоинтов для добавления, а также длительность модификатора.
Как видно, хитпоинты я добавляю через SetMaxHealth() , то есть по логике вещей, как только модификатор закончится, хп останется таким каким стало , пока я его не уберу сам, на исходные числа, ибо нету условий, а также события OnDestroy. Но оно становится прежним, как только модификатор исчезает. По идеи в моей способности модификатор пустышка, просто для визуального эффекта. Как это происходит?

Код модификатора:
Код
"modifier_true_blood_buff"
    {
    "Attributes"        "MODIFIER_ATTRIBUTE_NONE"
            "Passive"           "0"   
            "TextureName"       "omniknight_repel"

            "EffectName" "particles/econ/items/sven/sven_warcry_ti5/sven_warcry_buff_ti_5.vpcf"
            "EffectAttachType" "follow_origin"

            "IsDebuff"          "0"
            "IsBuff"            "1"
            "IsHidden"          "0"
            "IsPurgable"        "0"
    }
Дело в том что SetMaxHealth() не работает так как должен. Он хп добавляет, но при любом действии(смена модификатора, респавн, атака) хп вернется к предыдущему значению. Используй подификацию здоровья через отдельный модификатор со стаками.

Онлайн RecoveryIt

  • 72
  • Мощь: 1
Re: Забавный момент
« Ответ #2 : 06-06-2016, 13:53:51 »
CryDeS,
 Ясненько, я то я уже подумал, дота начала меня понимать, и делать так как мне нужно;D