forge/docus/content/3.server-modules/8.owned-storage.md
Jacob Schmidt 827f3303a2 feat: add initial Docus setup and sync tool for documentation generation
- Created package.json for Docus with necessary scripts and dependencies.
- Implemented sync-docus-docs.mjs to automate the generation of documentation files from source markdown.
- Defined mappings for generated pages and virtual routes to ensure proper linking in documentation.
- Added static content files for the documentation structure, including navigation and index pages.
2026-04-21 16:07:27 -05:00

4.4 KiB

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];
};