Page MenuHomeContribution Center

Export Classnames From Modset
Updated 1,415 Days AgoPublic

Checklist to Export Classnames From Modset

  1. Open Arma 3 with desired modset
  2. Open Editor and place a playable unit
  3. Play
  4. Pause Game
  5. Paste script in console And local exec
  6. Wait until screen unfreezes
  7. Goto AppData/Local/Arma3
  8. Export is in the lastest .prt file
private ["_CfgPatches","_configPath","_collectionName","_getClass","_out","_wepsEx","_itemsEx","_magsEx","_backEx","_weapons","_backpacks","_magazines","_glasses","_configName","_picture","_parents","_type","_classname","_mags","_mass","_capacity","_armor","_passthrough","_append","_ammo"];

_CfgPatches = false;
_configPath = "";
_collectionName = "test";
if(count [] > 1) then
{
	_configPath = _configPath + _this select 1;
	_CfgPatches = true;
};

_getClass = {
	_out = "";
	if(typename _this == "STRING") then
	{
		_out = _this;
	}
	else
	{
		_out = configName _this;
	};
	_out;
};


_wepsEx = [];
_itemsEx = [];
_magsEx = [];
_backEx = [];
_glassEx = [];
_weapons = [];
_backpacks = [];
_magazines = [];
_glasses = [];
if(_CfgPatches) then
{
	_weapons = _weapons + getArray(configfile >> "CfgPatches" >> _configPath >> "weapons");
	_backpacks = _backpacks + getArray(configFile >> "CfgPatches" >> _configPath >> "units");
}
else
{
	_magazines = [configfile >> "CfgMagazines"] call BIS_fnc_returnChildren;
	_weapons = [configFile >> "CfgWeapons"] call BIS_fnc_returnChildren;
	_backpacks = [configFile >> "CfgVehicles"] call BIS_fnc_returnChildren;
	_glasses = [configFile >> "CfgGlasses"] call BIS_fnc_returnChildren;
};

{
	_configName = _x call _getClass;
        _parents = [_x, true] call BIS_fnc_returnParents;
	_name = getText(configFile >> "CfgWeapons" >> _configName >> "displayname");
	_picture = getText(configFile >> "CfgWeapons" >> _configName >> "picture");
	if(_name != "" && _picture != "") then
	{
		_parents = [_x, true] call BIS_fnc_returnParents;
		_type = switch true do {
			case ((configname inheritsFrom (Configfile >> "CfgWeapons" >> _configName >> "ItemInfo")) == "InventoryOpticsItem_Base_F"): {"OpticAttachment"};
			case ((configname inheritsFrom (Configfile >> "CfgWeapons" >> _configName >> "ItemInfo")) == "InventoryMuzzleItem_Base_F" || getText(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "muzzleend") != ""): {"MuzzleAttachment"};
			case ((configname inheritsFrom (Configfile >> "CfgWeapons" >> _configName >> "ItemInfo")) == "InventoryFlashLightItem_Base_F"): {"SideAttachment"};
			case ("Rifle_Base_F" in _parents):				{"PrimaryWeapon"};
			case ("Pistol" in _parents):			{"SecondaryWeapon"};
			case ("Launcher" in _parents):			{"Launcher"};
			case ("HelmetBase" in _parents):			{"HeadGear"};
			case ("H_HelmetB" in _parents):			{"HeadGear"};
			case ("Uniform_Base" in _parents):		{"Uniform"};
			case ("Vest_Camo_Base" in _parents || "Vest_NoCamo_Base" in _parents): {"Vest"};
			case ("ItemCore" in _parents || "DetectorCore" in _parents): {"CommonItem"};
			case ("ItemMap" in _parents):		{"Map"};
			case ("ItemWatch" in _parents):		{"Watch"};
			case ("ItemCompass" in _parents):		{"Compass"};
			case ("ItemGPS" in _parents):		{"GPS"};
			case ("ItemRadio" in _parents):		{"Radio"};
			case ("NVGoggles" in _parents || _configName == "NVGoggles"): {"NVGoggles"};
			case ("Binocular" in _parents): {"Binocular"};
			case ("CannonCore" in _parents): {"Cannon"};
			default {"unknown"};
		};

		if (_type == "unknown") exitWith {systemChat ("Ignoring: " + _configName)};

		_classname = _configName;
		_mags = getArray(configFile >> "CfgWeapons" >> _configName >> "magazines");

		if(_CfgPatches) then
		{
			_magazines append _mags;
		};

		if(_type in ["PrimaryWeapon","SecondaryWeapon","Launcher"]) then
		{
			_mass = getNumber(configFile >> "CfgWeapons" >> _configName >> "WeaponSlotsInfo" >> "mass");
			_wepsEx pushback [_name,_type,_classname,_mags,_mass];
		};

		if(_type != "unknown" && !(_type in ["PrimaryWeapon","SecondaryWeapon","Launcher"]) ) then
		{
			_mass = getNumber(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "mass");
			_capacity = getText(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "containerclass");

			if(_capacity != "") then
			{
				_capacity = getNumber(configFile >> "CfgVehicles" >> _capacity >> "maximumload");
			}
			else
			{
				_capacity = "N/A";
			};

			_armor = 0;
			switch (_type) do {
				case "HeadGear": {_armor = (getNumber(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "HitpointsProtectionInfo" >> "Head" >> "armor"))};
				case "Vest": {
					_armor = [];
					{
					_armor pushback (getNumber(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "HitpointsProtectionInfo" >> _x >> "armor"));
					} forEach ["Neck","Arms","Chest","Diaphragm","Abdomen","Body"];
				};
				default {_armor = "N/A"};
			};

			_passthrough = 0;
			switch (_type) do {
				case "HeadGear": {_passthrough = getNumber(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "HitpointsProtectionInfo" >> "Head" >> "passthrough")};
				case "Vest": {
					_passthrough = [];
					{ _passthrough pushback (getNumber(configFile >> "CfgWeapons" >> _configName >> "ItemInfo" >> "HitpointsProtectionInfo" >> _x >> "passthrough"));
					} forEach ["Neck","Arms","Chest","Diaphragm","Abdomen","Body"];
				};
				default {_passthrough = "N/A"};
			};


			_itemsEx pushback [_name,_type,_classname,_mass,_capacity,_armor,_passthrough];
		};
	};
} foreach _weapons;


{
	private ["_configName","_picture","_mass","_ammocount","_ammo"];
	_configName = _x call _getClass;
	_name = getText(configFile >> "CfgMagazines" >> _configName >> "displayname");
	_picture = getText(configFile >> "CfgMagazines" >> _configName >> "picture");
	_mass = getNumber(configFile >> "CfgMagazines" >> _configName >> "mass");
	_ammocount = getNumber(configFile >> "CfgMagazines" >> _configName >> "count");
	_ammo = getText(configFile >> "CfgMagazines" >> _configName >> "ammo");
	if(_name != "" && _picture != "") then
	{
		_classname = _configName;
		_magsEx pushback [_name,"magazine",_classname,_mass,_ammocount,_ammo];
	};
} foreach _magazines;

{
	private ["_configName","_picture","_mass","_capacity"];
        _parents = [_x, true] call BIS_fnc_returnParents;
	_configName = _x call _getClass;
	_name = getText(configFile >> "CfgVehicles" >> _configName >> "displayname");
	_picture = getText(configFile >> "CfgVehicles" >> _configName >> "picture");
	_mass = getNumber(configFile >> "CfgVehicles" >> _configName >> "mass");
	_capacity = getNumber(configFile >> "CfgVehicles" >> _configName >> "maximumload");
	if(_name != "" && _picture != "" && !(isClass (configFile >> "CfgVehicles" >> _configName >> "TransportItems")) && "Bag_Base" in _parents && _configName != "Bag_Base" && _name != "Bag") then
	{
		_backEx pushback [_name,"bag",_configName,_mass,_capacity];

	};
} foreach _backpacks;

{
	private ["_configName","_picture","_mass"];
	_configName = _x call _getClass;
	_name = getText(configFile >> "CfgGlasses" >> _configName >> "displayname");
	_mass = getNumber(configFile >> "CfgGlasses" >> _configName >> "mass");
	if (_name != "") then
	{
		_glassEx pushback [_name,"glasses",_configName,_mass];
	};
} foreach _glasses;

diag_log "--- CONFIG DUMP SHEET 1 CSV START ---";
diag_log text("name;type;class name;mass;capacity;mags/caliber");
{
	_name = _x select 0;
	_type = _x select 1;
	_classname = _x select 2;
	_magazines = _x select 3;
	_mass = _x select 4;
	diag_log text(format["%1;%2;%3;%4;%5;%6",_name,_type,_classname,_mass,"N/A",_magazines]);
} forEach _wepsEx;

{
	_name = _x select 0;
	_type = _x select 1;
	_classname = _x select 2;
	_mass = _x select 3;
	_capacity = _x select 4;
	_ammo = _x select 5;
	diag_log text(format["%1;%2;%3;%4;%5;%6",_name,_type,_classname,_mass,_capacity,_ammo]);
} forEach _magsEx;

diag_log "--- CONFIG DUMP CSV SHEET 1 END ---";
diag_log "";
diag_log "";
diag_log "";
diag_log "";
diag_log "";
diag_log "--- CONFIG DUMP SHEET 2 CSV START ---";
diag_log text("name;type;class name;mass;capacity;armor (Neck/Arms/Chest/Diaphragm/Abdomen/Body)';passthrough (Neck/Arms/Chest/Diaphragm/Abdomen/Body)");

{
	_name = _x select 0;
	_type = _x select 1;
	_classname = _x select 2;
	_mass = _x select 3;
	_capacity = _x select 4;
	_armor = _x select 5;
	_passthrough = _x select 6;
	diag_log text(format["%1;%2;%3;%4;%5;%6;%7;%8", _name,_type,_classname,_mass,_capacity,_armor,_passthrough]);
} forEach _itemsEx;

{
	_name = _x select 0;
	_type = _x select 1;
	_classname = _x select 2;
	_mass = _x select 3;
	_capacity = _x select 4;
	diag_log text(format["%1;%2;%3;%4;%5",_name,_type,_classname,_mass,_capacity]);
} forEach _backEx;

{
	_name = _x select 0;
	_type = _x select 1;
	_classname = _x select 2;
	_mass = _x select 3;
	diag_log text(format["%1;%2;%3;%4;%5",_name,_type,_classname,_mass,"N/A"]);
} forEach _glassEx;

diag_log "--- CONFIG DUMP CSV SHEET 2 END ---";

systemchat "Config export done";
Last Author
CplPidu
Last Edited
May 13 2020, 2:59 PM

Event Timeline

CplPidu created this object.May 13 2020, 7:49 AM
CplPidu edited the content of this document. (Show Details)May 13 2020, 10:40 AM
CplPidu published a new version of this document.
CplPidu edited the content of this document. (Show Details)May 13 2020, 2:59 PM
CplPidu added a subscriber: CplPidu.

Updated script to include all backpacks.