tempxx 发表于 2009-8-17 09:35:42

请教#alarm的一个疑问

看到了精华教程里的一段,有点不明白

防止发呆的一般做法:

步骤一: 一般一个机器人正常运转时,都会循环出现各种信息,可以将这些信息做成trigger,触发命令中加入#add idle 1
步骤二: #alias Testidle {#alarm +@time {#if (@idle>0) {#say 运行情况良好;#var idle 0} {#say 机器人已经中断;let it run}};testidle}
对@idle进行定时判断,如果@idle大于1,表示运行情况良好,变量归0;否则表示机器人中断,重新运转它

这里的步骤二是一个快速的连续循环呢,还是每次延迟@time的循环呢?

比如   #alias test {#alarm +10 {hi};test}   ;       test
是每10秒hi一下,还是连续不停的hi呢?

zgbl 发表于 2009-8-17 09:48:26

#alias test {#alarm +10 {hi};test}   ;       test
这样是每10秒hi一下,这属于嵌套处理

zmeng 发表于 2009-8-17 09:54:14

谁能贴个help #alerm

tempxx 发表于 2009-8-17 10:01:19

那这个命令也是10秒钟循环一次了?

可是这行命令里面并没有延时的指令呀?除去#alarm外,只有#alias test {test}; 是连续不停的循环吧?
难道#alarm命令也会使后面的"test"延迟10秒执行?

tempxx 发表于 2009-8-17 10:08:46

我用的是zmud 4.62,好像4.62里面用不了alarm嵌套呀
我刚才用#alias test {#alarm +10 {hi};#show 00000;test}   ;   test来测试
输入以后,弹出个提示窗,好像是说“死循环”,然后屏幕上马上出现7行00000,10秒后出现hi的回馈,整个命令只循环了1次

sghjjj 发表于 2009-8-17 10:11:02

#alias test {#alarm +10 {hi};test}   ;       test
汗,这个要死机的,test放到alarm的里面,应该是

#alias test {#alarm +10 {hi;test}}
不知道你最后面加个分号再加个test是什么意思?
哦,看明白了,分号和test是在命令行输入的吧,可以

[ 本帖最后由 sghjjj 于 2009-8-17 10:14 AM 编辑 ]

sghjjj 发表于 2009-8-17 10:11:51

果然死循环死机了吧,不是462不能嵌套

tempxx 发表于 2009-8-17 10:14:01

果然,我修改了一下,加入#wa 指令,这个循环才能顺利执行.
如下
#alias test {#alarm +10 {hi};#wa 5000;test};test

这个命令5秒钟正常循环一次,{hi}一直处在等待触发的状态.

sghjjj 发表于 2009-8-17 10:17:11

原帖由 tempxx 于 2009-8-17 10:14 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
果然,我修改了一下,加入#wa 指令,这个循环才能顺利执行.
如下
#alias test {#alarm +10 {hi};#wa 5000;test};test

这个命令5秒钟正常循环一次,{hi}一直处在等待触发的状态.
最好不要这样做,在555里这样做的话,#alarm +10还没有触发就被5秒后新的#alarm +10替代更新了,在zmud555里,hi命令永远都出不来,难道462可以?

一般做法是直接把test放到alarm里面,和hi放在一起,#wa也不需要

tempxx 发表于 2009-8-17 10:17:39

那么就是教程里有瑕疵了,你看#alias Testidle {#alarm +@time {#if (@idle>0) {#say 运行情况良好;#var idle 0} {#say 机器人已经中断;let it run}};testidle}
他最后的testidle是在#alarmtime {} 之外的


最后的test是表示执行这个#alias定义的内容呀,不然这个嵌套怎么执行的起来呢

[ 本帖最后由 tempxx 于 2009-8-17 10:19 AM 编辑 ]
页: [1] 2
查看完整版本: 请教#alarm的一个疑问