Crontab

Set the xp_crontab "crontab.txt" variable to the file where your crontab script is.

A crontab is basically a list of commands that are executed at a given date/time.

The syntax format is the same as the *nix crontab use.

Short overview

Each line has the format: minute  hour  day  month  dayofweek     /command

For any of the above values, an asterisk (*) can be used to specify all valid values. For example, an asterisk for the month value will execute the command every month within the constraints of the other values.

A hyphen (-) between numbers specifies a range. For example, 1-4 will expand to 1, 2, 3 and 4.

A list of values separated by commas (,) specifies a list. For example, 3,4,6,8 indicate those four specific numbers (note that there are no spaces between the commas).

The forward slash (/) can be used to specify step values. The value of an number can be skipped within a range by following the range with /. For example, 0-59/2 can be used to define every other minute in the minute field. Step values can also be used with an asterisk. For instance, the value */3 can be used in the month field to run the task every third month.

Any lines that begin with a hash mark (#) or a double slash (//) are comments and are not processed. Additionally, an slash followed by an asterisk (/*) indicates the start of a comment, which can be spread across multiple lines until an asterisk followed by an slash (*/) is found.

Example:

# examples
* * * * *	/say this is executed every minute!
* * * * 1	/say this is executed every minute but only on mondays!
*/5 * * * *	/say this is executed every 5 minutes!
0 15 5 2 *	/say this is executed on the 5th February at 15:00 o'clock!
 
# display motd popup message every 5 minutes
*/5 * * * *	/motd all welcome_message.txt
 
# display greeting with hostname every half an hour
10,40 * * * *	/say ^2Welcome on ^7$(sv_hostname)^7
 
# display g_motd command info into crontab every 5 minutes
*/5 * * * *	/say $(g_motd)
 
# display number of active players every 3 minutes
*/3 * * * *	/say ^7There is currently ^2$(xp_activeClients) ^7players on the server!
 
# randomize rotation
* * * * *	/execstr set xp_rotateStep $sv_serverid
 
# change config at midnight
0 0 * * *	/exec your-midnight-fun.cfg

Conditional processing

Basic if-else structures are supported in crontab files. This allows you to execute commands only if a certain condition is met. The syntax of if-else structures is the same as the one used in the Rotation System, so refer to it for further information.

Example:

// remind the users to remove the password at the end of a war
if ( g_needpass ) {
    */10 * * * *    /say ^3Remember to remove the password at the end of the war!
}
 
// say something depending on the number of clients
if ( xp_activeClients >= 14 ) {
    */5 * * * *     /say ^3Wow, server is really crowded! :D
} else if ( xp_activeClients >= 8 ) {
    */5 * * * *     /say ^3Expecting more players to come :P
} else if ( xp_activeClients > 0 ) {
    */5 * * * *     /say ^3Please don't leave the server! :(
} else {
    */5 * * * *     /say ^3To any spectator, join the game and stop wasting server slots!! :@
}