|
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的字段进行控制,当然重复的也不是很多可以不考虑这个问题。
因为zmd对中文支持不是很好,“林平之的葵花宝典”,"欧阳克的白扇","浪回头的带血的丝巾"这三个会出错。
有什么想法大家一起讨论。 |
评分
-
查看全部评分
|