Jump to content

Editing data files manually requires precision, but once you understand how the plugin reads time and scales, it becomes a straightforward process. Follow this guide to safely configure your schedules and templates when using Oxide or when the Carbon UI is unavailable.

Pre-Edit Checklist & Rules

  • Stop the server or unload the plugin before editing. Reload the plugin or restart the server only after saving valid JSON.
  • Back up both files before making any changes.
  • Enable the feature in the main configuration (Raid Protection Options → Enable scheduled timescales) before any profile can take effect.
  • Locate the files in your plugin data folder: oxide/data/OfflineRaidProtection/
  • Use string keys for the hour and offline-time scale tables (e.g., write "0" or "24", not 0 or 24).
  • Write valid JSON, meaning absolutely no comments or trailing commas.
     

Generating Unique GUIDs

Every schedule profile and wipe template requires a unique GUID (Globally Unique Identifier) to function. You can generate these easily using either of the following methods:

  • PowerShell: Open Windows PowerShell and run the following command to instantly generate a new GUID:
[guid]::NewGuid().ToString()
  • Online Generators: Use a free web tool like uuidgenerator.net or guidgenerator.com.

Always ensure your generated GUID matches the standard format and is wrapped in quotes (e.g., "f94dc03e-f4bf-4193-9b2e-5d763702493f").
 

Time Values: Use .NET Ticks (Not Unix Time)

The plugin relies on Ticks, not Unix seconds or milliseconds.

  • Schedules use UTC DateTime ticks: 100-nanosecond intervals since 0001-01-01 00:00:00 UTC.
  • Wipe templates use TimeSpan ticks: 10,000,000 ticks per second (e.g., 24 hours equals 864000000000 ticks).

Always use UTC for Start UTC ticks and End UTC ticks. While the Carbon editor may display dates in your local time zone, the stored schedule boundaries must always be UTC.

You can safely calculate these values using Windows PowerShell:

# An absolute UTC schedule boundary
[DateTime]::SpecifyKind([datetime]'2026-08-07 18:00:00', [DateTimeKind]::Utc).Ticks

# A wipe-relative template duration
[TimeSpan]::FromHours(24).Ticks


Damage-Scale Tables

Both file types utilize the exact same two tables for damage mitigation:

  • Scale of damage depending on the current hour of the real day: Uses hour keys from "0" through "23".
  • Scale of damage depending on the offline time in hours: Uses offline-hour keys. Decimal values are allowed (e.g., "1.5").

The assigned value dictates the damage scale:

  • 0.0 = 100% protection (no damage gets through).
  • 0.25 = 75% protection (25% damage gets through).
  • 1.0 = Vanilla damage (0% protection).
  • Values above 1.0 = Increased damage.

Important Note: Do not use -1 as an absolute-time scale value; this is a reserved integer. Always use a decimal point for fractional values.
 

ScheduledTimescale.json

This file contains concrete, date-bounded overrides. A valid, active profile replaces the normal configuration’s scale tables starting exactly at its start boundary.

{
  "Scheduled timescale profiles": [
    {
      "ID": "3de6e8bd-4c38-440d-9c38-832a3227c197",
      "Name": "Launch weekend",
      "Start UTC ticks": 638901000000000000,
      "End UTC ticks": 638902728000000000,
      "Scale of damage depending on the current hour of the real day": {
        "0": 0.0,
        "12": 0.25
      },
      "Scale of damage depending on the offline time in hours": {
        "0": 0.0,
        "24": 0.5,
        "72": 1.0
      }
    }
  ]
}


Rules for Schedules:

  • Assign every profile a non-empty Name and a unique GUID for the ID.
  • Start UTC ticks must occur chronologically before End UTC ticks.
  • Profiles must not overlap. Overlapping or invalid profiles are ignored, and a warning is printed to the server log.
  • The plugin sorts profiles by start time. It prioritizes the active profile and falls back to the main config if none are active.
  • Do not manually add, change, or remove profiles whose IDs appear in the WipeTemplate.json
    Generated profile IDs listThe plugin manages these automatically.

     

WipeTemplate.json

This file stores reusable wipe-relative definitions. It does not apply protection by itself. Instead, its phases are converted into dated profiles (within ScheduledTimescale.json) whenever the server receives a new save/wipe event.

{
  "Templates": [
    {
      "ID": "f94dc03e-f4bf-4193-9b2e-5d763702493f",
      "Name": "Standard wipe protection",
      "Phases": [
        {
          "Name": "Day one",
          "Start offset ticks": 0,
          "End offset ticks": 864000000000,
          "Scale of damage depending on the current hour of the real day": {},
          "Scale of damage depending on the offline time in hours": {
            "0": 0.0,
            "24": 0.25
          }
        },
        {
          "Name": "Days two to three",
          "Start offset ticks": 864000000000,
          "End offset ticks": 2592000000000,
          "Scale of damage depending on the current hour of the real day": {},
          "Scale of damage depending on the offline time in hours": {
            "0": 0.25,
            "48": 1.0
          }
        }
      ]
    }
  ],
  "Default template ID": "f94dc03e-f4bf-4193-9b2e-5d763702493f",
  "Queued next-wipe template ID": "00000000-0000-0000-0000-000000000000",
  "Last materialized wipe UTC ticks": 0,
  "Last materialized template ID": "00000000-0000-0000-0000-000000000000",
  "Generated profile IDs": []
}


Rules for Templates:

  • Every template requires a unique GUID ID.
  • Every phase requires End offset ticks to be greater than Start offset ticks.
  • Offset 0 represents the exact moment of the new save. Offsets cannot be negative.
  • Template phases must not overlap. Templates with overlapping phases, or templates that would generate profiles overlapping a manual schedule, will not be applied.
  • Default template ID selects the baseline template for future wipes. Use the all-zero GUID (00000000-0000-0000-0000-000000000000) to disable it.
  • Queued next-wipe template ID overrides the default for one wipe, and clears itself automatically. Use the all-zero GUID when nothing is queued.
  • Leave Last materialized wipe UTC ticks, Last materialized template ID, and Generated profile IDs entirely alone. The plugin uses these to prevent duplicate applications.
  • Editing a template mid-wipe does not retroactively alter the profiles it already generated. If an immediate correction is needed, edit the concrete profile inside ScheduledTimescale.json.
     

Manual-Edit Workflow (For Oxide & Carbon Minimal)

  • Enable Scheduled Timescales in your main OfflineRaidProtection.json configuration.
  • Determine if your change is a one-off dated event (ScheduledTimescale.json) or a repeatable plan for fresh wipes (WipeTemplate.json).
  • Back up your data files, input your valid JSON, and verify your GUIDs and time tick boundaries.
  • Reload the plugin or restart the server. Check your server console immediately for any warnings regarding invalid profiles, duplicate IDs, or overlaps.
  • If testing a template, verify your default or queued template ID is correct, then trigger a new save (wipe) to let it materialize. If you are mid-wipe and need an immediate change, edit the concrete profile in ScheduledTimescale.json.

About Us

Codefling is the largest marketplace for plugins, maps, tools, and more, making it easy for customers to discover new content and for creators to monetize their work.

Downloads
3.1m
Total downloads
Customers
12.1k
Customers served
Files Sold
171.3k
Total sales
Payments
3.7m
Processed total
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.