每一个冒险岛私服对象中都记录了它所感兴趣的触发器消息

在每一个冒险岛私服对象中都记录了它所感兴趣的触发器消息,这是通过将这些消
息的位标志组合得到的。这种方法可以使冒险岛私服对象确定要注意和忽视的触发器消
息,我们还可以在冒险岛私服中通过改变某一个位标志让冒险岛私服对象暂时忽略和注意某一
类触发器消息。
每一个触发器消息在冒险岛私服世界中都有其位置和范围半径,它只会影响到其范
围半径之内的冒险岛私服对象。大多数触发器消息是静态的,但是有些却是持续移动的。
如果bDynamicsouree为真,表明这个触发器消息是移动的,每一个时间周期都
必须刷新它的位置。这个属性使一个移动目标只需要注册一个触发器消息,而不
是每一次它移动时都注册一个新的触发器消息。敌人靠近就是这样一个例子,它
必须提醒冒险岛私服对象周围有敌人,因此这类触发器消息的位置必须跟踪它产生源的
位置。
触发器消息只生存一段特定的时间,每一个触发器消息都记录了它的创建时
间和过期时间。如果过期时间为0,那么意味着这个消息永远存在,或者是会通
过其它系统操作删除。例如,如果冒险岛私服对象到达某处时会拉动一个控制杆,那么
这个控制杆就可以注册一个永不过期的触发器消息,直到它被拉动,这个触发器
消息才会被删除。
.触发器消息系统
触发器消息系统是一个存储当前触发器消息的类,它提供了注册、删除和更

.注册触发器消息
触发器消息是通过RegisterTrigger方法注册到系统中的,该方法创建一个新
的触发器消息并且设置其属性。RegisterTrigger方法的伪代码描述如下:
 unsignedlong既gisterTri路e叹参数列表)
创建触发器消息trigger并赋值;
根据优先级存储trigger;
 returntrigger.getID():
ReglsterTrigger方法返回触发器消息的ID值,可以通过它获得这个触发器消
息实例,特别是在删除这个触发器消息的时候。
.删除触发器消息
通常,在冒险岛私服世界中删除某个触发器消息是必须的。例如,一个已经被拉动
的冒险岛私服杆在冒险岛私服中不再有任何用处,这时我们可以通过调用RemoveTrigger来删
除相应的触发器消息。该方法的伪代码描述如下:
   voidRemoveTrigger(unsignedlongTriggerID){
遍历所有的触发器消息{
if(触发器消息的ID值二一TriggerID){
删除该触发器消息;
结束遍历;
.刷新触发器消息
触发器消息系统的核心是Update方法,它删除过期的触发器消息,刷新动
态位置的触发器,并且通知与某个触发器消息有关的所有冒险岛私服对象。update方
法的伪代码描述如下:
voidU冈ate(){
遍历触发器消息{
if(该消息不是永不过期的&&该消息已经过期)
删除该消息;
elseif(该消息是移动消息){
更新消息位置;

遍历冒险岛私服对象{
遍历触发器消息{
if(冒险岛私服对象对当前消息不响应)
eontinue;
i坟当前消息的产生源是该冒险岛私服对象)
eontinue;
if(如果冒险岛私服对象不在消息的影响范围内)
eontinue;
if(冒险岛私服对象响应这个消息)
break;
.应用举例
一旦上述的触发器消息系统得以应用,冒险岛私服中就可以实现无穷可能性的人工
智能了。


本文来源:冒险岛私服:http://maoxiansifu.com,如需转载[每一个冒险岛私服对象中都记录了它所感兴趣的触发器消息],请保留版权