偶久网

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索

网站魔兽热门地图

查看: 33444|回复: 119

自定义技能制作教程

  [复制链接]
无冕之王
发表于 2008-8-20 14:55:41
自定义技能制作入门与进阶


首先声明
1.本帖是写给那些对WE有一定了解,喜欢做自定义技能,又苦于无从下手的兄弟们看的。如果你看下边的内容有些吃力,不妨先看看这个。 WE入门.chm (2.21 MB, 下载次数: 5975)
2.本帖超长,因为自定义技能绝非三言两语就能说明白的,即便是下边这数万字也仅仅讲出了一点皮毛而已,如果你不是对WE有着超常的热心和耐心,就请看到这里为止吧。
3.由于本人水平尚停留在进阶的阶段,所以高级部分就实在无能为力了。另外,由于本人水平所限,免不了有写错的地方,欢迎大家提出来,帮我修正。

言归正传,继续说我们的自定义技能。一般来说,自定义技能按是否使用触发器及J代码,可以分为无T技能,T技能和J技能。实际上,J能完成的功能大部分T都可以完成,只不过,优秀的J代码具有更高的效率。在本帖中,我们只讨论无T技能和T技能,等你能真正熟练的运用触发器了,再学JASS也不晚。

第一章 基础篇

盖高楼要先打好地基,下边先来了解一下基础的东西(估计大部分人都已经了解了,原谅我再废话一遍吧,以后的章节是要用到这些东西的哦。)
一. 原有技能的组成部分
要想自己做技能,首先要知道原有技能是由那些部分组成的,而我们做自定义技能,一般也是在某个或某些部分上做改动,或者模拟它们。
一般来说,一个技能需要注意到一下几个方面:
1.施放方式。
2.目标选取方式。
3.目标位置关系。
3.施放技能时的特效。
4.技能的实际作用。
二.技能分类:
按施放方式不同,分为主动技能(如医疗波)、自动技能(如灼热之箭)和被动技能(如闪避)。
在做自定义技能时,选择的引导技能(或者叫做马甲技能、傀儡技能等)需要跟自己想要制作的技能在施放方式上相同。如果你想做一个被动技能,而使用主动技能做引导,是很怪异的。而使用被动技能来制做主动技能更是不可能实现的。
按目标选取方式不同,分为单位目标技能(如妖术)、无目标技能(如战争践踏)、地点目标技能(如暴风雪)。
某些技能可以同时属于单位目标技能和地点目标技能,例如腐臭蜂群。
按目标位置关系不同,分为单体技能、线形技能(如震荡波)、面形技能(如暴风雪、战争践踏)、链形技能(如闪电链)。
需要说明的是,修改线形技能的起始宽度和终止宽度可以做成扇形或者锥形技能。自定义技能可以参照这几种方式设计。不过,选择的引导技能和想要制作的技能在目标位置关系上不必相同。比如群体风暴锤属于面形技能,但通常使用风暴锤做引导技能,风暴锤就是单体技能。
按技能作用有益还是有害分为正面技能和负面技能。
如果你想让电脑自己会使用你的自定义技能,那么选择引导技能的时候就要考虑这个了。
按技能作用的状态是否持续分为即时技能和状态技能。
按技能作用是否需要持续引导分为瞬发技能和持续技能。
需要注意的是,即时技能不等于瞬发技能,状态技能也不等于持续技能。举例说明一下:暗夜的恢复不需要持续引导,所以是一个瞬发技能,同时它造成目标在一段时间内生命持续恢复,所以又属于状态技能。暴风雪每砸一下,伤害立即完成,他属于即时技能,但需要持续引导,所以是持续技能。
三.原有技能的常见项目及意义
声音
音效:技能音效。
音效(循环):持续技能的循环音效。

文本
名字:编辑器里的名字,在游戏中不可见。
名字 - 编辑器后缀:仅在编辑器中显示,一般用于区分同名技能。

提示工具 - 学习:学习技能时的提示文本。 通常用于显示技能的名字、下一等级和学习快捷键。

提示工具 - 学习 - 扩展:通常用于现实技能的详细描述。
提示工具 - 普通:正常状态时的技能提示文本。

提示工具 - 普通 - 扩展:参照学习-扩展。

提示工具 - 关闭:激活技能的提示文本。

提示工具 - 关闭 - 扩展:关闭或取消激活技能的提示文本。

命令串 - 使用/打开:用于发布相应技能动作的命令串。

命令串 - 关闭:同上

命令串 - 激活:同上

命令串 - 取消激活:同上

热键 - 学习:学习技能的热键。

热键 - 普通:使用技能的热键。

热键 - 关闭:关闭技能的热键。

显示
图标 - 学习:学习技能的图标。
图标 - 普通:使用技能的图标。

图标 - 关闭:关闭技能的图标。

按钮位置:技能按钮在右方功能区的位置。
功能区为3行4列的方格,第一列的X坐标为0,第4列X坐标为3。行的Y坐标也是从0开始的。如果多个技能拥有相同的按钮位置,则排列顺序常变的不可预料,所以应该尽量安排好按钮位置。
效果 - 投射物图像:技能投射物效果。只对有射弹轨迹的技能有效(如风暴之锤、灼热之箭)。
效果 - 射弹速度:技能投射物飞行速度。

效果 - 射弹弧度:射弹弧度 = 技能投射物飞行最大高度/平面位移。

效果 - 射弹自导允许:技能投射物可以自动跟踪目标单位。

效果 - 闪电效果:只对链形技能有效。设置单位之间的连接效果。

效果 - 区域:地面区域的效果影响。只有闪烁和传送类技能该项有效。

效果 - 施法动作:施法者在施法过程中所做的动作的动画名。

效果 - 施法者:对施法者附加的特效模型名。

效果 - 施法者 - 附加数量:对施法者附加的效果数量。 0表示使用效果默认值。

效果 - 施法者附加点:对施法者的效果附加点位置。

效果 - 目标点:对目标点的效果附加。 只有以点为目标施放技能才有效。

效果 - 目标:对目标单位的效果附加。 只有以单位为目标施放技能才有效。

效果 - 目标 - 附加数量:对目标单位附加的效果数量。 0表示使用效果默认值。

效果 - 目标附加点:对目标单位的效果附加点位置。

效果 - 特殊:技能指定作特殊用途的效果。 不是每个技能都有效,而且对各技能的用途都不一样。

效果 - 特殊附加点:特殊效果的效果附加点位置。

附加点:
hand 手

foot
real 后肢(四足生物
)
weapon 武器

left right
修饰手脚等附加点,添加在前面和后面都可以

head
头部
overhead 头顶
chest 胸部
origin 脚底

turret 炮塔头部

mount 坐骑头部
eattree 吃树时树的附加点所在位置

rally 聚集点(设置聚集点在该单位身上时的聚集点附加位置
)
sprite 只有血法和建筑物有该附加点

first second third fourth fifth sixth 修饰sprite的后缀
状态
种族:技能所在种族分类。
英雄技能:是否作为英雄技能。

物品技能:是否作为物品技能。

等级:技能的总等级数量。

学习等级:技能初始学习需要的英雄等级。 等级高于或等于6级的技能才能对魔免单位施放。

跳级要求:学习技能所需等级间隔。 0表示取默认值(平衡常数中设置,默认为
2)
魔法偷取优先权:一般来说是作为对战AI中判断使用。

魔法效果:对目标单位附加的魔法效果。

区域持续效果:对目标区域的持续性效果。 只有对区域持续效果的技能才有效。 如暴风雪、地震。

目标允许:可以对其施放的对象类型。以下面的分类:同行之间为Or关系,异行之间为And关系,该行不选则取默认值。

例:只选择无敌则表示目标允许无敌的存活的别人的单位(空中地面建筑)。此时原默认值-可攻击将不再起作用,单位只能对无敌的单位施法,而其它未被改动的行则采用默认值。

没有(就是不允许对任何目标产生作用。如果是无目标或点目标技能,技能可释放,有特效被创建,但是无实际效果。如果是单位目标,则技能无法施放。)
残骸 物品 地形 树木 墙 桥 装饰物 空中 地面 建筑 守卫 (默认空中 地面 建筑
)
存活 死亡 (默认存活
)
无敌 可攻击 (默认可攻击
)
联盟 友军(不包括玩家单位) 敌人 玩家单位(就是与技能施放者属于同一玩家的单位)中立 自己 别人 (默认别人
)
英雄 非英雄 (默认全选
)
古树 非古树 (默认全选
)
自爆工兵 非自爆工兵 (默认全选
)
机械 有机 (默认全选)

需要注意的是,目标允许不但与此项设置有关,也与技能本身的隐藏限制也有关,比如回城只能对城镇大厅施放,死亡缠绕不可能治疗非不死单位,等等。同样目标类型不但与单位的作为目标类型有关,还与目标分类有关。
魔法施放时间:魔法施放前导时间,但常被用来作为其他数据使用。 如暴风雪中作为波次间隔时间使用。
魔法施放时间间隔:即技能冷却时间

持续时间 - 普通:魔法效果对普通单位的持续时间。 也常被用来作其他用途。

持续时间 - 英雄:魔法效果对英雄单位的持续时间。 也常被用来作其他用途。

魔法消耗:就是魔法消耗呗

施法距离:最大的施法距离

影响区域:一般作为范围性技能的影响范围大小,对于线形技能指起点宽度。

科技树
检查等价所属:检查等价从属关系。如A从属于B,那么该项为True时A可以代替B,而B不能代替A;为False则两者可以相互替代。
需求:使用技能所需的科技项目,可添加多个。

需求值:所需科技项目的等级(科技)或数量(单位),可添加多个,与科技树需求依次对应。


以上这些是大部分技能共有的项目,是作为技能设计者必须掌握的。除此之外,还有一些个别技能特有的设置,后边的实战篇会有一定解释。

第二章 设计篇

个人认为,设计技能是自定义技能制作中最难的一关了。一个技能的好坏,最关键的也是要看设计的怎么样。如果想提高自己的设计能力,可以从下边着几点着手:
1.对众多游戏的技能有所了解,以便参照;
2.同时要对魔兽里边原有的模型尽可能多的熟悉,这样,设计的特效才可能会漂亮;这需要长时间的接触,不断研究别人的技能才能做到,没有捷径可寻。
3.对触发器能熟练应用,至少常用的语句要了然与胸。对于这一点,我会在后边的实战篇中逐步介绍。

第三章 制作篇

设计好了技能,就需要把他制作出来,下边我们就大致说一下具体步骤。
一.选取引导技能
一般来说,我们需要制作的技能大部分都是可见的,那么,就需要为它选择一个引导技能,用于显示文字描述,提供合适的施放方式和目标选取方式。如果没有引导技能,那么制作的技能只能是不可见的被动技能。
正如前边所说,引导技能在施放方式上必须与需要制作的技能相同,同时,也必须在目标选取方式上相同,否则将变的怪异或者难以实现。另外,选取引导技能时还要兼顾技能的实际作用,尽量选择实际作用与期望的作用相近的技能来引导:正面的自定义技能,最好采用正面引导技能来做,否则电脑不会自动施放,负面技能也一样;最好不用状态技能来制作即时技能,也不用即时技能来制作状态技能,否则,电脑可能会用起来没完;瞬发技能可以引导持续技能,比如用震荡波引导,辅助单位释放火焰雨,那么主角放了法术就可以移动了,火焰雨不会被打断。
二.制作特效
这一点应该是制作过程中最困难的了,不过只要前边设计的到位,完成起来也会比较顺利。
特效制作可以直接使用原有的模型效果,也可以使用多个相同或不同模型来拼凑。一般来说,前者需要作者对模型更加了解,而后者则需要一定的算法基础,尤其是拼凑动态特效的时候,几乎不可避免的使用触发器。
先说一下无T的特效制作。暴风雪、火焰雨是制作区域特效的好帮手,更换模型,就能很简单的制作漂亮的区域特效。女巫的减速则常用来制作目标身上的标记特效和提供BUFF。
对于有T的特效制作,一般是采取创建特效、闪电效果、漂浮文字或者特效单位的方式来实现。创建特效使用比较方便,但是需要事后删除,否则会堆积在地图中(即便出现一下就不见了),使游戏运行越来越慢(即内存泄露),而且,特效只能创建在地面上或单位身上,不能自由设置高度。创建特效单位是实现把需要的模型赋予某个辅助单位,在需要的时候创建他,一般只需要加一个生命时钟就可以方便的解决泄露问题,而且可以方便的设置高度,旋转角度等,还可以指定播放哪个动画。创建闪电效果比创建特效略微复杂一点,而且使用原版的WE也不可以设置高度,不过WOW8提供的加强UI解决了这个问题。创建漂浮文字可以让你的技能显起来更酷。以上提到的这些方法会在后边的实战篇详细讲解。
在实际应用中,需要根据所需的效果来选择使用哪种方法,比如需要绑定一个特效到单位身上,一般就采用创建特效的方法,而需要对特效进行复杂设置时,最好使用创建特效单位。创建闪电效果和漂浮文字意图很明显,就不赘述了。
顺便说明一下,有时候特效不能直接在技能修改,或者需要修改魔法效果,那么就要到魔法效果页面去找咯。
三.产生实际效果
制作技能通常不只是为了好看,产生实际效果才是我们的最终目的。那么要怎样做呢?这就要看是哪种效果了。
如果是生命伤害类的,可以使用引导技能直接造成,也可以使用伤害目标/范围语句进行T伤害,甚至可以使用某个单位攻击目标造成伤害。另外也可以直接设置单位生命值,但是这样不会触发单位受到伤害事件,如果单位死亡,也不算你杀的。因此除非特殊设计,否则尽量不用这个方法,使用这个方法的时候,也尽量保证不造成目标死亡。
如果是魔法伤害类的,一般需要使用引导技能或辅助技能造成(比如法力燃烧),或者直接设置目标单位的魔法值。
如果是状态类,一般需要使用能提供类似状态的技能改,如果需要的状态只是某个技能中的一部分,那么保留需要的部分,把别的效果改没了,或者该成持续时间很段,效果很弱;如果需要的状态一个技能满足不了,可以使用多个技能拼凑。如果没有类似的技能可改,那只有尝试使用T效果了,一般需要用减速提供一个假的特效和BUFF,然后用T实现实际效果。
说了这么多,基本上把自定义技能的制作思路说了一遍。但是如果到这里结束的话,我估计脑袋要被大家的板砖拍裂了。为了让大家更好的理解上边的话,也为了让大家不太枯燥,下边我们就进入实战篇边演练,边学习吧。
[ 本帖最后由 无冕之王 于 2008-8-20 15:03 编辑 ]

评分

1

查看全部评分

无冕之王
 楼主| 发表于 2008-8-20 15:39:20
第四章 实战篇(一)

这一章将介绍几个简单的无T技能,从简单的开始学起吧。
实例1.
技能名称:千里冰封 (16.99 KB) 千里冰封.w3x (16.99 KB, 下载次数: 656)


期望效果:对目标区域施放一个技能,在该区域制造若干个寒气团,并爆裂开,对附近的单位造成伤害。
期望技能分类:主动,点目标,范围伤害,负面技能,即时技能,瞬发技能。
以上这几点,除了瞬发与暴风雪不符合,别的都与暴风雪一样,而暴风雪经过修改,可以近似为瞬发技能。所以,我们用暴风雪来做引导技能。
在做修改以前,我们先看一下暴风雪的几项关键数据
    数据-每波伤害                    顾名思义,就是每下一次雪,对目标区域内的每个单位造成多大伤害
    数据-每波最大伤害             当每波伤害*受伤害的目标数量大于每波最大伤害时,则每个目标受到伤害等于每波最大伤害/受伤害的目标数量
    数据-每秒伤害                    没发现什么作用
    数据-波次数量                    决定下多少波雪
    数据-碎片数量                    只决定创建特效的数量,与伤害无关

我们不用任何触发器,对暴风雪进行如下修改:
技能部分:
1.gif






把波数改成1,模拟成瞬发技能。改多碎片数量,可以铺满目标区域,不会显得单薄。在名字面前加1,在添加技能的时候,它会跑到技能列表的最前边,方便查找。适当修改影响区域以达到需要的效果。设置英雄技能项目为FALS,则该技能作为单位技能出现。

区域效果部分
状态 - 区域持续效果 项目不可以直接修改模型,我们需要找到魔法效果页面里的人族 -> 区域效果 -> 暴风雪(效果)项目,然后做如下修改。


修改特效模型为霜冻呼吸的投射物

把这个技能赋予一个有足够魔法的单位试验一下效果。在测试以前记得删除默认的地图初始化的触发器,否则会出问题哦。


好了,通过这个简单的例子,我们了解了暴风雪几项关键数据的意义,知道了如何修改暴风雪的区域特效模型。另外,提到了如何把需要的技能提到技能列表的前边,怎样把英雄技能变成单位技能。

思考:
1.怎样把单位技能变成英雄技能?
2.我们只修改了区域特效,但是目标身上的BUFF并没有改变。研究一下,怎样改变BUFF图标和说明文字呢?
2.看一下火焰雨的项目,怎样把火焰雨的特效改成地狱火掉下来的效果呢?


实例2.
技能名称:御剑术 御剑术.w3x (17.01 KB, 下载次数: 468)

期望效果:让多个小剑在自己身边绕动,对周围敌人造成伤害。
引导技能:蝗虫群
看一下蝗虫群的几项主要数据:
数据 - 单位释放间隔
数据 - 每个目标最大蝗虫数量
数据 - 生命偷取参数
数据 - 生命偷取极限
数据 - 蝗虫单位类型
数据 - 蝗虫群数量
这些数据解释的都很明白,我就不过多说明了。

蝗虫群这个技能比较特殊,他的伤害不仅与技能的设置有关,还与一个相关单位类型 - 蝗虫有关。下面分别设置它们。
技能的设置:

因为根据技能描述,不应该有吸血的效果,所以我们把生命偷取参数变成0。适当调整蝗虫数量。修改技能的说明文字和图标,这里只修改普通状态即可,因为只有自动技能和可开关技能才有关闭状态。小括号里的|cffffcc00L|r在游戏中只有L是可见的,其他的是字母L的染色代码。其中|c表示这是染色代码,前两个FF是两位16进制数,代表透明度,00为完全透明,FF为完全不透明,后边依次为两位红色值,两位绿色值,两位蓝色值,最后的|r代表还原到默认格式。

下边修改蝗虫的设置,在单位面板 -> 不死族 -> 单位列表下找到它,然后做如下修改:




蝗虫群技能实际是放出若干个蝗虫,让它们攻击敌人一次以后再飞回来。因此,伤害值由蝗虫的基础伤害和伤害色子决定。修改模型文件为小剑的模型。修改染色值可以让模型看起来是金黄色的。

删除默认的触发器,然后测试一下吧。



在这个例子里,我们了解了蝗虫群的独特伤害方式以及主要数据,知道了如何修改技能的说明文字和图标,如何修改文字和模型的染色值。不过要熟练应用染色值,还需要多加试验。

思考:
1.利用蝗虫群的独特伤害方式,还有什么样的改法?如果把蝗虫改成大范围攻击,修改他的投射物图像,会是什么效果?
2.|cffff00ff00|rff   显示出来是什么效果?


实例3.
技能名称:静电之球 静电之球.w3x (16.73 KB, 下载次数: 432)



期望效果:向敌人抛射一个静电之球,对其造成伤害,同时使其陷入麻痹状态。麻痹状态下无法进行操作,但可以受到别人的攻击。
伤害效果很多方法可以模拟,关键是麻痹效果的模拟。正好,眩晕效果可以模拟。结合期望技能的释放形式,一下子就能想到引导技能:风暴之锤。
风暴之锤的数据比较简单,就不详细说明了,我们来看下改动的关键项目


下边是魔法效果的改动



前三项是目标的BUFF提示和图标,后边的是目标身上的特效和特效附加点。如果你仔细看过了前边的内容,相信对这个不再陌生了吧。
好了,通过这个技能我们知道了怎样修改目标身上的BUFF,再一次了解了通过魔法效果设计特效的方法。是不是很简单呢。
思考:
1.怎样修改麻痹时间呢?如果你想不起来,再看看基础篇里的详细介绍吧。

2.如果要把麻痹效果改成冰封,即,目标受到冰封后,不能攻击,也不能被攻击。要怎么做呢?提示一下,使用睡眠技能修改,看看怎样设置无敌时间呢?

无T技能到这里就告一段落了,下一章我们将详细讲解T技能的设计与制作。
[ 本帖最后由 无冕之王 于 2008-8-20 21:35 编辑 ]

评分

1

查看全部评分

无冕之王
 楼主| 发表于 2008-8-20 16:13:33
第五章 实战篇(二)

本章开始剖析几个简单的T技能,了解T技能常用的触发器语句。这里暂时不接触内存泄露问题的处理,后边的章节会有详细讲解。

进入实例分析之前,先介绍几个测试相关的触发器语句:

一.事件
1.某玩家按下LEFT键
用于调试技能,可以在后边的动作里设置相关变量,创建单位,添加技能等等。按下上、下、左、右可以设置不同的动作,避免反复启动程序,缩短测试时间。另外,还可以做游戏中某些功能的快捷键,比如加点、切换背包等等。
2.某玩家跳过电影
用法同上。
二.动作
1.可见度-禁用战争迷雾/禁用黑色阴影

战争迷雾和黑色阴影在实际游戏中很重要,但是测试地图的话通常希望整张地图都是可见的,那么禁用他们就可以了。一般使用地图初始化作为事件。
2.游戏-对玩家组显示文本消息
有时候难免出现触发器实际效果和预期不同,但是对于一大串语句,找到问题所在不是件很简单的事。我们可以在里边加入这条语句,用于显示变量的改变情况,或者显示一个字符串常量来了解与该语句所在位置是否被执行过,执行过几次,等等。

实例4.
技能名称:群体风暴之锤 群体风暴之锤.w3x (18.87 KB, 下载次数: 501)

单体变群体是最基本的T技能之一。其实绝大部分单体变群体原理是一样的,这里我们以风暴之锤为例子进行一下讲解。

几乎所有单体变群体都是以原单体技能来引导的,这里我们当然就使用风暴之锤了。关于技能本身的数据修改就不多说了,下边看一下触发器部分:
20080205_5b1dfc3fb3215d30f957rl2LW6FTgb4V.gif

我们以单位发动技能效果为事件。关于技能施放的事件有很多,我们先详细了解一下。
1.单位准备施放技能:当你完成施放技能的操作时,该事件发生,这时候技能还没施放出去。如果目标在射程外,技能施放者会自动试图接近目标并施放技能。如果此时单位被击晕或接受到别的命令,将不再施放技能。
2.单位开始施放技能:此时技能仍然没有被施放出去,单位开始站立原地,并播放施法动画。如果技能有前导时间,效果更明显。如果此时单位被击晕或接受到别的命令,将不再施放技能。
3.单位发动技能效果:技能真正被施放出来,技能特效被创建(如果有特效的话),CD时间被占用,魔法被消耗,但实际效果尚未产生,如果此时目标无敌,实际效果一般不会实现(允许对无敌目标施放的技能除外,如医疗)。
4.单位停止施放技能:不论是自然结束还是被打断持续引导(被打断前导后,技能不会被施放出来,当然也不会有停止施放的说法),都会触发本事件。
5.单位释放技能结束:指自然施放结束。
很多人喜欢用单位开始施放技能做事件,其实这是错误的。因为只要在施放技能后马上按S键,群体效果会产生,但是引导技能却没有被施放,这样CD时间就没有意义了。

条件里的第一项是检查施放的技能ID,如果去掉,所有的技能都会执行后边的语句。第二项是检查技能释放者,如果去掉,辅助单位释放技能也会触发动作,造成无限循环,或到目标全部死亡而停止,这显然不是我们要的效果。

下边说动作。首先需要设置一下目标,因为有多个目标,所以我们用一个单位组来纪录它们。然后选取单位组内的每个单位做同样的动作。但是有一个例外,就是最初的技能施放目标,如果也对它做动作,那么它会受两次攻击,所以要加如一个条件判断来剔除它。对于其他的选取单位,首先要创建一个辅助单位,然后隐藏创建的单位,因为如果看到它就漏陷了。接着设置生命周期,否则该单位会一直存在在地图中,使游戏越来越卡。接着为它添加技能,其实如果是单位技能我们可以直接在单位编辑器中添加,英雄技能则只能在触发器中添加,但是为了统一,建议全部T添加。最后一步命令辅助单位向选取单位施放技能。
如果只做完上边这些,你会发现没有产生效果。这是因为辅助单位没有足够的魔法来施放技能,我们需要对它进行如下修改:
4.GIF (780 Bytes)
2008-2-5 19:52


注意最大值和初始值都需要设置,很多新手容易忘记设置初始值,发现不行也不知道哪里错了。
测试一下看看:
5.GIF (57.47 KB)
2008-2-5 19:52


怎么是中心开花,而不是一大把一起出去呢?因为在事件中我们使用了单位发动技能效果,如果把辅助单位创建在施法者面前会导致技能施放不同步,所以我做了这样的改进。

在这一实例里,我们学习了与技能施放相关的几个事件,知道了单位组的用法,了解了单体变群体的一般思路。当然,这只是一个最基本的骨架而已,一个完美的技能还要考虑到诸如排漏,等级同步等问题,这些再后边的例子中我们逐步在讲解。
思考:
1.如果英雄技能有多个等级,我们希望辅助单位施放的技能与英雄的技能等级相同,要怎样设置呢?

2.这里我们没有剔除死亡单位,没有使用变量纪录技能目标,在使用时可能会出现效果不全的BUG,要怎样改进能?
3.按照这个思路,自己做一个死亡缠绕的群体技能,要求单体技能作为治疗效果时,群体技能也是治疗性的,单体作为攻击效果时,群体的也是攻击性的。


实例5.
技能名称:蜘蛛地刺 模拟星际蜘蛛的地刺.w3x (18.4 KB, 下载次数: 376)


引导技能:致命一击
辅助技能:穿刺、腐臭蜂群、变熊。
这里我们来模拟一下星际里边的蜘蛛,当蜘蛛钻入地下以后,能使用地刺攻击一条直线上的敌人。因为这是一个被动技能,我们用致命一击来做个空壳,起名字叫“地刺说明”,起到展示说明文字和标记作用。穿刺提供地刺特效,因为不需要眩晕效果,所以不能直接用它提供伤害,这就需要把目标允许定为“没有”,这样就不会对其他单位造成伤害了。为了配合由近到远的伤害顺序,我们用腐臭蜂群提供伤害。变熊实现蜘蛛的地上与地下形态转换。这里没有用蜘蛛的钻地技能,是因为钻地不支持两种具有不同技能的形态,而变熊则能完美支持这一点。下边我们详细看一下触发。 9.GIF (8.15 KB)
2008-1-12 04:01


触发很简单:任意单位被攻击,如果攻击单位有“地刺说明”这个技能,那么创建辅助单位释放特效,再创建一个辅助单位,造成伤害。
在这个例子里,我们需要了解:
1.致命一击是一个好的被动引导技能,尤其是做空壳技能时,需要改变的设置很少。其他也适合做空壳技能的还有重击、闪避、醉拳等。
2.当不希望某个技能进行伤害的时候,可以设置它的目标允许为“没有”。
3.在变身类技能中,钻地自动提供隐形效果,变熊能支持两种形态具有不同技能。
4.在被动技能中,很多时候可以用“任意单位被攻击”作为触发事件。但需要注意的是,这一事件被触发的时候,攻击动作处于刚开始的阶段,目标并没受到伤害。如果这个时候目标突然死亡的话,本次攻击会被打断,攻击时间间隔没有被消耗,攻击者会立即转而攻击别的目标。如果攻击者是远程单位的话,还会发现投射物不能被创建。
5.在“任意单位被攻击”这一事件中,触发单位、攻击单位、被攻击单位会被捕捉,而且,触发单位和被攻击单位是同一个单位。
6.在创建辅助单位的同时,最后创建的单位会被捕捉,利用这个把创建的单位设置成定时的生命,就能解决内存泄露问题。
思考:
1.事件 - 任意单位被攻击
条件
动作 - 命令攻击单位对触发单位造成500点普通伤害

上边这个触发器有问题吗?是什么样的问题呢?


2.变身类的技能还有哪些?他们各有什么特点?

[ 本帖最后由 无冕之王 于 2008-8-20 16:24 编辑 ]

评分

1

查看全部评分

无冕之王
 楼主| 发表于 2008-8-20 16:28:15
实例6.


实例7.
技能名称:自动多重箭 自动释放的多重箭.w3x (18.4 KB, 下载次数: 443)

引导技能:灼热之箭
辅助技能:魔法书、弹幕攻击
有一定WE基础的人都知道,多重箭一般是用弹幕攻击改的。但是弹幕攻击技能是一个被动技能,如果要改成自动释放技能,就需要选择一个自动释放技能做引导了。同时,引导技能还要符合以下几点:1.该技能是附加在攻击中自动释放并不会造成状态的,而不是单独释放造成状态的那种(比如减速)。2.该技能不能和弹幕攻击冲突,也就是说,不能开启该技能后导致弹幕攻击失效。综合以上几点,我们找到了一个合适的引导技能——灼热之箭。另外,单位被添加弹幕攻击后,不能被玩家看到,这样看起来才象引导技能在起作用。怎样隐藏这个技能图标呢?着就要用到魔法书了。对于一个被动技能(含光环)来讲,它是自动起作用的,而不需要点选图标后释放。我们可以把它添加到魔法书中,然后对目标玩家禁用该魔法书,这样魔法书的图标就看不到了,但魔法书中的技能仍然有效,而不是一同被禁用。在需要空出位置给其他必须可见的技能,或者因为某些原因不想让玩家看到这个被动技能的时候,就可以用这个方法巧妙的隐藏它。

现在开始设置技能项目,首先说一下弹幕攻击,这个技能实际上是一个多重箭,看一下它的主要项目:
4.GIF (1.74 KB)
2008-3-22 15:12


最大目标数是指多重箭的数量,但是需要注意的是实际效果比指定数量多2,也就是说,设定为1,实际射3支箭。为什么呢?我也不知道!呵呵,这样的就导致该技能不能做出射2支箭的效果,因为如果该项目设置为0时,实际上就是不限制目标数量,有多少,射多少。
最大输出伤害是指所有目标受到伤害的总和。如果该值设置的太小,则可能导致实际攻击目标数量减少。需要说明的是,设置为0不是没有伤害,而是指无限制。
目标伤害没有发现什么效果,不论设置成多少,实际伤害都由攻击者的攻击力决定。

然后是魔法书,它的主要项目有:
5.GIF (2.14 KB)
2008-3-22 15:12


共享CD间隔是指,如果魔法书中有多个技能,不论使用哪一个,其他技能都会一起参与冷却,如果设置为FALSE,则使用其中一个技能不会影响其他技能。
最大法术数量影响到显示的图标数量,如果添加很多法术,就要相应修改这个数值,否则将导致不能正常显示
最小法术数量没有发现什么效果。
法术列表,就是纪录的法术呗。

那么怎样利用灼热之箭的开关来设置弹幕攻击的有效和无效呢?这就需要触发器来完成了。看看我们是怎么做的?
首先在地图初始化时添加下边这条语句:
1.GIF (1.38 KB)
2008-3-22 15:12


当然,如果涉及到别的玩家,依次添加就可以了。
然后创建一个新触发器,用于纪录单位发出的命令。
2.GIF (5.9 KB)
2008-3-22 15:12


单单这样还不行,还需要另外一个触发器来和它配合:
3.GIF (8.19 KB)
2008-3-22 15:12


为什么要判断单位的魔法呢?这是为了让技能看起来更逼真,即:当单位的魔法不足以释放一次引导技能的时候,删除魔法书以取消多重箭的效果,当增长到足够量以后(等于引导技能的魔法消耗),再添加该技能。

好了,在这个例子中,我们知道了非自动技能改自动的一般思路,知道了怎样隐藏被动技能,了解了弹幕攻击的主要项目,了解了一个重要的工具技能——魔法书。

思考:
1.怎样把一个普通的主动技能改成自动技能呢?提示:需要用到“单位被攻击”事件。
2.如果想把多个被动技能的效果合成到一个技能上需要怎么做呢?传统的方法是把这些技能纪录到魔法书中,然后用闪电球(新)来封装魔法书。但是这样导致该技能图标总是暗的,参照上边的方法,有什么好的改进思路吗?

评分

1

查看全部评分

无冕之王
 楼主| 发表于 2008-8-20 16:29:10
第六章 进阶知识

经过前边几章的讲解和演练,相信各位已经对自定义技能有了初步的了解了,同时也能做出一些简单的自定义技能来了。但是,这些对于一个想在自定义技能,尤其是T技能上有进一步发展的人来说,还是远远不够的。下边我们就一起来聊聊进阶知识。
首先说一下编程习惯,也许有人会说这都是细枝末节的问题,但是如果不注意,恐怕很难跻身高手行列。
一.变量类型和变量命名
WE中用到了很多类型的变量,当然有许多变量类型本质上是一样的,但是我们尽量还是要在命名上把他们区分开。按照大部分编程语言的惯例,使用3个字母的英文缩写来做变量名前缀,以便区分。另外该变量代表什么,就用拼音或者英文来命名它,而不要胡乱打几个字母。比如,布尔型的通用后缀为bln,假如有一个布尔型变量用于纪录单位是否存活就可以这样命名:blnCunhuo或者blnLive;又如一个纪录英雄的单位类型变量可以命名为 untYingxiong或者untHero等等。这样做是为了方便日后自己修订地图,也方便别人看懂自己的代码。如果命名没有规则,很可能时间长了自己都不知道该变量代表什么了。
下边是变量类型的中英文对照和建议前缀表。
英文名称
中文名称
建议前缀
boolean
布尔型(用于真/假判断)
bln
destructable
可破坏物
des
dialog
对话框
dlg
button
按钮
btn
texttag
漂浮文字
txg
integer
整数
int
item
物品
itm
leaderboard
排行榜
lbd
player
玩家
ply
force
玩家组
frc
location
位置(点)
loc
real
实数
rel
rect
地区
rec
effect
特效
eff
string
字符串
str
terraindeformation
地形
tmt
timer
计时器
tmr
timerdialog
计时器窗口
tdg
unit
单位
unt
group
单位
grp
playerscore
玩家积分
pls
二.触发器的整合
有不少人在刚接触WE的时候基本去注意触发器的整合,想到几个动作,就去新建一个触发器。甚至光初始化就有好几个,为阅读增加难度不用说,还因为执行顺序不可预料而增加了出现BUG的机会,想去修正有很难找出毛病所在。为了让自己的触发器变的有条理,就需要把多个触发整合到一个上边,这样做还有一个好处就是,可能有几个不同作用的触发器组他们有一个或几个触发器事件相同,那么使用条件判断依次去执行各动作,不但条理清楚,而且为维护提供了方便。当然,如果触发器本身条件判断过于复杂,那么还是让他们分着吧,弄到一起反到容易出错误。
三.尽量排除内存泄漏
什么是内存泄漏呢?简单来说,我们在WE中要用到很多数据,这些数据有时候不用变量纪录,或者使用变量纪录了没有清除,那么这些数据就可能堆积在内存中,内存中的有效空间越来越少,游戏就越来越卡,甚至跳出来。对于单个技能的示例来说,内存泄漏显的微不足道。但是我们做技能最终目的还是应用的成图中,大量技能反复使用,内存泄露就成了大问题,所以应当养成排漏的习惯。
要想知道怎么排漏,就先明白那些数据需要清理,那些不需要。一般来说,基本的数据类型不用特别清理。








我们都知道,自定义技能除了实际效果要新颖、没有严重BUG之外,最重要的就是特效要漂亮了。当然,这里所说的漂亮不仅限于华丽,还包括素雅,灵动,简约等等。实际上,在成图中,太华丽的技能反而不多,因为在照顾视觉感
受的同时,更应该考虑到运行速度、触发器冲突等问题。
在前边已经提到过,特效可以用原模型的固有效果,也可以使用多个模型一点、线、面的方式拼凑出新效果。使用原模型的固有效果创造优秀的特效需要很扎实的基本功,多看,多学,多做,尽可多能的掌握原有的模型,包括直接使用时的效果,经过缩小、放大、旋转之后的效果,静止时是什么样子,缓慢移动是什么样子,快速移动又是什么样子。没有长期的浸淫是很难做到这一点的。
使用多个模型拼凑特效,相比较而言需要基本功少一点,但是需要一定的数学和编程基础,总的来将也不简单。在这一章了我们简单介绍一下使用固有模型效果的基本方法,着重讲解一下拼凑特效。

评分

1

查看全部评分

冰蓝幻想
发表于 2008-8-26 19:53:33
额..

LZ好辛苦..

我个看的昏..
狂风
发表于 2008-8-28 18:45:45
我要学学......
发表于 2008-9-10 22:18:38
深熬[p12]
炽阳
发表于 2008-10-6 01:48:54
你这么说我不晕是我运气
❀sunshin
发表于 2008-10-8 16:10:05
[p16] 眼睛花
快速回复 返回顶部 返回列表