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秒
另外拿來寫定時廣告之類的也很好用
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秒
另外拿來寫定時廣告之類的也很好用
全站熱搜
留言列表