Jump to content

3 Screenshots

  • 677
  • 59
  • 40.16 kB

About DynamicData

DynamicData — Configurez sans limites

« Plus aucune limite de configuration. Laissez libre cours à votre imagination. »

DynamicData automatise l'application de vos fichiers de données (JSON) pour Rust selon une chronologie relative à l'effacement.

Ajoutez vos profils (par plugin) , spécifiez quand ils doivent s'appliquer (par exemple, 2j4h, 6h30m, 1j@redémarrage) ,
et le plugin cible est rechargé avec la bonne configuration, immédiatement ou au prochain redémarrage.

Objectif :
moins d’opérations manuelles, moins d’erreurs, une progression de réinitialisation claire et amusante pour vos joueurs.

Points forts

  • Aucune limite : planifiez autant de profils que nécessaire, pour autant de plugins que vous le souhaitez.
  • Délai d'activation flexible : immédiat ou au prochain redémarrage (idéal pour les changements importants).
  • Progression naturelle des réinitialisations : rendez vos serveurs lisibles et motivants, dès le premier jour.
  • Conçu pour être compatible : fonctionne avec tous les plugins utilisant des fichiers de données.

Installation et démarrage rapide

image.png.dc34b78eb1c0d2dbbbba8b5e2f5a04a7.png

  1. Déposez DynamicData.cs dans oxide/plugins et (re)chargez-le.
  2. Préparez vos fichiers JSON pour chaque plugin.
  3. Placez-les sous oxide/data/DynamicData/<Plugin>/... avec un suffixe temporel (et @restart si souhaité).
  4. Démarrez le serveur : DynamicData applique et recharge automatiquement les plugins cibles aux moments opportuns.

Comment ça marche

Placez vos profils JSON ici :
oxide/data/DynamicData/<Plugin>/<Subfolder>/*.json
(par exemple, DynamicData/RaidableBases/Profiles/Medium_2d.json) .

Les fichiers comportent un suffixe temporel (\d+[dhms] peuvent être chaînés) et éventuellement @restart.
Exemples : Easy_6h.json, [email protected] .

DynamicData calcule chaque échéance à partir du Jour 1 (effacement) , ajoute une marge déterministe (quelques secondes) pour lisser les pics, puis copie le JSON vers l'emplacement de données du plugin cible et recharge ce plugin.

If @restart is present, the profile is marked READY and only applies at the next reboot (useful for big changes).

Structure & Naming

  • Dynamic root: oxide/data/DynamicData (real-time watch on *.json).
  • Destination: the base name (without the time suffix) becomes the final data file for the plugin
  • (e.g., Profiles/Medium_2d.json ⇒ oxide/data/RaidableBases/Profiles/Medium.json).
  • Valid suffixes: concatenations of d/h/m/s (e.g., 2d4h30m, 45m, 10s).
  • Add @restart to force application on reboot.

⚠️ Important — Match the Target Plugin’s Official Directory Structure 

DynamicData applies your files only if the tree under
oxide/data/DynamicData/<Plugin>/... mirrors exactly what the target plugin expects under
oxide/data/<Plugin>/....

Golden rule
Everything after <Plugin>/ in DynamicData must be the exact same path as in oxide/data/<Plugin>/...
(same folders, same case, same filename).

Concrete Examples

oxide/data/DynamicData/RaidableBases/Profiles/Easy.json
    <- Default config (Important to place if you want a default config loaded)

oxide/data/DynamicData/RaidableBases/Profiles/Medium.json+12h
    <- Config loaded after 12h of wipe

oxide/data/DynamicData/RaidableBases/Profiles/Hard.json+2d
    <- Config loaded after 2 days of wipe

oxide/data/DynamicData/RaidableBases/Profiles/Expert.json+4d@restart
    <- Config loaded after 4 days of wipe, only after a server restart

Raidable Bases Evolving Over the Wipe

 

  • Days 1–2: Easy + Medium profiles, 1 event, component-heavy loot; applied immediately at opening.
  • Days 3–5: Medium + Hard profiles, 2–3 events, T2/T3 loot; applied on next restart for a smooth transition.
  • Day 6+: Hard + Expert profiles, 3–4 events, rich loot (rare C4/Rockets), buffed NPCs; applied immediately on the morning of Day 6.

710a3d148ba99e920342d4324e109100.jpg.d9d07e95ad7e1a35ea66a3d4809670b0.jpg

One-Click Seasonal Pack

  • Halloween (Oct 24 → 31): “Spooky” bases, themed loot, NPC +25%; trigger with @restart on 10/24.

Other Plugins (any that read data files)

  • Kits: Starter (D1–D2), weekend farm promo (D3–D5), advanced kits (D6+).
  • BetterNPC: Calm day / Night +HP +accuracy / end-of-wipe heavy loadouts.
  • 152b39b073779effef7e1519c0e22eb2.jpg.7ee0e64546bbbf03ed22ba68195a0a3e.jpg
  • Loot tables: progressive T2/T3 ramp, event boosts.
  • NTeleportation: cooldowns and costs relax as the wipe progresses.
  • Skins/SkinBox: automatic seasonal whitelists; off-season ⇒ vanilla/server set.
  • image.png.5727055ad7a49985aa09f4d0500f94a5.png

Permissions

dynamicdata.admin — access to commands (authLevel 1+ also accepted).

oxide.grant group admin dynamicdata.admin

Commands (console/RCON)

dyndata.list – Shows Day 1 (wipe), last application, and next due time per plugin; marks [PAUSE] if applicable.
dyndata.simulate <duration|all|*> – Simulates upcoming applications up to a horizon (e.g., 1h, 30m, 2d, all). Useful to verify your plan.
dyndata.rescan – Immediate rescan of the DynamicData folder, applies what’s due, reschedules the rest.
dyndata.pause <Plugin> – Pauses a plugin (no applications while paused).
dyndata.resume <Plugin> – Resumes a previously paused plugin.

Configuration (oxide/config/DynamicData.json)

Available keys (defaults shown):

LogLevel: "info" — levels: quiet, info, verbose.
RateLimitPerMinute: 3 — limit of applications per minute (built-in queue).
JitterMinSeconds: 5, JitterMaxSeconds: 30 — deterministic jitter per plugin/file to avoid bursts.
MaxDataSizeBytes: 2000000 — max JSON size (safety).
DisplayTimeZone: "Europe/Paris" — timezone for logs/displays.
InterpretSaveCreatedAs: "auto" — how to interpret SaveCreatedTime if it lacks a timezone (auto, display-tz, server-local, utc).
WipeDetectPriority: ["signature","files","serverinfo"] — wipe detection order:
signature: seed/size/level change ⇒ wipe,
files: detect via .map/.sav timestamps,
serverinfo: SaveCreatedTime reported by the server.
FileDetectionWindowHours: 12 — analysis window for .map/.sav files.
FilePreGenToleranceHours: 2 — tolerance when files are pre-generated before boot.
FileClampToBoot: true — if needed, clamps Day 1 to boot time to stay consistent.
WipeLogShowUtc: false — also show UTC timestamps in wipe logs.
ReloadTargetPlugin: true — auto-reload target plugin after copying.
QuarantineStrayDynamicFiles: true — quarantines “stray” dynamic files in oxide/data/DynamicData.__quarantine__.

Conseil : utilisez dyndata.simulate 2d pour valider votre plan avant une réinitialisation réelle.

FAQ

Q : Cela ne fonctionne-t-il qu'avec certains plugins ?
A : Non, tout plugin qui utilise des fichiers de données (JSON) .

Q : Dois-je redémarrer à chaque modification ?
R : Non. Choisissez « immédiat (en direct) » ou « @restart » . Le plugin cible se recharge automatiquement.

Q : Que se passe-t-il si je veux revenir en arrière ?
R : Conservez vos profils intermédiaires (début/milieu/fin/saisonnier) et réactivez le précédent pour revenir à l'état souhaité.

Q : Impact sur les performances ?
R : Les applications sont occasionnelles, les rechargements sont ciblés, la limite de débit est configurable — impact négligeable pour un serveur standard.

 

  • Like 1
  • Love 2

User Feedback

2.1m

Downloads

Total number of downloads.

9.7k

Customers

Total customers served.

141.2k

Files Sold

Total number of files sold.

3m

Payments Processed

Total payments processed.

×
×
  • 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.