RoyalFlare 发表于 2014-11-27 13:08:00

为何技能释放后无法进入CD?

本帖最后由 RoyalFlare 于 2014-11-27 13:11 编辑

技能1号:

function Trig_HYZ_Func001002003 takes nothing returns boolean
    return(((IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetTriggerUnit()))==true)and(IsUnitAliveBJ(GetFilterUnit())==true)))
endfunction
function Trig_HYZ_Func005Func003A takes nothing returns nothing
    call DestroyEffect(AddSpecialEffectTarget("explosion.mdx",GetEnumUnit(),"origin"))
    call UnitDamageTargetBJ(udg_SlashUnit,GetEnumUnit(),((I2R(GetHeroStr(udg_SlashUnit,true))*30.00)*I2R(GetUnitAbilityLevel(udg_SlashUnit,'A04O'))),ATTACK_TYPE_CHAOS,DAMAGE_TYPE_UNIVERSAL)
endfunction
function Trig_HYZ_Conditions takes nothing returns boolean
    return ((GetSpellAbilityId() == 'A04O'))
endfunction
function Trig_HYZ_Actions takes nothing returns nothing
    local location Dian
    set udg_SlashUnit=GetTriggerUnit()
    set Dian=GetUnitLoc(GetTriggerUnit())
    call DestroyEffect(AddSpecialEffectTarget("FireStomp.mdx",GetSpellTargetUnit(),"origin"))
    call SetUnitPositionLoc(GetTriggerUnit(),GetUnitLoc(GetSpellTargetUnit()))
    call ForGroupBJ(GetUnitsInRangeOfLocMatching(600.00,GetUnitLoc(udg_SlashUnit),Condition(function Trig_HYZ_Func001002003)),function Trig_HYZ_Func005Func003A)
    call DestroyGroup( GetLastCreatedGroup() )
    call RemoveLocation(Dian)
    set udg_SlashUnit=null
endfunction
//===========================================================================
function InitTrig_HYZ takes nothing returns nothing
    set gg_trg_HYZ = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HYZ, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition(gg_trg_HYZ, Condition(function Trig_HYZ_Conditions))
    call TriggerAddAction(gg_trg_HYZ, function Trig_HYZ_Actions)
endfunction

——寂寞的分割线——
技能2号:

Whirlwind
    事件
      单位 - 任意单位 发动技能效果
    条件
      (施放技能) 等于 死亡旋风
    动作
      设置 DashUnit = (触发单位)
      单位 - 添加 死亡旋风 (单位技能) 给 (触发单位)
      单位 - 设置 (触发单位) 的 死亡旋风 (单位技能) 等级为 ((触发单位) 的 死亡旋风技能等级)
      单位 - 对 (触发单位) 发布 兽族剑圣 - 剑刃风暴 命令
      等待 0.02 秒
      单位 - 暂停 (触发单位)
      单位 - 设置 (触发单位) 关闭 碰撞
      动画 - 改变 (触发单位) 的动画播放速度为正常速度的 400.00%
      触发器 - 开启 Whirlwind2 <预设>
      等待 3.00 秒
      触发器 - 关闭 Whirlwind2 <预设>
      单位 - 设置 (触发单位) 打开 碰撞
      单位 - 恢复 (触发单位)
      单位组 - 清空 Group4 内所有单位
      单位 - 删除 死亡旋风 (单位技能) 从 (触发单位)
      动画 - 改变 (触发单位) 的动画播放速度为正常速度的 100.00%
      动画 - 播放 (触发单位) 的 Stand 动作
      自定义代码:   call DestroyGroup( udg_DwzPx )
      自定义代码:   call DestroyGroup( udg_Group4 )
      自定义代码:   set udg_DashUnit = null


Whirlwind2
    事件
      时间 - 每当游戏逝去 0.02 秒
    条件
    动作
      设置 Apx = (DashUnit 的位置)
      设置 Dash_Point = (从 Apx 开始,距离 20.00 ,方向为 (DashUnit 的面向角度) 度的位移处)
      自定义代码:   call RemoveLocation( udg_Apx )
      如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                (Dash_Point 处的 可通行地面 通行状态为关闭) 等于 TRUE
            Then - 动作
                不做任何动作
            Else - 动作
                单位 - 立即移动 DashUnit 到 Dash_Point
                特殊效果 - 在 Dash_Point 创建特效: Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
                特殊效果 - 删除 (最后创建的特效)
      设置 DwzPx = (半径为 360.00 圆心为 Dash_Point 且满足 ((((匹配单位) 是 建筑) 等于 FALSE) 且 (((匹配单位) 是 (DashUnit 的所有者) 的敌对单位) 等于 TRUE)) 的所有单位)
      单位组 - 选取 DwzPx 内所有单位做动作
            Loop - 动作
                设置 Apx = ((选取单位) 的位置)
                设置 Apx = (DashUnit 的位置)
                单位 - 对 (选取单位) 发布 攻击 命令到目标: (选取单位)
                设置 Dash_Point = (从 Apx 开始,距离 20.00 ,方向为 (Apx 到 (从 Apx 开始,距离 200.00 ,方向为 (DashUnit 的面向角度) 度的位移处) 的角度) 度的位移处)
                单位 - 设置 (选取单位) 的X坐标为 (Dash_Point 的X轴坐标)
                单位 - 设置 (选取单位) 的Y坐标为 (Dash_Point 的Y轴坐标)
                特殊效果 - 在 Dash_Point 创建特效: Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                特殊效果 - 删除 (最后创建的特效)
                自定义代码:   call RemoveLocation( udg_Dash_Point )
                自定义代码:   call RemoveLocation( udg_Apx )
                自定义代码:   call RemoveLocation( udg_Apx )
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                  If - 条件
                        ((选取单位) 在 Group4 中) 等于 FALSE
                  Then - 动作
                        不做任何动作
                  Else - 动作
                        单位组 - 添加 (选取单位) 到 Group4
      单位组 - 选取 DwzPx 内所有单位做动作
            Loop - 动作
                单位 - 命令 DashUnit 对 (选取单位) 造成 (((转换 (DashUnit 的力量值(包括 加成)) 为实数) x 60.00) x (转换 (DashUnit 的 死亡旋风技能等级) 为实数)) 点伤害,攻击类型: 混乱 伤害类型: 通用
      自定义代码:   call DestroyGroup( udg_DwzPx )
      自定义代码:   call RemoveLocation( udg_Dash_Point )


Whirlwind3
    事件
      单位 - 任意单位 施放技能结束
    条件
      (施放技能) 等于 死亡旋风
    动作
      玩家 - 设置 ((触发单位) 的所有者) 的 死亡旋风为 禁用
      等待 60.00 秒
      玩家 - 设置 ((触发单位) 的所有者) 的 死亡旋风为 允许

@chyj4747 @ckpig @希瓦
RT 技能释放完毕后可以继续使用技能 无法进入CD状态 求解原因 是我哪里做错了麽?

希瓦 发表于 2014-11-27 18:43:21

单位 - 对 (触发单位) 发布 兽族剑圣 - 剑刃风暴 命令

这句打断了单位当前释放的技能,所以没cd只耗蓝
解决方法:等0.01秒再放……

ckpig 发表于 2014-11-28 08:42:19

用吃书放马甲技能

RoyalFlare 发表于 2014-12-6 20:13:43

@zhuzeitou @希瓦
话说技能1号不能进入CD状态的原因究竟是什麽?

lo 发表于 2014-12-6 21:01:58

虽然不懂Jass,不过单从触发就能看出lz基础很差。
看技能似乎是一个类似冲锋(有地形判断),能击退敌人的技能。其实可以去找冲锋的模板。剑刃风暴没必要释放,可以直接播放剑刃风暴的动画。

RoyalFlare 发表于 2014-12-6 21:13:08

本帖最后由 RoyalFlare 于 2014-12-6 21:14 编辑

@lo 我把幻想之战里的初音技能Jass转T 然后修改了伤害范围和伤害数值 其他都保持原样
我做技能的基础确实差 这我承认 这只是练习作品 YDWE自带的冲锋系统不能经常使用 养成习惯以后就糟糕了

lo 发表于 2014-12-7 12:47:39

本帖最后由 lo 于 2014-12-7 14:24 编辑

Whirlwind

1.剑刃风暴会像通魔一样禁用其他技能,也就是说,原技能被强制打断了。
建议直接播放剑刃风暴的动画,反正你这剑刃风暴也是无伤害只作为动画的(如果有伤害就更糟糕了,可能还会有其他bug)。

2.触发器里的等待命令最多可能有0.15秒的误差(我大概记得是这样的),所以建议在超过8秒的时候再用这个不精确的动作(这样误差小于2%)。



Whirlwind2

1.“单位 - 对 (选取单位) 发布 攻击 命令到目标: (选取单位)”这一句仍谁都会吐槽的吧……我们A自己,从来都没成功过……

2.
If - 条件
    ((选取单位) 在 Group4 中) 等于 FALSE
Then - 动作
    不做任何动作
Else - 动作
    单位组 - 添加 (选取单位) 到 Group4
这里也是,“如果单位不在单位组Group4中,不做任何动作;单位在单位组Group4中,向单位组Group4添加单位”这是闹哪样啊……

3.“设置 Dash_Point = (从 Apx 开始,距离 20.00 ,方向为 (Apx 到 (从 Apx 开始,距离 200.00 ,方向为 (DashUnit 的面向角度) 度的位移处) 的角度) 度的位移处)”这里有点泄漏。

4.如果你是点目标技能,冲锋的时候不建议用单位面向角度,因为向后方施放的时候,单位没有转到指定角度,技能就已经发动了,这样角度上会有偏差。
如果是影魔那种不需要指定点的,倒是无所谓了。



Whirlwind3

没有办法CD,所以手动模拟了么……

这段触发也没有处理多人化,如果只有一个英雄会死亡旋风,那我也不说什么了。
其他小问题多半是习惯问题,不做吐槽了……


lo 发表于 2014-12-7 14:25:11

稍微修改了下,也加了伤害什么的,不过可能和你要的效果不一样……

RoyalFlare 发表于 2014-12-7 19:35:46

本帖最后由 RoyalFlare 于 2014-12-7 19:39 编辑

lo 发表于 2014-12-7 14:25
稍微修改了下,也加了伤害什么的,不过可能和你要的效果不一样……

多人使用技能的话我就用上全局变量数组AND绑定玩家索引号了

只有1个人在同1时间使用这个技能 所以就不考虑多人化了

lo 发表于 2014-12-7 19:58:38

RoyalFlare 发表于 2014-12-7 19:35
多人使用技能的话我就用上全局变量数组AND绑定玩家索引号了

只有1个人在同1时间使用这个技能 所以就 ...

没有好评差评。

lo 发表于 2014-12-7 20:30:02

如果模型没有剑刃风暴的动作,那就算找人套动作,不然就算施放剑刃风暴也转不起来……话说那个圣骑士模拟的剑刃风暴你应该见过了吧……

RoyalFlare 发表于 2014-12-7 20:59:37

本帖最后由 RoyalFlare 于 2014-12-7 21:00 编辑

If - 条件
    ((选取单位) 在 Group4 中) 等于 FALSE
Then - 动作
    不做任何动作
Else - 动作
    单位组 - 添加 (选取单位) 到 Group4
这里也是,“如果单位不在单位组Group4中,不做任何动作;单位在单位组Group4中,向单位组Group4添加单位”这是闹哪样啊……
这句话的意思是如果单位不在单位组Group4里 则把单位添加到单位组Group4中 否则不做任何动作(当返回值为False时)

lo 发表于 2014-12-7 21:05:35

RoyalFlare 发表于 2014-12-7 20:59
这句话的意思是如果单位不在单位组Group4里 则把单位添加到单位组Group4中 否则不做任何动作(当返 ...

但是你明显写反了哦……我猜你是指做一次伤害和击退效果的,所以我的技能也就那么做了。

http://bbs.islga.org/forum.php?mod=viewthread&tid=747106
这个是圣骑士模拟的剑刃风暴,有点难找,因为整个帖子里没有人提到“剑刃风暴”,所以完全搜不到……
页: [1]
查看完整版本: 为何技能释放后无法进入CD?