Biki Export Scripts: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Fix missing semicolon)
(Add Arma 3: CfgVehicles export script)
 
(6 intermediate revisions by 2 users not shown)
Line 99: Line 99:
} forEach ((_nameConfig >> "CfgFunctions" >> configName _x) call BIS_fnc_returnChildren);
} forEach ((_nameConfig >> "CfgFunctions" >> configName _x) call BIS_fnc_returnChildren);
} forEach ((_nameConfig >> "CfgFunctions") call BIS_fnc_returnChildren);
} forEach ((_nameConfig >> "CfgFunctions") call BIS_fnc_returnChildren);
} foreach [[configFile, "configFile"]];
} forEach [[configFile, "configFile"]];


_export = _export + endl + "|}";
_export = _export + endl + "|}";
Line 183: Line 183:
<spoiler>
<spoiler>
<sqf>
<sqf>
private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl;
toFixed 2;
_output = _output + "{| class =""wikitable""" + endl + format ["|-%1! %2 !! %3", endl, "Config Name", "RGBA"];
 
private _markers = "true" configClasses (configFile >> "CfgMarkerColors");
 
private _export = "";
_export = "{| class=""wikitable sortable""" + endl;
_export = _export + "! style= ""min-width: 100px"" | Preview !! Class Name !! Display Name !! RGBA (0..1) !! RGB (0..255) !! HTML" + endl;
 
{
{
private _colour = getArray (_x >> "color") call BIS_fnc_colorConfigToRGBA;
private _classname = configName _x;
private _colourName = configName _x;
private _name = getText (_x >> "name");
_output = _output + format ["%1|-%1|%2 || %3", endl, _colourName, _colour];
private _colorRGBArma = getArray (_x >> "color");
} forEach configProperties [configFile >> "CfgMarkerColors"];
 
_output = _output + endl + "|}";
_colorRGBArma = _colorRGBArma apply
copyToClipboard _output;
{
if (_x isEqualType "") then
{
call compile _x;
}
else
{
_x;
};
};
 
private _colorRGB255 = _colorRGBArma apply {_x * 255};
 
_export = _export + "|-" + endl + format [
"| style=""background-color: %10"" | || %1 || ''%2'' || [%3, %4, %5, %6] || [%7, %8, %9] || %10",
_className,
_name,
_colorRGBArma # 0, _colorRGBArma # 1, _colorRGBArma # 2, _colorRGBArma # 3,
_colorRGB255 # 0, _colorRGB255 # 1, _colorRGB255 # 2,
_colorRGBArma call BIS_fnc_colorRGBtoHTML
] + endl;
} forEach _markers;
 
_export = _export + "|}" + endl + endl;
 
copyToClipboard _export;
</sqf>
</sqf>
</spoiler>
</spoiler>
Line 198: Line 229:
= [[Arma 3: CfgMusic]] =
= [[Arma 3: CfgMusic]] =


'''Author:''' {{User|Killzone_kid}}<br>
'''Author:''' {{User|Killzone_Kid}}<br>
<spoiler>
<spoiler>
<sqf>
<sqf>
Line 248: Line 279:


copyToClipboard (_cfgMusic joinString toString[10]);
copyToClipboard (_cfgMusic joinString toString[10]);
</sqf>
</spoiler>
= Arma 3: CfgVehicles =
* [[Arma 3: CfgVehicles_WEST]]
* [[Arma 3: CfgVehicles_EAST]]
* [[Arma 3: CfgVehicles_GUER]]
* [[Arma 3: CfgVehicles_CIV]]
'''Author:''' [[BIS_fnc_exportCfgVehiclesAssetDB]] updated by {{User|R3vo}}<br>
<spoiler>
<sqf>
/*
AUTHOR: Asheara, updated by R3vo
USE CASE:
0 = [0] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> OPFOR / CSAT
0 = [1] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> BLUFOR / NATO
0 = [2] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Independent / Guerrilla
0 = [3, 0] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Civilian
0 = [3, 1] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Structures
0 = [3, 2] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Ruins & Wrecks
0 = [3, 3] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Equipment
0 = [3, 4] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Objects
0 = [3, 5] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, VR Objects
0 = [3, 6] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Civilian side, Animals
0 = [] spawn BIS_fnc_exportCfgVehiclesAssetDB; -> Other - Unknown, Enemy, Friendly, Modules, Empty, Ambient Life
*/
private _sides_param = param [0, [4, 5, 6, 7, 8, 9], [0, []]]; // first parameter, default value is "other" -> sides bigger than three, accepts array and numbers
private _categories_param = param [1, 0, [0]]; // second parameter, default value is 0 - representing "Civilians" category as first field of array, accepts numbers
if !(_sides_param isEqualType []) then // if _side is not array, make it array
{
_sides_param = [_sides_param];
};
if (count(_sides_param) > 1) then
{
_categories_param = 1;
};
startLoadingScreen [""];
_cfgVehicles = (configFile >> "cfgvehicles") call BIS_fnc_returnChildren; // gets all subclasses of cfgVehicles
_text = ""; // initialising the text variable
_product = productVersion select 0; // version of the product for purposes of the wiki links
_productShort = productVersion select 1; // version of the product for purposes of the wiki images
_scopes = ["Private", "Protected", "Public"]; // list of strings for scopes
_sides = ["OPFOR", "BLUFOR", "Independent", "Civilian", "Unknown", "Enemy", "Friendly", "Modules", "Empty", "Ambient Life"]; // list of strings for sides
_scopecolor = ["#E1C2C2", "#FFF3B2", "#C2E1C2"]; // list of colors for scopes
_sidecolor = ["#E1C2C2", "#C2D4E7", "#C2E1C2", "#DAC2E1", "#FFF3B2", "E1C2C2", "#C2E1C2", "#FDD3A6", "#DAC2E1", "#CCCCCC"]; // list of colors for sides
// listed subcategories for "civilian" side
_civilian = ["Civilians"];
_structures = ["Structures", "Structures (Altis)", "Structures (Tanoa)", "Walls", "Fences"];
_ruins_wrecks = ["Ruins", "Ruins (Altis)", "Ruins (Tanoa)", "Wrecks"];
_equipment = ["Equipment", "Weapons", "Weapon Attachements", "Supplies"];
_objects = ["Furniture", "Signs", "Things", "Other"];
_vr = ["VR Objects"];
_animals = ["Animals"];
_categories = [_civilian, _structures, _ruins_wrecks, _equipment, _objects, _vr, _animals];
_cfg_DLC = ["Curator", "Expansion", "Heli", "Kart", "Mark", "Orange", "Argo", "Tank"]; // list of values for DLCs from config
_icons_DLC = [
"Kart", "karts_icon_ca",
"Heli", "heli_icon_ca",
"Mark", "mark_icon_ca",
"Expansion", "apex_icon_ca",
"Jets", "jets_icon_ca",
"Orange", "orange_icon_ca",
"Argo", "malden_icon_ca",
"Tank", "tank_icon_ca"
  ];
_exclude_list = [];
// function returning appropriate string for the purpose of wiki links based on the item type passed as an argument
_fnc_getItemPage = {
switch (_this) do {
case "Weapon": { "CfgWeapons Weapons" };
case "VehicleWeapon": { "CfgWeapons Vehicle Weapons" };
case "Item": { "CfgWeapons Items" };
case "Equipment": { "CfgWeapons Equipment" };
default { "CfgWeapons" };
};
};
_text = format ["{{Navbox/A3Assets}}", _product] + endl;
// creating the wiki table header
_text = _text + "{| class=""wikitable sortable"" style=""font-size: 80%; margin: auto""" + endl;
_text = _text + "! Preview" + endl;
_text = _text + "! Class Name" + endl;
_text = _text + "! Display Name" + endl;
_text = _text + "! Side" + endl;
_text = _text + "! Category" + endl;
_text = _text + "! Subcategory" + endl;
_text = _text + "! Scope" + endl;
_text = _text + "! DLC" + endl;
// Props do not need to have these parameters listed
if (_categories_param == 0) then
{
_text = _text + "! Weapons" + endl;
_text = _text + "! Magazines" + endl;
_text = _text + "! Items" + endl;
};
_text = _text + "! Addons" + endl;
_text = _text + "! Features" + endl;
_parsed = []; // initialising array for filtering the assets
// Applies only for "civilian" side - too many assets, had to be split into several categories
if (3 in _sides_param) then
{
{ // getting side and editor category text to ve verified for every asset
_side = getNumber (_x >> "side");
_editorcategory = getText (configFile >> "cfgEditorCategories" >> getText (_x >> "editorCategory") >> "displayName");
if (_editorcategory == "") then
{
_editorcategory = getText (configFile >> "cfgFactionClasses" >> getText (_x >> "faction") >> "displayName");
};
// excluding classes starting as "Supply"
if ((configName _x select [0, 6]) == "Supply") then
{
_exclude_list pushBack _x;
};
// excluding carrier parts which are hidden from editor
if (((configName _x select [0, 15]) == "Land_Carrier_01") && { getNumber (_x >> "scope") != 2 }) then
{
_exclude_list pushBack _x;
};
// Verifying allegiance of an asset into chosen category
if (_side == 3 && { _editorcategory in (_categories select _categories_param) } && { !(_x in _exclude_list) }) then
{
_parsed pushBack _x;
};
} forEach _cfgVehicles;
_cfgVehicles = _parsed;
};
_cfgVehiclesCount = count _cfgVehicles; // count of the subclasses for purpose of the loading screen progress
{
_scope = getNumber (_x >> "scope"); // getting the scope parameter of the asset
_side = getNumber (_x >> "side"); // getting the side parameter of the asset
if (_scope > 0 && _side in _sides_param) then // chooses only the classes with public or private scope (1 or 2)
{
_weapons = []; // initialising the array for the weapons
_magazines = []; // initialising the array for the magazines
_textSide = _sides select _side; // getting the display name of side - number from config is used as array index
_textScope = _scopes select _scope; // getting the display name of scope - number from config is used as array index
_textDLC = ""; // initialising the variable for DLC
_iconDLC = ""; // initialising the variable for the icon file
_textWeapons = ""; // initialising the text variable for weapons
_textMagazines = ""; // initialising the text variable for magazines
_textItems = ""; // initialising the text variable for items
_textAddons = ""; // initialising the text variable for addons
_textFeatures = ""; // initialising the text variable for features
/* features attribute variables */
_tmp_features_int = 0;
_tmp_features_array = [];
_count_textures = 0;
_count_animations = 0;
_count_hiddensel = 0;
_count_vehcapacity = 0;
_count_turrets = 0;
_array_turrets = [];
_count_slingload = 0;
_count_sling_ropes = 0;
_can_float = 0;
/* vehicle capacity details*/
_driver = 0;
_copilot = 0;
_commanders = 0;
_ffv_positions = 0;
_gunners = 0;
_cargo = 0;
/* vehicle roles details */
_veh_medic = 0;
_veh_repair = 0;
_veh_ammo = 0;
_veh_fuel = 0;
/* vehicle in vehicle tranport */
_veh_carrier = 0;
_veh_cargo = 0;
/* men roles details */
_men_medic = 0;
_men_repair = 0;
_men_mines = 0;
_men_uav = 0;
_classname = configName _x; // getting the class name of the object
_displayname = getText (_x >> "displayName"); // getting the display name of the object
_editorcategory = getText (configFile >> "cfgEditorCategories" >> getText (_x >> "editorCategory") >> "displayName"); // getting editorcategory display name
_editorsubcategory = getText (configFile >> "cfgEditorSubcategories" >> getText (_x >> "editorSubcategory") >> "displayName"); // getting editor subcategory display name
_items = ([getText (_x >> "uniformClass")] + getArray (_x >> "linkedItems") + getArray (_x >> "items")) - [""]; // getting the list of the items
_addons = unitAddons _classname; // getting a list of addons required for the object
// if editorCategory is empty, variable is filled with faction instead
if (_editorcategory == "") then
{
_editorcategory = getText (configFile >> "cfgFactionClasses" >> getText (_x >> "faction") >> "displayName");
};
// if editorsubcategory is empty, variable is filled with vehicleclass instead
if (_editorsubcategory == "") then
{
_editorsubcategory = getText (configFile >> "cfgVehicleClasses" >> getText (_x >> "vehicleClass") >> "displayName");
};
// if the asset was released as part of DLC, there will be selected text for name of the expansion
_textDLC = getText (_x >> "DLC");
if ((_icons_DLC find _textDLC) != -1) then
{
_iconDLC = _icons_DLC select ((_icons_DLC find _textDLC)+1);
};
// Props do not need to have these parameters listed
if (_categories_param == 0) then
{
// loop for adding the turret weapons and magazines to the variables for current object
{
_weapons = _weapons + getArray (_x >> "weapons");
_magazines = _magazines + getArray (_x >> "magazines");
} forEach (_classname call bis_fnc_getTurrets);
// formatting of the _weapons array to fit to the wiki table, adding links
{
_type = _x call BIS_fnc_itemType; // getting the type of the weapon
_page = (_type select 0) call _fnc_getItemPage; // getting and appropriate
_textWeapons = _textWeapons + endl + format [": [[%1: %3#%2|%2]]", _product, _x, _page];
} forEach _weapons;
// formatting of the magazines - aggregating the duplicite magazines, adding links
while { _magazines isNotEqualTo [] } do {
_mag = _magazines select 0;
_textMagazines = _textMagazines + endl + format [":%1x&nbsp;[[%3: CfgMagazines#%2|%2]]", { _x == _mag } count _magazines, _mag, _product];
_magazines = _magazines - [_mag];
};
// formatting of the items
while { _items isNotEqualTo [] } do {
_item = _items select 0;
_type = _item call BIS_fnc_itemType;
_page = (_type select 0) call _fnc_getItemPage;
_textItems = _textItems + endl + format [": [[%4: %3#%2|%2]]", { _x == _item } count _items, _item, _page, _product];
_items = _items - [_item];
};
};
// formatting the addons list, adding links
{ // Addons starting with CuratorOnly shouldn't appear in the list
if ((_x find "CuratorOnly") == -1) then
{
_textAddons = _textAddons + endl + format [": [[%1: CfgPatches CfgVehicles#%2|%2]]", _product, _x];
};
} forEach _addons;
/* FEATURES */
/* RANDOMISATION */
// Randomisation has two parts - textures and components
_textFeatures = _textFeatures + endl + "* '''Randomisation:''' ";
// parsing amount of skins, which have non-zero value
_tmp_features_array = getArray(_x >> "TextureList");
for "_i" from 0 to (count _tmp_features_array - 1) step 2 do
{
if (_tmp_features_array select (_i + 1) > 0) then
{
_count_textures = _count_textures + 1;
};
};
// parsing amount of components, which have probability to be random - values between 0 and 1
_tmp_features_array = getArray(_x >> "animationList");
for "_i" from 0 to (count _tmp_features_array - 1) step 2 do
{
if (_tmp_features_array select (_i + 1) > 0 && _tmp_features_array select (_i + 1) < 1) then
{
_count_animations = _count_animations + 1;
};
};
// creating the final text for randomisation, based on the values obtained from before
if (_count_textures > 1 || { _count_animations > 0 }) then
{
_textFeatures = _textFeatures + "Yes";
// writing the amount of skins
if (_count_textures > 1) then
{
_textFeatures = _textFeatures + ", " + str _count_textures + " skins";
};
// writing the amount of components
if (_count_animations > 0) then
{
_textFeatures = _textFeatures + ", " + str _count_animations + " component";
if (_count_animations > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
_textFeatures = _textFeatures + endl;
}
else
{
_textFeatures = _textFeatures + "No" + endl;
};
/* CAMO SELECTIONS */
// getting the amount of hidden selections used for camouflage
_count_hiddensel = count getArray(_x >> "hiddenSelections");
_textFeatures = _textFeatures + "* ''' Camo&nbsp;selections:'''&nbsp;" + str _count_hiddensel + endl;
/* VEHICLE SPECIFIC FEATURES */
if (configName _x isKindOf "Air" || { configName _x isKindOf "Car" } || { configName _x isKindOf "Tank" } || { configName _x isKindOf "Ship" }) then
{
/* VEHICLE CAPACITY */
// function to iterate through turrets, to get their count and list
_get_count_turrets =
{
private _config = _this select 0;
_count_turrets = _count_turrets + count("true" configClasses (_config >> "Turrets"));
{
_array_turrets pushBack _x; // creates array of configs for the turrets, so they can be sorted out
[_x] call _get_count_turrets; // checks if the turret has any other turrets as children
} forEach ("true" configClasses(_config >> "Turrets"));
};
[_x] call _get_count_turrets; // call the function to count and list the turrets
_driver = getNumber (_x >> "hasDriver"); // getting value to determine whether there is a driver (but always should be)
_cargo = getNumber (_x >> "transportSoldier"); // getting value to determine amount of cargo positions
// iterating through the array of configs for turrets to determine their types
{ // whether the turret is a commander
if (getText (_x >> "ProxyType") == "CPCommander") then
{
_commanders = _commanders + 1;
}
else
{ // whether the turret is a copilot
if ((getNumber (_x >> "isCopilot") == 1) && { count(getArray(_x >> "weapons")) == 0 || count(getArray(_x >> "magazines")) == 0 }) then
{
_copilot = _copilot + 1;
}
else
{ // whether the turret is a firing from the vehicle
if (getNumber (_x >> "isPersonTurret") == 1 && {count(getArray(_x >> "weapons")) == 0 || {count(getArray(_x >> "magazines")) == 0} || {getText (_x >> "ProxyType") == "CPCargo"}}) then
{
_ffv_positions = _ffv_positions + 1;
} else
{ // anything else is a gunner
_gunners = _gunners + 1;
};
};
};
} forEach _array_turrets;
_count_vehcapacity = _driver + _cargo + _count_turrets; // capacity of vehicle is driver, amount of cargo positions and amount of turrets
_textFeatures = _textFeatures + "* '''Vehicle&nbsp;capacity:'''&nbsp;";
// vehicles with parameter isUav have are remotely controlled
if (getNumber (_x >> "isUav") == 1) then
{
_textFeatures = _textFeatures + "Remotely&nbsp;controlled, ";
};
_textFeatures = _textFeatures + str _count_vehcapacity;
// if capacity is more than a zero, we'll write more elaborate description
if (_count_vehcapacity > 0) then
{
_textFeatures = _textFeatures;
// "amount" of drivers (always just one)
if (_driver > 0) then
{
_textFeatures = _textFeatures + endl + "** " + str _driver + "&nbsp;driver";
};
// "amount" of copilots
if (_copilot > 0) then
{
if (_driver > 0) then
{
_textFeatures = _textFeatures;
};
_textFeatures = _textFeatures + endl + "** " + str _copilot + "&nbsp;copilot";
if (_copilot > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
// amount of commanders
if (_commanders > 0) then
{
if (_driver > 0 || { _copilot > 0 }) then
{
_textFeatures = _textFeatures;
};
_textFeatures = _textFeatures + endl + "** " + str _commanders + "&nbsp;commander";
if (_commanders > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
// amount of gunners
if (_gunners > 0) then
{
if (_driver > 0 || { _copilot > 0 } || { _commanders > 0 }) then
{
_textFeatures = _textFeatures;
};
_textFeatures = _textFeatures + endl + "** " + str _gunners + "&nbsp;gunner";
if (_gunners > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
// amount of positions for firing from vehicle
if (_ffv_positions > 0) then
{
if ((_driver > 0) || { _copilot > 0 } || { _commanders > 0 } || { _gunners > 0 }) then
{
_textFeatures = _textFeatures;
};
_textFeatures = _textFeatures + endl + "** " + str _ffv_positions + "&nbsp;firing&nbsp;position";
if (_ffv_positions > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
// amount of cargo positions
if (_cargo > 0) then
{
if ((_driver > 0) || { _copilot > 0 } || { _commanders > 0 } || { _gunners > 0 } || { _ffv_positions > 0 }) then
{
_textFeatures = _textFeatures;
};
_textFeatures = _textFeatures + endl + "** " + str _cargo + " cargo&nbsp;position";
if (_cargo > 1) then
{
_textFeatures = _textFeatures + "s";
};
};
_textFeatures = _textFeatures + endl;
};
/* ROLES */
_veh_medic = getNumber (_x >> "attendant");
_veh_ammo = getNumber (_x >> "transportAmmo");
_veh_fuel = getNumber (_x >> "transportFuel");
_veh_repair = getNumber (_x >> "transportRepair");
_textFeatures = _textFeatures + "* '''Roles:''' ";
// vehicle can heal, medic role
if (_veh_medic > 0) then
{
_textFeatures = _textFeatures + endl + "** can&nbsp;heal";
};
// vehicle can repair
if (_veh_repair > 0) then
{
if (_veh_medic > 0) then
{
_textFeatures = _textFeatures + ", " + endl;
};
_textFeatures = _textFeatures + endl + "** can&nbsp;repair";
};
// vehicle transports ammo, can replenish
if (_veh_ammo > 0) then
{
if (_veh_medic > 0 || { _veh_repair > 0 }) then
{
_textFeatures = _textFeatures + ", ";
};
_textFeatures = _textFeatures + endl + "** can&nbsp;replenish&nbsp;ammo";
};
// vehicle transports fuel, can replenish
if (_veh_fuel > 0) then
{
if (_veh_medic > 0 || { _veh_repair > 0 } || { _veh_ammo > 0 }) then
{
_textFeatures = _textFeatures + ", " + endl;
};
_textFeatures = _textFeatures + endl + "** can&nbsp;replenish&nbsp;fuel";
};
// no roles
if (!(_veh_fuel > 0) && {!(_veh_medic > 0)} && {!(_veh_repair > 0)} && {!(_veh_ammo > 0)}) then
{
_textFeatures = _textFeatures + endl + "** None";
};
_textFeatures = _textFeatures + endl;
/* FLOATING */
_can_float = getNumber (_x >> "canFloat");
_textFeatures = _textFeatures + "* '''Can&nbsp;float:'''&nbsp;";
if (_can_float == 1) then
{
_textFeatures = _textFeatures + "Yes" + endl;
}
else
{
_textFeatures = _textFeatures + "No" + endl;
};
/* VEHICLE IN VEHICLE TRANSPORT */
_textFeatures = _textFeatures + "* '''Vehicle&nbsp;in&nbsp;vehicle&nbsp;transport:''' ";
if (isClass (_x >> "VehicleTransport")) then
{
_veh_carrier = getNumber (_x >> "VehicleTransport" >> "Carrier" >> "maxLoadMass");
_veh_cargo = getNumber (_x >> "VehicleTransport" >> "Cargo" >> "canBeTransported");
}
else
{  // specific vehicles can be blacklisted and therefore can't be loaded, done with config parameter
// therefore if config parameter is missing, vehicle can be loaded
// from https://confluence.bistudio.com/display/ARMA3/Vehicle+in+Vehicle+Transport
_veh_cargo = 1;
};
if (_veh_carrier > 0) then
{
_textFeatures = _textFeatures + "Can&nbsp;transport, &nbsp;up&nbsp;to&nbsp;" + str _veh_carrier + "&nbsp;kg. ";
}
else
{
_textFeatures = _textFeatures + "Cannot&nbsp;transport. ";
};
if (_veh_cargo > 0) then
{
_textFeatures = _textFeatures + "Can be transported." + endl;
}
else
{
_textFeatures = _textFeatures + "Cannot be transported." + endl;
};
/* SLINGLOAD */
_count_slingload = getNumber (_x >> "slingLoadMaxCargoMass");
_textFeatures = _textFeatures + "* '''Slingload:''' ";
if (_count_slingload > 0) then
{
_textFeatures = _textFeatures + "Yes, up&nbsp;to&nbsp;" + str _count_slingload + "&nbsp;kg" + endl;
}
else
{
_textFeatures = _textFeatures + "No" + endl;
};
};
/* MEN SPECIFIC FEATURES */
if (configName _x isKindOf "Man" && { !(configName _x isKindOf "Animal") }) then
{
/* ROLES */
_textFeatures = _textFeatures + "* '''Roles:''' ";
_men_medic = getNumber (_x >> "attendant");
_men_repair = getNumber (_x >> "engineer");
_men_mines = getNumber (_x >> "canDeactivateMines");
_men_uav = getNumber (_x >> "uavHacker");
// man can heal, medic role
if (_men_medic > 0) then
{
_textFeatures = _textFeatures + "can&nbsp;heal";
};
// man can repair, engineer role
if (_men_repair > 0) then
{
if (_men_medic > 0) then
{
_textFeatures = _textFeatures + ", ";
};
_textFeatures = _textFeatures + "can&nbsp;repair";
};
// man can deactivate mines
if (_men_mines > 0) then
{
if (_men_medic > 0 || { _men_repair > 0 }) then
{
_textFeatures = _textFeatures + ", ";
};
_textFeatures = _textFeatures + "can&nbsp;deactivate&nbsp;mines";
};
// vehicle transports fuel, can replenish
if (_men_uav > 0) then
{
if (_men_medic > 0 || { _men_repair > 0 } || { _men_mines > 0 }) then
{
_textFeatures = _textFeatures + ", ";
};
_textFeatures = _textFeatures + "can&nbsp;replenish&nbsp;fuel";
};
// no roles
if (!(_men_medic > 0) && { !(_men_repair > 0) } && { !(_men_mines > 0) } && { !(_men_uav > 0) }) then
{
_textFeatures = _textFeatures + "None";
};
};
/* FEATURES EXCLUDING MEN */
if !(configName _x isKindOf "Man") then
{
/* SLINLOADABLE */
_textFeatures = _textFeatures + "* '''Slingloadable:''' ";
_count_sling_ropes = count getArray(_x >> "slingLoadCargoMemoryPoints");
if (_count_sling_ropes > 0) then
{
_textFeatures = _textFeatures + "Yes";
}
else
{
_textFeatures = _textFeatures + "No";
};
};
// Get editor preview
private _image = getText (configFile >> "CfgVehicles" >> _classname >> "editorPreview");
if (_image != "") then
{
_image = (_image splitString "\");
reverse _image;
_image = _image param [0, ""];
};
if (_image != "") then
{
_image = format ["[[File:%1|150px]]", "arma3-" + toLowerANSI _image];
};
diag_log _image;
_text = _text + "|-" + endl;
_text = _text + "|" + (["", " " + _image] select (_image != "") + endl; // preview
_text = _text + "| " + format ["<span id=""%1"">'''%1'''</span>", _classname] + endl; // class name
_text = _text + "| " + (if (_displayName != "") then { "''" + _displayname + "''" } else { "" }) + endl; // display name
_text = _text + "| " + format ["style=""background-color: %2"" | %1", _textSide, _sideColor select _side] + endl; // side
_text = _text + "| " + _editorcategory + endl; // category
_text = _text + "| " + _editorsubcategory + endl; // subcategory
_text = _text + "| " + format ["style=""background-color: %2"" | %1", _textScope, _scopeColor select _scope] + endl; // scope
if (_iconDLC != "") then // DLC
{
_text = _text + "| " + format ["[[File:%1.png|50px]]", _iconDLC] + endl;
}
else
{
_text = _text + "| " + _textDLC + endl;
};
// Props do not need to have these parameters listed
if (_categories_param == 0) then
{
_text = _text + "| " + _textWeapons + endl; // weapons
_text = _text + "| " + _textMagazines + endl; // magazines
_text = _text + "| " + _textItems + endl + endl; // items
};
_text = _text + "| " + _textAddons + endl + endl; // addons
_text = _text + "| " + _textFeatures + endl; // features
};
progressLoadingScreen (_foreachindex / _cfgVehiclesCount);
} forEach _cfgVehicles;
_text = _text + "|}" + endl; // wiki table ending
_text = _text + format [
"<div style=""color: grey; font-size: 0.9em; padding: 0.5em; text-align: center"">Generated in {{GVI|%1|%2|size= 0.75}} by ~~~~</div>",
toLowerANSI (productVersion select 0),
(productVersion select 2) * 0.01
] + endl;
_text = _text + "{{Navbox/A3Assets}}";
copyToClipboard _text; // copying the contents to the clipboard
endLoadingScreen;
</sqf>
</sqf>
</spoiler>
</spoiler>
Line 254: Line 990:
= [[Arma 3: Difficulty Settings]] =
= [[Arma 3: Difficulty Settings]] =


'''Author:''' {{User|Killzone_kid}}<br>
'''Author:''' {{User|Killzone_Kid}}<br>
<spoiler>
<spoiler>
<sqf>
<sqf>
Line 291: Line 1,027:
" %1 = %2;",
" %1 = %2;",
_x, getNumber(_cfg >> _class >> _x)];
_x, getNumber(_cfg >> _class >> _x)];
} foreach [
} forEach [
"precisionEnemy",
"precisionEnemy",
"precisionFriendly",
"precisionFriendly",
Line 796: Line 1,532:
private _extractRadioDubbing = false;
private _extractRadioDubbing = false;


private _addonPaths = allAddonsInfo apply { _x select 0 };  
private _addonPaths = allAddonsInfo apply { _x select 0 };
if (!_extractRadioDubbing) then
if (!_extractRadioDubbing) then
{
{
Line 933: Line 1,669:
if (isClass _groupConfig) then
if (isClass _groupConfig) then
{
{
"| <div style=""white-space: pre"">'''" + getText(_groupConfig >> "name") + "'''<br>config: " + configName _groupConfig + "</div>" call _addLine;
"| <div style=""white-space: pre"">'''" + getText (_groupConfig >> "name") + "'''<br>config: " + configName _groupConfig + "</div>" call _addLine;


"Composition:<div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
"Composition:<div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
Line 1,045: Line 1,781:
if (isClass _groupConfig) then
if (isClass _groupConfig) then
{
{
"| <div style=""white-space: pre"">'''" + getText(_groupConfig >> "name") + "'''<br>config: " + configName _groupConfig + "</div>" call _addLine;
"| <div style=""white-space: pre"">'''" + getText (_groupConfig >> "name") + "'''<br>config: " + configName _groupConfig + "</div>" call _addLine;


"Composition:<div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
"Composition:<div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
Line 1,131: Line 1,867:
private _groupRow = 1;
private _groupRow = 1;
{ // group level
{ // group level
_lines pushBack "| <div style=""white-space: pre"">'''" + getText(_x >> "name") + "'''<br>config: " + configName _x + "</div>";
_lines pushBack "| <div style=""white-space: pre"">'''" + getText (_x >> "name") + "'''<br>config: " + configName _x + "</div>";


private _units = "true" configClasses _x;
private _units = "true" configClasses _x;
Line 1,176: Line 1,912:
= CfgWorlds/Group* =
= CfgWorlds/Group* =


'''Author:''' {{User|Killzone Kid}}<br>
'''Author:''' {{User|Killzone_Kid}}<br>
<spoiler>
<spoiler>
<sqf>
<sqf>
Line 1,288: Line 2,024:
if (not isNull getMissionConfig "titleParam1") then
if (not isNull getMissionConfig "titleParam1") then
{
{
("titleParam1 = """ + getText getMissionConfig "titleParam1" + """; // " + getTextRaw ("titleParam1")) call _addLine;
("titleParam1 = """ + getText getMissionConfig "titleParam1" + """; // " + getTextRaw (getMissionConfig "titleParam1")) call _addLine;
("textsParam1[] = { """ + (getArray (getMissionConfig "textsParam1") joinString """, """) + """ };") call _addLine;
("textsParam1[] = { """ + (getArray (getMissionConfig "textsParam1") joinString """, """) + """ };") call _addLine;
("valuesParam1[] = { " + (getArray (getMissionConfig "valuesParam1") joinString ", ") + " };") call _addLine;
("valuesParam1[] = { " + (getArray (getMissionConfig "valuesParam1") joinString ", ") + " };") call _addLine;
Line 1,296: Line 2,032:
if (not isNull getMissionConfig "titleParam2") then
if (not isNull getMissionConfig "titleParam2") then
{
{
("titleParam2 = """ + getText getMissionConfig "titleParam2" + """; // " + getTextRaw ("titleParam2")) call _addLine;
("titleParam2 = """ + getText getMissionConfig "titleParam2" + """; // " + getTextRaw (getMissionConfig "titleParam2")) call _addLine;
("textsParam2[] = { """ + (getArray (getMissionConfig "textsParam2") joinString """, """) + """ };") call _addLine;
("textsParam2[] = { """ + (getArray (getMissionConfig "textsParam2") joinString """, """) + """ };") call _addLine;
("valuesParam2[] = { " + (getArray (getMissionConfig "valuesParam2") joinString ", ") + " };") call _addLine;
("valuesParam2[] = { " + (getArray (getMissionConfig "valuesParam2") joinString ", ") + " };") call _addLine;

Latest revision as of 19:13, 8 August 2024

This page contains all export scripts used to generate data on various pages on this wiki.

In order to quickly link to the export script used to generate data on a specific page use {{Wiki|extractionScript}} on that specific page.
The functions from this page (and more) are also available in this mod.

Arma: Airport IDs

Author: POLPOX


Arma 3: CfgFunctions

Author: R3vo


Arma 3: CfgIdentities

Author: Lou Montana and POLPOX


Arma 3: CfgMarkers

Author: R3vo


Arma 3: CfgMarkerColors

Author: R3vo


Arma 3: CfgMusic

Author: Killzone_Kid


Arma 3: CfgVehicles

Author: BIS_fnc_exportCfgVehiclesAssetDB updated by R3vo


Arma 3: Difficulty Settings

Author: Killzone_Kid


Arma 3: Display3DEN IDCs

Author: R3vo


Arma 3: Hitpoints

Author: R3vo


Arma 3: Moves

Author: Lou Montana


Arma 3: createSimpleObject/objects

Author: Lou Montana


Arma 3: createVehicle/vehicles

light version (without hitpoints)
Author: Lou Montana

heavy version (with hitpoints)
Author: Killzone_Kid

heavy version (with hidden hitpoints)
Author: Lou Montana from the above one


Arma 3: DLC Restrictions

Author: POLPOX


Arma 3: Shooting Targets

Author: R3vo


Arma 3: Sound Files

Author: Lou Montana


BIS_fnc_holdActionAdd

Author: Lou Montana


CfgGroups

Author: Lou Montana


CfgWorlds/Group*

Author: Killzone_Kid


inputAction/actions

Author: POLPOX


Mission Parameters

Author: Lou Montana


Modules

Author: R3vo


nearestTerrainObjects

Author: R3vo


Side Relations

Author: Lou Montana