精華區beta mud_sanc 關於我們 聯絡資訊
作者 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