There is the workaround obtain content of a ammobox (in general, any object with the TransportMagazines and TransportWeapons subclasses). But it only works in campaign mode. Basically you can use it in single missions just packed them in a campaign, but you can not use it for multiplayer. Here is a snippet of code which implements this feature:
//
// Recomment that (two lines) for use in your project
// #define funcPrefix YOUR_PROJECT_FUNC_PREFIX
#define funcPrefix func
#define func(name) funcPrefix##name
#define arg(X) (_this select (X))
func(UploadCargoToPool) = {
deleteStatus "UploadCargoToPool::temp";
_this saveStatus "UploadCargoToPool::temp";
if( _this isKindOf "WeaponHolder" )then{
_this = typeOf _this createVehicleLocal [0,0,100];
_this loadStatus "UploadCargoToPool::temp";
pickWeaponPool _this;
deleteVehicle _this;
}else{
pickWeaponPool _this;
_this loadStatus "UploadCargoToPool::temp";
};
deleteStatus "UploadCargoToPool::temp"
};
func(QueryCargoPool) = {
private ["_cfg", "_count", "_item", "_list", "_query", "_tmp"];
_cfg = configFile >> arg(1);
_query = arg(2);
arg(0) call func(UploadCargoToPool);
_list = [];
for "_i" from 0 to count _cfg - 1 do {
_item = _cfg select _i;
if( isClass _item )then{
_count = configName _item call _query;
if( _count != 0 )then{
_list set [count _list, [configName _item, _count]]
}
}
};
_list
};
func(GetWeaponCargo) = {
clearWeaponPool;
[_this, "CfgWeapons", { queryWeaponPool _this }] call func(QueryCargoPool)
};
func(GetMagazineCargo) = {
clearMagazinePool;
[_this, "CfgMagazines", { queryMagazinePool _this }] call func(QueryCargoPool)
};
func(QueryWeaponCargo) = {
clearWeaponPool;
arg(0) call func(UploadCargoToPool);
queryWeaponPool arg(1)
};
func(QueryMagazineCargo) = {
clearMagazinePool;
arg(0) call func(UploadCargoToPool);
queryMagazinePool arg(1)
};
In the attache - an example of the campaign to test these functions.