xxxcc 发表于 2008-12-27 17:27:49

刚才用最新的CMUD3.03测试了一下MAP功能。

CMUD最新的稳定版本是2.37,在这个版本下,我绘制了北侠的全地图,测试下来的效果是,safe行走模式非常好用,就是点哪儿走哪儿,用来历遍地图极好。
但是%numzones函数有问题,无法得到地图的zone数目,因此写机器人,只能硬编码,#loop xxx {#if (%pos(%zonename(%zonevnum(%i)), %1)) {#noop}},这里的xxx就是地图的zone数,只能靠你自己数一遍,你画了多少个zone(xkx大概有30个左右的zone吧)。
对于完美主义的我,当然不能忍受硬编码带来的不灵活性,所以下载了3.03beta版本试了一下,果然%numzones函数可以用了,#loop %numzones() {#if (%pos(%zonename(%zonevnum(%i)), %1)) {#noop}}就可以找到地图中所有名字出现在%1的zone了。
但现实是残酷的,我发现在3.03中safe行走模式,运行的不是很正常,无论如何配置都没用。就在一筹莫展的时候,突然发现slow行走模式居然可以用了(这个模式在2.37下,只要行走时候穿越zone就会引起cmud的崩溃),于是稍微配置了一下,然后写了个循环历遍地图的机器测试了一下,3个小时过去了,居然一直稳定运行。
因为3.03改变了MAP的数据库格式,据说是可以更快更稳定的执行了,所以我正准备重新画一次地图,原来的map是mdb格式的,现在是dbm的。
唯一对CMUD不满的就是导出的xml文件,居然是ISO-8859-1编码的,直接导入机器人的话,会导致中文乱码,导致机器人不能用,解决方法是记事本打开修改xml文件,把第一行<?xml version="1.0" encoding="ISO-8859-1" ?>改成<?xml version="1.0" encoding="utf-8" ?>,然后另存的时候选择utf-8格式就行了。

maper 发表于 2008-12-27 18:42:54

厉害啊,你的循环遍历机器人是怎么样的?是遍历一个区域内的所有房间吗?那如果像星宿那样的区域有些房间分布在不同的区域,这样子遍历要怎么处理?mud里很多npc都会到处乱跑.

icer 发表于 2008-12-27 18:57:49

很好的文章,授人以鱼,不如授人以渔,希望以后多点技术性的讨论,而非单纯的共享。ttk_00

icer 发表于 2008-12-27 18:58:53

另外,能否贡献一份新版的cmud北侠专用版,把zmud下的alias,trigger等一套东西导进去?

sure 发表于 2008-12-27 23:00:49

哇靠,cmud竟然支持jscript,早知道用它了。。。

focus 发表于 2008-12-28 01:34:59

完全不知道楼上的众位大虾在说什么,汗。。。

xxxcc 发表于 2008-12-29 01:18:11

原帖由 maper 于 2008-12-27 06:42 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
厉害啊,你的循环遍历机器人是怎么样的?是遍历一个区域内的所有房间吗?那如果像星宿那样的区域有些房间分布在不同的区域,这样子遍历要怎么处理?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了。

xxxcc 发表于 2008-12-29 01:21:04

原帖由 icer 于 2008-12-27 06:58 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
另外,能否贡献一份新版的cmud北侠专用版,把zmud下的alias,trigger等一套东西导进去?
CMUD可以读取ZMUD的.mud文件配置,导入不成问题,如果真的出现错误,也可以先用ZMUD到处TXT文件,在导入CMUD,我就是这么做的(直接导入MUD文件有时候会有问题)

xiaofei 发表于 2008-12-29 09:32:51

赶紧共享呀!!!

zywhat 发表于 2008-12-29 10:26:49

我想很快就有很多毫毛(hao mao)式的大米遍地拾垃圾发家致富啦~~~~哈哈

dream
页: [1] 2 3
查看完整版本: 刚才用最新的CMUD3.03测试了一下MAP功能。