北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 26604|回复: 28

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

[复制链接]
发表于 2008-12-27 17:27:49 | 显示全部楼层 |阅读模式
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文件,把第一行改成,然后另存的时候选择utf-8格式就行了。

评分

参与人数 1精华 +30 收起 理由
icer + 30

查看全部评分

北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-27 18:42:54 | 显示全部楼层
厉害啊,你的循环遍历机器人是怎么样的?是遍历一个区域内的所有房间吗?那如果像星宿那样的区域有些房间分布在不同的区域,这样子遍历要怎么处理?mud里很多npc都会到处乱跑.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-27 18:57:49 | 显示全部楼层
很好的文章,授人以鱼,不如授人以渔,希望以后多点技术性的讨论,而非单纯的共享。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-27 18:58:53 | 显示全部楼层
另外,能否贡献一份新版的cmud北侠专用版,把zmud下的alias,trigger等一套东西导进去?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-27 23:00:49 | 显示全部楼层
哇靠,cmud竟然支持jscript,早知道用它了。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-28 01:34:59 | 显示全部楼层
完全不知道楼上的众位大虾在说什么,汗。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 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了。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2008-12-29 01:21:04 | 显示全部楼层
原帖由 icer 于 2008-12-27 06:58 PM 发表
另外,能否贡献一份新版的cmud北侠专用版,把zmud下的alias,trigger等一套东西导进去?

CMUD可以读取ZMUD的.mud文件配置,导入不成问题,如果真的出现错误,也可以先用ZMUD到处TXT文件,在导入CMUD,我就是这么做的(直接导入MUD文件有时候会有问题)
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-29 09:32:51 | 显示全部楼层
赶紧共享呀!!!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2008-12-29 10:26:49 | 显示全部楼层
我想很快就有很多毫毛(hao mao)式的大米遍地拾垃圾发家致富啦~~~~哈哈

dream
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-25 11:23 AM , Processed in 0.010771 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表