Difference between revisions of "Dota 2 Workshop Tools:ru/Scripting:ru/Abilities Data Driven:ru"

From Valve Developer Community
Jump to: navigation, search
(Полный перевод.)
(Дополнительные примеры)
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{otherlang2
 
{{otherlang2
 
|zh-cn = Dota_2_Workshop_Tools:zh-cn/Scripting:zh-cn/Abilities_Data_Driven:zh-cn
 
|zh-cn = Dota_2_Workshop_Tools:zh-cn/Scripting:zh-cn/Abilities_Data_Driven:zh-cn
 +
|en =Dota 2 Workshop Tools DLC Ability Data Driven / item_datadriven
 
}}
 
}}
 
__TOC__
 
__TOC__
Что такое абилка?
+
=== Что такое предмет? ===
Абилка это как русская матрешка, в которую можно упаковать модификаторы.
+
Предмет - это тоже самое что и способность только с дополнительнымы функциями.
Абилка это всегда одна матрешка, а вот внутри ее может быть много модификаторов матрешек.
 
Модификатор это описание, что и как изменить в игровом мире.У него могут быть разные цели в игровом мире и достаточно большой перечень действий, которыми модификатор изменяет игровой мир и объекты в нем.
 
  
Далее у абилки определяется сценарий ее поведения(пассивка, вкл/выкл, каст и т.п.)- "AbilityBehavior".
+
Предмет это та же способность, только артефакт можно передавать между героями,
Также можно сказать, что абилка это расширенный модификатор, которому позволено держать в себе простые модификаторы.
+
продавать через магазин.
 +
Способности же, не могут переходить от одного объекта к другому.
 +
Сценарии поведения для предметов, состоят из тех же самых, что и в способностях,но дополнительно добавляют  такие настройки как цена, можно ли передавать и т.п.
 +
У артефактов есть все те же события , какие и у абилок.
 +
Еще разница в том, что описание DataDriven для абилок и артефактов разнесено в разные файлы: npc_items_custom.txt (предметы), npc_abilities_custom.txt(способности).
  
Абилка прикрепляется к объекту в игре в явном виде или скрытом. Модификаторы подобны гонцам, которые рассылает абилка другим объектам или самому себе, и когда гонцы доходят до объекта назначения, они на некоторое время становятся абилками этих объектов, внося присланные изменения объекту.
 
  
Многие встроенные абилки созданы в коде игры. У них есть только незначительные метаданные, которые можно изменить и находятся они в файле npc_abilities.txt. Формат файл представляет из себя Дерево Данных с Листьями(ДДЛ) в форме "Название" - "Значение".  
+
=== Что такое способнось? ===
 +
Способность в каторой может быть модификатор .
 +
Способность в которой может содержать множество модификаторов.
 +
Модификатор это эффект который он вам будет давать.
  
Пример фрагмента из файла ДДЛ:
+
Далее у способности определяется тип ее поведения("AbilityBehavior")
 +
 
 +
Многие встроенные способности созданы в коде игры. У них есть только незначительные метаданные, которые можно изменить и находятся они в файле npc_abilities.txt. Формат файл представляет из себя Дерево Данных с Листьями(ДДЛ) в форме "Название" - "Значение".
 +
 
 +
 
 +
Пример фрагмента из файла DataDriven:
 
<source lang="text">
 
<source lang="text">
//Где-то раньше есть корень дерева. Этот пример лишь вырезка из дерева.
 
 
...
 
...
 
"fx_test_ability" //Точка ветвления
 
"fx_test_ability" //Точка ветвления
Line 23: Line 32:
 
     // Основное
 
     // Основное
 
     //-------------------------------------------------------------------------------------------------------------
 
     //-------------------------------------------------------------------------------------------------------------
     "BaseClass"            "ability_datadriven" //Листья в формате "Название" - "Значение"
+
     "BaseClass"            "ability_datadriven" // Стандартный Класс"
     "AbilityBehavior"      "DOTA_ABILITY_BEHAVIOR_PASSIVE" //Листья в формате "Название" - "Значение"
+
     "AbilityBehavior"      "DOTA_ABILITY_BEHAVIOR_PASSIVE" //Поведения"
     "AbilityTextureName"    "axe_battle_hunger" //Листья в формате "Название" - "Значение"
+
     "AbilityTextureName"    "axe_battle_hunger" //Рисунок на способносте розмером 64 х 64"
  
 
     // Модификаторы
 
     // Модификаторы
Line 33: Line 42:
 
Чтобы создавать новые абилки, можно использовать ДДЛ файлы.
 
Чтобы создавать новые абилки, можно использовать ДДЛ файлы.
  
Перейдем сразу к простому примеру, создания абилки с помощью ДДЛ формата.
+
Перейдем сразу к простому примеру, создания абилки с помощью ability_datadriven формата.
== Пример абилки с ипользованием Деревьев Данных с Листьями (ДДЛ) ==
+
== Пример способности с ипользованием Эффектов Частиц ==
Это пример пассивной абилки, которая создает визуальный эффект над головой юнита.
+
Это пример пассивной способности, которая создает визуальный эффект над головой юнита.
  
 
<source lang="text">
 
<source lang="text">
Line 88: Line 97:
  
 
;<code>Modifiers</code>
 
;<code>Modifiers</code>
Ветвь с модификаторами. Вложенные матрешки абилки.
+
Ветвь с модификаторами. Вложенные, функции модификатора каторые будут что-то делать.
  
 
;<code>Passive</code>
 
;<code>Passive</code>
Line 100: Line 109:
  
 
<source lang="text">
 
<source lang="text">
DOTA_ABILITY_BEHAVIOR_HIDDEN              = 1 << 0, //Может принадлежать юниту, но не может кастоваться и не будет показываться в HUD.
+
DOTA_ABILITY_BEHAVIOR_HIDDEN              = 1 << 0, //Может принадлежать юниту, но не может применяться и не будет показываться в HUD.
DOTA_ABILITY_BEHAVIOR_PASSIVE              = 1 << 1, //Не может кастоваться, но отображается в HUD.
+
DOTA_ABILITY_BEHAVIOR_PASSIVE              = 1 << 1, //Не может применяться, но отображается в HUD.
DOTA_ABILITY_BEHAVIOR_NO_TARGET            = 1 << 2, //Для абилки не требуется цель, способность срабатывает, как только будет нажата кнопка.
+
DOTA_ABILITY_BEHAVIOR_NO_TARGET            = 1 << 2, //Для способности не требуется цель, способность срабатывает, как только будет нажата кнопка.
DOTA_ABILITY_BEHAVIOR_UNIT_TARGET          = 1 << 3, //Для каста способности в качестве цели требуется юнит (герой, крип и т.д.).
+
DOTA_ABILITY_BEHAVIOR_UNIT_TARGET          = 1 << 3, //Для применения способности в качестве цели требуется юнит (герой, крип, базовый, дерево и т.д).
DOTA_ABILITY_BEHAVIOR_POINT                = 1 << 4, //Абилка будет использована в месте, где находился курсор.  
+
DOTA_ABILITY_BEHAVIOR_POINT                = 1 << 4, //Способность будет использована в месте, где находился курсор.  
DOTA_ABILITY_BEHAVIOR_AOE                  = 1 << 5, //Механизм применения похож на POINT, но вокруг курсора будет выделена область в которой абилка будет работать.
+
DOTA_ABILITY_BEHAVIOR_AOE                  = 1 << 5, //Механизм применения похож на POINT, но вокруг курсора будет выделена область в которой способность будет работать.
DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE        = 1 << 6, //Абилка видна,доступна,уже изучена (применяется у минера как взрыватель бомб).
+
DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE        = 1 << 6, //Способность видна, доступна, уже изучена (применяется у минера как взрыватель бомб).
DOTA_ABILITY_BEHAVIOR_CHANNELLED          = 1 << 7, //Прерываемая абилка. Если юнит будет оглушен или обезмолвлен - каст прервется.
+
DOTA_ABILITY_BEHAVIOR_CHANNELLED          = 1 << 7, //Прерываемая способность. Если юнит будет оглушен или обезмолвлен каст прервется.
DOTA_ABILITY_BEHAVIOR_ITEM                = 1 << 8, //Абилка связана с артефактом.
+
DOTA_ABILITY_BEHAVIOR_ITEM                = 1 << 8, //Способность связана с предметом.
DOTA_ABILITY_BEHAVIOR_TOGGLE              = 1 << 9, //Абилка можно включать и выключать.
+
DOTA_ABILITY_BEHAVIOR_TOGGLE              = 1 << 9, //Переключаемая способность.
DOTA_ABILITY_BEHAVIOR_DIRECTIONAL          = 1 << 10, //Работает по наравлению взгляда героя.
+
DOTA_ABILITY_BEHAVIOR_DIRECTIONAL          = 1 << 10, //Работает по направлению взгляда героя.
DOTA_ABILITY_BEHAVIOR_IMMEDIATE            = 1 << 11, //Абилка будет использованна немедленно (юнит остановит текущее действие и скастует), игнорируя последовательность действий (действия заданные через шифт)
+
DOTA_ABILITY_BEHAVIOR_IMMEDIATE            = 1 << 11, //Способность будет использована мгновенно (юнит остановит текущее действие и применяет), игнорируя последовательность действий (действия заданные через переменную)
DOTA_ABILITY_BEHAVIOR_AUTOCAST            = 1 << 12, //Абилка имеет автокаст.
+
DOTA_ABILITY_BEHAVIOR_AUTOCAST            = 1 << 12, //Способность имеет авто-применение.
DOTA_ABILITY_BEHAVIOR_NOASSIST            = 1 << 13, //Ability has no reticle assist. Без перевода.
+
DOTA_ABILITY_BEHAVIOR_NOASSIST            = 1 << 13, //Способность не имеет поддержки при прицеле.
DOTA_ABILITY_BEHAVIOR_AURA                = 1 << 14, //Абилка в виде ауры.
+
DOTA_ABILITY_BEHAVIOR_AURA                = 1 << 14, //Способность в виде ауры.
 
DOTA_ABILITY_BEHAVIOR_ATTACK              = 1 << 15, //Работает как обычная атака и не может атаковать неатакуемые цели.
 
DOTA_ABILITY_BEHAVIOR_ATTACK              = 1 << 15, //Работает как обычная атака и не может атаковать неатакуемые цели.
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT = 1 << 16, //После завершения, не продолжает движение кастера. Подходит только для абилок без целей и не немедленных по действию.
+
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT = 1 << 16, //После завершения, не продолжает движение заклинателя. Подходит только для способностей без целей и не немедленных по действию.
DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES        = 1 << 17, //Не может быть использована , когда кастер в корнях.(Ульт Дерева)
+
DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES        = 1 << 17, //Не может быть использована, когда заклинатель в оцепенении.
DOTA_ABILITY_BEHAVIOR_UNRESTRICTED        = 1 << 18, //Абилка может быть использована под салом.
+
DOTA_ABILITY_BEHAVIOR_UNRESTRICTED        = 1 << 18, //Способность может быть использована под обезмовлением.
DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE  = 1 << 19, //АБилка может быть использована, когда кастер под станом, кастует или атакует. Подходит только для абилок с вкл/выкл сценарием.
+
DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE  = 1 << 19, //Способность может быть использована, когда заклинатель под оглушением, применяет или атакует. Подходит только для способностей со сценарием / не сценарием.
DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL      = 1 << 20, //Может использоваться без прерывания прерываемых абилок.
+
DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL      = 1 << 20, //Может использоваться без прерывания прерываемых способностей.
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Не дает некоторым модификаторам закончить своё действие. Используеться на курьере у модификатора ускорение.
+
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Не дает некоторым модификаторам закончить своё действие. Используется на курьере у модификатора ускорение.
DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET    = 1 << 22, //Абилка не агрит внимание крипов когда использована на них.
+
DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET    = 1 << 22, //Крипы не обращают внимание на вас
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK  = 1 << 23, //Абилка не восстанавливает атаку после своего завершения.Подходит только для абилок без целей и не немедленных по действию и для целей типа юнита.
+
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK  = 1 << 23, //Способность не восстанавливает атаку после своего завершения. Подходит только для способностей без целей и не немедленных по действию и для целей типа юнита.
DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN  = 1 << 24, //Абилка работает в точке каста, когда сбита.
+
DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN  = 1 << 24, //Способность работает в точке применении, когда сбита.
DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING    = 1 << 25, //Абилка игнорирует быстрый отказ(типа начал и отказался техника не сработает).
+
DOTA_ABILITY_BEHAVIOR_BACKSWING            = 1 << 25  //Способность применяется только передним ходом
DOTA_ABILITY_BEHAVIOR_RUNE_TARGET          = 1 << 26, //Абилка используется руны в качестве цели в игровом мире.
+
DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING    = 1 << 26, //Способность игнорирует задний ход.
 +
DOTA_ABILITY_BEHAVIOR_RUNE_TARGET          = 1 << 27, //Способности используется на руны в качестве цели в игровом мире.
 
</source>
 
</source>
  
Line 135: Line 145:
 
=== События ===
 
=== События ===
 
<code>
 
<code>
*OnChannelFinish
+
*OnChannelFinish -- Пременение было прекращено / прервано.
*OnChannelInterrupted
+
*OnChannelInterrupted -- Прерываемая была прекращана.
*OnChannelSucceeded
+
*OnChannelSucceeded -- Применение было окончено.
*OnOwnerDied
+
*OnOwnerDied -- Владелец, способности умер.
*OnOwnerSpawned
+
*OnOwnerSpawned -- Владелец, способности возродился .
*OnProjectileFinish
+
*OnProjectileFinish -- Направлена / ненаправленная способность достигла цель.
*OnProjectileHitUnit
+
*OnProjectileHitUnit -- Направлена / ненаправленная способность коснулась юнита.
*OnSpellStart
+
*OnSpellStart -- Способность только-что применяеться.
*OnToggleOff
+
*OnToggleOff -- Выключает переключаемую.
*OnToggleOn
+
*OnToggleOn -- Включает переключаемую.
*OnUpgrade
+
*OnUpgrade -- Способность было улучшена.
 
</code>
 
</code>
  
Line 152: Line 162:
 
*OnAbilityStart
 
*OnAbilityStart
 
*OnAttack
 
*OnAttack
*OnAttackAllied
+
*OnAttackAllied -- Атакован союзный, юнит.
*OnAttackFailed
+
*OnAttackFailed -- Атака была провеленой.
 
*OnCreated
 
*OnCreated
 
*OnEquip
 
*OnEquip
Line 536: Line 546:
 
*MODIFIER_STATE_EVADE_DISABLED
 
*MODIFIER_STATE_EVADE_DISABLED
 
*MODIFIER_STATE_FLYING
 
*MODIFIER_STATE_FLYING
 +
*MODIFIER_STATE_FLYING_FOR_PATHING_PURPOSES_ONLY
 
*MODIFIER_STATE_FROZEN
 
*MODIFIER_STATE_FROZEN
 
*MODIFIER_STATE_HEXED
 
*MODIFIER_STATE_HEXED
Line 575: Line 586:
 
*<code>OnDestroy</code> - Модификатор был уничтожен.
 
*<code>OnDestroy</code> - Модификатор был уничтожен.
 
*<code>OnIntervalThink</code>
 
*<code>OnIntervalThink</code>
*<code>OnKill</code>
+
*<code>OnKill</code> - Юнит, имеющий модификатор, убил кого-то.
 +
*<code>OnHeroKilled</code> - Юнит, имеющий модификатор, убил героя.
 
*<code>OnOrbFire</code>
 
*<code>OnOrbFire</code>
 
*<code>OnOrbImpact</code>
 
*<code>OnOrbImpact</code>
Line 584: Line 596:
  
 
== Дополнительные примеры ==
 
== Дополнительные примеры ==
* [[Dota_2_Workshop_Tools/Scripting/Abilities_Data_Driven_Examples|Data Driven Ability Examples]]
+
* [[Dota_2_Workshop_Tools:ru/Scripting:ru/Abilities_Examples:ru|Примеры способностей]]
 +
 
 +
* [[https://developer.valvesoftware.com/wiki/User:DDSuper| Примеры предметов]]
  
 
== Precaching ==
 
== Precaching ==
Line 597: Line 611:
 
{{shortpagetitle}}
 
{{shortpagetitle}}
 
[[Category:Dota 2 Workshop Tools]]
 
[[Category:Dota 2 Workshop Tools]]
 +
=== Основное в Item DataDriven ===
 +
Предметы, нечем почти не отличаются от способностей.
 +
 +
В Item DataDriven например:
 +
Предмет, можно купить, использовать, передать.
 +
* ItemCost -- Стоимость предмета
 +
* ItemPermament -- Ли будет он расходуемый?
 +
* ItemRecipe -- Название Рецепта. После item обязательно добавить recipe ''item_recipe''
 +
* MaxUpgradeLevel -- Максимальный уровень, вашего предмета
 +
* ItemBaseLevel -- Базовый уровень, вашего предмета
 +
* ItemStackable -- Ли будет предмет складываться (стакаться)
 +
* ItemShareAbility -- ITEM_FULLY_SHAREABLE, ITEM_NOT_SHAREABLE, ITEM_FULLY_SHAREABLE_STACKBLE
 +
* ItemIntialCharges -- Сколько будет стаков при покупке?
 +
* ItemSellable -- Будет возможность, продать предмет?
 +
* ItemKillable -- Будет возможность, убить предмет?
 +
* ItemQuality -- Какая будет, редкость предмета?
 +
* ItemShopTags -- Теги, вашего предметы
 +
* SideShop -- Будет возможность, покупать в боковой лавке?
 +
* SecretShop -- Будет возможность, покупать в секретной лавке
 +
 +
<source lang="text">
 +
"item_stun"
 +
  {
 +
    "BaseClass" "item_datadriven" // В предмете обязательно нужен item_datadriven
 +
    "AbilityTextureName" "item_ghost"
 +
    "Model" "models/props_gameplay/red_box.vmdl" // Обычная модель предмета
 +
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
 +
    "AbilityUnitTargetTeam"    "DOTA_UNIT_TARGET_TEAM_ENEMY"
 +
    "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO"
 +
    "AbilityCooldown" "5"
 +
    "AbilityManaCost" "120"
 +
    "ItemCost" "800"
 +
    "ItemPermanent" "1" // Будет ли расходуемый предмет?
 +
    "OnSpellStart"
 +
    {
 +
      "Stun"
 +
      {
 +
        "Duration" "3"
 +
        "Target" "TARGET"
 +
      }
 +
  }
 +
}
 +
</source>

Latest revision as of 09:27, 14 August 2019

English 简体中文

Что такое предмет?

Предмет - это тоже самое что и способность только с дополнительнымы функциями.

Предмет это та же способность, только артефакт можно передавать между героями, продавать через магазин. Способности же, не могут переходить от одного объекта к другому. Сценарии поведения для предметов, состоят из тех же самых, что и в способностях,но дополнительно добавляют такие настройки как цена, можно ли передавать и т.п. У артефактов есть все те же события , какие и у абилок. Еще разница в том, что описание DataDriven для абилок и артефактов разнесено в разные файлы: npc_items_custom.txt (предметы), npc_abilities_custom.txt(способности).


Что такое способнось?

Способность в каторой может быть модификатор . Способность в которой может содержать множество модификаторов. Модификатор это эффект который он вам будет давать.

Далее у способности определяется тип ее поведения("AbilityBehavior")

Многие встроенные способности созданы в коде игры. У них есть только незначительные метаданные, которые можно изменить и находятся они в файле npc_abilities.txt. Формат файл представляет из себя Дерево Данных с Листьями(ДДЛ) в форме "Название" - "Значение".


Пример фрагмента из файла DataDriven:

...
"fx_test_ability" //Точка ветвления
{
    // Основное
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"             "ability_datadriven" // Стандартный Класс"
    "AbilityBehavior"       "DOTA_ABILITY_BEHAVIOR_PASSIVE" //Поведения"
    "AbilityTextureName"    "axe_battle_hunger" //Рисунок на способносте розмером 64 х 64"

    // Модификаторы
    //-------------------------------------------------------------------------------------------------------------
    "Modifiers" //Точка ветвления

Чтобы создавать новые абилки, можно использовать ДДЛ файлы.

Перейдем сразу к простому примеру, создания абилки с помощью ability_datadriven формата.

Пример способности с ипользованием Эффектов Частиц

Это пример пассивной способности, которая создает визуальный эффект над головой юнита.

"fx_test_ability"
{
    // Основное
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"             "ability_datadriven"
    "AbilityBehavior"       "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "AbilityTextureName"    "axe_battle_hunger"

    // Модификаторы
    //-------------------------------------------------------------------------------------------------------------
    "Modifiers"
    {
        "fx_test_modifier"
        {
            "Passive" "1"
            "OnCreated"
            {
                "AttachEffect" //Действие модификатора
                {
                    "Target" "CASTER"
                    "EffectName" "particles/econ/generic/generic_buff_1/generic_buff_1.vpcf"
                    "EffectAttachType" "follow_overhead"
                    "EffectLifeDurationScale" "1"
                    "EffectColorA" "255 255 0"
                }
            }
        }
    }
}

Названия BaseClass, AbilityBehavior и AbilityTextureName являются общими для всех способностей.

Описание примера

BaseClass

Нужен, чтобы игра, понимала какой код соединить с абилкой. В этом примере мы используем имя ability_datadriven. Также можно использовать другие имена.

AbilityBehavior

Установка сценария поведения абилки. К примеру "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" Пробелы обязательны!

ID
Не используется для вновь создаваемых абилок.
AbilityTextureName
Имя текстуры, которое будет отображаться в HUD.
Modifiers

Ветвь с модификаторами. Вложенные, функции модификатора каторые будут что-то делать.

Passive

Сценарий поведения модификатора. В данном случае пассивный, то есть работающий сразу без каких либо действий.

OnCreated

Событие, OnCreated, возникает, когда абилка запускает модификатор. У данного модификатора в качестве цели в игровом мире указан кастующий эта абилку.

Сценарии поведений

"AbilityBehavior" заполняется одним из представленных имен.

DOTA_ABILITY_BEHAVIOR_HIDDEN               = 1 << 0, //Может принадлежать юниту, но не может применяться и не будет показываться в HUD.
DOTA_ABILITY_BEHAVIOR_PASSIVE              = 1 << 1, //Не может применяться, но отображается в HUD.
DOTA_ABILITY_BEHAVIOR_NO_TARGET            = 1 << 2, //Для способности не требуется цель, способность срабатывает, как только будет нажата кнопка.
DOTA_ABILITY_BEHAVIOR_UNIT_TARGET          = 1 << 3, //Для применения способности в качестве цели требуется юнит (герой, крип, базовый, дерево и т.д).
DOTA_ABILITY_BEHAVIOR_POINT                = 1 << 4, //Способность будет использована в месте, где находился курсор. 
DOTA_ABILITY_BEHAVIOR_AOE                  = 1 << 5, //Механизм применения похож на POINT, но вокруг курсора будет выделена область в которой способность будет работать.
DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE        = 1 << 6, //Способность видна, доступна, уже изучена (применяется у минера как взрыватель бомб).
DOTA_ABILITY_BEHAVIOR_CHANNELLED           = 1 << 7, //Прерываемая способность. Если юнит будет оглушен или обезмолвлен — каст прервется.
DOTA_ABILITY_BEHAVIOR_ITEM                 = 1 << 8, //Способность связана с предметом.
DOTA_ABILITY_BEHAVIOR_TOGGLE               = 1 << 9, //Переключаемая способность.
DOTA_ABILITY_BEHAVIOR_DIRECTIONAL          = 1 << 10, //Работает по направлению взгляда героя.
DOTA_ABILITY_BEHAVIOR_IMMEDIATE            = 1 << 11, //Способность будет использована мгновенно (юнит остановит текущее действие и применяет), игнорируя последовательность действий (действия заданные через переменную)
DOTA_ABILITY_BEHAVIOR_AUTOCAST             = 1 << 12, //Способность имеет авто-применение.
DOTA_ABILITY_BEHAVIOR_NOASSIST             = 1 << 13, //Способность не имеет поддержки при прицеле.
DOTA_ABILITY_BEHAVIOR_AURA                 = 1 << 14, //Способность в виде ауры.
DOTA_ABILITY_BEHAVIOR_ATTACK               = 1 << 15, //Работает как обычная атака и не может атаковать неатакуемые цели.
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT = 1 << 16, //После завершения, не продолжает движение заклинателя. Подходит только для способностей без целей и не немедленных по действию.
DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES        = 1 << 17, //Не может быть использована, когда заклинатель в оцепенении.
DOTA_ABILITY_BEHAVIOR_UNRESTRICTED         = 1 << 18, //Способность может быть использована под обезмовлением.
DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE  = 1 << 19, //Способность может быть использована, когда заклинатель под оглушением, применяет или атакует. Подходит только для способностей со сценарием / не сценарием.
DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL       = 1 << 20, //Может использоваться без прерывания прерываемых способностей.
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Не дает некоторым модификаторам закончить своё действие. Используется на курьере у модификатора ускорение.
DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET    = 1 << 22, //Крипы не обращают внимание на вас
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK   = 1 << 23, //Способность не восстанавливает атаку после своего завершения. Подходит только для способностей без целей и не немедленных по действию и для целей типа юнита.
DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN   = 1 << 24, //Способность работает в точке применении, когда сбита.
DOTA_ABILITY_BEHAVIOR_BACKSWING            = 1 << 25  //Способность применяется только передним ходом
DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING     = 1 << 26, //Способность игнорирует задний ход.
DOTA_ABILITY_BEHAVIOR_RUNE_TARGET          = 1 << 27, //Способности используется на руны в качестве цели в игровом мире.

События и Действия абилок

Абилки благодаря своему сценарию , рождают в игровом мире различные события. Эти события предлагают создателю абилки сделать еще какие либо действия в игровом мире.

События

  • OnChannelFinish -- Пременение было прекращено / прервано.
  • OnChannelInterrupted -- Прерываемая была прекращана.
  • OnChannelSucceeded -- Применение было окончено.
  • OnOwnerDied -- Владелец, способности умер.
  • OnOwnerSpawned -- Владелец, способности возродился .
  • OnProjectileFinish -- Направлена / ненаправленная способность достигла цель.
  • OnProjectileHitUnit -- Направлена / ненаправленная способность коснулась юнита.
  • OnSpellStart -- Способность только-что применяеться.
  • OnToggleOff -- Выключает переключаемую.
  • OnToggleOn -- Включает переключаемую.
  • OnUpgrade -- Способность было улучшена.

New:

  • OnAbilityEndChannel
  • OnAbilityStart
  • OnAttack
  • OnAttackAllied -- Атакован союзный, юнит.
  • OnAttackFailed -- Атака была провеленой.
  • OnCreated
  • OnEquip
  • OnHealReceived
  • OnHealthGained
  • OnHeroKilled
  • OnManaGained
  • OnOrder
  • OnProjectileDodge
  • OnRespawn
  • OnSpentMana
  • OnStateChanged
  • OnTeleported
  • OnTeleporting
  • OnUnitMoved

Действия

Каждое действие содержит один или несколько параметров. Помните, чтобы абилки это как расширенные модификаторы, и поэтому они тоже могут делать действия в игровом мире. Далее дан список действий и их параметров.

  • AddAbility
Target, AbilityName
  • ActOnTargets
Target, Action
  • ApplyModifier
Target, ModifierName
  • AttachEffect
EffectName, EffectAttachType, Target, ControlPoints,
TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale ,EffectColorA, EffectColorB, EffectAlphaScale
  • Blink
Target
  • CleaveAttack
CleavePercent, CleaveRadius
  • CreateThinker
Target, ModifierName
  • Damage
Target, Type, MinDamage/MaxDamage, Damage, CurrentHealthPercentBasedDamage, MaxHealthPercentBasedDamage
  • DelayedAction
Delay, Action
  • DestroyTrees
Target, Radius
  • FireEffect
EffectName, EffectAttachType, Target, ControlPoints
TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale ,EffectColorA, EffectColorB, EffectAlphaScale
  • FireSound
EffectName, Target
  • Heal
HealAmount, Target
  • Knockback
Target, Center, Duration, Distance, Height, IsFixedDistance, ShouldStun
  • LevelUpAbility
Target, AbilityName
  • Lifesteal
Target, LifestealPercent
  • LinearProjectile
Target, EffectName, MoveSpeed, StartRadius, EndRadius, FixedDistance, StartPosition, TargetTeams, TargetTypes, TargetFlags, HasFrontalCone, ProvidesVision, VisionRadius
  • Random
Chance, PseudoRandom, OnSuccess, OnFailure
  • RemoveAbility
Target, AbilityName
  • RemoveModifier
Target, ModifierName
  • RunScript
Target, ScriptFile, Function
  • SpawnUnit
UnitName, UnitCount, UnitLimit, SpawnRadius, Duration, Target, GrantsGold, GrantsXP
  • Stun
Target, Duration
  • TrackingProjectile
Target, EffectName, Dodgeable, ProvidesVision, VisionRadius, MoveSpeed, SourceAttachment


Note:{{{1}}}

Пример

Тут показано, что при работе абилки возникло событие OnSpellStart, тут Spell слово, хотя логичнее слово Ability. Далее определено действие FireSound, которое восроизводит звук в игровом мире. У этого действия есть свои параметры, параметр Target "Цель в игровом мире" и название звука.

"OnSpellStart"      // Событие
{
    "FireSound"     // Действие
    {
        "EffectName"    "SoundEventName"
        "Target"        "CASTER"
    }
}

Значение точечных целей для Target

  • CASTER
  • TARGET
  • POINT
  • ATTACKER
  • UNIT

Многоцелевые значения для Target

Чтобы указать сразу несколько целей в игровом мире для действия, используем следующие значения в Target. Далее перечислены значения, которые описывают область в которой нужно искать цели и каким образом фильтровать цели.

  • Center - Где будет находится центр области(Круга).То есть на кастующем, на цели, на клике, на ракете, на юните, на атакующем.
CASTER, TARGET, POINT, PROJECTILE, UNIT, ATTACKER
  • Radius - длина радиуса в юнитах(ед.изм Hammer редактора)
IntegerValue
  • Teams - Фильтр по команде.

DOTA_UNIT_TARGET_TEAM_BOTH
DOTA_UNIT_TARGET_TEAM_CUSTOM
DOTA_UNIT_TARGET_TEAM_ENEMY
DOTA_UNIT_TARGET_TEAM_FRIENDLY
DOTA_UNIT_TARGET_TEAM_NONE

  • Types, ExcludeTypes - Фильтр по типу объектов в игровом мире.

DOTA_UNIT_TARGET_ALL
DOTA_UNIT_TARGET_BASIC
DOTA_UNIT_TARGET_BUILDING
DOTA_UNIT_TARGET_COURIER
DOTA_UNIT_TARGET_CREEP
DOTA_UNIT_TARGET_CUSTOM
DOTA_UNIT_TARGET_HERO
DOTA_UNIT_TARGET_MECHANICAL
DOTA_UNIT_TARGET_NONE
DOTA_UNIT_TARGET_OTHER
DOTA_UNIT_TARGET_TREE

  • Flags, ExcludeFlags - Фильтр по флагам, которые установлены у объектов игрового мира.

DOTA_UNIT_TARGET_FLAG_CHECK_DISABLE_HELP
DOTA_UNIT_TARGET_FLAG_DEAD
DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE
DOTA_UNIT_TARGET_FLAG_INVULNERABLE
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES
DOTA_UNIT_TARGET_FLAG_MANA_ONLY
DOTA_UNIT_TARGET_FLAG_MELEE_ONLY
DOTA_UNIT_TARGET_FLAG_NO_INVIS
DOTA_UNIT_TARGET_FLAG_NONE
DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS
DOTA_UNIT_TARGET_FLAG_NOT_ATTACK_IMMUNE
DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO
DOTA_UNIT_TARGET_FLAG_NOT_DOMINATED
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS
DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES
DOTA_UNIT_TARGET_FLAG_NOT_NIGHTMARED
DOTA_UNIT_TARGET_FLAG_NOT_SUMMONED
DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD
DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED
DOTA_UNIT_TARGET_FLAG_RANGED_ONLY

  • MaxTargets -Максимум найденных целей в области.
IntegerValue
  • Random - Добавить ли еще один рандомный объект из игрового мира сверх максимума.
BooleanValue
  • ScriptSelectPoints - Поиск в области делается через LUA скрипт.
ScriptFile, Function, Radius, Count

Модификаторы

Перечень "Название"-"Значение" для модификаторов:

  • Attributes
MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE
MODIFIER_ATTRIBUTE_MULTIPLE
MODIFIER_ATTRIBUTE_NONE
MODIFIER_ATTRIBUTE_PERMANENT
  • Duration
FloatValue
  • EffectAttachType
follow_origin, follow_overhead, start_at_customorigin, world_origin
  • EffectName
StringValue
  • IsBuff
BooleanValue
  • IsDebuff
BooleanValue
  • IsHidden
BooleanValue
  • IsPurgable
BooleanValue
  • OverrideAnimation
ACT_DOTA_ATTACK
ACT_DOTA_CAST_ABILITY_1 (2, 3, 4, 5, 6)
ACT_DOTA_DISABLED
ACT_DOTA_RUN
ACT_DOTA_SPAWN
ACT_DOTA_TELEPORT
ACT_DOTA_VICTORY

Дан не полный список действий, которые может выполнять модификатор. Остальные смотрим тут the action list.

Ниже уже дополнительные метаданные из "Название"-"Значение":

  • Passive
BooleanValue
  • TextureName
StringValue
  • ThinkInterval
FloatValue

Свойства игровых объектов мира доступных модификаторам

Свойства игровых объектов мира это почти, все что можно изменить у игрового объекта(в основном это влияет на баланс игры). Использованный здесь пример замедляет скорость атаки и передвижения(этот фрагмент является частью блока "Modifiers" в дереве абилки) .

Чтобы задать числовые значения , вы можете написать число или использовать формат %name чтобы использовать значения из блока "AbilitySpecial" вашей абилки. Преимущество использования %name в том, что значения могут меняться при повышении уровня абилки, а также эти данные можно использовать при создании описания абилки.

В данном примере, длительность замедления зависит от значения в блоке "AbilitySpecial" , а сила замедления просто цифры.

"creature_slithereen_crush_slow"
{
    "Duration"      "%slow_duration"
    "Properties"
    {
        "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"      "-20"
        "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"      "-20"
    }
}

Доступные Свойства игровых объектов мира для модификаторов

  • MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL
  • MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL
  • MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE
  • MODIFIER_PROPERTY_ABSORB_SPELL
  • MODIFIER_PROPERTY_ATTACK_RANGE_BONUS
  • MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT
  • MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_POWER_TREADS
  • MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_SECONDARY
  • MODIFIER_PROPERTY_AVOID_CONSTANT
  • MODIFIER_PROPERTY_AVOID_SPELL
  • MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE
  • MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT
  • MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE
  • MODIFIER_PROPERTY_BASE_MANA_REGEN
  • MODIFIER_PROPERTY_BONUS_DAY_VISION
  • MODIFIER_PROPERTY_BONUS_NIGHT_VISION
  • MODIFIER_PROPERTY_BONUS_VISION_PERCENTAGE
  • MODIFIER_PROPERTY_CHANGE_ABILITY_VALUE
  • MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT
  • MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE
  • MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION
  • MODIFIER_PROPERTY_DEATHGOLDCOST
  • MODIFIER_PROPERTY_DISABLE_AUTOATTACK
  • MODIFIER_PROPERTY_DISABLE_HEALING
  • MODIFIER_PROPERTY_DISABLE_TURNING
  • MODIFIER_PROPERTY_EVASION_CONSTANT
  • MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS
  • MODIFIER_PROPERTY_EXTRA_MANA_BONUS
  • MODIFIER_PROPERTY_EXTRA_STRENGTH_BONUS
  • MODIFIER_PROPERTY_FORCE_DRAW_MINIMAP
  • MODIFIER_PROPERTY_HEALTH_BONUS
  • MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT
  • MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE
  • MODIFIER_PROPERTY_IGNORE_CAST_ANGLE
  • MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE
  • MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_PERCENTAGE
  • MODIFIER_PROPERTY_INCOMING_SPELL_DAMAGE_CONSTANT
  • MODIFIER_PROPERTY_INVISIBILITY_LEVEL
  • MODIFIER_PROPERTY_IS_ILLUSION
  • MODIFIER_PROPERTY_IS_SCEPTER
  • MODIFIER_PROPERTY_LIFETIME_FRACTION
  • MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS
  • MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE
  • MODIFIER_PROPERTY_MAGICAL_RESISTANCE_ITEM_UNIQUE
  • MODIFIER_PROPERTY_MANA_BONUS
  • MODIFIER_PROPERTY_MANA_REGEN_CONSTANT
  • MODIFIER_PROPERTY_MANA_REGEN_CONSTANT_UNIQUE
  • MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE
  • MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE
  • MODIFIER_PROPERTY_MIN_HEALTH
  • MODIFIER_PROPERTY_MISS_PERCENTAGE
  • MODIFIER_PROPERTY_MODEL_CHANGE
  • MODIFIER_PROPERTY_MODEL_SCALE // не работает
  • MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE
  • MODIFIER_PROPERTY_MOVESPEED_BASE_OVERRIDE
  • MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT
  • MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE
  • MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE
  • MODIFIER_PROPERTY_MOVESPEED_BONUS_UNIQUE
  • MODIFIER_PROPERTY_MOVESPEED_LIMIT // не работает
  • MODIFIER_PROPERTY_MOVESPEED_MAX // не работает
  • MODIFIER_PROPERTY_OVERRIDE_ANIMATION
  • MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE
  • MODIFIER_PROPERTY_OVERRIDE_ANIMATION_WEIGHT
  • MODIFIER_PROPERTY_OVERRIDE_ATTACK_MAGICAL
  • MODIFIER_PROPERTY_PERSISTENT_INVISIBILITY
  • MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS
  • MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_ILLUSIONS
  • MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE
  • MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE_ACTIVE
  • MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK
  • MODIFIER_PROPERTY_POST_ATTACK
  • MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE
  • MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE_POST_CRIT
  • MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE
  • MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_COMPOSITE
  • MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL
  • MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PHYSICAL
  • MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PURE
  • MODIFIER_PROPERTY_PROCATTACK_FEEDBACK
  • MODIFIER_PROPERTY_PROVIDES_FOW_POSITION
  • MODIFIER_PROPERTY_REINCARNATION
  • MODIFIER_PROPERTY_RESPAWNTIME
  • MODIFIER_PROPERTY_RESPAWNTIME_PERCENTAGE
  • MODIFIER_PROPERTY_RESPAWNTIME_STACKING
  • MODIFIER_PROPERTY_STATS_AGILITY_BONUS
  • MODIFIER_PROPERTY_STATS_INTELLECT_BONUS
  • MODIFIER_PROPERTY_STATS_STRENGTH_BONUS
  • MODIFIER_PROPERTY_TOOLTIP
  • MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK
  • MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK_UNAVOIDABLE_PRE_ARMOR
  • MODIFIER_PROPERTY_TOTALDAMAGEOUTGOING_PERCENTAGE // не работает
  • MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS
  • MODIFIER_PROPERTY_TRANSLATE_ATTACK_SOUND
  • MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE

Статусы у свойств игровых объектов мира

Некоторые свойства такие как стан, регулируются не цифрами, а статусной строкой. Состояние может иметь значение - "MODIFIER_STATE_VALUE_NO_ACTION", "MODIFIER_STATE_VALUE_ENABLED" или "MODIFIER_STATE_VALUE_DISABLED". Данный пример модификатора добавляет эффект оглушения, изменяет анимацию юнита и изменяет свойство юнита "Под станом" в состояние "Включено":

"creature_bash_ministun"
{
    "Duration"              "%duration"
    "EffectName"            "generic_stunned"
    "EffectAttachType"      "follow_overhead"
    "Duration"              "%stun_duration"
    "OverrideAnimation"     "ACT_DOTA_DISABLED"
    "States"
    {
        "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED"
    }         
}

Перечень статусов у свойвств игровых объектов мира

  • MODIFIER_STATE_ATTACK_IMMUNE
  • MODIFIER_STATE_BLIND
  • MODIFIER_STATE_BLOCK_DISABLED
  • MODIFIER_STATE_CANNOT_MISS
  • MODIFIER_STATE_COMMAND_RESTRICTED
  • MODIFIER_STATE_DISARMED
  • MODIFIER_STATE_DOMINATED
  • MODIFIER_STATE_EVADE_DISABLED
  • MODIFIER_STATE_FLYING
  • MODIFIER_STATE_FLYING_FOR_PATHING_PURPOSES_ONLY
  • MODIFIER_STATE_FROZEN
  • MODIFIER_STATE_HEXED
  • MODIFIER_STATE_INVISIBLE
  • MODIFIER_STATE_INVULNERABLE
  • MODIFIER_STATE_LOW_ATTACK_PRIORITY
  • MODIFIER_STATE_MAGIC_IMMUNE
  • MODIFIER_STATE_MUTED
  • MODIFIER_STATE_NIGHTMARED
  • MODIFIER_STATE_NO_HEALTH_BAR
  • MODIFIER_STATE_NO_TEAM_MOVE_TO
  • MODIFIER_STATE_NO_TEAM_SELECT
  • MODIFIER_STATE_NOT_ON_MINIMAP
  • MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES
  • MODIFIER_STATE_NO_UNIT_COLLISION
  • MODIFIER_STATE_OUT_OF_GAME
  • MODIFIER_STATE_PASSIVES_DISABLED
  • MODIFIER_STATE_PROVIDES_VISION
  • MODIFIER_STATE_ROOTED
  • MODIFIER_STATE_SILENCED
  • MODIFIER_STATE_SOFT_DISARMED
  • MODIFIER_STATE_SPECIALLY_DENIABLE
  • MODIFIER_STATE_STUNNED
  • MODIFIER_STATE_UNSELECTABLE

События которые вызывает сам модификатор

Модификатор может создавать события в зависимости от того, в каком состоянии он находится или в каком состоянии находится цель к которой он применен. Мы можем в ответ на это событие сделать еще что либо, то есть по сути модификатор в модификаторе.

  • OnAbilityExecuted
  • OnAttacked - Юнит, имеющий модификатор, был атакован.
  • OnAttackLanded - Юнит, имеющий модификатор, ударил цель.
  • OnAttackStart - Юнит, имеющий модификатор, начал атаковать цель (момент начала анимации атаки).
  • OnCreated - Модификатор был создан.
  • OnDealDamage - Юнит, имеющий модификатор, нанёс урон.
  • OnDeath
  • OnDestroy - Модификатор был уничтожен.
  • OnIntervalThink
  • OnKill - Юнит, имеющий модификатор, убил кого-то.
  • OnHeroKilled - Юнит, имеющий модификатор, убил героя.
  • OnOrbFire
  • OnOrbImpact
  • OnTakeDamage - Юнит, имеющий модификатор, получил урон (любой урон).
  • Orb

Полный список событий модификатора modifier events. Не все события доступны для ДДЛ формата или для LUA скриптов.

Дополнительные примеры

Precaching

При создании data-driven абилок блок "precache" не обязателен. Это используется только для тех data-driven абилок, у которых BaseClass установлено значение ability_datadriven .

Примечания
  • Визуальные эффекты требуют полный путь с именем файла включая расширение файла. Например:
particles/econ/generic/generic_buff_1/generic_buff_1.vpcf - "_c" не требуется.
  • Звуковые эффекты требуют только название звукового события.

Основное в Item DataDriven

Предметы, нечем почти не отличаются от способностей.

В Item DataDriven например: Предмет, можно купить, использовать, передать.

  • ItemCost -- Стоимость предмета
  • ItemPermament -- Ли будет он расходуемый?
  • ItemRecipe -- Название Рецепта. После item обязательно добавить recipe item_recipe
  • MaxUpgradeLevel -- Максимальный уровень, вашего предмета
  • ItemBaseLevel -- Базовый уровень, вашего предмета
  • ItemStackable -- Ли будет предмет складываться (стакаться)
  • ItemShareAbility -- ITEM_FULLY_SHAREABLE, ITEM_NOT_SHAREABLE, ITEM_FULLY_SHAREABLE_STACKBLE
  • ItemIntialCharges -- Сколько будет стаков при покупке?
  • ItemSellable -- Будет возможность, продать предмет?
  • ItemKillable -- Будет возможность, убить предмет?
  • ItemQuality -- Какая будет, редкость предмета?
  • ItemShopTags -- Теги, вашего предметы
  • SideShop -- Будет возможность, покупать в боковой лавке?
  • SecretShop -- Будет возможность, покупать в секретной лавке
 "item_stun"
  {
    "BaseClass" "item_datadriven" // В предмете обязательно нужен item_datadriven
    "AbilityTextureName" "item_ghost"
    "Model" "models/props_gameplay/red_box.vmdl" // Обычная модель предмета
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
    "AbilityUnitTargetTeam"    "DOTA_UNIT_TARGET_TEAM_ENEMY"
    "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO"
    "AbilityCooldown" "5"
    "AbilityManaCost" "120"
    "ItemCost" "800"
    "ItemPermanent" "1" // Будет ли расходуемый предмет?
    "OnSpellStart"
    {
      "Stun"
      {
         "Duration" "3"
         "Target" "TARGET"
      }
   }
}