[心得] Zmud函數的解說。(慢慢增加)

看板mud_sanc (Sanctuary - 聖殿)作者 (hmml)時間17年前 (2008/10/31 00:59), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串1/1
慢慢補....說明是套用別人的: <<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
hmml, 來編輯精華區裡的 zmud 資料夾吧
10/31 01:30, 1F

10/31 01:36, , 2F
推你的用心.雖然我懶的學了XD
10/31 01:36, 2F

10/31 01:48, , 3F
自用的啦!省得又要重新翻....
10/31 01:48, 3F

10/31 01:50, , 4F
推,看內建的help對我來說很吃力
10/31 01:50, 4F
※ 編輯: hmml 來自: 218.163.172.59 (11/01 01:13)

11/01 07:42, , 5F
%delitem(s,list)屎蛋還在阿
11/01 07:42, 5F
※ 編輯: hmml 來自: 218.163.172.59 (11/01 12:40) ※ 編輯: hmml 來自: 218.163.171.99 (11/03 01:24)
文章代碼(AID): #192UW4h7 (mud_sanc)
文章代碼(AID): #192UW4h7 (mud_sanc)