|
楼主 |
发表于 2009-2-17 17:45:56
|
显示全部楼层
下面直接开始讲事件
一. 事件特征
1个触发器可以有多少个事件呢?答案是近乎"无限",当然是有上限的,不过具体是多少不知道,一般不用担心这个问题.因为无数前辈的伤害显示系统就是用动态注册(增加)一个触发事件来实现的,为什么要这样做呢?看看下面你就明白了.所有的事件都会执行触发内的条件判断,通过后执行动作.
二. 单位事件
单位事件有很多,分别为
[li]指定单位事件[/li][li]玩家单位事件[/li][li]任意单位事件[/li][li]单位进入区域[/li][li]单位离开矩形区域[/li][li]单位进入不规则区域[/li][li]单位离开不规则区域[/li][li]单位进入不规则区域(指定条件)[/li][li]单位离开不规则区域(指定条件)[/li][li]接近指定单位[/li][li]生命值变化[/li][li]魔法值变化[/li]
下面申明一下,触发器这个设计源于设计模式中的监听者模式,即生成一个监听器,监听某个事件的发生,从而针对发生这个事件的相关信息进行操作的编程思想.大家只要略有了解就行,不必深究,这个不是主题.下面将用到"监听"一词,在此说明而已.
由于指定单位和玩家单位以及任意单位事件有极大的相似性,下面将进行综合一起进行讲解.
指定单位事件顾名思义是为一个指定的单位注册事件,他只管一个单位.除了这个单位以外的单位它是无法监听到的.
如果我想监听一个玩家的所有单位该怎么办呢?当然就有了玩家单位事件.
如果我做想做出不管是任意单位死亡了 我都发送提示信息该用什么事件呢? 为所有的玩家都注册玩家单位事件吗?
正是如此,但是事件不就很多了吗?重复操作不就很麻烦吗? 没错,也正是由于如此,才有了任意单位事件.其实任意单位事件就是帮玩家1-16都注册了玩家单位事件,任意单位事件是16玩家单位事件的重复注册
指定单位事件 玩家单位事件
死亡 有 有
开始腐化 有 有
改变所有者 有 有
接受伤害 有 无
提升等级 有 有
学习技能 有 有
变得可重生 有 有
使用物品 有 有
获得物品 有 有
丢弃物品 有 有
出售物品 有 有
出售物品(从商店) 有 有
抵押物品(到商店) 有 有
被攻击 有 有
被营救 有 有
被选择 有 无
被取消选择 有 无
召唤一个单位 有 无
被召唤 无 有
准备释放一个技能 有 有
开始释放一个技能 有 有
停止释放技能 有 有
发动技能效果 有 有
释放技能结束 有 有
被运输机装载 有 有
注意到攻击目标 有 无
获取到攻击范围 有 无
开始训练单位 有 有
取消训练单位 有 有
完成训练单位 有 有
开始复活英雄 有 有
取消复活英雄 有 有
完成复活英雄 有 有
开始建筑升级 有 有
取消建筑升级 有 有
完成建筑升级 有 有
开始被建造 无 有
取消被建造 无 有
完成被建造 无 有
开始研究科技 有 有
取消研究科技 有 有
完成研究科技 有 有
发动指定物体目标指令 有 有
发动指定点目标指令 有 有
发动无目标指令 有 有
共计46个详细事件,因为任意单位事件实际就是玩家单位事件的拓展 所以不在此列出
看到这么多你晕了不, 9成的人会晕掉 因此这个只是个参考而已
抓几个主要的说:
1.接受伤害事件,下面这个是我当初的故事(当故事看就行,希望过去的经历给予初学的各位帮助,请主要理解如何在一个触发器为其他触发器添加事件,因为今天主要讲事件):
我们发现这个事件只有指定单位分类才有,玩家单位分类是没有的.但是如果我们做一个伤害显示系统,想把每一个单位受到伤害显示出来应该怎么办呢?很简单,那么我们要为每一个单位注册一个事件.没错,这并不是开玩笑,我们要为所有的单位注册接受伤害事件.那么我们如何为每一个单位注册事件呢?
那么我们来确定我们要做的事情,我们要做的事情是为地图中的单位注册接受伤害事件.我们首先把这个事情给做了.我们把地图上的所有单位都注册一遍这个事件不就行了吗?但是如果我们实现了刷兵系统,那么这种不确定性便出现了,地图上会不断的出现小兵.那么我们便要不断为新出现的小兵注册接受伤害.那么我们就要每隔一段时间,就重新注册一遍地图上每个单位的事件.这样问题似乎一切都解决了.
既然思路有了,那么我们开工吧.
首先,我们的触发器会每隔一段事件就会运行一次. 那么需要一个什么样的事件呢? 新建一个事件,在事件分类中我们很显眼的看见一个分类
"时间",非常幸运的我们发现一个"计时器周期" ,每隔XX秒触发一次. 那么事件我们搞定了.
然后便是动态的注册事件了. 我们要新建一个什么呢? 一个事件? 不,我们新建一个动作. 你可能会问,不是注册事件吗?为什么新建一个动作?
你觉得"注册事件"本身不就是一个动作吗?我曾经也觉得不是,但是被某人痛批一顿后,我错了,我找.动作那么多,我怎么知道是哪个动作?那么请擦亮眼睛看看,动作分类里是不是有一个查找分类,东西多了怎么找啊?版主说搜索啊,那么我就说查找吧. 输入"注册"啥也没有找到,郁闷....输入"事件".额.."触发器-添加事件" 还就只有这么一个.踏破铁鞋无觅处,得来总要废功夫.
为"SHANGHAI"添加事件,指定单位事件-接受伤害 ??单位接受伤害事件 ??单位到底是什么单位呢? 应该是地图上所有的单位,额,晕,怎么选地图上所有的单位呢?冒着被痛批的危险我又去问了..感谢上帝,没被批,估计这个问题问的有含金量.
答案是用单位组选取地图上所有的单位.然后逐一注册事件. 继续查找"单位组"..我改 ..我改 ..在不断的修改下我的终于弄了出来.
才这么两行,弄了我半天.
接下来可以弄伤害显示了.怎么显示呢,用游戏-发送消息.额 太... 游戏里面都是显示在被攻击头顶的 我继续查找"文字",漂浮文字那是跃然入眼啊.还能在指定单位的头部位置,说白了这个就是做伤害系统的.一次次疯狂测试偏移坐标后,终于弄出来了.怎么文字死死的不动.....我再问,在一句"自己看漂浮文字分类去"后,在那摸啊."漂浮文字-设置速率",总算被我找到了. 1:1800 飞得没影啊... 我调..0.1好了吧.. 飘了瓢了...怎么不消失啊... 一直飞..俄罗斯方块难道..我设置设置生命周期我看你还飞.晕还飞..难道还要设置禁止永久显示? 巨寒... 好了..终于啊 成功了.. 激动啊...
自此大功告成,多少天后看见网上某人发出伤害显示系统,人家那个比我还简约,效率还高好多,一个单位进入区域就把我那个计时器加单位组重复做很多次无用功的弄没了,还不说省了好多次枚举.把计时器加单位组的触发器替换成如下触发
严重申明:通过反反复复的研究,最终形成的伤害显示系统并不是上面说得那样 ,演示更新在8楼/size]
2 .技能相关事件:
[li]单位准备释放技能:会在单位准备释放技能时触发,[/li][li]开始释放技能:会在单位开始释放技能时触发,时间差为技能施法时间结束,但技能效果发动之前的一刹那,此时技能并没有成功释放,魔法值也没有减去.[/li][li]发动技能效果:技能发动成功,魔法值也减去的时刻会触发[/li][li]停止释放技能:释放某些持续技能,如暴风雪.持续6秒的技能,在6秒以内被主动打断(如:发布停止命令)或被动打断(如:被风暴之锤砸中了)时会被触发[/li][li]释放技能结束:顾名思意啊.此时无法获得技能目标和技能目标点等触发数据.[/li]
3.指令相关事件:
指令知识需要自我实践和积累,包括使用技能 物品 发动移动,停止,建造,采集等等都会触发这类事件 可以参照单位-发布命令(无目标)(单位目标)(点目标)中的指令 进行学习
4.补充说明:
单位进入区域事件,单位离开区域事件,单位进入不规则区域事件,单位离开不规则区域事件,单位进入不规则区域事件(指定条件),单位离开不规则区域事件(指定条件).本质上是2个事件即单位进入不规则区域事件(指定条件),单位离开不规则区域事件(指定条件).
可以说都是任意单位进入指定区域事件,不规则区域包括矩形区域和单元点,矩形区域由各位用WE中的"区域面板"自己画,不规则区域由动作中的"区域(不规则)"分类中使用"矩形区域"和"单元点"进行拼凑形成.不规则区域事件都要在其他事件为触发添加.
接近单位事件,生命值变化和魔法值变化都是指定单位事件,可以在事件中直接使用地图上已放置单位来注册事件.动态构建的话,请使用动作"触发器-添加事件".使用触发单位获得相关单位.
三. 玩家事件
需要一个一个玩家注册,我就不知道他为什么不给一个任意玩家事件给我们用.
[li]玩家聊天信息事件,通常使用来做各种命令[/li]
[li]按下ESC键,通常使用来做跳过电影,或者触发某些特殊事件而使用.[/li]
[li]选择单位事件,通常用来做双击选择英雄,因为比较麻烦.只有有一定水平的人才使用,说实话,用酒馆买不知道多好.[/li]
[li]玩家键盘事件,可以捕捉到上,下,左,右4个键的按下和释放事件,国外地图常用来选择英雄,国内外也常常用此来模拟各类第一第三人称的游戏,不过系统制作比较麻烦,新手不要考虑.[/li]
[li]玩家属性事件,可以捕捉到黄金,木头,人口,维修费用,得分等等.TD常用一个玩家的当前人口数量等于0的事件来控制刷兵.新手参考.[/li]
[li]联盟状态设置事件,有做竞技类对战图之类的意向,可以看看.[/li]
[li]联盟状态设置事件(指定项目):同上[/li]
[li]胜利离开事件:用得不多[/li]
[li]失败离开事件:用得不多[/li]
[li]离开事件:该事件不管以何种形式离开,包括掉线,主动退出,被打败等等.一般结合动作"游戏-对玩家显示信息文本"来显示XX玩家离开游戏的触发[/li]
四. 其他事件
[li]对话框事件和对话框按钮相关事件,由于牵涉到变量,暂时不说[/li]
[li]可破坏物死亡事件,老狼UI中注释得很清楚没什么可以说明的. [/li]
[li] 可追踪物事件,说实话,没见几个人用过,感兴趣可以自己实践. [/li]
[li] 时间事件,都跟计时器有相当大的关系.说道计时器时会说明. [/li]
[li]物品事件,就一个..不难 但是是指定物品事件.基本都要动态注册事件. [/li]
[li]游戏事件,除了游戏时间改变就是魔兽中间上方那个钟的时间用得比较多,和实数变化偶尔会用,其他事件的因为限制较多用得不多.[/li]
学习WE记住看老狼给的注释,可以少走很多弯路.如下路
|
-
|