Revision Difference
server-wipe-timer#550097
<cat>Play.Hosting</cat>
<title>Server Wipe Timer</title>
<upload src="2f4/8db4583e08299bf.png" size="941694" name="image.png" />
<warning>This article was last updated on May 10th. Things might change in the future.</warning>
<warning>This article was last updated on June 1st. Things might change in the future.</warning>
On the lowest level of **Nuclear Missile Silo** monument, you might notice a nuclear warhead connected to a small laptop with timer on it. This is not a random countdown timer - in fact, this timer is counting down until the next server wipe. Repopulation unit survival test. This will also decide when server should start running **endgame** events, so it's important to keep this timer accurate with your server's wipe schedule.
⤶
If you host a vanilla monthly server, this timer will likely work as intended. However, if you run a server with non-standard wipe time, you might need to change a few convars to make sure that in-game timer works correctly. ⤶
⤶
# How does timer work?⤶
Timer is calculated using the three following variables: server wipe tag (`monthly`/`biweekly`/`weekly`), `wipeDayofWeek` and `wipeHourofDay` convars, however you can override those and set an exact wipe date using the `wipeUnixTimestampOverride` convar. ⤶
⤶
This means that you have three schedule "formats" by default – **monthly**, **bi-weekly** and **weekly**. For example, if you have set the wipe time to Wednesday at 1 PM, and your server is bi-weekly, then timer will reach `00:00:00:00` every two weeks, exactly on Wednesday, 1pm. If your server is running shorter wipe cycles (for example, 3-day cycle) you will need to write a plugin to adjust the timer.⤶
⤶
Note that this is using your local machine time, so make sure it is correct, and make sure to clarify your time zone for your players. The default `wipeHourofDay` (14) might not be correct for your timezone.⤶
# Endgame Events
On the last day of every wipe cycle, server will start two endgame events.
On the last day of (24 hours before) every wipe cycle, the server will start two endgame events soon. (Not instantly.)
## F-15E Strike Eagle Inbound
F-15E "Strike Eagle" jets will start observing the island. You will hear an aggressive sound of a jet flying by. This event has no direct impact on game play. Since this is a event, you can start it whenever you want using the `spawn f15e` command.
## Road Bradley⤶
On the last day, amount of scientists on island will be increased. Other than that, Bradley APC will start roaming on the entire island, attacking anything it spots. This is exclusively an endgame event and APCs will never spawn if there are *more* than 24 hours until the server wipe. ⤶
# Changing the day of week⤶
You can add the convar `wipeDayofWeek <0-6>` to change the wipe day to anything other than Thursday.
⤶
| Value | Day of week | Notes |⤶
## Road Bradleys⤶
Scientists on island will be increased, and Bradley APCs will start roaming on the entire island, attacking anything it spots. This is exclusively an endgame event and APCs will never spawn if there are *more* than 24 hours until the server wipe. The amount of APCs is dictated by size of your map: WorldSize / 1000 * 2⤶
# How does the timer work?⤶
The default configuration aligns with force wipes so it shouldn't need any changing for most people. Make sure the time is set correctly on your servers!
⤶
The timer is calculated using your server wipe tag (`monthly`/`biweekly`/`weekly`), `wipetimer.wipetimezone`, `wipetimer.wipeDayofWeek` and `wipetimer.wipeHourofDay` convars, however you can override these with either `wipetimer.wipeUnixTimestampOverride` or `wipetimer.wipecronoverride` convars.⤶
⤶
This means that you have three schedule "formats" – **monthly**, **bi-weekly** and **weekly**, this means by default:⤶
⤶
* Monthly: First Thursday every month at 19:00 (London time)⤶
* Weekly: Every Thursday at 19:00 (London time)⤶
* Biweekly: First and third Thursday of each month at 19:00 (London time), but splits 3 week gaps into 2+1 weeks for months with 5 weeks⤶
⤶
If you have set the wipe time to Wednesday at 1 PM, and your server is bi-weekly, then timer will reach `00:00:00:00` every two weeks, exactly on Wednesday, 1pm. If your server is running shorter wipe cycles (for example, 3-day cycle) you will need to use either the wipeUnixTimestampOverride or wipeCronOverride convars.⤶
⤶
⤶
# Changing the day of week - wipeDayofWeek <0-6>⤶
| Value | Day of week | Notes |⤶
|:---------:|-------------|----------|
| **0** | Sunday | |
| **1** | Monday | |
| **2** | Tuesday | |
| **3** | Wednesday | |
| **4** | Thursday | (default)|
| **5** | Friday | |
| **6** | Saturday | |
# Changing the wipe hour⤶
You can add the convar `wipeHourofDay <0-23>` to specify when exactly server will wipe. Time is specified in 24-hour format. If you type `wipeHourofDay 14.5`, then it'll be interpreted as *2:30 PM*.
# Changing the wipe hour - wipeHourofDay <0-23>⤶
Default: *19* - You can change this to specify the hour your server wipes. Time is specified in 24-hour format. If you type `wipeHourofDay 14.5`, then it'll be interpreted as *2:30 PM*.
⤶
# Changing the timezone - wipeTimeZone⤶
Default: *GMT (ID=Europe/London, IANA=Europe/London)* - You can change this to specify your server's timezone, see [Supported Time Zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)⤶
# Specifying an exact wipe date
If your server is using a wipe schedule that does not work with any formats above (monthly/bi-weekly/weekly), then you can set an exact wipe date using a UNIX timestamp with this server convar: `wipeUnixTimestampOverride <timestamp>`. Keep in mind that this convar will override all other settings for the wipe timer. ⤶
⤶
## Cronos⤶
Internally it is now using cron expressions using the Cronos library. If you'd like, you can use a custom cron expression for your wipe timer by setting the wipeCronOverride convar. [Cronos Parser](https://github.com/HangfireIO/Cronos/)⤶
⤶
## UnixTimeStampOverride⤶
You can set an exact wipe date and time using a UNIX timestamp with this server convar: `wipeUnixTimestampOverride <timestamp>`. Keep in mind that this convar will override all other settings for the wipe timer. [Epoch Converter](https://www.unixtimestamp.com/)⤶
# Examples
Here are a few examples to see how it works:
| Wipe Frequency tag | Config | Explanation |
| :-----------------:|----------------------------------------|-------------------------------------------------------------------|
| Monthly | `+wipeDayofWeek 4 +wipeHourofDay 14.5` | Server will wipe on every first Thursday of the month at 2:30 PM. |
| Monthly | `+wipeDayofWeek 1 +wipeHourofDay 9` | Server will wipe on every first Monday of the month at 9 AM. |
| Weekly | `+wipeDayofWeek 4 +wipeHourofDay 18` | Server will wipe every Thursday at 6 PM. |
| Biweekly | `+wipeDayofWeek 0 +wipeHourofDay 23` | Server will wipe every other Sunday at 11 PM. |
| Biweekly | `+wipeDayofWeek 4 +wipeHourofDay 19` | Server will wipe every other Thursday at 7 PM. |
| Custom | `+wipeUnixTimestampOverride 1683622506`| Server will wipe exactly on May 9th, 2023 at 08:55:06 (GMT+0) |
| Custom | `+wipeUnixTimestampOverride 1686766934`| Server will wipe exactly on June 14th, 2023 at 18:22:14 (GMT+0) |
# Commands⤶
To check if you have set up the timer correctly, you can use the command `PrintWipe`. This will output two messages, countdown timer itself (`Time until wipe : _ days, _ hours, _ minutes, _ seconds.`) and static date (`Calculated Wipe time static _ month, _ days, _ hours, _ minutes, _ seconds.`)
⤶
There are some other commands available for use. Most of them are meant to be used only for testing though.⤶
⤶
## PrintWipe (still not working as of the may 10th edit)⤶
This command output will output following information: ⤶
* **[needs more context]** Test Time (current time + `daysToAddTest` + `hoursToAddTest` convars. By default both convars are 0, so if you didn't change them, this line will display your current local time.
* Time until wipe: `<value>` days, `<value>` hours, `<value>` minutes, `<value>` seconds. ⤶
* Calculated wipe time static: `<value>` month, `<value>` days, `<value>` hours, `<value>` minutes, `<value>` seconds.⤶
# PrintWipe⤶
To check if you have set up the timer correctly, you can use the `PrintWipe` command.
⤶
## Example Output⤶
```⤶
Frequency: Monthly⤶
Timezone: GMT (ID=Europe/London, IANA=Europe/London)
Wipe day of week: Thursday⤶
Wipe hour: 19⤶
Test time: 2023-06-01T20:56:53.2858450+00:00⤶
Wipe time: 2023-07-06T19:00:00.0000000+01:00⤶
Time until wipe: 34:21:03:06.714155⤶
Ticks until wipe: 30133867141550⤶
⤶
Cron: 0 19 * * 4#1⤶
Next 10 occurrences:⤶
0. 2023-07-06T19:00:00.0000000+01:00⤶
1. 2023-08-03T19:00:00.0000000+01:00⤶
2. 2023-09-07T19:00:00.0000000+01:00⤶
3. 2023-10-05T19:00:00.0000000+01:00⤶
4. 2023-11-02T19:00:00.0000000+00:00⤶
5. 2023-12-07T19:00:00.0000000+00:00⤶
6. 2024-01-04T19:00:00.0000000+00:00⤶
7. 2024-02-01T19:00:00.0000000+00:00⤶
8. 2024-03-07T19:00:00.0000000+00:00⤶
9. 2024-04-04T19:00:00.0000000+01:00⤶
```⤶
⤶
⤶
## Explained⤶
The information is pretty much self explanatory, feel free to edit this how you see fit. ⤶
* Test Time (current time + `daysToAddTest` + `hoursToAddTest` convars. By default both convars are 0, so if you didn't change them, this line will display your current local time.⤶
* Time until wipe: *days:hours:minutes:seconds*.⤶
* Wipe time (this will output an exact date of calculated wipe time)
* **[needs more context]** How many ticks left⤶
* Ticks until wipe: **[needs more context]**⤶
# Misc Convars
These convars do not seem to be relevant if you are not a developer. Might be removed/changed in the future. So far, they were used only for PrintWipe output info.⤶
These convars do not seem to be relevant if you are not a developer. Might be removed/changed in the future. So far, they were used only for PrintWipe output info; *Test time*⤶
## daysToAddTest <value>
By default set to `0`.
## hoursToAddTest <value>
By default set to `0`.
# Code
Wipe timer code is available in **WipeTimer.cs**. You can access it through Rust Dedicated Server's `Assembly-CSharp.dll`.