作者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)
推 nahceal :神阿 受我一拜 10/21 07:19
推 hlead :超神@@ 10/21 08:04
※ 編輯: hmml 來自: 220.132.196.45 (11/18 02:52)