close
ALARM

Syntax: #ALA [id] pattern [commands] [class] [options]
Related: #TRIGGER #SUSPEND #RESUME

讓你可以設立一個基於時間的觸發,而不是基於由MUD收到的文字。
時間的樣式(time pattern)可以包含指定的時間,跟下面提到的萬用字元。
樣式前面加上減號(-),會以連線時間代替現在時間。

典型的time pattern格式為 時:分:秒,其中時跟分可以被省略,省略的話就會被當作星號(*)。
你可以用星號(*)代表任何數字,也可以用 *value 的寫法代表value的倍數,例如 *10符合10,20,30,..等等。
alarm可以符合的最小單位是0.5秒

你也可以定義一個暫時的(只使用一次,用過即丟)alarm,用法是在時間的前面加上加號(+)。
當時間到達會執行指令並刪除該alarm。

alarm類型的觸發使用option是無效而會被忽略的,但指令語法還是支援。

當只用使用id跟pattern時,會改變指定的alarm。
注意:#alarm指令在建立時並不會展開時間參數,如果你需要展開參數,使用類似下面#exec的語法

ALARM examples

#ALARM -30:00 {save}

小時沒被指定,所以預設為*。因此,這個觸發你每連線半小時的時候儲存你的遊戲。

#ALARM 3:00:00 {gossip "Why aren't you sleeping?"}

在本地時間半夜3點觸發


#ALARM +5 {save}

Executes the "save" command in 5 seconds.  This is a one-time alarm that deletes itself once it has executed.
5秒後執行save指令。這是一次性指令,執行後會刪除自己。

#ALARM example {*5} {#ECHO example}
#ALARM example {+3}

建立一個每5秒發作的觸發,然後把它的time pattern改掉

#VAR temp 5
#ALARM +@temp {@spell}

在@temp秒後,執行儲存在@spell裡的指令。
這是一次性指令,執行後會刪除自己。
注意@temp在顯示時不會展開,但在內部已經被展開了,所以改變temp的值不會影響這個alarm觸發。
要改變alarm什麼時候發作,試試%alarm

#EXEC {%concat(":Tells:#ALARM +",@temp," {#CLR}")}

不太自然的例子,展示如何從這個視窗的變數,建立另一個視窗的alarm


===============   紅貓碎碎念  ====================
實用程度:100% 好用到爆,每個人都應該要會用

取代#wait的好東西,
#wait有時會產生很難查的bug,主要原因是所有的wait只有一個共用的時間計數器。

做個實驗,你在命令列打 #wait 10000;#echo test
然後依每秒一下的速度按5下,過幾秒後你預期應該會每隔1秒印出一次test,但是它一次印出5個test

因此可知,wait所等待的時間不會每次都跟你想的一樣,用alarm會比較保險。
概略來說 #wait 1000 do_something 可以改寫為 #alarm {+1} {do_something}
注意alarm的最小單位是0.5秒

另外拿來寫定時廣告之類的也很好用

arrow
arrow
    全站熱搜

    suzin 發表在 痞客邦 留言(1) 人氣()