找回密码
 点一下
查看: 2130|回复: 7

这两天头好疼。关于前几天的练习的事情,只好简单的说一下几个要点了。

[复制链接]
发表于 2011-5-23 23:10:41 | 显示全部楼层 |阅读模式
这几天突然脑袋很疼,很难集中,我搞这个练习本来是想趁这个机会写一篇关于Marker的教程的,结果估计要等一段时间了。所以这次就简单说说本次练习的技能要点难点吧。


要点1:如何实现右键点击目标就执行一个效果(这里是传送效果)呢?很多同学想到了用装载技能来做,用这个技能虽然可以实现,不过并不是很完美的,因为有至少一个周期的延迟。实际上有一个现成的做这个的技能类的:CActorBattery。这个技能类可以直接作出类似SC1的护盾补充器的技能,别的单位右键点击它,就会执行预设的效果。不管是引导型的效果还是立即型的效果都可以。非常方便。我发现最后有几个同学找到这个类了,可喜可贺呢 :)



要点2:如何在两扇门之间建立联系,让进入A门的单位只能从B门出来而不会从别的门出来呢?很多war3过来的同学大概还记得当时我们是用jass里的return bug来建立数据绑定的,不过我们这里有个限制,必须要数据编辑器,于是就得动动脑筋了。这应该是本练习最大的难点。

——实际上,方法多得的啦。以下举几个例子:

1]最傻瓜的办法:

这个法子简单实用,而且很容易想到的。其实,我们让A门不断往B门位置放类似仲裁者的群体召回效果,而B门不断往A门放这个效果。然后限定只传送有某个buff的单位,传送后删除这个buff。然后,给A门和B门都安上上面说的那个右键技能。这个技能的效果就是上一下这个buff。于是就结了。传送门完成了。

不过实际上严格来说,这个法子实际上根本没有在A和B之间建立任何联系,单纯的是A一直在往B的位置放效果,而B一直在往A的位置放效果而以。虽然可以解决这个问题,但是要作出通用的“获得与此单位关联的另一个单位”的效果就无能为力了。而且问题也很明显,由于是范围传送,如果有两扇门离的很近,就可能出现传送冲突,传错位置什么的。这个问题虽然可以用一些复杂的验证来减少啦。这次练习里的同学们似乎基本都用这个方法。这个法子也只能用在传送门这种不能动的单位上啦。如果要求两扇门能移动,这个法子就废掉了。





2]嗯,下面是更科学一些的法子。

其实如果看过我去年那个,完整英雄系统演示的同学可能会对里面那个幻象陷阱有点兴趣。不知道有多少同学记得那个技能的效果——英雄使用这个技能后会创建一个幻象,然后这个幻象受到任何伤害,都会对伤害者发射渡鸦的那个飞弹。不知道有多少同学注意到,虽然飞弹看上去是幻象发出的,但是实际上的伤害源是英雄自己,而英雄可以通过这个伤害来获得经验。而且该技能还有一个有趣的特点,如果你制造了多个幻象,然后其中一个幻象被另一个幻象发出的飞弹炸死,那么后死的那家伙发的飞弹飞向的目标会是——英雄本身。为啥,因为实际上飞弹的伤害源是英雄自己呗。刻意做成这样的。

好了大家有否注意到了?这个例子里,英雄自身就作为与受到伤害的幻象相关联的单位出现了呢。实际上这里涉及了三个单位,攻击幻象的单位、幻象单位、英雄。

虽然buff这东西有施法者这个属性,但是就算通过脚本我们也无法直接获得某个buff的施法者单位是谁。别说是数据编辑器里的验证器了。很多同学看到这个练习后大概马上就跑到数据编辑器的验证器里找有没有验证buff施法者是谁的,实际上根本就没有,验证器只能验证有没有这个buff,无法验证是谁施展了这个buff。但是,这并不代表整个数据编辑器范畴内就没法得知某个buff的施法者是谁。因为,Buff自己就能知道,确切地说,只要在这个buff的效果树内,就能知道这个buff的施法者。所以说,这里还有一个非常取巧,但是却十分有效的法子。原理就类似于我那个幻象陷阱的实现方法:我们先让B门给A门上一个buff X。这个X有一个伤害响应:当受到效果Y的伤害时,引发效果Z。效果Z的内容是:把攻击者瞬移到施法者那里。而A门上有一个右键引发的技能:让目标对自己发动效果Y。完毕。

当然,出于方便起见,我们在实际操作时会倒过来,把buff修改成攻击方伤害响应,而让A门对进门的单位发动效果Y,然后传送效果变成把被攻击的目标移动到施法者处。这样做起来更简单方便。

不过,我们还需要再加一个伤害响应,把效果Y造成的伤害弄没,因为我们不能直接让效果Y的伤害量为0,在目前的版本中,0点伤害不会引发伤害响应,而在很久以前的版本里是会的,所以这里稍微要多做一步,受到Y的伤害时再把它弄成0,反正结果是一样的,单位没有受到任何伤害。另外,也得注意,不要让单位身上别的buff把这个效果Y先处理没了。如果某些更具有优先权的buff先把Y的伤害减成0了,那么X就不会引发伤害响应,所以暴雪的这一改动真的很不合适。所以在该单位的别的buff上最好加个例外,把Y效果从它们的响应里给排除掉。

这个法子与上一个法子相比,不需要高频率地进行范围搜索和传送,准确度也高。因为buff不会弄错自己的施法者,而范围搜索总是不那么靠谱的。但是它还是有一些缺点的,比方说,需要注意不要让Y效果先被别的buff给处理掉了。所以在个人地图里用不错,而要做成通用buff的话就很麻烦。而且,严格来说,其实这个法子关联了两个单位没错,但是终究还是在buff自己的效果树里实现的。实现目前所需的这个技能没问题,但是如果想要在效果树外的其余效果也能得知和某单位关联的另一个单位,就无能为力了。不过目前来讲,这个法子还是相当适合中级应用的。



3]上一个法子的变种,不通过伤害响应。

上面说了,只要在buff的效果树之内,就能获得buff的施法者,那么其实我们并不一定要用伤害响应的。只要让B门给A门加个buff。这个buff会周期性搜索一定范围内以自己为目标的,有特定buff的单位,并把它传送到施法者那里。这样同样能达到目的。这个法子有点像前两个法子的混合体。既可以精确获得关联单位,又不需要进行伤害响应判定。可以规避上面说到的伤害响应造成的问题,不过也同时把方案1中的一大缺点继承来了——周期性搜索引发效果的频率太高了。虽然这个比母舰的群体隐形光环是绿色多了啦。这个法子和方法2各有优点和弊端。



4]然后我本来想说的是什么法子呢?用Marker。

以上这些法子其实都不是我真正想说的。其实我这个练习本身是个引子,我是想以这个为契机写一篇详细的教程来说明Marker的使用方法,Marker这个东西在放置Maker的效果树外也可以通过搜索区域检测Maker来获得关联单位。但是实在是因为头疼,不得不推迟了。因此大概不如先就学习一下我上面说的第二、三个法子吧哎哎:(










额外的一说:

话说有同学问,A门死了,B门也死这个咋弄啊?其实很简单啦。你可以用个buff,加个移除验证器:施法者还活着。然后再让这个buff在移除的时候引发自杀效果就是了,于是施法者死后,被上这个buff的单位就会自杀。超简单。
 楼主| 发表于 2011-5-23 23:12:22 | 显示全部楼层
由于现在头还很疼,所以已经提交上来的几个同学的练习的评分就只好明天再给积分了。请等等吧唉抱歉。
回复

使用道具 举报

发表于 2011-5-23 23:24:40 | 显示全部楼层
我是用Marker做的

2个建筑互放Buff,使得对方的Marker的施法者为自己,
不过问题是A建筑身上的buff施法者是A,B身上的buff施法者也是A
,单向了,于是,我失败鸟
回复

使用道具 举报

发表于 2011-5-23 23:28:17 | 显示全部楼层
頭目大人要多休息啊...
回复

使用道具 举报

发表于 2011-5-23 23:28:56 | 显示全部楼层
之前本来想用伤害响应的办法,后来发现伤害为0根本无法触发响应,于是就用了搜索的笨方法,哎哎,多走一步就好了
回复

使用道具 举报

 楼主| 发表于 2011-5-23 23:29:10 | 显示全部楼层
引用第2楼沧海流星于2011-05-23 23:24发表的  :
我是用Marker做的

2个建筑互放Buff,使得对方的Marker的施法者为自己,
不过问题是A建筑身上的buff施法者是A,B身上的buff施法者也是A
,单向了,于是,我失败鸟


显然,你还不知道Marker的正确用法啊。Maker和Buff其实并没有什么直接关系。

顺便,我修改了原帖,把漏掉的一个法子加上了。头疼中果然很多东西忘了啊。其实我一开始准备了很多方案并打算逐一分析他们的优劣的。
回复

使用道具 举报

发表于 2011-5-23 23:59:07 | 显示全部楼层
啊……四夕水也开始觉得头痛了……如此大的信息量又要消化一阵了。

头目好好休息,祝愿头目早日康复。
回复

使用道具 举报

发表于 2011-5-24 21:37:52 | 显示全部楼层
辛苦了哥们儿
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 19:24 , Processed in 0.055405 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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