?? zmud使用(2).txt
字號:
ZMUD使用(二)
如何用好 TRIGGERS
玩MUD不用ZMUD基本上就是在浪費時間,而TRIGGERS是其提供的最簡單的功能。如何運用 TRIGGERS,用好 TRIGGERS,對于節省時間,形成ROBOT自動練功有相當大的作用。可以在最短時間內練得武功。
但是,請各位切記:TRIGGERS 雖然有用,但是存在一定的危險性。做ROBOT固然可以自動練功,但是如果被巫師抓住,后果是比較痛苦的。另外,PKER 也可以利用你的TRIGGERS來PK。所以做TRIGGERS必須相當小心。
我將在這里寫一些關于TRIGGERS 的文章,以求和大家共同探討。
一、認識TRIGGERS
什么是 TRIGGERS ,TRIGGERS 類似于一般編程結構中的IF...THEN結構。其中有三個主要的參數:Pattern、Command、Enable/Disable。說的通俗一點,當接收到 Pattern 的時候,自動輸入 Command。而En/Disable可以另其活動或不活動。
另外Class可以為TRIGGERS定義一個類名,方便操作。
舉個簡單的例子:Pattern為“官兵死了”,
Command為“get all from corpse",
Command為“get all from corpse",
則當ZMUD接收到“官兵死了”,自動發出“get all from corpse”
在更高級的技巧中,把TRIGGERS、ALIAS、VARIABLE、Function、ZMUD內部命令聯用,可以取得相當好的效果。
例如:做一個ALIAS,#alias dk drink @drinkwhat
TRIGGERS1:
Pattern=“你買下一個牛皮酒袋”
Command=“drinkwhat=jiudai”
TRIGGERS2:
Pattern=“你撿起一個清水葫蘆”
Command=“drinkwhat=hulu”
那么當你喝水的時候,只需要打dk,而喝什么TRIGGERS自動更改(不論你喝buy jiudai或是get hulu)。
這當然只是個簡單的例子,要想做更復雜的請先讀通Help。
另外在TRIGGERS有一些wild-card可以運用,詳細參見ZMUD Help。
二、和TRIGGERS相關的主要命令
最重要的命令就是“#t+”、“#t-”。這兩個命令可以激發和取消某個特定類別TRIGGERS的活動狀態。另外 #IG可以忽略或重新不忽略全部TRIGGERS。
三、運用TRIGGERS應注意的問題
在MUD中做TRIGGERS,自動練功能節省大量的時間、精力,當然也省去了輸入大量命令的麻煩。但是請注意,在MUD中大量運用TRIGGERS做ROBOT是存在一定危險性的。
首先,MUD中明文規定禁止用ROBOT練功,如果被巫師抓到,只能自認倒霉。
其次,PKER可以利用TRIGGERS殺人。例如:你有一個TRIGGERS是這樣的,當“你一覺醒來...”然后“xxxxx”(多個命令),那么他可以想辦法讓你接收到多個“你一覺醒來...”,之后嘿嘿嘿...
再次,TRIGGERS 做的不好,輸入命令過多,那么閃電是不會放過你的。你當時就暈了,別人可以kill、get all、再絕一點可以下毒、背你到殺人NPC處...,你等于把自己放在菜板上,任人宰割。即使沒人害你,你也浪費了大量時間。
還有許多應該注意的問題,這只是必須切記的三點。下篇我將結合自己的心得,講一下做TRIGGERS應注意的問題。
四、如何避免TRIGGERS帶來的弊病
1、在上面我說了,TRIGGERS 由PATTERN激活,那么在用的時候應該盡量避免錯誤的接收到PATTERN。例如:關閉不使用的交談頻道(chat,rumor,tell),在TRIGGERS 中將PATTERN盡量做長,同時盡量限定其活動條件(例如用^可以使PATTERN僅在輸出行頭相同時作用)。練功的時候找一個不容易給人發現的地方,同時要經常更換練功地點。
2、做TRIGGERS應該避免一些經常出現或容易被人猜到的PATTERN,如果必須這樣,那么在此TRIGGERS不應激活的時候,用#t-將其至為Disable。最好在PATTERN中加入對變量,對當時情況加以判定。另外需要經常激活的TRIGGERS中,必須將命令數目縮短,防止錯誤活動。
3、對于某些高頻率出現的PATTERN,可以利用一個變量來判定是否輸入命令
例
在打NPC的時候,會做以下TRIGGERS:
A 當你輸的時候的Pattern。
B 當NPC輸的時候的Pattern。
那么在打10個以上NPC的時候,如果用普通方法做,那么在NPC接連跳開的時候,很容易在短時間內超過40條命令,當即暈倒。 所以,應該在這時候用一個變量來判斷是否已經輸入了大量命令,當前是否應該輸入命令(可以用變量結合#if命令來做)。
4、在TRIGGERS中輸入的命令要合理的加入 #wa 。請看下面的例子。你有一個TRIGGERS,將輸入80個命令,而MUD限制一定時間內不能輸入40個,所以你必須加入#wa。
方法一:#80 #wa 500;x
方法二:#40 x;#wa 6000;#40 x
哪個好? 當然是方法二。等待的時間少,而且避免了緩沖區滿的問題,避免了主機一次接收多個命令。
注: ZMUD處理#wa是這樣的,其等待一段時間向MODEM緩沖區,注意不是主機 !!! 輸入命令。那么在緩沖區滿的時候,實際上命令還是一次送出,主機仍然一次接收多條命令。根本沒有起到#wa的作用。這點在輸入多個命令時,尤為明顯。切記!切記!
5、盡量多用主機命令alias,將常用的命令用短命令代替。這有助于減低網絡通信量,解決由于緩沖區造成的問題。或者干脆關閉MODEM緩沖(這似乎不太可能)。
6、在用TRIGGERS來du shu,lian parry等的時候可以用一個變量隨機的做一些動作,不讓別人知道你是 ROBOT。除了丐幫,其他幫派弟子要知道多個可以 sleep 的安全地點,避免巫師甕中捉鱉(嘿嘿,巫師看了不要生氣喲)。另外在命令串中#wa的時候,要#t-掉一些不應該激活的TRIGGERS。
7、在輸入大量命令的時候,將命令分解為多個小命令,然后順序執行效果比一條長命令(中間有#wa效果好)。例如你一覺醒來就xxxxxxx,不如你一覺醒來x1、之后x2、x3...這在一定程度上可以解決緩沖區問題。
8、在TRIGGERS中加入變量,ZMUD命令等,使其帶有一定的判斷性。
9、記住,目前在MUD中SLEEP大概是10秒。那么WAIT超過10秒似乎就....
10、各位試試在被閃電擊中醒來后再輸入大量命令,看看有什么結果?hehe...
下一篇將著重介紹TRIGGERS中經常使用的WILDCARDS。
RIGGERS常用技巧
1、WILDCARDS
* 通配任何數字、字符或空白
? 通配任何單個字符
%d 通配任何數字(0-9)
%w 通配任何字母(a-z)
%a 通配任何數字和字母(等于%d+%w)
%s 通配任何空白(spaces, tabs)
%x 通配任何非空白
[range] 通配任何在range范圍內的字符
^ 強制PATTERN在行頭時顯示,TRIGGERS才有作用
$ 強制PATTERN在行尾時顯示,TRIGGERS才有作用
(pattern)將參數帶給TRIGGERS(%1-%9)
~ 提示系統將~后字符當作字符而不是wildcards
{val1|val2|val3|...} 在PATTERN中核對多個顯示數據
{^string} 在PATTRN中不核對該字符串
同時你可以在PATTERN中運用變量,變量在PATTERN起作用之前,會被替代。
重點:如何利用WILDCARD抓狀態:
抓氣: ^%s氣%s(%d)*/%s(%d)%s~(
^^^^%1 ^^^^%2
這個PATTERN返回兩個參數%1、%2(分別表示當前氣、氣上限),那么在COMMAND中就可以針對以上兩個參數利用ZMUD函數和命令進行自動判斷,制作有智能的TRIGGERS。
例 1:COMMAND為 '#math dazuohow %1-20;#if %1>50 {dazuo@dazuohow}'
則:當當前氣>50的時候,打坐剩下20點的氣。
例 2:COMMAND為 '#if %1<150 {yun recover}'
則:當當前氣<150的時候,利用內力補充氣。
同樣道理,你可以制作更復雜的TRIGGERS,針對當前ID情況做不同的行為。例如受傷了就YUNHEAL,餓了就EAT等等...。還可以利用CASE增強TRIGGERS。
例 2:有些人的TRIGGERS中“看起來想殺死你”馬上QUIT。可能是想殺他的人太多了,不愿意一個一個做,也可能是太懶不愿意去判斷。結果,hehe。某次,有人把毒蛇放在四個城門口和客店。我親眼目睹至少10個ID碰上毒蛇就就QUIT,包括一些高手。 HAHA....當時錢少,于是揀東西揀的不亦樂乎。hahaha...。其實把人物名字抓下來判斷一下不是很麻煩的。
2、TRIGGERS狀態與選項
主要選項:1、When load En/Disable
確定當mud文件被load的時候,TRIGGERS是否活動。
2、Triggers on New line/Prompt
確定PATTERN是否接收完一行才核對(是否接收到CR字符)
3、TRIGGERS ON TRIGGERS
是否在TRIGGERS中啟用TRIGGERS
主要狀態:En/Disable 確定TRIGGERS當前是否活動
主要命令:#t+ {classname} 將classname指明的TRIGGERS DISABLE
#t- {classname} 將classname指明的TRIGGERS ENABLE
#ig 忽略所有TRIGGERS
3、在TRIGGERS中經常用到的運算符
+ 加
- 減、負號
* 乘
/ 除
\ 取模
&、and AND運算
|、or OR運算
xor XOR運算
! NOT運算
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<>、!= 不等于
=~、~= 包含
例 1:利用'|'來多重判斷。'|'代表“或”的意思。
如'{江百勝|武將}向后'=TRIGGERS1'武將向后'+TRIGGERS2'江百勝向后'這點在需要判斷多個主體做同一動作時十分有用。
4、綜合例子:
下面舉一個簡單的綜合例子,可以從客店為基點自動把揚州4門的兵抓到中央廣場,然后回到客店。
1)變量:NPC (默認值:BING)
TIME (默認值:1)
2)ALIAS:get1 time=1;w;s;#3 e;hit @npc
get2 #3 w;#3 n;hit @npc
get3 #3 s;#3 w;hit @npc
get4 #3 e;#3 s;hit @npc
gobackdrop #case (@time) {#3 w;drop @npc;#3 e}
{#3 s;drop @npc;#3 n}
{#3 e;drop @npc;#3 w}
{#3 n;drop @npc;#3 s}
(gobackdrop打在一行里)
3)TRIGGERS:
1、所有你贏的時候
hit @npc
2、官兵腳下一個不穩...
halt;get bing;gobackdrop;hit @npc
3、你要攻擊誰?
#if @time<4 {#add time 1;get@time} {#4 n;e}
這是個非常簡單的例子,其中有很多可以改善的地方。我以前用來抓NPC用的TRIGGERS就和上面的差不多(現在當然復雜多了,hehe...)。上面只是個基形,大家可以參考例子不斷創新完善。要知道,我現在一上網就抓NPC,抓10個用不了5分鐘。
另外大家還可以利用每次進來地點固定的方法。例如在客店SAVE,然后一聯線就抓NPC,利用丐幫秘道搬回去,之后QUIT再聯,又在客店了,呵呵...再抓!(reconnect 變量不清零)。這點對于來回路途長的門派特別有用(例如少林、星宿)。
關于TRIGGERS,我寫到這里算是做一個簡單的介紹。當然ZMUD功能遠不止我上述這么簡單,我的文章目的在于拋磚引玉,希望大家在看了我的文章后,對ZMUD有更深層次的了解。同時也希望各位高手們不吝指教,指出文中錯誤,三四不甚感激。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -