Open Road MP

Storage

Keep data across restarts - for the gamemode and for every player.

mp.storage keeps JSON data that survives restarts of the gamemode and the server. It lives in plain files in your gamemode folder (data/storage.json), written within a second of a change and when the gamemode stops.

Gamemode data

mp.storage.set("record", { name: "Nils", minutes: 42 })
const record = mp.storage.get("record") as { name: string; minutes: number } | undefined
mp.storage.delete("record")
mp.storage.keys() // ["record", ...]

Values are anything JSON can hold: numbers, strings, booleans, null, arrays and objects. get returns a copy - change it and set it again.

Player data

mp.storage.player(player) is a store of its own for every player, keyed by their Steam account: it is the same data when they come back, under any name.

mp.events.on("jobDelivered", (player, job) => {
  const data = mp.storage.player(player)
  data.set("deliveries", ((data.get("deliveries") as number) ?? 0) + 1)
  data.set("earned", ((data.get("earned") as number) ?? 0) + job.revenue)
})

mp.commands.add("stats", "your deliveries", (player) => {
  const data = mp.storage.player(player)
  mp.chat.send(player, `${data.get("deliveries") ?? 0} deliveries, ${data.get("earned") ?? 0} € earned`)
})

A player store has get, set, delete, has and keys. Keys are 1-100 characters.

Big data

The storage is meant for settings, balances and statistics - a few megabytes at most. For more, use a database of your own from Node.js.

On this page