網頁 貼吧 文章 作者 工作  
網頁搜尋
 
 愛PO吧 >> igekinii >> 瀏覽文章
回覆 加入我的最愛 與好友分享

如何防止相同訊息在短時間內連續觸發

本被文章 0 次, 共有回覆 0  
0
 
0
第一神拳 李多海[hr]












在rw裡, 有些加持狀態我們會抓狀態結束時再下一次進入狀態的指令, 例如看到

你脫離「月懸碧空」的加持狀態。

就會再pray一次

pattern:
脫離「月懸碧空」的加持狀態。$
(做法一)command:
pray suzin


但很不幸的, 有些狀態如果你本身還在那個狀態裡, 重下一次會先解除本來的狀態再進入一次該狀態(這是為了讓時間重算)
像這樣

你脫離「月懸碧空」的加持狀態。

你進入「月懸碧空」的加持狀態。
在做法一的觸發裡, 很不幸的這個造成無窮迴圈, 觸發每下一次pray又引發一次觸發, 最後指令數太多(暴走)被系統踢出去
引發這個問題, 可能是自己笨笨的重複下狀態, 也可能有好心人幫你下這個狀態, 所以無法完全避免(治本)
一個簡單的治標方法是, 限定觸發後幾秒內不會再度觸發(以下設定5秒), 這樣子就不會被連續觸發, 最不幸也5秒才觸發一次

(做法二)command:
#t- state_moon_tri
pray suzin
#alarm {+5} {#t+ state_moon_tri}

(做法三)command:
#if (!@pause_state_moon_tri) {
pause_state_moon_tri = 1

pray suzin
#alarm {+5} {pause_state_moon_tri = 0}
}

做法二要在options頁面把該trigger設id(例子中是state_moon_tri)
做法三要注意第一次跑前要把pause_state_moon_tri設為0, 不然永遠不會觸發

做法二跟三有一個很小可能的風險, 在那5秒內萬一斷線, 可能使變數無法歸零或觸發沒有回復

如果連續訊息來的很快, 在做法三有可能遇到(機率還是很低),
還沒跑到pause_state_moon_tri = 1那一行, 下一句訊息就來了又通過#if的檢查
我把pause_state_moon_tri = 1放在#if後第一句就是希望它早一點跑到
如果一定不能重複觸發,在做法二可以改個加強版
(做法四)command:
職業道德#pri {#t- state_moon_tri}

pray suzin

#alarm {+5} {#t+ state_moon_tri}

#pri是說一定要做完這行才能去處理下一句mud來的訊息, 所以連續訊息的問題就不會發生

因為做法二(四)看起來比較簡潔, 而且不用多一個變數, 我比較喜歡做法二(四)
除了月懸碧空這種加持狀態之外

我在戰鬥中補血的觸發也使用了這個技巧
為了不浪費補給品(更重要的是不浪費飽食跟精神)以取得最大的續航力
我用hp指令抓下來的值去計算要吃多少補品或繃帶
如果hp指令在我補完血前連續來二次(例如mob二手各擊中你一次), 就會變補二倍的量
這個地方我也是用本篇的技巧避開

逛上一篇:   逛下一篇:

作者: weiinzwl
  (2012-05-15 11:07)
推薦文章: 將本文章推薦到【百度收藏】 將本文章推薦到【YouPush】 將本文章推薦到【udn共享書籤】 將本文章推薦到【Fiigo】書籤

 本文章共有回覆 0 篇,分 1 頁
 聲明:以上內容不代表本站立場,且內容由網友發表提供,若有爭議或違法由發表者承擔,本站將不負責連帶責任,謝謝。

 IPoBar  愛PK  愛遊戲  愛online
新手教學 客服中心 站務公告 交換連結 合作提案 關於我們
 
版權所有©ipobar Ltd., All Rights Reserved.
論壇內會員言論僅代表個人觀點,不代表本站同意其說法,本討論區不承擔由該言論所引起的法律責任