Clarify store and starting equipment guides

This commit is contained in:
Jacob Schmidt 2026-06-03 17:42:02 -05:00
parent 623f718caf
commit bfb317eb5c
2 changed files with 42 additions and 0 deletions

View File

@ -80,6 +80,25 @@ New owned garages are created with default unlocks from the Rust model.
| `owned:garage:delete` | `uid` | `OK`. |
| `owned:garage:exists` | `uid` | `true` or `false`. |
## Starting Equipment And Unlocks
Missions can include `CfgStartingEquipment.hpp` from `description.ext` to set
new-player loadout and initial virtual arsenal or garage unlocks without
recompiling the framework.
```cpp
#include "CfgStartingEquipment.hpp"
```
`loadout[]` uses the standard Arma loadout array shape. `Unlocks.Locker`
supports `items[]`, `weapons[]`, `magazines[]`, and `backpacks[]`.
`Unlocks.Garage` supports `cars[]`, `armor[]`, `helis[]`, `planes[]`,
`naval[]`, and `other[]`.
The extension defaults are intentionally empty. The server seeds mission
starting unlocks only when a player does not already have persistent owned
locker or garage records.
## Add Virtual Arsenal Unlocks
```sqf

View File

@ -34,6 +34,22 @@ Include `CfgStore.hpp` from `description.ext`:
```cpp
class CfgStore {
mode = "allowlist"; // dynamic, allowlist, or denylist
modMode = "dynamic"; // dynamic, allowlist, or denylist
mods[] = {}; // ModSources child class names used when modMode is not dynamic
class ModSources {
class rhs {
patches[] = {"rhs_main", "rhsusf_main"};
addons[] = {"rhs_", "rhsusf_", "rhsgref_", "rhsafrf_"};
prefixes[] = {"rhs_", "rhsusf_", "rhsgref_", "rhsafrf_"};
};
class ace3 {
patches[] = {"ace_main"};
addons[] = {"ace_"};
prefixes[] = {"ace_"};
};
};
class Categories {
primary[] = {"arifle_MX_F", "arifle_MXC_F"};
@ -56,6 +72,13 @@ listed for each category. `denylist` removes listed classnames. Overrides are
server-side and are used by both the UI payload and checkout validation.
`units[]` uses the same filter behavior as every other category.
`modMode` applies before category filtering. `allowlist` only keeps generated
entries that match one of the configured `mods[]`; `denylist` removes matching
entries. Each `ModSources` child can define `patches[]` to detect whether the
mod is loaded, `addons[]` for config source addon/source mod names or classname
prefixes, and `prefixes[]` for classname prefixes. If a mod source defines no
patches, it is treated as available and only the source/prefix checks are used.
The current filter is global for the mission. Revisit per-store profile support
if individual vendors need different inventories.