|
楼主 |
发表于 2010-1-22 10:37:23
|
显示全部楼层
#waitsig用起来要小心。我没有在复杂代码用成功过,简单代码上目前我发现不等跑早了也就早了!关键是不能出现全局变量,这个对我挑战非常大。我没太想清楚该在什么场景下使用。#alarm+event可以给例子。
下面例子有2个触发,一个触发是镖车到了look启动房间检查和行走,第二个是房间检查通过发起hbRoomCheck时间进行检查。这个事件每给出代码,第二个是检查通过以后发起事件hbWalk行镖。如果行镖结束首先是#t-关闭hbWalk就不会再走了,关闭#alarm定时器是为了清理定时器,清理残留垃圾。实际上定时器在关闭事件以后就无效了。例子是xml文件,自己可以导入到Cmud看看。
例子如下:
#unt fight_pfm
#unt health_check
#SECTION SingleThread {
#va error_locate_list ""
#va jingmo_cnt 0
#va fight_flag 0
#va fight_start_flag 0
#va quest_autoflag 1
}
#t+ fight_trigger
#alarm quest_auto {+8} {#va quest_autoflag 0}
#if (@locate_pathid>=@target_pathid and @error_path_flag="START") {
#va target_arr_flag 1
#t- walk_room_check
#t- hbWalk
#unt check_locate
#alarm quest_search_huoji {+3} {set action 伙计搜索阶段一}
} {
#if (@error_path_flag!="ERROR") {
#add locate_pathid 1
look
}
}]]>
(*)-%s$
#SECTION SingleThread {
locate_desc=%trim(%1)
locate_description=""
locate_directlist=""
}
(.*)
#SECTION SingleThread {
locate_description=%trim(%1)
}
//并且本地地名和列表中存储的地名一致则不需要其他处理,正常根据已定义路径走到下一个地点就可以,
//第二种情况是正常行走未出现乱入情况但是本地地名和列表中存储的地名不一致,这时候需要重新找回护
//镖路线,第三种情况是乱入到未知地点的情况下重新返回护镖路线。(具体返回护镖路线算法见核心批处理
//locate_redir的解释)
#SECTION SingleThread {
locate_directlist=%sort( %replace( %replace( %replace( %trim(%1), "。", ""), " 和 ", "|"), "、", "|"))
}
#local $rtn
#if @error_path_flag="ERROR" {
#t- hbWalk
#raiseevent hbRoomCheck @locate_desc @locate_directlist @locate_description
#waitsignal signCheckEnd
#if @error_path_flag="ERROR" {
#show "护镖任务:未能找到返回路线,请手工返回!"
}
} {
room_desc=@room_info(%item( @hbnum_runtime, %eval( @locate_pathid-1)))
$rtn=@compare_room(@room_desc,@locate_desc,@locate_directlist)
#if $rtn=1 {
#SECTION SingleThread {
#va error_path_flag START
}
room_desc=@room_info(%item( @hbnum_runtime, @locate_pathid))
#WIN hubiao Locate:@locate_desc,Next Room:@room_desc.name,Next Pathid:@locate_pathid
#t+ hbWalk
#raiseevent hbWalk %item( @hbcmd_runtime, @locate_pathid) 1
#alarm check_locate {1} {
#raiseevent hbWalk %item( @hbcmd_runtime, @locate_pathid) 1
}
} {
#raiseevent hbRoomCheck @locate_desc @locate_directlist @locate_description
#waitsignal signCheckEnd
#if @error_path_flag!="ERROR" {
#va error_path_flag START
}
}
}]]>
#SECTION SingleThread {
target_arr_flag=1
locate_pathid=@target_pathid
}
#t- walk_room_check
#t- hbWalk
#unt check_locate
#alarm quest_search_huoji {+3} {set action 伙计搜索阶段一}
} {
#show $direct
#SWITCH ($mode=0) {
#exec gan che to $direct
} ($mode=1) {
#exec $direct
} {
#win hubiao 护镖任务:行走模式:$mode,有问题!行走命令:$direct
}
}]]>
$direct,$mode
|
|