Here are my counter-suggestions to Outlawed's proposal:
container <b>addMagazineCargo(Global)Ex</b> [type, ammo, quantity];
container <b>removeWeaponCargo(Global)</b> [type, quantity];
container <b>removeItemCargo(Global)</b> [type, quantity];
container <b>removeMagazineCargo(Global)</b> [type, quantity];
container <b>removeMagazineCargo(Global)Ex</b> [type, ammo, quantity];
container <b>removeBackpackCargo(Global)</b> backpackObject;
<b>getMagazineAmmoCargo</b> container; works like "magazinesAmmo", but for vehicle inventory cargo
<b>getWeaponItemsCargo</b> container; works like "weaponsItems", but for vehicle inventory cargo
container <b>addWeaponItemsCargo(Global)</b>
[
weaponType,
muzzleItem,
railItem,
opticItem,
[
],
[
],
...
] // adds a cargo weapon with linked items and loaded mags, using an array in the style of a sub-array from "weaponsItems"
<b>canAddMagazineToCargo</b> container; // same as Outlawled
<b>canAddItemToCargo</b> container;
<b>canAddWeaponToCargo</b> container;
unit <b>loadMagazineInWeapon</b> [weapon, magazine, ammo]; // silently loads a magazine with specific ammo in a unit's primary/secondary/handgun weapon, in the first compatible muzzle, bypassing the inventory like "linkItem", without reload delay, overwriting the previous magazine if there was one
The only remaining thing that I think would be missing afterwards is a "removeWeaponItemsCargo(Global)", although it would be a bit silly to make it use a sub-array from "weaponsItems" like above, and I'm not sure if such a command would actually be useful.