# Owned Storage Usage Guide - forge-docus
Owned storage covers the owned:locker and owned:garage extension command groups. These modules store unlock lists rather than physical item or vehicle instances.

Server Modules

# Owned Storage Usage Guide

Owned storage covers the owned:locker and owned:garage extension command groups. These modules store unlock lists rather than physical item or vehicle instances.

# Owned Storage Usage Guide

Owned storage covers the `owned:locker` and `owned:garage` extension command groups. These modules store unlock lists rather than physical item or vehicle instances.

Use these modules for virtual arsenal and virtual garage unlocks. Use Locker Usage Guide and Garage Usage Guide for physical inventory and stored vehicle instances.

## Owned Locker Model

    {
      "items": ["FirstAidKit"],
      "weapons": ["arifle_MX_F"],
      "magazines": ["30Rnd_65x39_caseless_black_mag"],
      "backpacks": ["B_AssaultPack_rgr"]
    }

Supported owned locker categories:

- `items`
- `weapons`
- `magazines`
- `backpacks`

New owned lockers are created with default unlocks from the Rust model.

## Owned Garage Model

    {
      "cars": ["B_Quadbike_01_F"],
      "armor": [],
      "helis": [],
      "planes": [],
      "naval": [],
      "other": []
    }

Supported owned garage categories:

- `cars`
- `armor`
- `helis`
- `planes`
- `naval`
- `other`

The durable `owned:garage:remove` command currently accepts `heli` for the helicopter category. Add, get, and hot remove accept `helis`.

New owned garages are created with default unlocks from the Rust model.

## Owned Locker Commands

Command | Arguments | Returns
--- | --- | ---
`owned:locker:create` | `uid` | Full owned locker JSON.
`owned:locker:fetch` | `uid` | Full owned locker JSON.
`owned:locker:get` | `uid`, `category` | Category classname array JSON.
`owned:locker:add` | `uid`, `category`, `classnames_json` | Updated category array JSON.
`owned:locker:remove` | `uid`, `category`, `classname` | Updated category array JSON.
`owned:locker:delete` | `uid` | `OK`.
`owned:locker:exists` | `uid` | `true` or `false`.

## Owned Garage Commands

Command | Arguments | Returns
--- | --- | ---
`owned:garage:create` | `uid` | Full owned garage JSON.
`owned:garage:fetch` | `uid` | Full owned garage JSON.
`owned:garage:get` | `uid`, `category` | Category classname array JSON.
`owned:garage:add` | `uid`, `category`, `classnames_json` | Updated category array JSON.
`owned:garage:remove` | `uid`, `category`, `classname` | Updated category array JSON.
`owned:garage:delete` | `uid` | `OK`.
`owned:garage:exists` | `uid` | `true` or `false`.

## Add Virtual Arsenal Unlocks

    private _classes = ["arifle_MX_F", "hgun_P07_F"];

    private _result = "forge_server" callExtension ["owned:locker:add", [
        getPlayerUID player,
        "weapons",
        toJSON _classes
    ]];

## Add Virtual Garage Unlocks

    private _classes = ["B_Quadbike_01_F", "B_MRAP_01_F"];

    private _result = "forge_server" callExtension ["owned:garage:add", [
        getPlayerUID player,
        "cars",
        toJSON _classes
    ]];

## Remove an Unlock

    "forge_server" callExtension ["owned:locker:remove", [
        getPlayerUID player,
        "weapons",
        "arifle_MX_F"
    ]];

    "forge_server" callExtension ["owned:garage:remove", [
        getPlayerUID player,
        "cars",
        "B_Quadbike_01_F"
    ]];

## Hot-State Commands

Both owned storage modules support hot state.

Owned locker:

Command | Arguments | Returns
--- | --- | ---
`owned:locker:hot:init` | `uid` | Full owned locker JSON.
`owned:locker:hot:fetch` | `uid` | Full owned locker JSON.
`owned:locker:hot:get` | `uid`, `category` | Category array JSON.
`owned:locker:hot:override` | `uid`, `locker_json` | Full owned locker JSON.
`owned:locker:hot:save` | `uid` | Current hot owned locker JSON and async durable save.
`owned:locker:hot:remove` | `uid` | `OK`.

Owned garage:

Command | Arguments | Returns
--- | --- | ---
`owned:garage:hot:init` | `uid` | Full owned garage JSON.
`owned:garage:hot:fetch` | `uid` | Full owned garage JSON.
`owned:garage:hot:get` | `uid`, `category` | Category array JSON.
`owned:garage:hot:override` | `uid`, `garage_json` | Full owned garage JSON.
`owned:garage:hot:add` | `uid`, `category`, `classnames_json` | Updated category array JSON.
`owned:garage:hot:remove_item` | `uid`, `category`, `classname` | Updated category array JSON.
`owned:garage:hot:save` | `uid` | Current hot owned garage JSON and async durable save.
`owned:garage:hot:remove` | `uid` | `OK`.

## Error Handling

    private _payload = _result select 0;
    if (_payload find "Error:" == 0) exitWith {
        systemChat format ["Owned storage error: %1", _payload];
    };

Edit this page or Report an issue

Organization Usage Guide

The organization module stores organization records, members, assets, fleet entries, and credit lines. Durable commands manage persisted records directly. Hot-state commands support the active organization UI workflows.

Phone Usage Guide

The phone module stores contacts, messages, and emails for each UID. It is a server-extension state module backed by SurrealDB.