作者hmml (hmml)
看板mud_sanc
標題[心得] zMUD 寫機萬用字元實例演示
時間Sun Sep 9 14:45:06 2012
萬用字元實例演示:
只會用Alias和Trigger,被Variables耍得團團轉的從頭看起,粗通Variables
,想知道更深入的符號組合,從Ex06開始看吧!全部會用,實力在Ex10以上的
,請回文開一篇教大家奧秘中的奧秘吧!求你了!
這裡只用下例句子說明:
你要等 140 秒後才能再 practice!
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex01:*要等*秒後才能再*!
以照樣造句來說,就是:
( )要等( )秒後才能再( )!
( )裡字數不限,只要( )以外字詞能相符,就能滿足條件。
功能也只有判斷是否為條件合符的句子。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex02:(*)要等(*)秒後才能再(*)!
與Ex01不同之處,在於*的兩側被()包圍,除了擁有Ex01的功能外,還能將*當
中的字詞取出來。在zMUD中,被(*)抓取出來的字詞,會依順序分派代號,代
號格式為:%1~%99
在本例,即:
"你"會被分配到%1這個代號;" 140 "代號就是%2;" practice"就是%3。
就像
武狀元大喊:9527!你給我出來!
跑去華府把秋香,應徵當下人的唐伯虎就得答:有! 是一樣的意思。
不過這代號是臨時的,使用期限大概只到在下一行字或空行出現在畫面前,所
以要在臨時編號過期前,另行配發正式代號才行。正式代號當然由使用者自己
編,所以先用abcd去編好了:
#var a %1
#var b %2
#var c %3
這樣就把臨時編號為%1~%3的"你"、" 140 "、" practice",分別配發到a、b
、c去了,現在你叫a,"你"就會出來;叫b," 140 "就會出來;叫c,
" practice"就會出來,不過要叫代號的時候,代號前面要加上@,也就是:
@a、@b、@c,否則誰知道你是要叫人還是練習abc發音,而使用期限會到下次
( )要等( )秒後才能再( )!
同格式的句子再跑出來刷新正式代號分配為止。
另外,派發正式代號的寫法也可以用:
a=%1
b=%2
c=%3
也能得到相同效果。
有時候正式代號使用久了,發很多了,忘了有哪些代號,或想知道各代號被使
用的情形,只要從Variables去找就可以了,位置在zMUD視窗上面的按鈕裡。
有時候,抓出來的詞句在配發正式代號的時候,會有意外的情況,假設:
%1=how are you,當你將它派發到a後,再叫@a,會發現只剩how跑出來,are
you則掉隊了,這時打開Variables檢查後,會看到a裡面how在第二欄,而are
在第三欄,you呢?you跑到更下面的class去了。這是因為#var的格式為:
#var 代號 值 預設值 群組
而當你將值為how are you的%1,分配到a,就會變成:
#var a how are you
剛好與要求格式相同,所以%1裡的三個詞就被拆了。要避免這樣的情形,要
將臨編的格式加上規定的記號,即:
#var a %-1
在"%"和"1"中間加上"-",這樣zMUD就不會誤解意思,將它們分拆到各欄位去。
如果你要自行安插新字句進去,如你要將"windman"分派到b,就這樣:
#var b windman 或
b=windman 皆可。
如果是"windman 好 帥 !",請用""將其包起來,即:
#var b "windman 好 帥 !" 或
b="windman 好 帥 !"
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex03:(*)要等(*)秒後[才]能再(*)!
不同於Ex02,在於"才"被[]所包住,[]的功能,是[]內的組合與長度被指定,
以"才"來說,它是一個雙字元長度的組合,而"[才]"會將該雙字元與其它字元
區隔開來,在中文系統裡,最常被用來解決吃字的問題,但只用到5.55版而已
。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex04:(%1)要等(%2)秒後[才]能再(%1)!
其實這不是正規的寫法,%1~%99不是用在句子裡,不用還是能正常使用,號碼
也能隨你用,重複也無所謂,對zMUD來說,都跟(*)沒什麼不同,使用者可能會
比較好認而己,但辨認這點,也還有更好的做法。本例最多當做備援,做為處
理吃字問題的可能方式。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex05:(%x)要等(%d)秒後[才]能再(%w)!
本例不同於Ex03,三個(*)各自被改為(%x)、(%d)、(%w),但不若Ex04,它們都
有不同的意義,它們加入了篩選字詞的條件,(*)是無條件,即使字元長度為零
都可能通過。而這三個分別代表:
%x:非空白
%d:數字
%w:英文字母
不符合條件,不只不會被派入臨編,整行句子都會被剔除。如果對照原句子,
你會發現本例要稍微修正後才能用,原句為:
你要等 140 秒後才能再 practice!
對照本例格式,可以發現(%d)包含左右的空白;(%w)則有左側的空白。所以應
改為:
(%x)要等 (%d) 秒後[才]能再 (%w)!
才能正確使用。
具備篩選能力的萬用字元如下:
%x:指定非空白。
%d:指定數字。
%w:指定英文字母。
%a:指定數字和英文字母。
%s:指定空白字元(不含全形空白)。
?:指定單字元(單字元即是半形字元)。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex06:({你|我|他})要等 (%d) 秒後[才]能再 (%w)!
不同於Ex05,(%x)的格式改了,變成{你|我|他},這是一個條件更嚴格的萬用
字元,它限定只有你、我、他三個字才能符合資格。不過要注意的:是它不能
和[]並用,所以無法應付{}裡吃字的問題。這樣的句法,在聖殿最常用的地方
就是#cap機的整合,反正機碼都一樣,組一起乾淨多了。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex07:^({你|我|他})要等 (%d) 秒後[才]能再 (%w)!
這次前方多了^,它限定句首的字元條件。假設有一例:
【閒聊─神武弒族】極度冰凍(heart)道:你要等 1 秒後才能再 quit!
嗯!幹得好!聖殿的負載突然減輕了。由於沒有^,所以前面接上什麼都能符
合條件。因為zMUD不是對一整行是否相符,而是一行中有沒有相符的部份。如
果有加^,就能逃過一劫。放心好了!heart不是這種人,可能無心,絕非有意
。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex08:
^(&a)要等 (&b) 秒後[才]能再 (&c)!
其實它就是Ex04的正確解決方法,對於使用者,能更快的方便地看出正式編號
派發情形。對於zMUD,它相當於:
#var a %1 或
a=%1
#var b %2 或
b=%2
#var c %3 或
c=%3
所以也省了好幾行句子。不過對於吃字,兩種方法支援度不同,但無優劣之分
,只能兩招都用用看,哪個行得通就用它。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex09:
^&%x{a}要等 &%d{b} 秒後[才]能再 &%w{c}!
它是Ex08與Ex05的混合版,除了直設正式編號,更加上篩選條件。也讓人覺得
寫的人好像很強?!但這不重要,好寫好認才是它的優點。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex10:
^&%x{pr.a}要等 &%d{pr.b} 秒後[才]能再 &%w{pr.c}!
除了Ex09的優點,它還有一個特點:整理Variables!格式x1.x2的正式編號會
將原本分開的三個數,集合在同一個班之下。如果打開Variables列表,你會
找到一個名為pr的編號,裡面的內容會是
a你b140cpractice
當你要使用其中一個數,就用@pr.a、@pr.b、@pr.c分別呼叫即可。
但你要手動修改內容其中一個數,只能下指令去改,直接從Variables去改會導
致數值失效。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
如果從Ex02就看不懂,我想你就是假髮~不!是桂吧!你的世界跟別人大不相同
,只有去尋求其他明師了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.196.45
推 AresMars :躺著也中槍...但是^ 只要用to chat就能破解了avert 09/09 15:10
→ hlead :基本上不會有人無聊這麼做吧= =.. 09/09 15:50
推 justinj :你上面那位很快就想出來了...可能有在實行吧.. 09/09 21:30
→ hlead :soga.. 09/10 18:04