Difference between revisions of "Timer"
m (typos) |
(Stripped away {} from examples and added notes about why not to use brackets and pipe) |
||
Line 41: | Line 41: | ||
alias timertest { | alias timertest { | ||
− | timer 2 2 | + | timer 2 2 [[echo]] -a moo! |
} | } | ||
This alias just creates an timer that will echo ''moo!'' to your active window two times with a delay of 2 seconds. | This alias just creates an timer that will echo ''moo!'' to your active window two times with a delay of 2 seconds. | ||
Line 47: | Line 47: | ||
alias timertest { | alias timertest { | ||
− | timer1 2 10 | + | timer1 2 10 echo -a [[$asctime|$!asctime]] |
− | timer2 2 10 | + | timer2 2 10 echo -a $asctime |
} | } | ||
Here we create two timers, one with forcing it to re-evaluate the identifier (the one on top), the other not. You will see the first always echoing the current time, the other always echoing the time when it was started. | Here we create two timers, one with forcing it to re-evaluate the identifier (the one on top), the other not. You will see the first always echoing the current time, the other always echoing the time when it was started. | ||
Line 54: | Line 54: | ||
alias timertest { | alias timertest { | ||
− | timermilli -m 10 50 | + | timermilli -m 10 50 echo -a The difference is 50 milliseconds. |
} | } | ||
This timer called milli will echo ''The difference is 50 milliseconds.'' every 0,05 seconds to your active window, all in all 10 times. | This timer called milli will echo ''The difference is 50 milliseconds.'' every 0,05 seconds to your active window, all in all 10 times. | ||
Line 60: | Line 60: | ||
alias timertest { | alias timertest { | ||
− | timertime 14:00 1 1 | + | timertime 14:00 1 1 echo -a It is 14:00 o'clock. |
} | } | ||
This one will echo ''It is 14:00 o'clock.'' to the active window when it is 14oclock, as we made the timer trigger then. | This one will echo ''It is 14:00 o'clock.'' to the active window when it is 14oclock, as we made the timer trigger then. | ||
Line 67: | Line 67: | ||
timer1* off | timer1* off | ||
We just stop all timers beginning with a 1. | We just stop all timers beginning with a 1. | ||
+ | |||
+ | == Notes == | ||
+ | When using {, } and | in timers they will get evaluated before setting the timer so it is always advisable to avoid stacking commands inside of a timer. | ||
+ | |||
+ | Best practise would be to never try and stack commands inside a timer, instead create an alias with the commands you wish to run and start a timer to execute the alias. | ||
+ | timer 1 5 showme | ||
+ | alias showme { | ||
+ | if ($true) { | ||
+ | echo -ag My name is $mnick | ||
+ | echo -ag And I eat fish. | ||
+ | } | ||
+ | echo -ag That go moo! | ||
+ | } | ||
+ | |||
+ | Although it should be avoided where ever possible it is possible to stack commands using [[$chr]](124) as the command delimiter. | ||
+ | timer 1 5 echo -ag My name is $mnick $chr(124) echo -ag And I eat fish. | ||
+ | ;;This will start a timer like this: | ||
+ | * Timer 1 1 time(s) 5s delay echo -ag My name is Dana | echo -ag And I eat fish. (QuakeNet) | ||
+ | It is also possible to use $chr(123) and $chr(125) instead of { and } for stacking commands in an if-then-else. | ||
+ | timer 1 5 if ([[$true]]) $chr(123) echo -ag My name is $mnick $chr(124) echo -ag And I eat fish. $chr(125) $chr(124) echo -ag That go moo! | ||
+ | ;;This will start a timer like this: | ||
+ | * Timer 1 1 time(s) 5s delay if ([[$true]]) { echo -ag My name is Dana | echo -ag And I eat fish. } | echo -ag That go moo! (QuakeNet) | ||
== See Also == | == See Also == |
Revision as of 18:23, 5 May 2006
Activates the specified timer to perform the specified command at a specified interval, and optionally at a specified time.
/timer[N/name] [-ceomhipr] [time] <repetitions> <interval> <command>
If you are not connected to a server and a timer is started, it will be an offline timer by default, meaning that it will continue to run whether you are connected to a server on not. If you are connected to a server while starting a timer, it will be an online timer, that will stop if you disconnect. You can make a timer being an offline timer by using the -o switch.
To make a new timer, you can either use /timer without name/number or you can specify a name, without space between the command and the name (/timerfoo ...). If you do not specify a name/number, mIRC will get the first free timernumber it finds and use this.
If you specify a delay of 0 seconds, the timer will trigger immediately after the calling script ends.
You can also specify a time when the timer is supposed to trigger (see example below).
Note that if you specify 0 repetitions it will continue until you either stop it yourself or you disconnect, in case it is an online timer.
Note that identifiers usually do not get re-evaluated during a timer (see example below). To force this, you have to use an exclamation mark after the $ of an identifier (e.g. $!time or $!me)
You can stop a timer by using /timer<name|N> off, which will also be able to handle wildcards in the name (see example below).
You can use the following switches:
Switch | Explanation |
c | will make mIRC "catch up" a timer by executing it more than once during one interval if the real-time interval isn't matching your requested interval. |
m / h | indicates that the interval delay is in milliseconds. |
h | make a high-resolution multimedia timer (uses system resources heavily) |
e | will executes the command associated with the specified timer name (works with wildcard names too). |
p | will pause a timer |
r | will resume a timer |
i | will make a timer dynamically associate with whatever happens to be the active connection. If a server window is closed, the timer is associated with the next available server window. |
Example
In the following, we'll always create an alias to be able to execute commands directly after creating the timer.
alias timertest { timer 2 2 echo -a moo! }
This alias just creates an timer that will echo moo! to your active window two times with a delay of 2 seconds.
alias timertest { timer1 2 10 echo -a $!asctime timer2 2 10 echo -a $asctime }
Here we create two timers, one with forcing it to re-evaluate the identifier (the one on top), the other not. You will see the first always echoing the current time, the other always echoing the time when it was started.
alias timertest { timermilli -m 10 50 echo -a The difference is 50 milliseconds. }
This timer called milli will echo The difference is 50 milliseconds. every 0,05 seconds to your active window, all in all 10 times.
alias timertest { timertime 14:00 1 1 echo -a It is 14:00 o'clock. }
This one will echo It is 14:00 o'clock. to the active window when it is 14oclock, as we made the timer trigger then.
timer1* off
We just stop all timers beginning with a 1.
Notes
When using {, } and | in timers they will get evaluated before setting the timer so it is always advisable to avoid stacking commands inside of a timer.
Best practise would be to never try and stack commands inside a timer, instead create an alias with the commands you wish to run and start a timer to execute the alias.
timer 1 5 showme alias showme { if ($true) { echo -ag My name is $mnick echo -ag And I eat fish. } echo -ag That go moo! }
Although it should be avoided where ever possible it is possible to stack commands using $chr(124) as the command delimiter.
timer 1 5 echo -ag My name is $mnick $chr(124) echo -ag And I eat fish. ;;This will start a timer like this: * Timer 1 1 time(s) 5s delay echo -ag My name is Dana | echo -ag And I eat fish. (QuakeNet)
It is also possible to use $chr(123) and $chr(125) instead of { and } for stacking commands in an if-then-else.
timer 1 5 if ($true) $chr(123) echo -ag My name is $mnick $chr(124) echo -ag And I eat fish. $chr(125) $chr(124) echo -ag That go moo! ;;This will start a timer like this: * Timer 1 1 time(s) 5s delay if ($true) { echo -ag My name is Dana | echo -ag And I eat fish. } | echo -ag That go moo! (QuakeNet)
See Also
To stop all timers, take a look at /timers.
You can also get information about a timer by using the $timer identifier.