作者hmml (hmml)
看板mud_sanc
标题[心得] zMUD将国家水和一般水监控写成一行的方法
时间Sun Apr 3 01:04:40 2011
这个写法是将一般水和国家水的监控写成一行的方法之一,可以让药水相关触发变成
一行,无须分成一般水和国家水两行。
Pattern :
^特级药水: (&drinklist).
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
红色部份,为"
^",前面加上这个,可以让句子中的"
特级药水:",唯有在句首出现时
才会执行比对,由於这个句子比对部份稍短,利用这个字元,可以有效降低误触的机
率,最後的"
."亦有这个效果。
(&drinklist)是设定变数的方法之一,zMUD555以上版本确定可用,效果同等#var的
写法,不过因为圣殿药水水量显示的格式,让zMUD555无法用#var的方式取得变数内
容,必须用这个写法,基本上,两种写法互用,可以解决不少吃字的难题。
以国籍为star的角色为例,drinklist最後会得到以下类似的内容:
0罐, 魔法药水: 33罐, 内力药水: 0罐.风之小卷: 100罐, 寒雪冰丹: 0罐, 星烁光丹: 30
罐
再来就是後制部份。
Commands :
#var drinklist %replace(@drinklist,"罐",|)
#var drinklist %remove(", 魔法药水: ",@drinklist)
#var drinklist %remove(", 内力药水: ",@drinklist)
#var drinklist %remove(".风之小卷: ",@drinklist)
#var drinklist %remove(", 寒雪冰丹: ",@drinklist)
#var drinklist %remove(", 星烁光丹: ",@drinklist)
#if (%numwords(@drinklist,|)=3) {#var drinklist @drinklist"0|0|0"} {#noop}
#var drinklist2 HP:%word(@drinklist,1,|)|%word(@drinklist,4,|)_SP:
%word(@drinklist,2,|)|%word(@drinklist,5,|)_PP:%word(@drinklist,3,|)|
%word(@drinklist,6,|)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
金色部份,目的是将分隔字元置入,由於水量後接字都是"罐",因此用它来置入分隔字
元是恰恰好,分隔字元可以自行指定,这里指定"|",如果想省一行,直接用"罐"亦
无不可,依个人习惯而定。用#say @drinklist输出结果如下:
0|, 魔法药水: 33|, 内力药水: 0|.风之小卷: 100|, 寒雪冰丹: 0|, 星烁光丹: 30|
靛色部份,是为了将不需要的字元移除,让资料更符合需求。输出结果如下:
0|33|0|.风之小卷: 100|, 寒雪冰丹: 0|, 星烁光丹: 30|
亮绿色部份,目的与前段相同,不过国籍不同,指令多少会有些变动,请自行修改。输
出结果如下:
0|33|0|100|0|30|
红色部份,因为有时候角色不会买国家药水,这时候国家药水的明细就不会出现,那上
段的输出结果就会变成:
0|33|0|
到时药水监控画面难免会差了一点,所以本行做个判断来确认到底取得几个数值,如果
数值只有三个,那就再後方补上三个数值:
0|0|0,让接下来的运作,仍能使用六个数。
黄色部分,就是再排列了,个人习惯编辑格式是:
HP:水|国水 SP:水|国水 PP:水|国水
所以就把drinklist里的资料依格式编入新的变数:drinklist2,以HP部分来说即
HP:
%word(@drinklist,1,|)|
%word(@drinklist,4,|)
%word可以将指定字串中的资料取想要的部份出来用,所以字串的资料愈整齐乾净愈好,
为此才写了多行来整理字串,在drinklist中,代表HP一般药水和国家药水的是第一笔和
第四笔资料,分隔字元如前述是"|",写法如上就能套入想要的资料。
再来以"_"代替空格来使用,因为空格无法正确显示,仅此而已。
执行後,输出结果如下:
HP:0|100_SP:33|0_PP:0|30
最後将drinklist2放到status bar就完成了。
若想加入判断水量自动买水,同样使用%word从drinklist里取出资料来写机即可。想把
黄色部分写在status bar亦是可行,不过staus bar会比较乱,看个人喜好吧!
Commands -2:
#var drinklist %replace(@drinklist,"罐",|)
#var drinklist %replace(@drinklist,": ",|)
#if (%numwords(@drinklist,|)<8)
{#var drinklist @drinklist"khp|0|ksp|0|kpp|0|"} {#noop}
#var drinklist2 HP:%word(@drinklist,1,|)|%word(@drinklist,7,|)_SP:
%word(@drinklist,3,|)|%word(@drinklist,9,|)_PP:%word(@drinklist,5,|)|
%word(@drinklist,11,|)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
上方是另一个整理方式,使用的资料会比较凌乱,不过依然可用,输出结果会变成:
0|, 魔法药水|33|, 内力药水|0|.风之小卷|100|, 寒雪冰丹|0|, 星烁光丹|30|
还是有规律的资料,之後亦只是小幅变动,结果不变。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.176.62
※ 编辑: hmml 来自: 220.133.176.62 (04/03 01:23)