找回密码
 点一下
查看: 1859|回复: 18

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

[复制链接]
发表于 2014-11-27 13:08:00 | 显示全部楼层 |阅读模式
本帖最后由 RoyalFlare 于 2014-11-27 13:11 编辑

技能1号:

  1. function Trig_HYZ_Func001002003 takes nothing returns boolean
  2.     return(((IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetTriggerUnit()))==true)and(IsUnitAliveBJ(GetFilterUnit())==true)))
  3. endfunction
  4. function Trig_HYZ_Func005Func003A takes nothing returns nothing
  5.     call DestroyEffect(AddSpecialEffectTarget("explosion.mdx",GetEnumUnit(),"origin"))
  6.     call UnitDamageTargetBJ(udg_SlashUnit,GetEnumUnit(),((I2R(GetHeroStr(udg_SlashUnit,true))*30.00)*I2R(GetUnitAbilityLevel(udg_SlashUnit,'A04O'))),ATTACK_TYPE_CHAOS,DAMAGE_TYPE_UNIVERSAL)
  7. endfunction
  8. function Trig_HYZ_Conditions takes nothing returns boolean
  9.     return ((GetSpellAbilityId() == 'A04O'))
  10. endfunction
  11. function Trig_HYZ_Actions takes nothing returns nothing
  12.     local location Dian
  13.     set udg_SlashUnit=GetTriggerUnit()
  14.     set Dian=GetUnitLoc(GetTriggerUnit())
  15.     call DestroyEffect(AddSpecialEffectTarget("FireStomp.mdx",GetSpellTargetUnit(),"origin"))
  16.     call SetUnitPositionLoc(GetTriggerUnit(),GetUnitLoc(GetSpellTargetUnit()))
  17.     call ForGroupBJ(GetUnitsInRangeOfLocMatching(600.00,GetUnitLoc(udg_SlashUnit),Condition(function Trig_HYZ_Func001002003)),function Trig_HYZ_Func005Func003A)
  18.     call DestroyGroup( GetLastCreatedGroup() )
  19.     call RemoveLocation(Dian)
  20.     set udg_SlashUnit=null
  21. endfunction
  22. //===========================================================================
  23. function InitTrig_HYZ takes nothing returns nothing
  24.     set gg_trg_HYZ = CreateTrigger()
  25.     call TriggerRegisterAnyUnitEventBJ( gg_trg_HYZ, EVENT_PLAYER_UNIT_SPELL_EFFECT )
  26.     call TriggerAddCondition(gg_trg_HYZ, Condition(function Trig_HYZ_Conditions))
  27.     call TriggerAddAction(gg_trg_HYZ, function Trig_HYZ_Actions)
  28. endfunction
复制代码

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

  1. Whirlwind
  2.     事件
  3.         单位 - 任意单位 发动技能效果
  4.     条件
  5.         (施放技能) 等于 死亡旋风
  6.     动作
  7.         设置 DashUnit = (触发单位)
  8.         单位 - 添加 死亡旋风 (单位技能) 给 (触发单位)
  9.         单位 - 设置 (触发单位) 的 死亡旋风 (单位技能) 等级为 ((触发单位) 的 死亡旋风  技能等级)
  10.         单位 - 对 (触发单位) 发布 兽族剑圣 - 剑刃风暴 命令
  11.         等待 0.02 秒
  12.         单位 - 暂停 (触发单位)
  13.         单位 - 设置 (触发单位) 关闭 碰撞
  14.         动画 - 改变 (触发单位) 的动画播放速度为正常速度的 400.00%
  15.         触发器 - 开启 Whirlwind2 <预设>
  16.         等待 3.00 秒
  17.         触发器 - 关闭 Whirlwind2 <预设>
  18.         单位 - 设置 (触发单位) 打开 碰撞
  19.         单位 - 恢复 (触发单位)
  20.         单位组 - 清空 Group4[1] 内所有单位
  21.         单位 - 删除 死亡旋风 (单位技能) 从 (触发单位)
  22.         动画 - 改变 (触发单位) 的动画播放速度为正常速度的 100.00%
  23.         动画 - 播放 (触发单位) 的 Stand 动作
  24.         自定义代码:   call DestroyGroup( udg_DwzPx[1] )
  25.         自定义代码:   call DestroyGroup( udg_Group4[1] )
  26.         自定义代码:   set udg_DashUnit = null
复制代码

  1. Whirlwind2
  2.     事件
  3.         时间 - 每当游戏逝去 0.02 秒
  4.     条件
  5.     动作
  6.         设置 Apx[1] = (DashUnit 的位置)
  7.         设置 Dash_Point[1] = (从 Apx[1] 开始,距离 20.00 ,方向为 (DashUnit 的面向角度) 度的位移处)
  8.         自定义代码:   call RemoveLocation( udg_Apx[1] )
  9.         如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
  10.             If - 条件
  11.                 (Dash_Point[1] 处的 可通行地面 通行状态为关闭) 等于 TRUE
  12.             Then - 动作
  13.                 不做任何动作
  14.             Else - 动作
  15.                 单位 - 立即移动 DashUnit 到 Dash_Point[1]
  16.                 特殊效果 - 在 Dash_Point[1] 创建特效: Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
  17.                 特殊效果 - 删除 (最后创建的特效)
  18.         设置 DwzPx[1] = (半径为 360.00 圆心为 Dash_Point[1] 且满足 ((((匹配单位) 是 建筑) 等于 FALSE) 且 (((匹配单位) 是 (DashUnit 的所有者) 的敌对单位) 等于 TRUE)) 的所有单位)
  19.         单位组 - 选取 DwzPx[1] 内所有单位做动作
  20.             Loop - 动作
  21.                 设置 Apx[1] = ((选取单位) 的位置)
  22.                 设置 Apx[2] = (DashUnit 的位置)
  23.                 单位 - 对 (选取单位) 发布 攻击 命令到目标: (选取单位)
  24.                 设置 Dash_Point[2] = (从 Apx[1] 开始,距离 20.00 ,方向为 (Apx[2] 到 (从 Apx[1] 开始,距离 200.00 ,方向为 (DashUnit 的面向角度) 度的位移处) 的角度) 度的位移处)
  25.                 单位 - 设置 (选取单位) 的X坐标为 (Dash_Point[2] 的X轴坐标)
  26.                 单位 - 设置 (选取单位) 的Y坐标为 (Dash_Point[2] 的Y轴坐标)
  27.                 特殊效果 - 在 Dash_Point[2] 创建特效: Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
  28.                 特殊效果 - 删除 (最后创建的特效)
  29.                 自定义代码:   call RemoveLocation( udg_Dash_Point[2] )
  30.                 自定义代码:   call RemoveLocation( udg_Apx[1] )
  31.                 自定义代码:   call RemoveLocation( udg_Apx[2] )
  32.                 如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
  33.                     If - 条件
  34.                         ((选取单位) 在 Group4[1] 中) 等于 FALSE
  35.                     Then - 动作
  36.                         不做任何动作
  37.                     Else - 动作
  38.                         单位组 - 添加 (选取单位) 到 Group4[1]
  39.         单位组 - 选取 DwzPx[1] 内所有单位做动作
  40.             Loop - 动作
  41.                 单位 - 命令 DashUnit 对 (选取单位) 造成 (((转换 (DashUnit 的力量值(包括 加成)) 为实数) x 60.00) x (转换 (DashUnit 的 死亡旋风  技能等级) 为实数)) 点伤害,攻击类型: 混乱 伤害类型: 通用
  42.         自定义代码:   call DestroyGroup( udg_DwzPx[1] )
  43.         自定义代码:   call RemoveLocation( udg_Dash_Point[1] )
复制代码

  1. Whirlwind3
  2.     事件
  3.         单位 - 任意单位 施放技能结束
  4.     条件
  5.         (施放技能) 等于 死亡旋风
  6.     动作
  7.         玩家 - 设置 ((触发单位) 的所有者) 的 死亡旋风  为 禁用
  8.         等待 60.00 秒
  9.         玩家 - 设置 ((触发单位) 的所有者) 的 死亡旋风  为 允许
复制代码

@chyj4747 @ckpig @希瓦
RT 技能释放完毕后可以继续使用技能 无法进入CD状态 求解原因 是我哪里做错了麽?
发表于 2014-11-27 18:43:21 | 显示全部楼层
单位 - 对 (触发单位) 发布 兽族剑圣 - 剑刃风暴 命令

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

使用道具 举报

发表于 2014-11-28 08:42:19 | 显示全部楼层
用吃书放马甲技能
回复

使用道具 举报

 楼主| 发表于 2014-12-6 20:13:43 | 显示全部楼层
@zhuzeitou @希瓦
话说技能1号不能进入CD状态的原因究竟是什麽?

点评

HYZ那个部分的代码  发表于 2014-12-7 19:39
沙发不是已经回复你了吗  发表于 2014-12-7 01:51
沙发不是已经回复你了吗  发表于 2014-12-7 01:51
回复

使用道具 举报

发表于 2014-12-6 21:01:58 | 显示全部楼层
虽然不懂Jass,不过单从触发就能看出lz基础很差。
看技能似乎是一个类似冲锋(有地形判断),能击退敌人的技能。其实可以去找冲锋的模板。剑刃风暴没必要释放,可以直接播放剑刃风暴的动画。

点评

如果模型没有剑刃风暴的动作呢? 这就需要非常复杂的模拟播放单位动画了(瞎折腾 简直作死)  发表于 2014-12-7 20:21
回复

使用道具 举报

 楼主| 发表于 2014-12-6 21:13:08 | 显示全部楼层
本帖最后由 RoyalFlare 于 2014-12-6 21:14 编辑

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

使用道具 举报

发表于 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[1] 中) 等于 FALSE
Then - 动作
    不做任何动作
Else - 动作
    单位组 - 添加 (选取单位) 到 Group4[1]
这里也是,“如果单位不在单位组Group4[1]中,不做任何动作;单位在单位组Group4[1]中,向单位组Group4[1]添加单位”这是闹哪样啊……

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

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



Whirlwind3

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

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


点评

lo
附件里的击退是用的多人化处理的,稍微夹杂了点我的强迫症,技能没做伤害,影响范围和持续时间都调小了点。你应该可以自己处理的。  发表于 2014-12-7 12:49
回复

使用道具 举报

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

剑刃风暴.w3x

26.78 KB, 下载次数: 2

点评

多人使用技能的话我就用上全局变量数组AND绑定玩家索引号了 只有1个人在同1时间使用这个技能 所以就不考虑多人话了  详情 回复 发表于 2014-12-7 19:35
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

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

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

没有好评差评。
回复

使用道具 举报

发表于 2014-12-7 20:30:02 | 显示全部楼层
如果模型没有剑刃风暴的动作,那就算找人套动作,不然就算施放剑刃风暴也转不起来……话说那个圣骑士模拟的剑刃风暴你应该见过了吧……

点评

这个真的没有见过  发表于 2014-12-7 20:47
回复

使用道具 举报

 楼主| 发表于 2014-12-7 20:59:37 | 显示全部楼层
本帖最后由 RoyalFlare 于 2014-12-7 21:00 编辑
If - 条件
    ((选取单位) 在 Group4[1] 中) 等于 FALSE
Then - 动作
    不做任何动作
Else - 动作
    单位组 - 添加 (选取单位) 到 Group4[1]
这里也是,“如果单位不在单位组Group4[1]中,不做任何动作;单位在单位组Group4[1]中,向单位组Group4[1]添加单位”这是闹哪样啊……

这句话的意思是如果单位不在单位组Group4[1]里 则把单位添加到单位组Group4[1]中 否则不做任何动作(当返回值为False时)

点评

lo
但是你明显写反了哦……我猜你是指做一次伤害和击退效果的,所以我的技能也就那么做了。 http://bbs.islga.org/forum.php?mod=viewthread&tid=747106 这个是圣骑士模拟的剑刃风暴,有点难找,因为整个帖子里没有  详情 回复 发表于 2014-12-7 21:05
回复

使用道具 举报

发表于 2014-12-7 21:05:35 | 显示全部楼层
RoyalFlare 发表于 2014-12-7 20:59
这句话的意思是如果单位不在单位组Group4[1]里 则把单位添加到单位组Group4[1]中 否则不做任何动作(当返 ...

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

http://bbs.islga.org/forum.php?mod=viewthread&tid=747106
这个是圣骑士模拟的剑刃风暴,有点难找,因为整个帖子里没有人提到“剑刃风暴”,所以完全搜不到……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 15:11 , Processed in 0.255965 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表