close
第5章 List的使用:配合%ismember
%ismember可以查詢某資料有沒有在List裡,
很方便可以把幾個類似句型的trigger寫成同一個,
例如你想抓 <xxx>告訴你 這樣的句型,
當xxx是Suzin、Hippo、Chowchow時做某件事情(例如beep)
當xxx是Nacn、Nala、Square時做另一件事情
如果各自寫一個觸發,6個人就要寫6個觸發,加上預設要cap起來1個共7個
以我的習慣,喜歡減少觸發的數量,而增加每個觸發做的事情量
我會寫一個觸發,pattern是
(%*)告訴你
指令是
#if {%ismember(%1, "Suzin|Hippo|Chowchow")} {#beep}
#if {%ismember(%1, "Nacn|Nala|Square")} {do_something}
#cap tell
第6章 List的使用:配合%line跟%match
這跟%ismember的用法有點相似之處。
%line是一個zmud預先定義的變數,zmud會幫你設好裡面的值
%line裡面放的是從MUD收到的最後一行,
如果用在觸發裡面,那就是符合觸發的那一整行(這是比較容易理解的想法)
舉個例子,
我想把mud裡的新聞頻道cap起來,
則我cap的觸發,pattern是新聞頻道的字眼,例如 【新聞】
內容是
#cap news
但是新聞頻道裡混著二種東西,遊戲裡的事件跟現實的新聞,後者是我不想cap的
假設現實的新聞是來自:kimo、pchome、bahamut而且新聞頻會出現這些字串
則我把觸發內容改成
#if { !%match( %line, "{kimo|pchome|bahamut}" ) } { #cap news }
則新聞頻道沒有這些字眼時(注意有個!表示否定),才會被cap起來
第7章 List的操作函式
%additem(s,list)
- 把s加到list裡,會加到list的最後面
- 注意:list本身並不會被更改,
要把增加後的list設到原本的list,以下大部分函式也一樣 - #VAR ToDo {kill orc|kill goblin}
#VAR ToDo %addItem("kill orc",@ToDo)
則ToDo會變成 kill orc|kill goblin|kill orc
- 從list裡移除s,如果有多個,只會移除最前面的一個
- 注意:跟additem一樣,list本身並不會被更改
- #VAR ToDo {kill orc|kill goblin|kill orc}
#VAR ToDo %delItem("kill orc",@ToDo)
則ToDo會變成 kill goblin|kill orc
- 從list裡移除第n個項目
- list本身並不會被更改
- %delnitem("a|b|c", 2) 會得到 a|c
- 將list裡第n個項目換成s
- list本身並不會被更改
- #VAR ToDo {kill orc|kill goblin|kill orc}
#VAR ToDo %replaceitem("kill dwarf",1,@ToDo)
ToDO將變成kill dwarf|kill goblin|kill orc
- 把list排序,dir省略或0時是遞增,dir為非0時為遞減
- #VAR slist {123|ab|45|008|789|ABC|ab cd|def|9}
%sort(@slist) 會得到 008|123|45|789|9|ab|ab cd|ABC|def
%sort(@slist,1) 會得到 def|ABC|ab cd|ab|9|789|45|123|008
- 把分隔線用delim取代
- 結果將不再是個list
- List="a|b|c"
%expandlist(@List," ") 會得到 a b c
%expandlist(@List," , ") 會得到 a , b , c
- 移除重覆的項目
- list本身並不會被更改
- %dups(Athos|Bertrand|Caesar|Bertrand|Caesar|Bertrand)
會得到 Athos|Bertrand|Caesar
- 將item加到list的前面
- 堆疊(stack)用法
- list本身並不會被更改
- List="b|c"
List=%push("a",@List)
則List會變成 a|b|c
- 將list最前面的項目取出
- 堆疊(stack)用法
- 注意:會更改list本身
- 注意:參數是listname而不是list,意思是不要打@符號
- List="a"|"b"|"c"
#SHOW %pop(List) 印出 "a"
#SHOW @List 印出"b|c"
第8章 重複(duplicate)資料
這一章是一些跟重複項目有關的小提醒。
%additem會把重覆的項目加入list
#additem不會把重覆的項目加入list
%delitem只會移除第一個找到的項目
#delitem會移除所有找到的項目
%dups可以把有重覆項目的list轉成無重覆項目的list
全站熱搜
留言列表