|
由于Create Healer本身是一个持续性的效果。也就是在一段时间内治疗多少 HP。属于那种线性的生命恢复效果。
而效果事件本身是在效果刚刚发动后引发的。所以在事件发生时,我们用EventPlayerEffectUsedAmountFixed()其实获得的是治疗效果第一跳时候的治疗量。
这么一说,获取治疗量岂不是变得没意义了?并非如此,我在这问题上也困惑了好久,不过最终还是整出来了。
[trigger]
Simple Debug Healing Amount
Events
Environment - Effect Used(1, Medivac - Heal (Create Healer))
Local Variables
Conditions
Actions
Debug - Display (Text((Triggering Effect Amount (Real)(Healed, false))) with Any Precision decimal places) as debug output using Type 1, and Do display it in the game window
General - Wait 0.2 Game Time seconds
Debug - Display (Text((Triggering Effect Amount (Real)(Healed, false))) with Any Precision decimal places) as debug output using Type 1, and Do display it in the game window
General - Wait 0.2 Game Time seconds
Debug - Display (Text((Triggering Effect Amount (Real)(Healed, false))) with Any Precision decimal places) as debug output using Type 1, and Do display it in the game window
General - Wait 0.2 Game Time seconds
Debug - Display (Text((Triggering Effect Amount (Real)(Healed, false))) with Any Precision decimal places) as debug output using Type 1, and Do display it in the game window
[/trigger]
在这个触发里我试着每0.2秒输出一次医疗船医疗效果的治疗量。
结果在debug窗体中显示的是:
00:00:13.44 1.13574
00:00:13.44 Running gt_Debug_Func (Event: TriggerDebug/EventPlayerEffectUsed)
00:00:13.69 2.83936
00:00:13.94 5.11084
00:00:14.19 7.38232
这些数据正好对应该治疗效果在对应时间里的治疗总量。真是意外的惊喜。原来对于持续性效果,我们还能获得它从第一次执行开始到当前时间里的治疗量。并非只能获得其触发瞬间的治疗量。这点和war3的触发响应思路似乎有很大的不同。因为在war3当中,触发单位之类的东西在线程中应该是保持不变的。
不过仔细思考的话,应该可以认为是Galaxy隐藏了Triggering Effect这个函数,不让用户直接获得触发效果的handle,而是给出一整套函数直接让用户获得触发效果的治疗量,施法者,模板ID,目标,源点等等数据。这样,在函数线程中,触发效果依然是保持不变的,但是该触发效果的治疗量却会随时间变化,就像触发单位的HP是会变的一样。
最后一点要提的是,我目前未能找到获得触发效果伤害量\吸收量\闪避量的方法。无论我怎么弄返回的都是0。怀疑这三样可能还未正式引入Galaxy中。好在我们现在可以通过伤害事件来获得伤害量,虽然和效果事件的原理和应用范围都不一样。不过也有可能是我的代码写的有问题。
有哪位同学能正常获得伤害量\吸收量\闪避量的话请发个帖子来说明下,有威望奖励哦 |
|