|
昨天做hyd被杀了,万恶的dbr上来就kill,然后又是缠,又是英雄,瞎了眼还在busy,然后就挂了。
很郁闷,还没做到250次,还不能发daoying。
想来想去,xf不好做robot,hyd危险,还是task好一点。
但是task太考验robot了,没有好的robot支持,做起来太累,所以,打算做一个半自动的task robot,至少要做到的就是,一locate xxx,就自动显示出task物品所在的地点。然后,再照搬一下糖果的遍历机器人,就差不多了。
那么如何完成locate的时候,就自动显示task物品所在的地点呢?
思来想去,想用zmud721里的db功能,偏偏zmud721没有中文说明,看英文help又看不懂,最后还跑到zmud的官方论坛上搜了半天,终于搞懂了%find和%db怎么用。
首先要自己新建一个db,db的字段(field)可以自己起名,但是建议,至少要有2项。1项是房间的描述,我起名叫place,另1项是房间的名字,我起名叫name。基本思路就是把locate时候截取的两个地点的两字描述,在db的place列里查找,如果找到了,就把该项的name显示出来。
举个例子吧,先点zmud工具栏里的db,选new database,no template,指定好要存储db的文件名和db名,然后field里点add,新增两项field,一项叫place,一项叫name,type都选成text。然后点上面的list,就可以新增db项了。
可以先把一出来客店和客店w的北大街的描述增加到db里,做个实验。两个房间的描述分别添加到db前两项的place字段里,name字段可以自己起名,比如分别叫“扬州客店”和"扬州北1大街"。
接下来是试一下db的%find函数
zmud的help里的说用法是:Syntax: %find(s[,view,col]))
第一项s是要搜到字符串,后面两项可选,我没搞懂view是指定什么的,不过看zmud论坛上说只要把db窗口打开,这一项留空,就是在当前db窗口的db里搜寻,col肯定是db里的某field没错。
可以先把你的db窗口打开,然后试一下命令
#showdb %find("小二",,place)
%find("小二",,place)会在当前db的place字段里搜寻小二,#showdb会把结果按照db的格式显示出来。
比如,在我的窗口里就会显示:
Num: 1aa
name: 客店
place: 这是一家价钱低廉的客栈,生意非常兴隆。外地游客多选择这里落脚,你可以在这里打听到各地的风土人情。店小二里里外外忙得团团转,接待着南腔北调的客人。客店的主人从不露面,他究竟是谁,有各种各样的猜测。墙上挂着一个牌子(paizi)。
如果%find没有找到,就什么都不会显示出来。
基本思路已经清晰了,但是,如果搜需出来的db的记录多于1项怎么办?
%find如果搜到的结果多于1项,会返回一个list类型的变量
用一个诸如task_place1的list变量来保存这个返回结果,然后用%item来读取这个变量的每一项,依次打印出来。
我现在的做法是,做了trigger来取task名字,搜索字段,然后做了几个状态条来显示当前task的名字,两个搜索的字段,然后下面两行,分别显示字段一找到的3个结果的name字段,以及字段二找到的3个结果的name字段,只要看一下哪个地点在这两行重复出现,就知道具体位置了。
图有空了慢慢上。
但是,现在问题来了,北侠有几百个房间,一个房间一个房间的把描述添加到db里实在是一项艰苦的工作,我昨天手动弄了好长时间,才弄完了扬州城的西面和北面,谁有好办法能很快把所有房间的描述和名字都弄到一个db里的? |
|