作者hmml (hmml)
看板mud_sanc
标题[zMUD] 用资料库功能建立自动heart和EN的触发
时间Sat Oct 20 23:33:05 2012
前言:
这是一个相对简易的使用方法,可以拿来做使用范例,它只有
建立一个资料库,并使用
#Loopview这个指令而已,非常容易。
关於#Loopview:
这个指令功能是将资料库的内容跑一次回圈,即第一笔到末笔资
料跑一遍,跑一遍要做什麽,则由使用者定义,格式如下:
#Loopview 资料库专案 {指令}
资料库专案是一个使用#view建立一个自行定义格式的表格,你可
以设定这个表格的资料排序,表格内容要指定资料库的哪些栏位。如
果没建立专案,这个资料库就只会有all这的表格专案。要使用栏位的
内容,就用"&栏位名称"来叫出来。
步骤:
1.打开资料库功能,点选
New Database建立资料库,名字自己想
一个,这里先用Skill。
2.用
add钮,分别建立四个栏位,
Chtname,Name,Maxlv,Todo。
型态(type)选用text。
3.一个副档名csv的文件内容如下:
舞焰之斧,fire axe,9900,enable
战龙之斧,war-dragon axe,9900,enable
武临斧斩,wu-lin axe,9900,enable
焚锋之章,burnedge chapter,9900,enable
飘零之卷,drift volume,9900,enable
彩虹七色剑,rainbow slash,9900,enable
水莲剑法,water-lotus slash,9900,enable
武当剑法,wudon slash,9900,enable
王者之路,king-road,9900,enable
骑士风斩法,knight slash,9900,enable
剑道,kendo,9900,enable
打狗棒法,pkdog rod,9900,enable
镇暴棍法,riot-supressing rod,9900,enable
百花棍法,flower rod,9900,enable
刃击术,battle dagger,9900,enable
闇影之牙,shadow teeth,9900,enable
回枪刺击,return lance,9900,enable
焚城枪法,burn-city lance,9900,enable
霸王枪技,overload lance,9900,enable
神射手,shooter,9900,enable
SM技巧,SM,9900,enable
半月斩,hafe blade,9900,enable
傲寒六诀,6-cold blade,9900,enable
牙突,toothstab,9900,enable
雪月凝风斩,snow-moon blade,9900,enable
落日刀法,sunset blade,9900,enable
降龙二十八掌,dragon fist,9900,enable
小醉拳,drink fist,9900,enable
佛山无影脚,fosan foot,9900,enable
柔道,judo,9900,enable
美女拳法,girl fist,9900,enable
龙爪手,dragon-paw fist,9900,enable
如来神掌,zulai fist,9900,enable
黯然销魂掌,shadow fist,9900,enable
闪华裂光拳,sankalekouken,9900,enable
太极拳,taichi fist,9900,enable
少林拳法,soulin fist,9900,enable
六脉神剑,6-vessels swordray,9900,enable
飘云杖法,fly-cloud wand,9900,enable
冰焰杖法,icefire wand,9900,enable
星光杖法,starlight wand,9900,enable
*自创技能*,myskill,9900,myskill list;enable
界王拳,kaioken,1000,heart
易筋经,egingin,500,heart
龙斗气,drafight,1000,heart
魔族原力,devilpower,1000,heart
骑士之魂,knight heart,9900,heart
剑士之心,slash heart,9900,heart
战士之心,fight heart,9900,heart
信仰之心,clerical heart,9900,heart
烟岚之篆,vapor calligraphy,9900,heart
焚香之篇,burnbloom canto,9900,heart
魔力操控术,magic heart,9900,heart
加强杀伤力,damage,9900,heart
狂暴之吼,violent-shout,1500,heart
盗贼的诀窍,thief heart,9900,heart
刀者意志,blade heart,9900,heart
内功心法,fister heart,9900,heart
冒险者之心,adventure heart,9900,heart
大地命纲,stone-force,1000,heart
大部份的Enable技和Heart技都在里面了。假设档名为Skill.csv。
注:用Txt也可以,Txt的分栏字元是定位字元(tab),csv则是逗
号(,),其实也能用自订的字元,在汇入时记得设定即可。
4.点选资料库编辑视窗最上方功能表项目
View,在下拉式选单找到
Import并点选它。
5.载入Skill.csv,在跳出的编辑视窗里,可以看到文件中的条目依
序列出来了,点选右下的
Next。
6.视窗左上有第一个条目的范例,尚未决定配入哪个栏位(所以栏位
都是-ignored-),现在正要做这件事,目前左上框框的内容是:
舞焰之斧 -ignored-
fire axe -ignored-
9900 -ignored-
enable -ignored-
依序点选左上框框内四项目,在右上
Field栏位里,找到相对应的项
目分配後,左上框的内容会变成:
舞焰之斧 Chtname
fire axe Name
9900 Maxlv
enable Todo
接着点下
Finish钮。可以看到资料库里被填好资料了。记得
Save!
并点取
Close钮,才不会触发抓资料时,资料库视窗一直跳到画面
最前方。
7.抓下两个句子:
『(%1)』进步了~((%d)00~)
你的(%1)效果消失了。
指令填入:
#loopview all {#if ("%1"=&chtname) {#exec {&todo &name}} {#noop}}
完成。因为没用#view建立资料库专案,所以用all,在後面的指令里,
如果在&chtname里读到与%1的内容,就送出该笔资料的&todo &name来。
假设收到一道讯息:
你的骑士之魂效果消失了。
骑士之魂这笔资料的todo栏及name栏,分别是heart和knight heart,
所以送出heart knight heart来,那就成功了!
#exec用来执行指令,透过这个指令,&todo的内容可以用";"分行并
正确执行。
补充:资料库被打开後,抓取资料的方法有:
A.使用loopview直接跑指定专案表的内容一遍,去比对条件并执行。
如果有多笔符合,它会全部执行。
如:
#loopview all {#if (&chtname=~剑法) {#exec {&todo &name}}}
符合条件者有:武当剑法和水莲剑法,因为水莲剑法序列在前,所以
它会先enable water-lotus slash再enable wudon slash。
B.先用query找出相关内容,再执行,如果有多笔符合,执行的时候
,会执行结果中的第一笔资料。
如:
#query {&chtname=~剑法} all
此时,可以在画面中看见:
126 水莲剑法 water-lotus slash enable 9900
127 武当剑法 wudon slash enable 9900
这时再#exec {&todo &name},因为水莲剑法在前,所以它只执行
enable water-lotus slash。
C.呼叫单笔内容的方法:
1.#showdb
编号资料库名称前两个字
限#showdb使用,红字的格式其实就是表格中rec这个栏位,很明显的,
zMUD的资料库无论你名称建得多长,它只认头两字元,剩余部份是给使
用者参考用,所以建立新资料库时,头两字元不要跟其它资料库重复。
例:
#showdb 127sk
结果:
ChtName: 武当剑法
Name: wudon slash
MaxLV: 9900
ToDo: enable
2.#show
@编号资料库名称前两个字.栏位名称
这是一般可用的格式,能配合#exec去使用;不过,用rec栏位去
抓资料似乎不太能用在触发上。
例:
#show @127sk
结果:
ChtName武当剑法Namewudon slashMaxLV9900ToDoenable
看起来怪怪的?上色应该比较清楚:
ChtName武当剑法
Namewudon slash
MaxLV9900
ToDoenable
其实就跟呼叫record变数内容是一样的格式。
例二:
#show @127.chtname
结果:
武当剑法
直接秀出指定栏位的内容。
d.写法更新:
并用函数的写法,好处是不会秀出找到的资料内容,也不用清
find和query的搜寻结果。稳定性也比较好。
#dbget %find(%1,all,chtname)
#if (&type="enable") {#exec {&todo &name}} {#noop}
说明:
#dbget %find(%1,all,chtname)
使用函数%find去寻找资料库专案all,chatname栏中,与%1内容相符的资料
,找到後会回报rec值。此时,指令#dbget会把反白移动到该笔资料。
#if (&todo="enable") {#exec {&todo &name}} {#noop}
如果该笔资料的todo栏内容是enable,就执行todo栏+name栏的内容,否则就
不做。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.196.45
※ 编辑: hmml 来自: 220.132.196.45 (10/21 02:03)
1F:推 nahceal :神阿 受我一拜 10/21 07:19
2F:推 hlead :超神@@ 10/21 08:04
※ 编辑: hmml 来自: 220.132.196.45 (11/18 02:52)