精華區beta mud 關於我們 聯絡資訊
來源: &lt;3PVIIF$2zl@bbs.ee.nthu.edu.tw&gt;, 組織: ☆清華電機☆ 嗨~~ 大家好!! 最近完成了一個很可愛的Trigger 它的效果像這樣: ----- 你說 'rep'. <1286生命力 270魔力 595體力> [Notcm 報告自己的現況: 729/445 hp 817/822 mana 295/450 mv 0 exp.] <1286生命力 270魔力 595體力> Notcm 目前的狀況:健康程度163% 法力99% 活躍度65%. ----- 也就是說,會自己計算百分比然後報出來. 本著風火海一貫的服務理念,小妹特地著手寫這篇HowTo, 讓大家的zMUD越用越熟,也希望其他高手也能多多指教!! ----- 首先,要先介紹幾個我們會用到的zMUD指令 ===== 一. #Trigger 功能: 用命令的方式來編寫Triggers 語法: #trigger {Pattern} 'Command' Class 說明: 例如下達#trigger {Notsha 說 'testtest'.} 'bow' test的指令 就好比在Triggers視窗中在Class那格填test 在Pattern那格填Notsha 說 'testtest'. 在Command那格填bow 那麼當Notsha說testtest時,你就會鞠個躬(bow) Tips: 若改用{^Notsha 說 'testtest'.}那麼就會從行首開始判斷, 那麼遇到像Areka 說 'Notsha 說 'testtest'.'.或者 Areka Notsha 說 'testtest'.時就不會被騙到了 二. #Variable 功能: 用命令的方式設定一個變數(Variable) 語法: #var ID (Expression) 說明: 例如下達#var abc (123)的指令 那麼就會產生一個名為abc的變數,其值為123 三. #Math 功能: 將某個運算結果存入另外一個變數 語法: #math ID (Expression) 說明: 例如下達#math def ((@abc+3)*100/@abc)的指令 那麼就會將變數abc的值加上3然後再乘以100再除以變數abc原來的值, 最後產生一個名為def的變數,其值等於上述運算的結果 四. Command Buffer ( Ctrl + Enter ) 功能: 將字串上色 說明: 運用Command Buffer就可以編寫彩色的Triggers Tips: zMUD眾多版本中,印像中就屬4.12版的在顏色控制碼上最正確 小妹今天剛剛把4.12版的zMUD上傳到ftp://ftp.tku.edu.tw/upload/winsock 其中zmud32.zip是32bit的,zmud412是16bit的,現在好像不能下傳... 等個幾天吧!! 若很急的話就先mail給小妹,我再用E-mail夾帶寄過去 Tips: 在zMUD中,分號(;)代表隔開兩個指令,所以指令中若有分號的話,要改寫成雙分號 (;;) ===== OK,以上就是"預備知識",現在讓我們開始寫這組Triggers吧!! ----- 這組Triggers的運作機制如下: 接收到有人說rep ==> 下達rep;save的命令(多加一個save是避免被玩到被系統kick out) ==> 接收到 report 的訊息 ==> 將生命力,魔力,體力分別存入hp,mana,move這三個變數 ==> 將這三個變數分別乘以100,再除以全滿時的值(算出百分比的數字)並存入另外三個變 ==> 將另外三個變數說出來 討論: 說出百分比的動作應該要由report時的訊息觸發,而不是由某人說rep時就觸發 因為若某人說rep時就觸發報出百分比的動作,那麼所報的數值將會是舊的 所以應該待report完取得最新的數值時,再計算出最新的百分比,並報出來 ----- 以下以Notcm為例: Step 1. 指令: #trigger {^(%w) 說 'rep'.} 'rep;;save' info 說明: ^表從行首開始判斷 (%w)是代表一串"英文字" 所以若看不到對方時就不會report了("某個人"非英文字串) 作用: 當有人(你看得見)說rep時,就會report 這組Triggers的分類(Class)為info,以下同,不多說明 Tips: Class的功能是配合#T+和#T-時,能將同Class的Triggers做批次開關 例: 下達#T- info的話,就會關閉所有Class為info的Triggers Step 2. 指令: #trigger {(%d)/445 hp} '#var hp %1;;#math hppercent (@hp*100)/445;; emote 目前的狀況:健康程度@hppercent% 法力@manapercent% 活 躍度@movepercent%' info (以上三行請併作一行) 指令: #trigger {(%d/822 mana} '#var mana %1;; #math manapercent (@mana*100)/822' info (以上兩行請併作一行) 指令: #trigger {(%d/822 mv} '#var move %1;; #math movepercent (@move*100)/450' info (以上兩行請併作一行) 說明: 以@開頭的字串代表變數的名字 (%d)是代表一串"數字" Pattern中的(%w)和(%d)都可當作Command裡的參數 在上面三個指令中,Pattern中那個(%d)的值會傳到Command中的%1 作用: 取得三個數值,並計算其百分比,再用emote的方式把它們說出來 Tips: 因為Notcm在report時自己看到的訊息如下: [你的現況: 445/445 hp 822/822 mana 450/450 mv 0 exp.] 所以Triggers才會這樣寫,實作時,請依您的數值調整Triggers的內容 Tips: 所有有彩色的Triggers都是用Command Buffer完成   Notsha 風火海 機要秘書@4040 mailto:natasha@ms10.accmail.com.tw -- ※ Origin: 清華電機 ◆ From: ts2-p03.csmc.edu.tw