精華區beta mud_sanc 關於我們 聯絡資訊
前言:   這是一個相對簡易的使用方法,可以拿來做使用範例,它只有 建立一個資料庫,並使用#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,在跳出的編輯視窗裡,可以看到文件中的條目依  序列出來了,點選右下的Next6.視窗左上有第一個條目的範例,尚未決定配入哪個欄位(所以欄位  都是-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 slashMaxLV9900ToDoenable 其實就跟呼叫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)