來源: <3PVIIF$2zl@bbs.ee.nthu.edu.tw>,
組織: ☆清華電機☆
嗨~~
大家好!!
最近完成了一個很可愛的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