北大侠客行MUD论坛

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

Zmud的Database功能在task中的应用

[复制链接]
发表于 2017-9-5 15:01:38 | 显示全部楼层 |阅读模式
Zmud5.55-7.21提供了Database功能,善加利用的话可以提高task的效率。

1、构造task数据库
建立3个字段(Field):
Name:task物品的中文名称,如:宁中则的淑女剑;
Id:task物品的英文名称,如:shunv jian;
Master:归还task物品的npc,如:ning zhongze;

2、task数据库的利用
这里有两种思路:
思路一:直接利用#dbfirst,#dbnext命令
#dbfirst是定位到第一条记录,#dbnext是定位到下一条记录;
#TRIGGER {【闲聊】北大侠客行任务榜:侠客榜任务分配完成!} {#dbfirst};
这一个trigger是在侠客榜任务刚分配完成的时候定位到数据库第一条记录;
#KEY F1 {name=&name;id=&id;master=&master;locate @name;#dbnext;};
设定F1快捷键,按一次F1会把预设的变量name,id,master进行赋值,并locate @name;
#KEY F2 {give @id to @master};
设定F2为还task物品的快捷键,按F2就会把task物品还给npc;

这种思路的缺点是有些在侠客任务榜里没有但是在数据库里有的task也会locate一次,并且没用考虑有人竞争的情况。

思路二:获取可以做的task列表,然后在task数据库里搜索
#KEY F1 {tasklist=结尾;num=1;task;};
#TRIGGER   {%s(%x)%s~((%x)~)} {#if %len( %2)=6 {tasklist=%push( %1, @tasklist)}};
#KEY F2 {#if @num<%numitems( @tasklist) {name=%item( @tasklist, @num);#find @name;master=&master;id=&id;locate @name;#add num 1}};
#KEY F3 {give @id to @master};
F1是获取当前可以做的task列表,trigger是判断哪些是还没被做的task并且写入tasklist变量,按一次F2将按tasklist顺序locate一次,F3是归还物品。

思路二比思路一提高了效率,不过以下情形还有待解决:多人竞争task,做到一半的时候按F1刷新了一下tasklist,但是tasklist中会有一些已经locate过了但是找不到地方的会重复locate,这个可以考虑在task数据库中增加一个locate_done的字段进行控制,当然重复的也不是很多可以不考虑这个问题。

因为zmud对中文支持不是很好,“林平之的葵花宝典”,"欧阳克的白扇","浪回头的带血的丝巾"这三个可能会出错。

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2017-9-9 11:06:31 | 显示全部楼层
用db是不合适的,用map才行。%mapquery可以查找
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2017-9-9 20:10:25 | 显示全部楼层
怎么办,都看不懂~~~
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 01:50 PM , Processed in 0.009241 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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