|
发表于 2007-5-7 13:39:00
|
显示全部楼层
Re:关于任务,来看下暴雪做到了什么程度
WOW的客户端是事件驱动的。其中事件(event)总是某个实例的状态发生变化或做出某个行为。事件驱动也就是说,其程序仅仅是对特定的事件作出响应,而不主动执行。我的推测:其服务端逻辑也广泛使用事件驱动的方式。在WOW中角色的行为,状态的变化,都对应到特定的事件,比如:用户施放技能对应于USER_CAST_SPELL。
其脚本结构可能如下:
onLoad() --这里用来进行初始化等工作,通常,关键事件(event)的注册会在这里进行
{
this.register:USER_CAST_SPELL; --将USER_CAST_SPELL这一事件注册,当此事件发生时,执行onEvent()
--没有被注册的事件发生时则不会执行onEvent()中的内容
}
onEvent(event,arg1,arg2,arg3) --当某个被注册的事件发生时执行
{
if(event=="USER_CAST_SPELL") then
if(GetUnitBuff(NPC_0275)=="韧") then
FinishMission(MISSION_0275);
end
end
}
onFrame() --当每个逻辑帧开始时调用(在客户端UI脚本中有一个类似的onUpdate()函数)
{
}
其中onEvent()函数中的参数为全局变量,用来传递当前逻辑帧所发生的针对该脚本关键事件,比如表示关键用户施放技能的USER_CAST_SPELL(这个事件名是我随便想的,例子而已);arg1,arg2等是对事件进行补充表述的参数,比如event=="USER_CAST_SPELL"时,arg1的值就是施放技能的角色ID。 |
|