作者 hmml (hmml) 看板 mud_sanc
標題 [心得] Zmud 將各class中相同字串的觸發整合為一個
時間 Sat Oct 2 11:31:57 2010
───────────────────────────────────────
減少triggers數量的方式,增加修減也不難。適用戰鬥開始與戰鬥結束兩條觸發,
因為指令並不複雜。
Pattern:
□ □ □ 戰 鬥 [開] 始 □ □
Commands:
001 classlist="blood|8kwa|king|hole"
002 #var classopen ""
003 #forall @classlist {#var classopen %additem(%trigger(%i),@classopen)}
004 #case %ismember(1,@classopen) {hi} {hello} {glare} {runaway} {dunno}
總共四行:
001:建立一個名為classlist的列表,把要用到的class名字全塞進去,用|隔開。
002:建立或清空一個名為classopen的Variable。
003:先從綠色部份說明:
#forall @classlist {%i}:循序執行@classlist的內容,如照左方所寫執行
,則會在視窗循序輸出:
blood
blood2
8kwa
king
hole
黃色部份:
檢查class的開關狀態,0為關,1為開。套入綠色執行式成
#forall @classlist {%trigger(%i)}時,則會視窗循序輸出:
0
1(假設目前blood2正在開啟)
0
0
0
藍色部份:
#var classopen %additem(%trigger(%i),@classopen)
%additem將%trigger(%i)的結果增加到@classopen的內容後方,但不會修改內容,
所以要加上#var classopen來真正修改@classopen,配合#forall部份,就會執行
以下指令:
#var classopen %additem(%trigger(blood),@classopen) =0
#var classopen %additem(%trigger(blood2),@classopen) =1
#var classopen %additem(%trigger(8kwa),@classopen) =0
#var classopen %additem(%trigger(king),@classopen) =0
#var classopen %additem(%trigger(hole),@classopen) =0
而classopen裡的列表會有如下的變化:
0
0|1
0|1|0
0|1|0|0
0|1|0|0|0 ←本行最終執行結果。
004:%ismember(1,@classopen):輸出資料"1"在classopen所在位置,結果是2(第二筆)
將2帶入#case中:
#case 2 {hi} {hello} {glare} {runaway} {dunno}
依據2這個結果,#case 會選出右方第二個指令,即{hello},輸出至視窗:
hello
註:如果所有的class都未開啟,則#case的計算結果會是0,依zMUD的規則,會選擇最
後一項,所以可以將#case的項目設成比classlist多一項,做為其它狀況使用的
指令,例如跑任務時。
=============================================================================
Pattern:
□ □ □ 戰 鬥 [開] 始 □ □
Commands:
classlist="blood|8kwa|king|hole"
#var classopen ""
#forall @classlist {#var classopen %additem(%trigger(%i),@classopen)}
#case %ismember(1,@classopen) {hi} {hello} {glare} {runaway} {dunno}
藍色和紫色部份可以依自己喜好更名,但同色要相同名稱。
綠色部份依使用需求自行增修減刪,但classlist和#case的內容要相對應。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.176.62