Difference between revisions of "Dota 2 Workshop Tools:zh-cn/Scripting:zh-cn/Abilities Data Driven:zh-cn"

From Valve Developer Community
Jump to: navigation, search
Line 203: Line 203:
 
|-
 
|-
 
| 闪烁
 
| 闪烁
| 目的地
+
| 目标
 
|-
 
|-
 
|  
 
|  
Line 588: Line 588:
 
| MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE, MODIFIER_ATTRIBUTE_MULTIPLE, MODIFIER_ATTRIBUTE_NONE, MODIFIER_ATTRIBUTE_PERMANENT
 
| MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE, MODIFIER_ATTRIBUTE_MULTIPLE, MODIFIER_ATTRIBUTE_NONE, MODIFIER_ATTRIBUTE_PERMANENT
 
|-
 
|-
 +
| 属性
 
| *暂无说明*
 
| *暂无说明*
|
 
 
|-
 
|-
 
|  
 
|  
Line 596: Line 596:
 
| FloatValue
 
| FloatValue
 
|-
 
|-
| *暂无说明*
+
| 持续时间
|  
+
| 浮点值
 
|-
 
|-
 
|  
 
|  
Line 604: Line 604:
 
| follow_overhead, follow_origin, start_at_customorigin, world_origin
 
| follow_overhead, follow_origin, start_at_customorigin, world_origin
 
|-
 
|-
| *暂无说明*
+
| 特效附着点类型
|  
+
| 头上,原点,自定义原点,世界原点
 
|-
 
|-
 
|  
 
|  
Line 612: Line 612:
 
| StringValue
 
| StringValue
 
|-
 
|-
| *暂无说明*
+
| 特效名称
|  
+
| 字符串(路径+特效名)
 
|-
 
|-
 
|  
 
|  
Line 620: Line 620:
 
| BooleanValue
 
| BooleanValue
 
|-
 
|-
| *暂无说明*
+
| 是否增益魔法
|  
+
| 布尔值(1为增益魔法)
 
|-
 
|-
 
|  
 
|  
Line 628: Line 628:
 
| BooleanValue
 
| BooleanValue
 
|-
 
|-
| *暂无说明*
+
| 是否减益魔法
|  
+
| 布尔值(1为减益魔法)
 
|-
 
|-
 
|  
 
|  
Line 636: Line 636:
 
| BooleanValue
 
| BooleanValue
 
|-
 
|-
| *暂无说明*
+
| 是否隐藏
|  
+
| 布尔值(1为隐藏)
 
|-
 
|-
 
|  
 
|  
Line 652: Line 652:
 
| ACT_DOTA_ATTACK, ACT_DOTA_CAST_ABILITY_1 (2, 3, 4, 5, 6), ACT_DOTA_DISABLED, ACT_DOTA_SPAWN, ACT_DOTA_TELEPORT, ACT_DOTA_VICTORY
 
| ACT_DOTA_ATTACK, ACT_DOTA_CAST_ABILITY_1 (2, 3, 4, 5, 6), ACT_DOTA_DISABLED, ACT_DOTA_SPAWN, ACT_DOTA_TELEPORT, ACT_DOTA_VICTORY
 
|-
 
|-
| *暂无说明*
+
| 覆盖模型动作
|  
+
| 攻击动作,技能释放动作(1~6),受伤,出生,回程,胜利
 
|-
 
|-
 
|  
 
|  
Line 660: Line 660:
 
| BooleanValue
 
| BooleanValue
 
|-
 
|-
| *暂无说明*
+
| 被动
|  
+
| 布尔值
 
|-
 
|-
 
|  
 
|  
Line 668: Line 668:
 
| FloatValue
 
| FloatValue
 
|-
 
|-
| *暂无说明*
+
| Think间隔
|  
+
| 浮点值
 
|-
 
|-
 
|  
 
|  
Line 698: Line 698:
 
|-
 
|-
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL
| *暂无说明*
+
| 所有魔法攻击无效
 
|-
 
|-
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL
| *暂无说明*
+
| 所有物理攻击无效
 
|-
 
|-
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE
 
| MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE
| *暂无说明*
+
| 所有神圣伤害无效
 
|-
 
|-
 
| MODIFIER_PROPERTY_ABSORB_SPELL
 
| MODIFIER_PROPERTY_ABSORB_SPELL
| *暂无说明*
+
| 偷取法术?
 
|-
 
|-
 
| MODIFIER_PROPERTY_ATTACK_RANGE_BONUS
 
| MODIFIER_PROPERTY_ATTACK_RANGE_BONUS
| *暂无说明*
+
| 修改攻击范围
 
|-
 
|-
 
| MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT
 
| MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT
| *暂无说明*
+
| 攻击速度获得增加
 
|-
 
|-
 
| MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_POWER_TREADS
 
| MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_POWER_TREADS
Line 722: Line 722:
 
|-
 
|-
 
| MODIFIER_PROPERTY_AVOID_CONSTANT
 
| MODIFIER_PROPERTY_AVOID_CONSTANT
| *暂无说明*
+
| 虚空假面的闪避?
 
|-
 
|-
 
| MODIFIER_PROPERTY_AVOID_SPELL
 
| MODIFIER_PROPERTY_AVOID_SPELL
| *暂无说明*
+
| 虚空假面的法术闪避?
 
|-
 
|-
 
| MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE
 
| MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE
| *暂无说明*
+
| 修改基础攻击力
 
|-
 
|-
 
| MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT
 
| MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT
| *暂无说明*
+
| 设定基础攻击间隔
 
|-
 
|-
 
| MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE
 
| MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE
| *暂无说明*
+
| 修改基础攻击伤害
 
|-
 
|-
 
| MODIFIER_PROPERTY_BASE_MANA_REGEN
 
| MODIFIER_PROPERTY_BASE_MANA_REGEN
| *暂无说明*
+
| 修改基础魔法回复数值,对百分比回魔有影响
 
|-
 
|-
 
| MODIFIER_PROPERTY_BONUS_DAY_VISION
 
| MODIFIER_PROPERTY_BONUS_DAY_VISION
| *暂无说明*
+
| 修改白天的视野距离
 
|-
 
|-
 
| MODIFIER_PROPERTY_BONUS_NIGHT_VISION
 
| MODIFIER_PROPERTY_BONUS_NIGHT_VISION
| *暂无说明*
+
| 修改夜间的视野距离
 
|-
 
|-
 
| MODIFIER_PROPERTY_BONUS_VISION_PERCENTAGE
 
| MODIFIER_PROPERTY_BONUS_VISION_PERCENTAGE
| *暂无说明*
+
| 按百分比修改视野距离
 
|-
 
|-
 
| MODIFIER_PROPERTY_CHANGE_ABILITY_VALUE
 
| MODIFIER_PROPERTY_CHANGE_ABILITY_VALUE
| *暂无说明*
+
| 改变技能数值
 
|-
 
|-
 
| MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT
 
| MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT
| *暂无说明*
+
| 减少冷却时间
 
|-
 
|-
 
| MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE
 
| MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE
| *暂无说明*
+
| 降低攻击力比例
 
|-
 
|-
 
| MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION
 
| MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION
| *暂无说明*
+
| 降低幻象攻击力比例
 
|-
 
|-
 
| MODIFIER_PROPERTY_DEATHGOLDCOST
 
| MODIFIER_PROPERTY_DEATHGOLDCOST
| *暂无说明*
+
| 修改死亡损失的金钱
 
|-
 
|-
 
| MODIFIER_PROPERTY_DISABLE_AUTOATTACK
 
| MODIFIER_PROPERTY_DISABLE_AUTOATTACK
| *暂无说明*
+
| 缴械,无法物理攻击
 
|-
 
|-
 
| MODIFIER_PROPERTY_DISABLE_HEALING
 
| MODIFIER_PROPERTY_DISABLE_HEALING
| *暂无说明*
+
| 禁止生命回复
 
|-
 
|-
 
| MODIFIER_PROPERTY_DISABLE_TURNING
 
| MODIFIER_PROPERTY_DISABLE_TURNING
| *暂无说明*
+
| 禁止转身
 
|-
 
|-
 
| MODIFIER_PROPERTY_EVASION_CONSTANT
 
| MODIFIER_PROPERTY_EVASION_CONSTANT
| *暂无说明*
+
| 闪避
 
|-
 
|-
 
| MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS
 
| MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS
| *暂无说明*
+
| 额外生命值加成
 
|-
 
|-
 
| MODIFIER_PROPERTY_EXTRA_MANA_BONUS
 
| MODIFIER_PROPERTY_EXTRA_MANA_BONUS
| *暂无说明*
+
| 额外魔法值加成
 
|-
 
|-
 
| MODIFIER_PROPERTY_EXTRA_STRENGTH_BONUS
 
| MODIFIER_PROPERTY_EXTRA_STRENGTH_BONUS
| *暂无说明*
+
| 额外力量加成
 
|-
 
|-
 
| MODIFIER_PROPERTY_FORCE_DRAW_MINIMAP
 
| MODIFIER_PROPERTY_FORCE_DRAW_MINIMAP
Line 866: Line 866:
 
|-
 
|-
 
| MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE
 
| MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE
| *暂无说明*
+
| 百分比增加移动速度
 
|-
 
|-
 
| MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE
 
| MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE

Revision as of 14:01, 23 August 2014

English

几乎所有在DOTA2中的技能都是使用C++来编写的,当查看所有这些技能的时候,npc_abilities.txt包含了一些技能元数据的KV(Key-Values)文件,暴露出了一些技能的键值,这里包含了几乎所有的元数据,使用数据驱动类技能系统能够为DOTA2创造一些自定义技能,能够为他们赋予特殊的数值和特定的触发事件。

一个简单的例子

这是一个非常简单的技能,他是一个被动技能,给单位添加了一个粒子特效。

"fx_test_ability"
{
    // General
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"             "ability_datadriven"
    "AbilityBehavior"       "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "AbilityTextureName"    "axe_battle_hunger"

    // Modifiers
    //-------------------------------------------------------------------------------------------------------------
    "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" (基类)
一般来说,DOTA通过技能的名字(在这里是"fx_test_ability")来将技能连接到C++中对应的类,如果你想让DOTA强制使用不同的C++类,这个基类("BaseClass")键将能完成这项工作 - 我们在这个技能中将基类定义为 ability_datadriven,来将技能连接到数据驱动技能类,将技能连接到其他已经存在的技能,通过修改KV(KeyValues)来重新定义他们的变量是可行的。
  • "AbilityBehavior" (技能类型)
技能类型通过一系列的常量来定义这个技能的属性,你能够使用|来分割不同的常量,比如说 "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" - 这些空格是很重要的!
在下面 技能类型 可以查看全部类型。
  • "ID"
ID是用来给跟踪技能状态的一个特定数值,在数据驱动类技能中不需要使用这个。
  • "AbilityTextureName" (技能图标名称)
是指在UI中显示的技能图标,你可以放一个其他技能的技能名称在此处来使用它。(或者你也可以引用 reource\flash3\images\spellicons文件夹中的.png文件名来定义自定义的图标 - 译者注)
  • "Modifiers"
是只有data-driven类技能才能使用的,这个区域定义了一系列的Modifiers(一般可以认为是Buff或者DeBuff),每个Modifier通过在其中定义的KV(KeyValues)来定义。
  • "Passive" (被动)
在Modifier中的被动字段,定义这个Modifier在这个技能被学习之后,将能自动施加给目标。
  • "OnCreated" (当创建时)
是一个出发区域,当这个Modifier被第一次施加给这个单位的时候会被触发,在本例中,我们在触发之后给施法者施加了一个粒子特效。

技能类型

"AbilityBehavior" (技能类型) 的全部类型,会使技能有不用的释放方式。你能够使用|来分割不同的常量,比如说 "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" - 这些空格是很重要的!

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, //这个技能将会显示技能释放的范围,有点像DOTA_ABILITY_BEHAVIOR_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, //这个技能是一个光环技能,Not really used other than to tag the ability as such.
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_AUTOCAST配合使用。
DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL       = 1 << 20, //这个技能即使施法被中断也能继续释放。
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Doesn't cause certain modifiers to end, 目前未知,只在信使的速度爆发有见到。
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_IGNORE_BACKSWING     = 1 << 25, //这个技能将会无视施法后摇。
DOTA_ABILITY_BEHAVIOR_RUNE_TARGET          = 1 << 26, //这个技能能以神符为目标。

技能触发事件和操作

技能可以有各种游戏中的事件,这些事件可以触发操作。

一个关于事件和操作的范例。在这个范例中,当你开始释放技能,就会在施法者上播放音效。

"OnSpellStart"      // 事件
{
    "FireSound"     // 操作
    {
        "EffectName"    "SoundEventName"
        "Target"        "CASTER"
    }
}


事件

引擎为技能提供了一系列触发事件,这些事件将能够在技能中触发:

触发事件名称 描述
OnChannelFinish 当持续性施法完成
OnChannelInterrupted 当持续性施法被中断
OnChannelSucceeded 当持续性施法成功
OnOwnerDied 当拥有者死亡
OnOwnerSpawned 当拥有者出生
OnProjectileFinish 当弹道粒子特效结束
OnProjectileHitUnit 当弹道粒子特效命中单位
OnSpellStart 当技能施法开始
OnToggleOff 当切换为关闭状态
OnToggleOn 当切换为开启状态
OnUpgrade 当升级

操作

以下是你在技能中能够使用操作中的一些Key:

操作名称 操作可用参数
AddAbility Target, AbilityName
添加技能 目标,技能名称
ActOnTargets Target, Action
使目标模型做出某个动作 目标,动作名称
ApplyModifier Target, ModifierName
应用Modifier 目标,Modifier名称
AttachEffect EffectName, EffectAttachType, Target, ControlPoints, EffectColorA, EffectColorB, EffectAlphaScale
附着点特效 特效名称,特效附着点类型,目标,控制点,特效颜色A,特效颜色B,特效不透明度比例
Blink Target
闪烁 目标
CleaveAttack CleavePercent, CleaveRadius
范围攻击 分裂伤害,分裂范围
CreateThinker Target, ModifierName
创建Thinker(定时器) 目标,Modifier名称
Damage Target, Type, MinDamage/MaxDamage, Damage
伤害 目标,伤害类型,最小/最大伤害值,伤害值
DestroyTrees Target, Radius
摧毁树木 目标,范围
FireEffect EffectName, EffectAttachType, Target, ControlPoints, TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale, EffectColorA, EffectColorB
播放特效 特效名称,特效附着点类型,目标,控制点,目标点,特效范围,特效播放时间比例,特效存活时间比例,特效颜色A,特效颜色B
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
线性投射物 目标,特效名称,移动速度,开始范围,结束范围,固定距离,开始位置,目标队伍,目标类型,目标状态,HasFrontalCone,提供视野,视野范围
Random Chance, PseudoRandom, OnSuccess, OnFailure
几率 概率,伪随机,成功时,失败时
RemoveAbility Target, AbilityName
移除技能 目标,技能名称
RemoveModifier Target, ModifierName
移除Modifier 目标,Modifier名称
RunScript Target, ScriptFile, Function
运行脚本 目标,脚本文件,运行函数
SpawnUnit UnitName, UnitCount, UnitLimit, SpawnRadius, Duration, Target, GrantsGold, GrantsXP
生产单位 单位名称,单位数量,单位上限,生产范围,持续时间,目标,死亡金钱量,死亡经验量
Stun Target, Duration
击晕 目标,持续时间
TrackingProjectile Target, EffectName, Dodgeable, ProvidesVision, VisionRadius, MoveSpeed, SourceAttachment
跟踪投射物 目标,特效名称,是否可闪避,提供视野,视野范围,移动速度,起源附着点
注意:AddAbility (增加技能)将会给单位添加一个0级的技能。 RemoveAbility (移除技能)将会移除对应技能(哪怕它已经升级了),更复杂的技能管理,应当通过程序来制作。


操作目标

在操作之前,首先应该选中目标(Target)。以下有几种选择方式。

注意:在几乎所有操作中,都需要选中目标。这非常重要,直接影响到你的技能效果。

单体目标

小范例:

"Target"  "CASTER"

单体目标有以下这些值:

名称 描述
CASTER 施法者
TARGET 目标
POINT
ATTACKER 攻击者
UNIT 单位

在页面最上例子中,就是用"Target(目标)" "CASTER(施法者)",在施法者身上制造些特效。

Note:在不同的操作中,这些字段提供的是不同的目标,你需要自己实际使用一下才能明白。

多个目标

小范例:

"Target"
{
    "Center"    "POINT"
    "Teams"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
    "Radius"    "300"
}

想要在某个区域里选中多个目标,就需要在 Target代码块 中填入下面的参数:

  • Center - 以目标为搜索范围的中心
中心目标 描述
CASTER 施法者
TARGET 目标
POINT
ATTACKER 攻击者
UNIT 单位
PROJECTILE 抛射物
  • Radius - 搜索目标的范围
[整数值]
  • 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 - 最多目标数量
[整数值]
  • Random - 在指定了最多目标数量之后,是否额外随机多选择一个单位。
[布尔值]
  • ScriptSelectPoints - *暂无说明*
ScriptFile, Function, Radius, Count
注意:RandomMaxTargets 共同使用,将Random 设置为0将会使操作只影响目标区域内MaxTargets或者更少的单位。

Modifiers

是只有data-driven类技能才能使用的,这个区域定义了一系列的Modifiers(一般可以认为是Buff或者DeBuff),每个Modifier通过在其中定义的KV(KeyValues)来定义。 参数有以下:

名称 可用参数
Attributes MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE, MODIFIER_ATTRIBUTE_MULTIPLE, MODIFIER_ATTRIBUTE_NONE, MODIFIER_ATTRIBUTE_PERMANENT
属性 *暂无说明*
Duration FloatValue
持续时间 浮点值
EffectAttachType follow_overhead, follow_origin, start_at_customorigin, world_origin
特效附着点类型 头上,原点,自定义原点,世界原点
EffectName StringValue
特效名称 字符串(路径+特效名)
IsBuff BooleanValue
是否增益魔法 布尔值(1为增益魔法)
IsDebuff BooleanValue
是否减益魔法 布尔值(1为减益魔法)
IsHidden BooleanValue
是否隐藏 布尔值(1为隐藏)
IsPurgable BooleanValue
*暂无说明*
OverrideAnimation ACT_DOTA_ATTACK, ACT_DOTA_CAST_ABILITY_1 (2, 3, 4, 5, 6), ACT_DOTA_DISABLED, ACT_DOTA_SPAWN, ACT_DOTA_TELEPORT, ACT_DOTA_VICTORY
覆盖模型动作 攻击动作,技能释放动作(1~6),受伤,出生,回程,胜利
Passive BooleanValue
被动 布尔值
ThinkInterval FloatValue
Think间隔 浮点值


Modifier 属性

Modifier属性能够改变对应Modifier影响的单位的游戏相关数值,以下示例定义的是一个降低目标攻击和移动速度的modifier(写在技能的Modifiers区域内),对于数值,你可以直接在区域直接写入数值,也可以使用 %name 来引用 AbilitySpecial区域内定义的数值,使用%name的好处是你能够针对不同的技能等级定义不同的数值,也可以在技能的说明中直接引用这个数值,在本示例中,Modifier的持续时间("Duration")引用了AbilitySpecial中的数值,减速的数值是直接写的数字。

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

Modifier 属性列表

名称 描述
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 状态

Modifier状态和Modifier属性十分类似,只不过他们是只有三个数值:"MODIFIER_STATE_VALUE_NO_ACTION", "MODIFIER_STATE_VALUE_ENABLED" 或者 "MODIFIER_STATE_VALUE_DISABLED"。以下的modifier示例给单位添加了一个简单的眩晕粒子特效,覆盖了单位的模型操作,让单位进入了眩晕状态。

"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状态列表

名称 描述
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_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 *暂无说明*


Modifier 事件

Modifier事件列表

名称 描述
MODIFIER_EVENT_ON_ABILITY_END_CHANNEL *暂无说明*
MODIFIER_EVENT_ON_ABILITY_EXECUTED *暂无说明*
MODIFIER_EVENT_ON_ABILITY_START *暂无说明*
MODIFIER_EVENT_ON_ATTACK *暂无说明*
MODIFIER_EVENT_ON_ATTACK_ALLIED *暂无说明*
MODIFIER_EVENT_ON_ATTACKED *暂无说明*
MODIFIER_EVENT_ON_ATTACK_FAIL *暂无说明*
MODIFIER_EVENT_ON_ATTACK_LANDED *暂无说明*
MODIFIER_EVENT_ON_ATTACK_START *暂无说明*
MODIFIER_EVENT_ON_BREAK_INVISIBILITY *暂无说明*
MODIFIER_EVENT_ON_DEATH *暂无说明*
MODIFIER_EVENT_ON_HEAL_RECEIVED *暂无说明*
MODIFIER_EVENT_ON_HEALTH_GAINED *暂无说明*
MODIFIER_EVENT_ON_HERO_KILLED *暂无说明*
MODIFIER_EVENT_ON_MANA_GAINED *暂无说明*
MODIFIER_EVENT_ON_ORB_EFFECT *暂无说明*
MODIFIER_EVENT_ON_ORDER *暂无说明*
MODIFIER_EVENT_ON_PROCESS_UPGRADE *暂无说明*
MODIFIER_EVENT_ON_PROJECTILE_DODGE *暂无说明*
MODIFIER_EVENT_ON_REFRESH *暂无说明*
MODIFIER_EVENT_ON_RESPAWN *暂无说明*
MODIFIER_EVENT_ON_SPENT_MANA *暂无说明*
MODIFIER_EVENT_ON_STATE_CHANGED *暂无说明*
MODIFIER_EVENT_ON_TAKEDAMAGE *暂无说明*
MODIFIER_EVENT_ON_TAKEDAMAGE_REAPERSCYTHE *暂无说明*
MODIFIER_EVENT_ON_TELEPORTED *暂无说明*
MODIFIER_EVENT_ON_TELEPORTING *暂无说明*
MODIFIER_EVENT_ON_UNIT_MOVED *暂无说明*


Modifiers也可以定义一些触发事件,以下的这些事件能够在modifier中定义 - 操作在本页面其他位置已经提及了

触发事件名称 描述
OnAttacked 当拥有modifier的单位被攻击时
OnAttackLanded 当拥有modifier的单位攻击到某个目标时
OnAttackStart 当拥有modifier的单位开始攻击某个目标
OnCreated 当modifier被创建时
OnDealDamage 当拥有modifier的单位施加伤害的时候
OnDeath 当拥有modifier的单位死亡的时候
OnDestroy 当这个modifier被移除的时候
OnOrbFire 当法球modifier的法球被释放的时候
OnOrbImpact 当法球modifier的法球命中目标之后
OnTakeDamage 当拥有modifier的单位受到伤害的时候
Orb 定义一个法球modifeir的特效等

技能范例

预载入

When creating data-driven abilities the "precache" block is not required. This ONLY applies to data-driven abilities that have the BaseClass defined as ability_datadriven.

Notes
  • Particle effects require the full path with extension in addition to the file name. For example:
particles/econ/generic/generic_buff_1/generic_buff_1.vpcf - The _c is not required.
  • Sound effects only require the event name.