[心得] Zmud函數的解說。(慢慢增加)
慢慢補....說明是套用別人的:
<<http://www.tymud.com/www/20/2007-04/99.html>>
如果有錯誤,請多多指教,但對超可愛龍娃娃或DRAGONDOLL有異議則無視.....XD
=======================================
%abs(i):返回i的絕對值
EX:#say %abs(-1) 會在畫面顯示1
---------------------------------------
%concat(s1,s2,s3..):組合字串s1,s2,s3,最多不超過9個
EX:#say %concat(超,可,愛,龍娃,娃),會顯示超可愛龍娃娃
---------------------------------------
%copy(s,i,n):返回字符串s的一部分,從第i個字符開始,共n個字符
EX:#say %copy(hello,2,1) 會顯示e
#say %copy(超可愛龍娃娃,3,2) 會顯示可
註:中文字是雙字元組成,所以i只能是奇數,n只能是偶數,否則會亂碼
---------------------------------------
%delete(s,i,n):刪除字符串s中從第i字符開始的n個字符
EX:#say %delete(party,5,1) 會顯示part
#say %delete(超可愛龍娃娃,3,2)會顯示超愛龍娃娃.....XD
註:中文字是雙字元組成,所以i只能是奇數,n只能是偶數,否則會亂碼
---------------------------------------
%insert(p,s,i):在字串s的第i個字符處插入字串p
EX:#say %insert(龍,超可愛娃娃,7) 會顯示超可愛龍娃娃
#say %insert("cute ",dragondoll,1) 會顯示cute dragondoll
#say %insert(cute,dragondoll,1) 和 #say %insert(cute ,dragondoll,1)
都會顯示cutedragondoll,空格必需加""才有效!
---------------------------------------
%isnumber(s):如果字串s是數字,返回true
EX:#if(%isnumber(%1)) {#say 超可愛龍娃娃} {#say dragondoll}
如果%1=8088 就會執行#say 超可愛龍娃娃,如果是cute,則執行#say dragondoll
---------------------------------------
%left(s,n):從字串s中截取最左邊的n個字符
EX:#say %left(超可愛龍娃娃,6) 會顯示超可愛
#say %left(dragondoll,6)會顯示dragon
---------------------------------------
%begins(s1,s2):如果字串s1的開頭是s2,其值為true
EX:(%begins(%1,超)) {#say 超可愛龍娃娃裝新手} {#say 超龍娃娃按日子換名字}
假設%1是超可愛龍娃娃,則字首就會相符,所以執行#say 超可愛龍娃娃裝新手
(糟了,無限迴圈!)
但%1收到星辰時,則字首就不會相符,所以執行#say 超龍娃娃按日子換名字
(又無限迴圈了!)
註:以上範例可以弄當zmud!
---------------------------------------
%ends(s1,s2):如果s1在s2的尾部,返回true
EX:#if (%ends(%1,寶)) {#say 超可愛龍娃娃愛裝新手} {#say 超可愛龍娃娃一年換365
個名字}
假設%1是超可愛龍娃娃,則字尾就會相符,所以執行#say 超可愛龍娃娃愛裝新手
但%1收到星辰時,則字尾就不會相符,所以執行#say 超可愛龍娃娃一年換365個名字
---------------------------------------
%len(s):返回字串s的長度
EX:#say %len(超可愛龍娃娃)>>12
#say %len(dragondoll)>>10
---------------------------------------
%lower(s):將字串s轉成小寫
EX:#say %upper(DRAGONDOLL)>>dragondoll
---------------------------------------
%upper(s):轉換成大寫
EX:#say %upper(dragondoll)>>DRAGONDOLL
註:英文字母專用,不接受中文字或全形字
---------------------------------------
%proper(s):將英文單字中第一個字母外的其他字母轉成小寫
EX:#say %proper(dragondoll)>>Dragondoll
#say %proper(DRAGONDOLL)>>Dragondoll
#say %proper(dRAGONDOLL)>>Dragondoll
#say %proper(龍娃娃)>> 娃娃,由於龍的前半個字元被換掉,所以會變掉,這裡
是變成空格!
註:所以也是英文字母專用
---------------------------------------
%max(a,b,c,d...):取最大值
EX:#say %max(1,3,56,1,3333) 顯示3333
---------------------------------------
%min(a,b,c,d...):取最小值
EX:#say %min(1,3,56,1,3333) 顯示1
---------------------------------------
%null(s):如果字串s為空,返回true
EX:#if(%null(@cute)) {#say 超可愛龍娃娃} {#say dragondoll}
當變數@cute出現字樣,如cute char則執行#say dragondoll
若變數@cute是空白的,則執行#say 超可愛龍娃娃
---------------------------------------
%pos(p,s):返回字串p在字串s中的位置,如果p不在s中,返回0/false
EX:#say %pos(on,dragondoll)>>5
#say %pos(可愛,超可愛龍娃娃)>>3
#say %pos("不可愛",超可愛龍娃娃)>>0
#if (%pos("【",%1)) {#cap chat} {#noop}
當%1中有【時,則#cap chat,否則#noop
---------------------------------------
%ismember(s,list):如果字串s在字串列表list中,返回true
EX:#say %ismember(%1,超|可|愛|龍|娃|娃)
當%1為"超",會顯示1,若為"可",則顯示2,依此類推,不管值如何,都是(true)
當%1為列表以外的字,如"dragondoll",則顯示0,判斷為不成立(false)
現在設定一個變數如右:#var dragondoll (超|可|愛|龍|娃|娃)
將上例改成:#say %ismember(%1,@dragondoll)
當%1為"超",顯示1,若為"可",顯示1,值都為真(true)
當%1為@dragondoll沒有的字,如"雷",則顯示0,判斷為不成立(false)
註:例二的值只有0和1,不會出現別的
---------------------------------------
%additem(s,list):增加字符串s到字符串列表list中
EX:先設定一個字串:#var dragondollkiller (女王陛下|巴哈姆特|豆腐|屎蛋|阿尼)
針對這段訊息:
是誰殺了龍娃娃!目前檢查總長小寶和機器戰警將無尾熊列為嫌犯之一!
設定觸發:
Pattern:是誰殺了龍娃娃!目前檢查總長小寶和機器戰警將(%1)列為嫌犯之一!
Commands:#var %additem(%1,@dragondollkiller)
如此一來,無尾熊就會被加入@dragondollkiller之中!
使用#say @dragondollkiller看結果:
女王陛下|巴哈姆特|豆腐|屎蛋|阿尼|無尾熊
---------------------------------------
%delitem(s,list):從字符串列表list中刪除字符串s
EX:續用上例!針對這段訊息:
經過多日查證!屎蛋已經被排除在命案嫌犯名單之外!
屎蛋走出局外,聲稱機器戰警對他……..(不重要!)
設定觸發:Pattern:經過多日查證!(%1)已經被排除在命案嫌犯名單之外!
Commands:#var %deltiem(%1,@dragondollkiller)
觸發後,@dragondollkiller中的"屎蛋"會剔除掉!
使用#say @dragondollkiller看結果:
女王陛下|巴哈姆特|豆腐|阿尼|無尾熊
註:阿尼則被掛掉了!
---------------------------------------
%leftback(s,n):從倒數第n個字符開始,截取字串s最左邊的部分
EX:#say %leftback(超可愛龍娃娃,2)>>超可愛龍娃
#say %leftback(超可愛龍娃娃,4)>>超可愛龍
#say %leftback(超可愛龍娃娃,6)>>超可愛
註:中文字串時,n請使用偶數!
---------------------------------------
%rightback(s,n):從倒數第n個字符開始,截取字串s最右邊的部分
EX:#say %rightback(超可愛龍娃娃,2)>>娃
#say %rightback(超可愛龍娃娃,4)>>>娃娃
#say %rightback(超可愛龍娃娃,6)>>>龍娃娃
註:中文字串時,n請使用偶數!
---------------------------------------
%remove(p,s):在字串s中刪除子串p
EX:#say %replace(超可愛龍娃娃,娃娃)>>超可愛龍
%repeat(s,n):重複返回字串s共n次
EX:#say %repeat(超可愛龍娃娃,2)>>超可愛龍娃娃超可愛龍娃娃(執行兩次)
#say %repeat(超可愛龍娃娃,1)>>超可愛龍娃娃(執行一次)
#say %repeat(超可愛龍娃娃,0)>>(不執行)
---------------------------------------
%replace(s,p,r):在字串s中搜索字串p並替換成字串r
EX:#say %replace(超可愛龍娃娃,娃娃,寶寶)>>超可愛龍寶寶
---------------------------------------
%right(s,n):從字串s中截取最右邊的n個字符
EX:#say %right(超可愛龍娃娃,4)>>愛龍娃娃
---------------------------------------
%time(format):返回當前的日期時間,如果format省略,將返回詳細的日期時間信息,
EX:#say %time(yy/mm/dd hh:mm:ss)>>08/10/31 02:43:04
#say %time>>星期五 十月 31, 2008 2:47:36 am(完整訊息,不過會佔空間)
註:yy:西元年後兩位
yy、yyy:西元年四位
mm:月份
mmm:中文月份
hh、h:時
mm、m:分
ss、s:秒
不能使用全形字元隔開各數!加""也不行!
---------------------------------------
%numwords(s,d):返回字串s中的單詞數,d為單詞分隔符,默認值是空格
EX:#say %numwords("超可愛龍娃娃老愛裝新手!")>>1
#say %numwords("超可 愛龍娃 娃老愛裝新手!")>>3
#say %numwords("超可 愛龍娃 娃老愛裝新手!")>>1,預設為半形空格,所以
仍判定為1
#say %numwords("超可 愛龍娃 娃老愛裝新手!", )>>3,在後方接上自己的
設定 (全形空格),判斷就會符合需求!
#say %numwords("超可 愛龍娃 娃老愛裝新手!",)>>3
#say %numwords("超可,愛,龍娃娃老愛裝新手!",,)>>1,如果使用到可能是語法會
用到的字元,將判斷錯誤!
#say %numwords("超可,愛,龍娃娃老愛裝新手!",",")>>3,將分隔字元用""框起來
,就能正常使用!
---------------------------------------
%word(s,i,d):返回字串s中的第i個單詞,d指出字串的分隔符,如果省略,默認是空格
EX:#say %word(dragondoll is very cute.,3)>>very
#say %word(dragondoll is very cute.,1)>>dragondoll
#say %word(dragondoll,is,very,cute.,3,,)>>dragondoll,以zmud可能會用到的字
元做分隔記號時,會發生錯誤!
#say %word("dragondoll,is,very,cute.",3,",")>>very,如本例,字串和分隔記號
均加上"",就能正常使用!
註:格式完整的寫法可以減少執行錯誤發生!
---------------------------------------
%mod(a,b):求出a/b的餘數
EX:#say %mod(1,6)>>0,只要a值在0~b-1之間,值都是0
#say %mod(6,6)>>0
#say %mod(12,6)>>0,如果被整除,結果都是0
#say %mod(7,6)>>1
#say %mod(8,6)>>2,都得到餘數
註:a與b都可以放式子進去,也可以用變數。
---------------------------------------
%expand(s[,level]):擴展字符串s中的變量和函數
EX:#VAR dragondoll "龍娃娃"
#VAR cute "超可愛@dragondoll"
#say @cute >>結果出現超可愛龍娃娃,但改成
#say %expand(@cute,1)>>出現超可愛@dragondoll
註:別問我後面那個1是啥??我也不清楚........sob
---------------------------------------
%eval(p):返回表達式p的結果
EX:#say %eval(1+30)>>31
#say %eval(1*30)>>30
#say %eval(1-30)>>-29,負數也沒問題。
#say %eval(1/39)>>0,小數的部份為無條件捨去。
#say %eval(2999-3000+5*3)>>14,四則運算自動使用先乘除後加減的原則。
註:要先加減的部分括起來即可,如:(2999+3000)/6=999
---------------------------------------
%random(i,j):返回一個>=i並<=j的隨機數,如果省略j,則返回0~i間的隨機數
EX:#say %random(1,49) 會出現1到49中任一數,最少為1,最大為49。
#say %random(49) 會出現0到49中任一數,最小0,最大49
---------------------------------------
%trim(s):消除字串兩端的空格
EX:#say %trim( 超可愛龍娃娃 )>>超可愛龍娃娃
#say %trim( 超可愛龍娃娃 )>> 超可愛龍娃娃 ,不接受全形空格!
---------------------------------------
%if(expression, true-value,false-value):
如果表達式為true,返回true-value,否則返回false-value
EX:有一個比賽結果訊息如下:
比可愛大賽超可愛龍娃娃VS 小魚得票率<<%1:%2>>
再設一個式子:
chat %if(%1 > %2,shout 蒼天無眼,世風日下!,shout 老天有眼!社會安康呀!)
如果龍娃娃贏了,就會大呼:蒼天無眼,世風日下!
如果龍娃娃沒贏,就會大呼:老天有眼!社會安康呀!
註:對例子有意見者,一樣無視唷!
---------------------------------------
%case(i,s1,s2,s3...):如果i=1,值為s1,最多不超過8個,用法類似#case
EX:#say %case(%1,超可愛龍娃娃,巴哈姆特,女王陛下,小雪子,蜜雪兒)真是神!
如果%1=1,就會顯示超可愛龍娃娃真是神!
如果%1=2,就會顯示巴哈姆特真是神!
如果%1=3,就會顯示女王陛下真是神!以下列推!
---------------------------------------
%yesno(s):顯示問題s和按鈕yes/no,根據按下的按鈕返回true/false。參見#yesno命令
。如果顯示的按鈕超過兩個,返回的將是按鈕號,可與#case連用。如果只顯
示兩個按鈕,可與#if命令連用以充分發揮其用途
EX:#action %yesno(超可愛龍娃娃到底可不可愛?)
會跳出一個詢問視窗,內容是超可愛龍娃娃到底可不可愛?
按下"yes"鈕,判斷條件成立(ture), 按下"no"鈕,判斷條件成立(false)
直接在命令列輸入,威力跟zmud自爆按鈕差不多!(無限詢問視窗!跟zmud當機差不
多了!)參考help後,採用:
#IF %yesno(超可愛龍娃娃到底可不可愛?) {shout 可愛!} {shout 小魚才可愛!}
直接在命令列輸入,會跳出問你超可愛龍娃娃到底可不可愛?的詢問視窗,
按"yes"就會大呼:可愛!
按"no" 就會大呼:小魚才可愛!不用想也知道要按這是秘密唷
---------------------------------------
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.114.251.40
推
10/31 01:30, , 1F
10/31 01:30, 1F
推
10/31 01:36, , 2F
10/31 01:36, 2F
→
10/31 01:48, , 3F
10/31 01:48, 3F
推
10/31 01:50, , 4F
10/31 01:50, 4F
※ 編輯: hmml 來自: 218.163.172.59 (11/01 01:13)
推
11/01 07:42, , 5F
11/01 07:42, 5F
※ 編輯: hmml 來自: 218.163.172.59 (11/01 12:40)
※ 編輯: hmml 來自: 218.163.171.99 (11/03 01:24)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
35
58
120
255