Biki Export Scripts: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Fix missing semicolon) |
Lou Montana (talk | contribs) (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"]]; | ||
_export = _export + endl + "|}"; | _export = _export + endl + "|}"; | ||
Line 183: | Line 183: | ||
<spoiler> | <spoiler> | ||
<sqf> | <sqf> | ||
private | toFixed 2; | ||
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 | private _classname = configName _x; | ||
private | private _name = getText (_x >> "name"); | ||
private _colorRGBArma = getArray (_x >> "color"); | |||
} forEach | |||
_colorRGBArma = _colorRGBArma apply | |||
copyToClipboard | { | ||
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| | '''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 [[%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 selections:''' " + 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 capacity:''' "; | |||
// vehicles with parameter isUav have are remotely controlled | |||
if (getNumber (_x >> "isUav") == 1) then | |||
{ | |||
_textFeatures = _textFeatures + "Remotely 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 + " driver"; | |||
}; | |||
// "amount" of copilots | |||
if (_copilot > 0) then | |||
{ | |||
if (_driver > 0) then | |||
{ | |||
_textFeatures = _textFeatures; | |||
}; | |||
_textFeatures = _textFeatures + endl + "** " + str _copilot + " 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 + " 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 + " 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 + " firing 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 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 heal"; | |||
}; | |||
// vehicle can repair | |||
if (_veh_repair > 0) then | |||
{ | |||
if (_veh_medic > 0) then | |||
{ | |||
_textFeatures = _textFeatures + ", " + endl; | |||
}; | |||
_textFeatures = _textFeatures + endl + "** can 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 replenish 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 replenish 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 float:''' "; | |||
if (_can_float == 1) then | |||
{ | |||
_textFeatures = _textFeatures + "Yes" + endl; | |||
} | |||
else | |||
{ | |||
_textFeatures = _textFeatures + "No" + endl; | |||
}; | |||
/* VEHICLE IN VEHICLE TRANSPORT */ | |||
_textFeatures = _textFeatures + "* '''Vehicle in vehicle 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 transport, up to " + str _veh_carrier + " kg. "; | |||
} | |||
else | |||
{ | |||
_textFeatures = _textFeatures + "Cannot 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 to " + str _count_slingload + " 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 heal"; | |||
}; | |||
// man can repair, engineer role | |||
if (_men_repair > 0) then | |||
{ | |||
if (_men_medic > 0) then | |||
{ | |||
_textFeatures = _textFeatures + ", "; | |||
}; | |||
_textFeatures = _textFeatures + "can repair"; | |||
}; | |||
// man can deactivate mines | |||
if (_men_mines > 0) then | |||
{ | |||
if (_men_medic > 0 || { _men_repair > 0 }) then | |||
{ | |||
_textFeatures = _textFeatures + ", "; | |||
}; | |||
_textFeatures = _textFeatures + "can deactivate 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 replenish 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| | '''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 [ | ||
"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| | '''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.
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