看板 mud_sanc 關於我們 聯絡資訊
  個人是用這個代替speek walk,看起來很麻煩, 其實用起來非常好用,修改也很便利: 做一個別名,可能像這樣: ^walk$ 如果想用walk1、walk2...去切換路徑...就用:^walk(\S+)$ 現階段不清楚怎麼做切換,就先跳過這段紅字。 內容則是用lua的table類型來建立資料: 簡短的寫法像這樣: walk = { 'd','s','e','n','n', } 如果每個步驟都很單純,只有一道指令,可以用上面的格式, 如果比較複雜的,就用下面這種: walk = { [[d]], [[s]], [[e]], [[n]], [[n]], } 如果要"厚工"一點,也可以這樣: walk = { ["1"] = [[d]], ["2"] = [[s]], ["3"] = [[e]], ["4"] = [[n]], ["5"] = [[n]], } 自己建索引,只是當你建成後,想加一道步數到前頭... 你會明白我為何非常建議你不這麼做。我比較建議第二種, 然後在後面加上註解: walk = { [[d]], --1,下塔 [[s]], --往南 [[e]], [[n]], [[n]], --5,快到城門口了 } 就算懶得改註解,也只是找位置稍微麻煩,不影響整體功能。 資料建好後,再加上計步器: if step == nil then --沒建立變數step的話,就是nil(不存在),所以做個判斷 step = 1 --建立step,值為1。 Execute(walk[step]) --執行table關係表-walk-第一個項目。 step = step + 1 --將step的值累加1。 else --有建立的時候 Execute(walk[step])) --直接執行對應項 if step ~= nil then --如果step不等於nil, step = step + 1 --將step的值加1,為不存在的變數加1的話會報錯,所以做判斷 end --結束 step ~= nil 的if end --結束 step == nil 的if 然後新建一個timer,把別名填進內容中,Send to 記得選Execute。 自己設一個能接受的秒數。就是很基本的路徑了。 遇到戰鬥就用 SetTimerOption ("計時器label", "Enabled", "n") 關了它。 開始戰鬥就用 SetTimerOption ("計時器label", "Enabled", "y") 去打開它,帶隊的話,因為隊員結束戰鬥的時間不同步,所以 最好用DoAfterSpecial去設個容錯時間: DoAfterSpecial('5','SetTimerOption ("計時器label", "Enabled", "y")',12) 因為Timer再啟動就會先執行一次內容,即: 動作>>等秒數>>動作 而非 等秒數>>動作 而函數也可以放到table裡去排隊,不過要另建別名才能和別的指令放一起 ,不然會出錯,否則就是單獨放一個: walk = { [[d;heart clerical]], --往下走同時放公會之心 [[SetTimerOption ("計時器label", "Second", "6")]], --把時間改成6秒 [[s;en wudon slash]], --往南同時啟用武當劍法 [[#SetTimerOption ("計時器label", "Enabled", "n")]], --停住計時器 [[e]], --計時器啟動後,立刻往東 [[]], --懶得改計時器時間,直接放一個空包彈,先等個6秒 [[]], --再等6秒,目前等了12秒。 [[n]], --第18秒,往北 [[n]], --如果確定不會被停住,可以跟前面的併成 2 n [[#SetTimerOption ("計時器label", "Enabled", "n")]], --到底了,停住計時器 } 想重走前一步,就把step = step - 1 還用沒過 想倒回某一步,就是step = 數字 沒用過 注意:別用這個當完全殭屍,OK? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.205.99
aiggkimd :soga!!!! 05/24 08:40
aiggkimd :這table是自己建一個文件檔在路徑填上去? 05/24 09:15
aiggkimd :還是寫在alias裡面 05/24 09:15
aiggkimd :if 那串是放在哪? 05/24 09:20
aiggkimd :Execute括號裡不用加"嗎?第二個Exe後面是多一個 ) ?? 05/24 10:08
hmml :全部寫在alias裡面,table在前,if在後 05/24 17:51
hmml :Execute裡的東西是變數的時候不須加'' 05/24 17:51
hmml :字串才需要。 05/24 17:52
hmml :對呀...漏刪一個) 05/24 17:58
aiggkimd :跑完所有步數就會出問題..我只能在最後加上 05/24 20:34
aiggkimd :if step =最後一格 then step=1 才不會出問題 .orz 05/24 20:35
aiggkimd :變一個loop. 05/24 20:35
aiggkimd :不加那段,改if的第一行也行 05/24 20:43
aiggkimd :不過這樣就變成要自己算最後一步是第幾步 05/24 20:45
我的處理方式是建立一個別名,如: setwalk(\S+) --正則格式,(\S+)為%1 if '%1' == 'off' then              --%1=off 則 #SetTimerOption ("計時器label", "Enabled", "n")--將計時器關閉 elseif '%1' == 'on' then --%1=on 則 #SetTimerOption ("計時器label", "Enabled", "y")--將計時器打開 else --其它 step = '%1' --設定計步器 end --結束 然後將table最後一步用上面這個別名取代: 原本是這樣: [[#SetTimerOption ("計時器label", "Enabled", "n")]] 改成: [[setwalknil;setwalkoff]]   ↑     └關閉計時器。   └把計步歸零(setwalk0)或移除(setwalknil)。  MushClient比較怪的地方,就是別的指令在table表可以塞很多個去執行, 但函數就必須一條一個位置,所以函數最好弄成一個別名去執行。 即: 一個別名放路徑加上執行。 一個計時器用來執行上述的路徑。 一個別名用來調整上述兩項的各個設定。 以上三個是主體。再來就是依實際房間的描述或發生的事件, 建立必要的觸發去開關它。 有需要的話: 再加一個定時器,定時去啟動上述的計時器。 ※ 編輯: hmml 來自: 220.132.196.45 (05/25 10:32)
aiggkimd :soga!! 05/25 10:49
aiggkimd :最後的step = '%1' 我改成 step = %1 才正常 05/25 15:31
aiggkimd :用timer有個缺點,lag就全亂掉 05/25 17:09
aiggkimd :我取消timer的用法,直接抓明顯路口這句 05/25 17:15
aiggkimd :沒戰鬥就Execute路徑,遇到戰鬥就不做動作 05/25 17:17
aiggkimd :戰鬥結束在Execute路徑,也是可以 05/25 17:17
hmml :啊對!我忘了索引型態才要加''。sorry 05/25 23:57
hmml :因為我是用刀客為基準去弄的,所以比較沒去管lag.. 05/25 23:58
hmml :step = '1' 資料型態為字串,用於['1'] = [[test]] 05/26 00:00
hmml :step = 1 資料型態為數值,則用去現在這種table表 05/26 00:02
hmml :聖殿的戰鬥有一個優點,就是戰鬥開始的訊息早路口訊 05/26 00:05
hmml :息出現,所以來得及關掉路徑觸發。 05/26 00:06