ability_datadriven
Для полноценного гайда за один присест времени нету, буду добавлять фрагментами.
Часть 1
Статья ориентирована на тех, кто уже делал скилы сам или по предыдущим гайдам (на основе существующих "BaseClass" "ability_name")
Первым делом нужно указать "BaseClass" "ability_datadriven"
Следующее, что нужно сделать - сохранить (добавить в закладки) два ресурса:
[list type=decimal]
[li]http://hex6.se/dota/modifier_functions.txt[/li]
[li]https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Abilities_Data_Driven[/li]
[/list]
По сути это ссылки на одно и то же, но в первой более удобная структура (есть понятные заметки-инструкции), а вторая (вики), в отличии от первой, обновляется. Если не смогли найти что-нибудь в первой - пробуйте на вики.
Просто так начать кодить будет непросто. Вначале можно искать чужие примеры (GitHub, Holdout и т.д.), и переделывать их.
Сам принцип работы с Key Value подразумевает, что вы знаете некоторые value которые можно подставить, или знаете где их взять (если забыли как они пишутся).
Например: одним из первых параметров, которые нужно будет указать, это поведение абилки (англ. behavior) "AbilityBehavior". Так с ходу сложно предположить, что вообще туда можно подставить, но если в первой из ссылок воспользоваться поиском по слову behavior (для chrome Ctrl + F), то можно увидеть, что есть список констант (зарезервированных разработчиками значений).
Для наглядности скрин:
Первую часть пилил в браузере (стим не запускал, уже поздно и мне влом 8)), поэтому в основном сухая теория, во второй планирую показать простую абилку.
Пока буду искать время для второй части советую изучить первую ссылку, особенно верх и низ (в центре куча модифаеров, их можно не задрачивать )
Часть 2
1. Разберем пару свойств (ключей):
[li]"AbilityTextureName" - иконка. Указав "treant_living_armor", получим
[li]"AbilityUnitTargetTeam" фракции (команды), на которых будет действовать заклинание, например: "DOTA_UNIT_TARGET_TEAM_ENEMY" на врагов. [/li]
[li]"AbilityUnitTargetType" типы юнитов, на которых будет действовать заклинание, например: "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" на героев и на крипов[/li]
Код:
Event
{
Action
}
Вот список значений из второй ссылки (Вики)
Events
OnChannelFinish
OnChannelInterrupted
OnChannelSucceeded
OnOwnerDied
OnOwnerSpawned
OnProjectileFinish
OnProjectileHitUnit
OnSpellStart
OnToggleOff
OnToggleOn
OnUpgrade
OnAbilityEndChannel
OnAbilityStart
OnAttack
OnAttackAllied
OnAttackFailed
OnCreated
OnEquip
OnHealReceived
OnHealthGained
OnHeroKilled
OnManaGained
OnOrder
OnProjectileDodge
OnRespawn
OnSpentMana
OnStateChanged
OnTeleported
OnTeleporting
OnUnitMoved
OnChannelInterrupted
OnChannelSucceeded
OnOwnerDied
OnOwnerSpawned
OnProjectileFinish
OnProjectileHitUnit
OnSpellStart
OnToggleOff
OnToggleOn
OnUpgrade
OnAbilityEndChannel
OnAbilityStart
OnAttack
OnAttackAllied
OnAttackFailed
OnCreated
OnEquip
OnHealReceived
OnHealthGained
OnHeroKilled
OnManaGained
OnOrder
OnProjectileDodge
OnRespawn
OnSpentMana
OnStateChanged
OnTeleported
OnTeleporting
OnUnitMoved
Код:
Название
{
"Свойство" "значение"
}
В общем хватит теории делаем простую абилку: будем наносить урон по таргету.
Где-то в файле npc_abilities_custom.txt пишем:
Код:
"DOTAAbilities"
{
"Version" "1"
"my_mega_ability"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
"AbilityTextureName" "viper_viper_strike"
"AbilityCastRange" "1000"
"AbilityCooldown" "1"
"OnSpellStart"
{
"Damage"
{
"Damage" "100"
"Type" "DAMAGE_TYPE_MAGICAL"
"Target" "TARGET"
}
}
}
}
Значения Type" "DAMAGE_TYPE_MAGICAL" можно посмотреть в разделе констант: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Constants
В следующей части добавим анимацию, как вы могли заметить, хп отнимается моментально и не понятно кто нанес урон.
To be continue . . .
Последнее редактирование модератором: