|
楼主 |
发表于 2008-12-29 01:18:11
|
显示全部楼层
原帖由 maper 于 2008-12-27 06:42 PM 发表
厉害啊,你的循环遍历机器人是怎么样的?是遍历一个区域内的所有房间吗?那如果像星宿那样的区域有些房间分布在不同的区域,这样子遍历要怎么处理?mud里很多npc都会到处乱跑.
所谓区域只是自己定义的一个MAP的zone而已,里面的房间不一定要互相连接的,只要在这个zone里面,就可以
#CALL %mapfilter("")
#CALL %mapfilter(%concat("ZoneID = ",$zonenum))
#LOOP %numrooms {#additem search %mapvnum(%i)}把ID为$zonenum的zone中所有的房间编号放进search变量。
然后
#if (%numitems(@search) != 0) {
#walk %pop(search)
}这个语句就可以历遍search变量中所有房间。
至于follow了NPC之后,NPC乱跑,那么map上对应的current position就会错误了(因为没有dir指令,map的current posiont就不会更新了),
那就必须用#TELEPORT把current position更新到你目前真正的位置,这个我还没有完成,方法应该是这样的,先LOOK一下,取得你当前所处的房间
名称,然后在MAP中搜索相应的名称,然后#teleport就可以了。不过北侠中,房间名字相同的位置太多了,所以可能需要来回走动一下,取得一个独一无二的位置来定位,如果还是不能顺利实现定位(比如在迷宫之中),那quit应该是最后的办法了,quit之后,重新连接,在#telepot到你的起始点就OK了。 |
|