找回密码
 点一下
查看: 2571|回复: 12

1.1.0的最大改进!效果(Effect)事件及其附属函数简单介绍。

[复制链接]
发表于 2010-9-22 03:44:02 | 显示全部楼层 |阅读模式
1.1.0总算加入了效果事件,这是本补丁最大的改进,也是SC2 beta以来最大的一项改进。

现在终于可以捕捉效果了,而且还不仅仅是可以捕捉到事件,还可以捕捉到更详细的一些数据。新一代的触发器+XML混合技能的曙光在此!



这里简单地列举一下我们能从效果事件中捕捉到的数据。我给每个函数作了注解。


======================

native void TriggerAddEventPlayerEffectUsed (trigger t, int player, string inEffect);

//这个新函数用来注册效果事件。

======================

native string   EventPlayerEffectUsed ();

//用来获得触发效果的id,也就是效果的模板名。

======================

native point    EventPlayerEffectUsedPoint (int inLocation);
//获得触发效果的 施法者点\源点\目标点\第三方点\起始点。

native unit     EventPlayerEffectUsedUnit (int inLocation);
//获得触发效果的 施法者\源单位\目标单位\第三方单位\起始单位。

native int      EventPlayerEffectUsedUnitOwner (int inLocation);
//获得触发效果的 施法者所属玩家\源单位所属玩家\目标单位玩家\第三方单位玩家\起始单位所属玩家。

native string   EventPlayerEffectUsedUnitType (int inLocation);
//获得触发效果的 施法者单位类型\源单位类型\目标单位类型\第三方单位类型\起始单位类型。

======================


其中参数(int inLocation)可以填写

const int c_effectLocationCasterUnit = 0;  //施法单位
const int c_effectLocationCasterPoint = 1; //施法者点
const int c_effectLocationCasterUnitOrPoint = 2;  //施法单位或施法者点
const int c_effectLocationSourceUnit = 3; //源单位
const int c_effectLocationSourcePoint = 4; //源点
const int c_effectLocationSourceUnitOrPoint = 5;  源//单位或源点
const int c_effectLocationTargetUnit = 6; //目标单位
const int c_effectLocationTargetPoint = 7; //目标点
const int c_effectLocationTargetUnitOrPoint = 8; //目标单位或目标点
const int c_effectLocationOuterUnit = 9; //第三方单位
const int c_effectLocationOuterPoint = 10; //第三方点
const int c_effectLocationOuterUnitOrPoint = 11; //第三方单位或第三方点
const int c_effectLocationOriginUnit = 12; //起始单位
const int c_effectLocationOriginPoint = 13; //起始点
const int c_effectLocationOriginUnitOrPoint = 14; //起始单位或起始点


======================

native int      EventPlayerEffectUsedAmountInt (int inAmount, bool total);
native fixed    EventPlayerEffectUsedAmountFixed (int inAmount, bool total);

//获得触发效果的 吸收\伤害\闪避\搜得\治疗\杀人\溅射 数量。


第一个参数(int inAmount) 可以是

const int c_effectAmountAbsorbed    = 0;  //吸收
const int c_effectAmountDamaged     = 1; //伤害
const int c_effectAmountDodged      = 2;  //闪避
const int c_effectAmountFound       = 3; //找到的数量
const int c_effectAmountHealed      = 4; //治疗
const int c_effectAmountKilled      = 5; //杀死
const int c_effectAmountSplashed    = 6; //溅射

第二个参数(bool total) 决定是取总数还是取单次数量。


======================



这些东西简直就是太好用了,这才像话啊Galaxy同学,此前你的表现完全都称不上Galaxy这个名字都,现在总算是伟大了一把了。
发表于 2010-9-22 03:56:45 | 显示全部楼层
举个例子说呢?
原来有什么是捕捉不到而现在可以捕捉到的。。疑惑中
回复

使用道具 举报

 楼主| 发表于 2010-9-22 04:07:49 | 显示全部楼层
全部都是啊,我一开头就说了,原来你根本无法捕捉效果事件,别说是下面那些详细数据了。

以前唯一能获得效果的事件是单位受到伤害事件,只能获得伤害单位的那个效果id,其它什么都得不到。撑死也只能获得伤害类的效果而已。


至于现在的效果事件和另外一些新函数嘛,比如说可以一个效果发动时你可以捕捉到它的id,捕捉到它的施法者施法点施法玩家目标点目标单位目标玩家,吸收的伤害造成的伤害。上面不是都写了么。



上面这些东西以前一个都捕捉不到,不信你去试试看。
回复

使用道具 举报

 楼主| 发表于 2010-9-22 04:18:31 | 显示全部楼层
假设说一个单位有一个行为,每秒向周围单位发射导弹,打中后治疗目标最多10点HP。

那么以前这样的发射导弹效果你是捕捉不到的。因为行为不是技能,连技能事件都没有。而没有伤害则代表连伤害事件都没有。

但是用这个新事件就可以捕捉到这些导弹的发射,还能知道这些导弹谁发射的,发射点在哪,发射玩家是谁,目标点在哪,目标单位是谁。这个效果本身的id是什么,然后实际治疗了多少HP都可以知道。

而且得到了效果id的话,我们还可以通过CatalogFieldValueGet()来获得这个效果的所有静态数据,就能获得更多的情报了。





就算抛开行为引发的效果,光说技能引发的效果的话,技能本身的施法点和行为的发射点也不是一回事的。比如说一个技能可能用了以后会让目标单位对周围单位造成伤害,那么这个伤害效果的launcher就不是技能的施法者了。
回复

使用道具 举报

发表于 2010-9-22 07:40:47 | 显示全部楼层
我能想到的最简单的运用就是多种类伤害,由触发器来控制伤害数值

没更新所以问个问题,和受到伤害事件一个性质的问题,是Effect发动前捕捉到Effect还是Effect发动后捕捉到Effect呢
回复

使用道具 举报

 楼主| 发表于 2010-9-22 10:42:36 | 显示全部楼层
发动后。否则也无法捕捉到Amount了吧。
回复

使用道具 举报

发表于 2010-9-22 16:31:20 | 显示全部楼层
upgrade中=3=
回复

使用道具 举报

发表于 2010-9-24 00:44:10 | 显示全部楼层
资料编辑器要与触发器合体了~!!!
回复

使用道具 举报

发表于 2010-9-24 00:47:09 | 显示全部楼层
技能结合只是一部分应用~
数据和脚本能交互,则可以更灵活的控制~向着万能转变ing~
回复

使用道具 举报

发表于 2010-9-24 13:54:21 | 显示全部楼层
new103.PNG    new105.PNG    new101.PNG
回复

使用道具 举报

 楼主| 发表于 2010-9-24 13:56:56 | 显示全部楼层
茄子前几天又好久没出现了,去哪里玩了啊?
回复

使用道具 举报

发表于 2010-9-24 14:01:21 | 显示全部楼层
在玩过家家 new09.PNG
回复

使用道具 举报

 楼主| 发表于 2010-9-24 14:07:03 | 显示全部楼层
茄子多重分身的好处就是可以和自己玩过家家呢~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 14:24 , Processed in 0.058854 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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