Re: [心得] mushclient的doafterspeedwalk

看板mud_sanc (Sanctuary - 聖殿)作者 (hmml)時間12年前 (2013/05/24 02:33), 編輯推噓6(6020)
留言26則, 2人參與, 最新討論串2/3 (看更多)
  個人是用這個代替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

05/24 08:40, , 1F
soga!!!!
05/24 08:40, 1F

05/24 09:15, , 2F
這table是自己建一個文件檔在路徑填上去?
05/24 09:15, 2F

05/24 09:15, , 3F
還是寫在alias裡面
05/24 09:15, 3F

05/24 09:20, , 4F
if 那串是放在哪?
05/24 09:20, 4F

05/24 10:08, , 5F
Execute括號裡不用加"嗎?第二個Exe後面是多一個 ) ??
05/24 10:08, 5F

05/24 17:51, , 6F
全部寫在alias裡面,table在前,if在後
05/24 17:51, 6F

05/24 17:51, , 7F
Execute裡的東西是變數的時候不須加''
05/24 17:51, 7F

05/24 17:52, , 8F
字串才需要。
05/24 17:52, 8F

05/24 17:58, , 9F
對呀...漏刪一個)
05/24 17:58, 9F

05/24 20:34, , 10F
跑完所有步數就會出問題..我只能在最後加上
05/24 20:34, 10F

05/24 20:35, , 11F
if step =最後一格 then step=1 才不會出問題 .orz
05/24 20:35, 11F

05/24 20:35, , 12F
變一個loop.
05/24 20:35, 12F

05/24 20:43, , 13F
不加那段,改if的第一行也行
05/24 20:43, 13F

05/24 20:45, , 14F
不過這樣就變成要自己算最後一步是第幾步
05/24 20:45, 14F
我的處理方式是建立一個別名,如: 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)

05/25 10:49, , 15F
soga!!
05/25 10:49, 15F

05/25 15:31, , 16F
最後的step = '%1' 我改成 step = %1 才正常
05/25 15:31, 16F

05/25 17:09, , 17F
用timer有個缺點,lag就全亂掉
05/25 17:09, 17F

05/25 17:15, , 18F
我取消timer的用法,直接抓明顯路口這句
05/25 17:15, 18F

05/25 17:17, , 19F
沒戰鬥就Execute路徑,遇到戰鬥就不做動作
05/25 17:17, 19F

05/25 17:17, , 20F
戰鬥結束在Execute路徑,也是可以
05/25 17:17, 20F

05/25 23:57, , 21F
啊對!我忘了索引型態才要加''。sorry
05/25 23:57, 21F

05/25 23:58, , 22F
因為我是用刀客為基準去弄的,所以比較沒去管lag..
05/25 23:58, 22F

05/26 00:00, , 23F
step = '1' 資料型態為字串,用於['1'] = [[test]]
05/26 00:00, 23F

05/26 00:02, , 24F
step = 1 資料型態為數值,則用去現在這種table表
05/26 00:02, 24F

05/26 00:05, , 25F
聖殿的戰鬥有一個優點,就是戰鬥開始的訊息早路口訊
05/26 00:05, 25F

05/26 00:06, , 26F
息出現,所以來得及關掉路徑觸發。
05/26 00:06, 26F
文章代碼(AID): #1Hdc49Rl (mud_sanc)
文章代碼(AID): #1Hdc49Rl (mud_sanc)