Re: Datadriven вопросы
Где можно прочитать про AbilitySpecial в способностях, что туда и зачем? Примеры видел, но нужна общая информация т.к. абилки разные.
Это в общем то особый параметр способности.
Мне, например, очень помогает при создании скриптовых способностей, так как скриптом можно оттуда вытащить значение.
Ну вот смотри, например я создал абилку примерно такого типа:
Код:
function holybolt(event)
local unit = event.caster
local target = event.target
local ability = event.ability
local int = ability:GetLevelSpecialValueFor("int", ability:GetLevel()-1) //посмотри и найди строчку "int" в AbilitySpecial)
local dmg = int * unit:GetIntellect() //а тут умножаем интеллект на коэффициент взяты в AbilitySpecial
//всё, мы успешно взяли данные оттуда)
if (unit:GetTeamNumber() == target:GetTeamNumber())
then
target:Heal(dmg, unit)
else ApplyDamage(
{
victim = target,
attacker = unit,
damage = dmg,
damage_type = DAMAGE_TYPE_MAGICAL
})
end
end
Эта способность кастуется как на врага так и на союзника, и в зависимости от этого наносит ему урон или вылечивает.
Дело в том, что лечение и урон на всех уровнях зависят от интеллекта, и на 4 уровне должны составлять 4х от интеллекта кастующего. Тогда идём дальше и разберём Datadriven-составляющую.
Код:
"omni_holylight_datadriven"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
"AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES"
"AbilityTextureName" "omniknight_purification"
// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastRange" "600"
"AbilityCastPoint" "0.5"
// Time
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "11"
// Cost
//-------------------------------------------------------------------------------------------------------------
"AbilityManaCost" "70 80 90 100"
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial" //смотри)) вот и твой абилити спешл
{
"01"
{
"var_type" "FIELD_INTEGER"
"int" "1 2 3 4"
}
}
"precache"
{
"soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts"
"particle" "particles/units/heroes/hero_oracle/oracle_fortune_purge.vpcf"
}
"OnSpellStart"
{
"RunScript"
{
"ScriptFile" "abilities.lua"
"Function" "holybolt"
}
"FireSound"
{
"EffectName" "Hero_Omniknight.GuardianAngel.Cast"
"Target" "CASTER"
}
}
}
Найди строчку Int в AbilitySpecial и посмотри как я взял параметры в самом скрипте)