Biki Export Scripts: Difference between revisions
Jump to navigation
Jump to search
↑ Back to spoiler's top
↑ Back to spoiler's top
↑ Back to spoiler's top
↑ Back to spoiler's top
↑ Back to spoiler's top
↑ Back to spoiler's top
(info about mod) |
Lou Montana (talk | contribs) m (Fix Arma_3:_DLC_Restrictions export (set color)… then got carried away) |
||
Line 1: | Line 1: | ||
{{TOC|side}} | {{TOC|side}} | ||
This page contains all export scripts used to generate data on various pages on this wiki. | This page contains all export scripts used to generate data on various pages on this wiki. | ||
{{Feature|informative|In order to quickly link to the export script used to generate data on a specific page use {{hl|{<nowiki/>{[[Template:Wiki|Wiki]]{{!}}extractionScript}<nowiki/>}}} on that specific page.}} | {{Feature|informative|In order to quickly link to the export script used to generate data on a specific page use {{hl|{<nowiki/>{[[Template:Wiki|Wiki]]{{!}}extractionScript}<nowiki/>}}} on that specific page.}} | ||
Line 8: | Line 7: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler> | <spoiler> | ||
< | <sqf> | ||
private _export = format ["Last updated: {{GVI|arma3|%1}}",productVersion # 2 / 100] + endl + "{| class=""wikitable sortable"" border=""1"" style=""border-collapse:collapse; font-size:100%;"" cellpadding=""0.5em"" | private _export = format ["Last updated: {{GVI|arma3|%1}}",productVersion # 2 / 100] + endl + "{| class=""wikitable sortable"" border=""1"" style=""border-collapse:collapse; font-size:100%;"" cellpadding=""0.5em"" | ||
! Group | ! Group | ||
Line 34: | Line 33: | ||
_export = _export + endl + "|}"; | _export = _export + endl + "|}"; | ||
copyToClipboard _export;</ | copyToClipboard _export; | ||
</sqf> | |||
</spoiler> | |||
Line 40: | Line 41: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler> | <spoiler> | ||
< | <sqf> | ||
// Marker data to biki table | |||
_classes = ("true" configClasses (ConfigFile >> "CfgMarkers")); | _classes = ("true" configClasses (ConfigFile >> "CfgMarkers")); | ||
_classes = [_classes, [], {configName _x}, "ASCEND"] call BIS_fnc_sortBy; | _classes = [_classes, [], {configName _x}, "ASCEND"] call BIS_fnc_sortBy; | ||
Line 56: | Line 58: | ||
} forEach _classes; | } forEach _classes; | ||
copyToClipboard ((_export trim ["|-", 2]) + "|}");</ | copyToClipboard ((_export trim ["|-", 2]) + "|}"); | ||
</sqf> | |||
</spoiler> | |||
<spoiler> | <spoiler> | ||
< | <sqf> | ||
// Marker icons screenshot | |||
//Create a solid, grey area marker in the editor first. Set its size to 100000x100000 | //Create a solid, grey area marker in the editor first. Set its size to 100000x100000 | ||
_startPos = [-33000, 20000, 0]; | _startPos = [-33000, 20000, 0]; | ||
Line 75: | Line 80: | ||
_marker setMarkerText format [" %1.", _forEachIndex + 1]; | _marker setMarkerText format [" %1.", _forEachIndex + 1]; | ||
_startPos = _startPos vectorAdd [3500, 0, 0]; | _startPos = _startPos vectorAdd [3500, 0, 0]; | ||
} forEach _classes;</ | } forEach _classes; | ||
</sqf> | |||
</spoiler> | |||
Line 82: | Line 89: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler> | <spoiler> | ||
< | <sqf> | ||
private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl; | |||
_output = _output + "{| class =""wikitable""" + endl + format ["|-%1! %2 !! %3",endl,"Config Name","RGBA"]; | _output = _output + "{| class =""wikitable""" + endl + format ["|-%1! %2 !! %3",endl,"Config Name","RGBA"]; | ||
{ | { | ||
Line 90: | Line 98: | ||
} forEach configProperties [configFile >> "CfgMarkerColors"]; | } forEach configProperties [configFile >> "CfgMarkerColors"]; | ||
_output = _output + endl + "|}"; | _output = _output + endl + "|}"; | ||
copyToClipboard _output;</ | copyToClipboard _output; | ||
</sqf> | |||
</spoiler> | |||
Line 96: | Line 106: | ||
'''Author:''' {{User|Killzone_kid}}<br> | '''Author:''' {{User|Killzone_kid}}<br> | ||
<spoiler>< | <spoiler> | ||
_cfgMusic | <sqf> | ||
_cfgMusic | _cfgMusic = []; | ||
_cfgMusic | _cfgMusic pushBack format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100]; | ||
_cfgMusic | _cfgMusic pushBack format ["{| class=""wikitable sortable"" width=""100%1""", "%"]; | ||
_cfgMusic | _cfgMusic pushBack format ["! width=""5%1"" |No.", "%"]; | ||
_cfgMusic | _cfgMusic pushBack format ["! width=""35%1"" |Title", "%"]; | ||
_cfgMusic | _cfgMusic pushBack format ["! width=""30%1"" |Class Name", "%"]; | ||
_cfgMusic | _cfgMusic pushBack format ["! width=""15%1"" |Duration", "%"]; | ||
_cfgMusic pushBack format ["! width=""15%1"" |DLC", "%"]; | |||
_cfgMusic pushBack ""; | |||
{ | { | ||
private _name = getText (_x >> "name"); | |||
private _duration = getNumber (_x >> "duration"); | |||
_duration | _duration = round _duration; | ||
private _minutes = floor (_duration / 60); | |||
private _mod = _duration mod 60; | |||
private _seconds = _mod / 1; | |||
_minutesStr | _minutesStr = if (_minutes < 10) then {format ["0%1",_minutes]} else {format ["%1",_minutes]}; | ||
_secondsStr | _secondsStr = if (_seconds < 10) then {format ["0%1",_seconds]} else {format ["%1",_seconds]}; | ||
_duration | _duration = format ["%1:%2",_minutesStr,_secondsStr]; | ||
private _dlc = if (configSourceMod _x == "") then | |||
{ | { | ||
"Arma 3"; | "Arma 3"; | ||
} | } | ||
else | |||
{ | { | ||
format ["%1",(modParams [configSourceMod _x,["name"]]) select 0]; | |||
}; | }; | ||
//Some work | //Some work around to make wiki link work | ||
if (_dlc isEqualTo "[[Arma 3 Contact (Platform)]]") then | |||
{ | { | ||
_dlc | _dlc = "Arma 3 Contact"; | ||
}; | }; | ||
if (_dlc isEqualTo "[[Arma 3 Tac-Ops]]") then | |||
{ | { | ||
_dlc | _dlc = "[[Arma 3 Tac-Ops Mission Pack]]"; | ||
}; | }; | ||
_cfgMusic | _cfgMusic pushBack "|-"; | ||
_cfgMusic | _cfgMusic pushBack format ["| %1", _forEachIndex + 1]; | ||
_cfgMusic | _cfgMusic pushBack format ["| %1", if (_name == "") then {"N/A"} else {_name}]; | ||
_cfgMusic | _cfgMusic pushBack format ["| %1", configName _x]; | ||
_cfgMusic | _cfgMusic pushBack format ["| %1", if (_duration == "00:00") then {"N/A"} else {_duration}]; | ||
_cfgMusic | _cfgMusic pushBack format ["| %1", _dlc]; | ||
_cfgMusic | _cfgMusic pushBack ""; | ||
} | } forEach ("isClass _x" configClasses (configFile >> "CfgMusic")); | ||
_cfgMusic | _cfgMusic pushBack "|}"; | ||
copyToClipboard (_cfgMusic joinString toString[10]); | |||
</sqf> | |||
</spoiler> | |||
Line 147: | Line 161: | ||
'''Author:''' {{User|Killzone_kid}}<br> | '''Author:''' {{User|Killzone_kid}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
"debug_console" callExtension format ["class Difficulties"]; | |||
"debug_console" callExtension format ["{"]; | "debug_console" callExtension format ["{"]; | ||
_cfg = configFile >> "CfgDifficulties"; | _cfg = configFile >> "CfgDifficulties"; | ||
{ | { | ||
_class = configName _x; | _class = configName _x; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" class %1", _class]; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" {"]; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" class Flags"]; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" {"]; | ||
_flags = _cfg >> _class >> "Flags"; | _flags = _cfg >> _class >> "Flags"; | ||
_flagNames = []; | _flagNames = []; | ||
Line 167: | Line 183: | ||
if (_canChange == 1) then { | if (_canChange == 1) then { | ||
"debug_console" callExtension format [ | "debug_console" callExtension format [ | ||
" | " %1 = %2;", | ||
_x, _current]; | _x, _current]; | ||
} else { | } else { | ||
"debug_console" callExtension format [ | "debug_console" callExtension format [ | ||
" | " /* %1 = %2; - cannot be changed */", | ||
_x, _current]; | _x, _current]; | ||
} | } | ||
} forEach _flagNames; | } forEach _flagNames; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" };"]; | ||
{ | { | ||
"debug_console" callExtension format [ | "debug_console" callExtension format [ | ||
Line 186: | Line 202: | ||
"skillFriendly" | "skillFriendly" | ||
]; | ]; | ||
"debug_console" callExtension format [" | "debug_console" callExtension format [" };"]; | ||
} forEach ("true" configClasses _cfg); | } forEach ("true" configClasses _cfg); | ||
"debug_console" callExtension format ["};"];</ | "debug_console" callExtension format ["};"]; | ||
</sqf> | |||
</spoiler> | |||
Line 194: | Line 212: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
private _controls = "{| class=""wikitable sortable"" | |||
|- | |- | ||
! Config Name !! IDC !! Config Path" + endl; | ! Config Name !! IDC !! Config Path" + endl; | ||
Line 214: | Line 234: | ||
[configFile >> "display3DEN"] call _fnc_scanConfig; | [configFile >> "display3DEN"] call _fnc_scanConfig; | ||
copyToClipboard (_controls + endl + "|}"); | copyToClipboard (_controls + endl + "|}"); | ||
</sqf> | |||
</spoiler> | |||
= [[Arma 3: Hitpoints]] = | = [[Arma 3: Hitpoints]] = | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
//If 3den Enhanced is installed, the script will also fill the "Name" column with available translations | //If 3den Enhanced is installed, the script will also fill the "Name" column with available translations | ||
[] spawn | [] spawn | ||
Line 242: | Line 266: | ||
systemChat "Data copied!"; | systemChat "Data copied!"; | ||
endLoadingScreen; | endLoadingScreen; | ||
};</ | }; | ||
</sqf> | |||
</spoiler> | |||
Line 249: | Line 275: | ||
'''light version (without hitpoints)'''<br> | '''light version (without hitpoints)'''<br> | ||
'''Author:''' {{User|Lou Montana}}<br> | '''Author:''' {{User|Lou Montana}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
private _result = ""; | |||
"if (getNumber (_x >> 'scope') > 0) then | "if (getNumber (_x >> 'scope') > 0) then | ||
{ | { | ||
Line 255: | Line 283: | ||
}" configClasses (configFile >> "CfgVehicles"); | }" configClasses (configFile >> "CfgVehicles"); | ||
copyToClipboard _result; | copyToClipboard _result; | ||
_result;</ | _result; | ||
</sqf> | |||
</spoiler> | |||
'''heavy version (with hitpoints)'''<br> | '''heavy version (with hitpoints)'''<br> | ||
'''Author:''' {{User|Killzone_Kid}}<br> | '''Author:''' {{User|Killzone_Kid}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
private _result = ""; | |||
"if (getNumber (_x >> 'scope') > 0) then | "if (getNumber (_x >> 'scope') > 0) then | ||
{ | { | ||
Line 273: | Line 305: | ||
}" configClasses (configFile >> "CfgVehicles"); | }" configClasses (configFile >> "CfgVehicles"); | ||
copyToClipboard _result; | copyToClipboard _result; | ||
_result;</ | _result; | ||
</sqf> | |||
</spoiler> | |||
Line 279: | Line 313: | ||
'''Author:''' {{User|POLPOX}}<br> | '''Author:''' {{User|POLPOX}}<br> | ||
<spoiler>< | <spoiler> | ||
forceUnicode 0 ; | <sqf> | ||
//Use unicode to prevent export error | |||
forceUnicode 0; | |||
//0: personal equipments 1: vehicles | // 0: personal equipments 1: vehicles | ||
private _mode = 0 ; | private _mode = 0; | ||
//Create hashmap to check looked models | // Create hashmap to check looked models | ||
private _lookedModels = createHashMap ; | private _lookedModels = createHashMap; | ||
//Get classes | //Get classes | ||
private "_classes" ; | private "_classes"; | ||
if (_mode == 0) then { | if (_mode == 0) then { | ||
//Get weapons, equipments, glasses, bags (in CfgVehicles) | //Get weapons, equipments, glasses, bags (in CfgVehicles) | ||
_classes = (" | _classes = (" | ||
getNumber (_x >> | getNumber (_x >> "scope") == 2 and | ||
[configName _x] call BIS_fnc_baseWeapon == configName _x and | [configName _x] call BIS_fnc_baseWeapon == configName _x and | ||
getNumber (_x >> | getNumber (_x >> "type") != 65536 and | ||
!('UnknownEquipment' in (configName _x call BIS_fnc_itemType)) | !('UnknownEquipment' in (configName _x call BIS_fnc_itemType)) | ||
" configClasses (configFile >> "CfgWeapons")) + | " configClasses (configFile >> "CfgWeapons")) + | ||
("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgGlasses")) + | ("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgGlasses")) + | ||
("getNumber (_x >> 'scope') == 2 and configName _x isKindOf 'Bag_Base'" configClasses (configFile >> "CfgVehicles")) ; | ("getNumber (_x >> 'scope') == 2 and configName _x isKindOf 'Bag_Base'" configClasses (configFile >> "CfgVehicles")); | ||
} ; | }; | ||
if (_mode == 1) then { | if (_mode == 1) then { | ||
//Get vehicles, except Men | // Get vehicles, except Men | ||
_classes = (" | _classes = (" | ||
getNumber (_x >> 'scope') == 2 and | getNumber (_x >> 'scope') == 2 and | ||
(configName _x isKindOf 'AllVehicles' and | (configName _x isKindOf 'AllVehicles' and | ||
!(configName _x isKindOf 'Man')) | !(configName _x isKindOf 'Man')) | ||
" configClasses (configFile >> "CfgVehicles")) ; | " configClasses (configFile >> "CfgVehicles")); | ||
} ; | }; | ||
private _data = _classes apply { | private _data = _classes apply { | ||
private _class = configName _x ; | private _class = configName _x; | ||
private _model = toLower (call { | private _model = toLower (call { | ||
//Check if the thing is a uniform | //Check if the thing is a uniform | ||
if ((getNumber (_x >> "itemInfo" >> "type")) == 801) exitWith { | if ((getNumber (_x >> "itemInfo" >> "type")) == 801) exitWith { | ||
getText (_x >> "itemInfo" >> "uniformClass") | getText (_x >> "itemInfo" >> "uniformClass") | ||
} ; | }; | ||
//Normalize model path to prevent errors | //Normalize model path to prevent errors | ||
private _split = (getText (_x >> "model") splitString "\") ; | private _split = (getText (_x >> "model") splitString "\"); | ||
if ((count _split >= 2) and {!(".p3d" in toLower (_split#(count _split-1)))}) then { | if ((count _split >= 2) and {!(".p3d" in toLower (_split#(count _split-1)))}) then { | ||
_split set [count _split -1,(_split#(count _split-1)) + ".p3d"] ; | _split set [count _split -1,(_split#(count _split-1)) + ".p3d"]; | ||
} ; | }; | ||
(_split joinString "\") | (_split joinString "\") | ||
}) ; | }); | ||
//Get DLC info per items | // Get DLC info per items | ||
if (isNil {_lookedModels get _model}) then { | if (isNil {_lookedModels get _model}) then { | ||
systemChat _class ; | systemChat _class; | ||
//Create a simple object and check the DLC via getObjectDLC | // Create a simple object and check the DLC via getObjectDLC | ||
private _obj = createSimpleObject [_model,[0,0,0]] ; | private _obj = createSimpleObject [_model,[0,0,0]]; | ||
private _dlc = getObjectDLC _obj ; | private _dlc = getObjectDLC _obj; | ||
//And remove the object. bye-bye | // And remove the object. bye-bye | ||
deleteVehicle _obj ; | deleteVehicle _obj; | ||
//If it is a part of the base game, -1, otherwise DLC id | // If it is a part of the base game, -1, otherwise DLC id | ||
if (isNil "_dlc") then { | if (isNil "_dlc") then { | ||
_lookedModels set [_model,-1] ; | _lookedModels set [_model,-1]; | ||
[_x,-1] | [_x,-1] | ||
} else { | } else { | ||
_lookedModels set [_model,_dlc] ; | _lookedModels set [_model,_dlc]; | ||
[_x,_dlc] | [_x,_dlc] | ||
} ; | }; | ||
} else { | } else { | ||
//Skip the generation if the model is already checked | // Skip the generation if the model is already checked | ||
systemChat ("simple object generate skipped: " + _class) ; | systemChat ("simple object generate skipped: " + _class); | ||
[_x,_lookedModels get _model] | [_x, _lookedModels get _model] | ||
} ; | }; | ||
} ; | }; | ||
//Return value preparation | // Return value preparation | ||
private _return = [ | private _return = [ | ||
'{| class="wikitable sortable"', | '{| class="wikitable sortable"', | ||
'|-' | '|-' | ||
] ; | ]; | ||
if (_mode == 0) then { | if (_mode == 0) then { | ||
Line 362: | Line 398: | ||
} else { | } else { | ||
_return pushBack '!Faction' | _return pushBack '!Faction' | ||
} ; | }; | ||
_return append [ | _return append [ | ||
Line 369: | Line 405: | ||
'!Icon', | '!Icon', | ||
'!Restricted?' | '!Restricted?' | ||
] ; | ]; | ||
//Code to convert things to things | //Code to convert things to things | ||
private _IDtoDLC = { | private _IDtoDLC = { | ||
switch _this do { | switch _this do { | ||
case 275700: {"arma3zeus"} ; | case 275700: {"arma3zeus"}; | ||
case 288520: {"arma3karts"} ; | case 288520: {"arma3karts"}; | ||
case 304380: {"arma3helicopters"} ; | case 304380: {"arma3helicopters"}; | ||
case 332350: {"arma3marksmen"} ; | case 332350: {"arma3marksmen"}; | ||
case 395180: {"arma3apex"} ; | case 395180: {"arma3apex"}; | ||
case 571710: {"arma3lawsofwar"} ; | case 571710: {"arma3lawsofwar"}; | ||
case 601670: {"arma3jets"} ; | case 601670: {"arma3jets"}; | ||
case 612480: {"arma3malden"} ; | case 612480: {"arma3malden"}; | ||
case 744950: {"arma3tacops"} ; | case 744950: {"arma3tacops"}; | ||
case 798390: {"arma3tanks"} ; | case 798390: {"arma3tanks"}; | ||
case 1021790: {"arma3contact"} ; | case 1021790: {"arma3contact"}; | ||
case 1325500: {"arma3artofwar"} ; | case 1325500: {"arma3artofwar"}; | ||
default {""} ; | default {""}; | ||
} ; | }; | ||
} ; | }; | ||
private _DLCToName = { | private _DLCToName = { | ||
switch _this do { | switch _this do { | ||
case "arma3zeus": {"Zeus"} ; | case "arma3zeus": {"Zeus"}; | ||
case "arma3karts": {"Karts"} ; | case "arma3karts": {"Karts"}; | ||
case "arma3helicopters": {"Helicopters"} ; | case "arma3helicopters": {"Helicopters"}; | ||
case "arma3marksmen": {"Marksmen"} ; | case "arma3marksmen": {"Marksmen"}; | ||
case "arma3apex": {"Apex"} ; | case "arma3apex": {"Apex"}; | ||
case "arma3lawsofwar": {"Laws of War"} ; | case "arma3lawsofwar": {"Laws of War"}; | ||
case "arma3jets": {"Jets"} ; | case "arma3jets": {"Jets"}; | ||
case "arma3malden": {"Malden"} ; | case "arma3malden": {"Malden"}; | ||
case "arma3tacops": {"Tac-Ops"} ; | case "arma3tacops": {"Tac-Ops"}; | ||
case "arma3tanks": {"Tanks"} ; | case "arma3tanks": {"Tanks"}; | ||
case "arma3contact": {"Contact"} ; | case "arma3contact": {"Contact"}; | ||
case "arma3artofwar": {"Art of War"} ; | case "arma3artofwar": {"Art of War"}; | ||
default {""} ; | default {""}; | ||
} ; | }; | ||
} ; | }; | ||
private _MODtoDLC = { | private _MODtoDLC = { | ||
switch toLower _this do { | switch toLower _this do { | ||
case "curator": {"arma3zeus"} ; | case "curator": {"arma3zeus"}; | ||
case "kart": {"arma3karts"} ; | case "kart": {"arma3karts"}; | ||
case "heli": {"arma3helicopters"} ; | case "heli": {"arma3helicopters"}; | ||
case "mark": {"arma3marksmen"} ; | case "mark": {"arma3marksmen"}; | ||
case "expansion": {"arma3apex"} ; | case "expansion": {"arma3apex"}; | ||
case "orange": {"arma3lawsofwar"} ; | case "orange": {"arma3lawsofwar"}; | ||
case "jets": {"arma3jets"} ; | case "jets": {"arma3jets"}; | ||
case "argo": {"arma3malden"} ; | case "argo": {"arma3malden"}; | ||
case "tacops": {"arma3tacops"} ; | case "tacops": {"arma3tacops"}; | ||
case "tank": {"arma3tanks"} ; | case "tank": {"arma3tanks"}; | ||
case "enoch": {"arma3contact"} ; | case "enoch": {"arma3contact"}; | ||
case "aow": {"arma3artofwar"} ; | case "aow": {"arma3artofwar"}; | ||
default {""} ; | default {""}; | ||
} ; | }; | ||
} ; | }; | ||
{ | { | ||
_x params ["_class","_dlc"] ; | _x params ["_class","_dlc"]; | ||
private _dlcName = _dlc call _IDtoDLC ; | private _dlcName = _dlc call _IDtoDLC; | ||
_return pushBack "|-" ; | _return pushBack "|-"; | ||
//Make the BG red when is restricted | // Make the BG red when is restricted | ||
private _BGCol = (call {if (_dlcName != "") exitWith { | private _BGCol = (call { if (_dlcName != "") exitWith { "style="background: #EDD; color: #333"|" }; "" }); | ||
//Categorize personal equipments | // Categorize personal equipments | ||
if (_mode == 0) then { | if (_mode == 0) then { | ||
_return pushBack ("|" + _BGCol + call { | _return pushBack ("|" + _BGCol + call { | ||
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgWeapons")) exitWith { | if ((configHierarchy (_x#0))#1 == (configFile >> "CfgWeapons")) exitWith { | ||
#define IKO(typeClass) (configName (_x select 0) isKindOf [typeClass,configFile >> "CfgWeapons"]) | #define IKO(typeClass) (configName (_x select 0) isKindOf [typeClass,configFile >> "CfgWeapons"]) | ||
_type = (configName (_x#0)) call BIS_fnc_itemType ; | _type = (configName (_x#0)) call BIS_fnc_itemType; | ||
if (IKO("Rifle")) exitWith {"Rifle"} ; | if (IKO("Rifle")) exitWith {"Rifle"}; | ||
if (IKO("Pistol")) exitWith {"Pistol"} ; | if (IKO("Pistol")) exitWith {"Pistol"}; | ||
if (IKO("Launcher")) exitWith {"Launcher"} ; | if (IKO("Launcher")) exitWith {"Launcher"}; | ||
if (_type#1 == "GPS") exitWith {"Terminal"} ; | if (_type#1 == "GPS") exitWith {"Terminal"}; | ||
if (_type#1 == "UAVTerminal") exitWith {"Terminal"} ; | if (_type#1 == "UAVTerminal") exitWith {"Terminal"}; | ||
if (_type#1 == "AccessoryMuzzle") exitWith {"Muzzle Attachment"} ; | if (_type#1 == "AccessoryMuzzle") exitWith {"Muzzle Attachment"}; | ||
if (_type#1 == "AccessorySights") exitWith {"Sight"} ; | if (_type#1 == "AccessorySights") exitWith {"Sight"}; | ||
if (_type#1 == "AccessoryPointer") exitWith {"Rail Attachment"} ; | if (_type#1 == "AccessoryPointer") exitWith {"Rail Attachment"}; | ||
if (_type#1 == "AccessoryBipod") exitWith {"Bipod"} ; | if (_type#1 == "AccessoryBipod") exitWith {"Bipod"}; | ||
if (_type#1 == "LaserDesignator") exitWith {"Binocular"} ; | if (_type#1 == "LaserDesignator") exitWith {"Binocular"}; | ||
if (_type#1 == "NVGoggles") exitWith {"NVGs"} ; | if (_type#1 == "NVGoggles") exitWith {"NVGs"}; | ||
if (_type#1 == "Radio") exitWith {"Communication"} ; | if (_type#1 == "Radio") exitWith {"Communication"}; | ||
if ( | if ( | ||
_type#1 == "FirstAidKit" or | _type#1 == "FirstAidKit" or | ||
Line 455: | Line 491: | ||
_type#1 == "Toolkit" or | _type#1 == "Toolkit" or | ||
_type#1 == "MineDetector" | _type#1 == "MineDetector" | ||
) exitWith {"Item"} ; | ) exitWith {"Item"}; | ||
_type#1 | _type#1 | ||
} ; | }; | ||
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgGlasses")) exitWith { | if ((configHierarchy (_x#0))#1 == (configFile >> "CfgGlasses")) exitWith { | ||
"Facewear" | "Facewear" | ||
} ; | }; | ||
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgVehicles") and configName (_x#0) isKindOf "Bag_Base") exitWith { | if ((configHierarchy (_x#0))#1 == (configFile >> "CfgVehicles") and configName (_x#0) isKindOf "Bag_Base") exitWith { | ||
"Backpack" | "Backpack" | ||
} ; | }; | ||
}) ; | }); | ||
} else { | } else { | ||
_return pushBack ("|" + _BGCol + getText (configfile >> "CfgFactionClasses" >> (getText (_class >> "faction")) >> "displayName")) ; | _return pushBack ("|" + _BGCol + getText (configfile >> "CfgFactionClasses" >> (getText (_class >> "faction")) >> "displayName")); | ||
} ; | }; | ||
_return append [ | _return append [ | ||
("|" + _BGCol + configName _class), | ("|" + _BGCol + configName _class), | ||
("|" + _BGCol + getText (_class >> "displayName")) | ("|" + _BGCol + getText (_class >> "displayName")) | ||
] | ]; | ||
//DLC Icons | // DLC Icons | ||
private _MOD = call { | private _MOD = call { | ||
private _return = "" ; | private _return = ""; | ||
//Emulate Arsenal icons | //Emulate Arsenal icons | ||
if (_mode == 0) then { | if (_mode == 0) then { | ||
private _addon = (configSourceAddonList (_x#0)) ; | private _addon = (configSourceAddonList (_x#0)); | ||
private _MOD = configSourceMODList (configFile >> "CfgPatches" >> _addon#0) ; | private _MOD = configSourceMODList (configFile >> "CfgPatches" >> _addon#0); | ||
if (count _MOD > 0) then { | if (count _MOD > 0) then { | ||
_MOD = _MOD#0 | _MOD = _MOD#0 | ||
} else { | } else { | ||
_MOD = "" | _MOD = "" | ||
} ; | }; | ||
_return = _MOD ; | _return = _MOD; | ||
} ; | }; | ||
//Emulate Eden Editor icons | // Emulate Eden Editor icons | ||
if (_mode == 1) then { | if (_mode == 1) then { | ||
private _MOD = (configSourceMODList (_x#0)) ; | private _MOD = (configSourceMODList (_x#0)); | ||
if (count _MOD > 0) then { | if (count _MOD > 0) then { | ||
_MOD = _MOD#0 | _MOD = _MOD#0 | ||
} else { | } else { | ||
_MOD = "" | _MOD = "" | ||
} ; | }; | ||
_return = _MOD ; | _return = _MOD; | ||
} ; | }; | ||
_return | _return | ||
} ; | }; | ||
_return pushBack ("|" + _BGCol + (["",format ["{{Icon|%1|25}}",_MOD call _MODtoDLC]] select (_MOD != ""))) ; | _return pushBack ("|" + _BGCol + (["",format ["{{Icon|%1|25}}",_MOD call _MODtoDLC]] select (_MOD != ""))); | ||
if (_dlcName == "") then { | if (_dlcName == "") then { | ||
_return pushBack ("|" + "No") ; | _return pushBack ("|" + "No"); | ||
} else { | } else { | ||
_return pushBack ("|" + _BGCol + (_dlcName call _DLCToName)) ; | _return pushBack ("|" + _BGCol + (_dlcName call _DLCToName)); | ||
} ; | }; | ||
} forEach _data ; | } forEach _data; | ||
_return pushBack "|}" ; | _return pushBack "|}"; | ||
//And finally done, use joinString to make line breaks and copy | // And finally done, use joinString to make line breaks and copy | ||
copyToClipboard (_return joinString endl) ;</ | copyToClipboard (_return joinString endl);</sqf></spoiler> | ||
Line 519: | Line 555: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
popUpTargets = "{| class=""wikitable"" | |||
|- | |- | ||
! Display Name !! Class !! Animation Sources" | ! Display Name !! Class !! Animation Sources" | ||
{ | { | ||
Line 535: | Line 573: | ||
} forEach ("getNumber (_x >> 'scope') > 1 && getText (_x >> 'editorSubcategory') == 'EdSubcat_Targets'" configClasses (configfile >> "CfgVehicles")); | } forEach ("getNumber (_x >> 'scope') > 1 && getText (_x >> 'editorSubcategory') == 'EdSubcat_Targets'" configClasses (configfile >> "CfgVehicles")); | ||
copyToClipboard (popUpTargets + endl + "|}");</ | copyToClipboard (popUpTargets + endl + "|}"); | ||
</sqf> | |||
</spoiler> | |||
= [[:Category:CfgGroups|CfgGroups]] = | = [[:Category:CfgGroups|CfgGroups]] = | ||
'''Author:''' {{User|Lou Montana}} | '''Author:''' {{User|Lou Montana}} | ||
* [[Arma 2: CfgGroups]]<br><spoiler> | * [[Arma 2: CfgGroups]]<br><spoiler> | ||
<sqf> | |||
local _result = ""; | |||
local _addLine = { | |||
_result = _result + _this + (toString [10]); | |||
}; | |||
local _maxGroupWidth = 5; | |||
local _cfgGroups = configFile >> "CfgGroups"; | |||
"{{TOC|horizontal}}" call _addLine; | |||
for "_sideindex" from 0 to (count _cfgGroups -1) do | |||
{ // side level | |||
local _sideConfig = _cfgGroups select _sideindex; | |||
if (isClass _sideConfig) then | |||
{ | |||
if (_sideindex > 0) then | |||
{ | |||
"" call _addLine; | |||
}; | |||
"" call _addLine; | |||
"== " + getText (_sideConfig >> "name") + " ==" call _addLine; | |||
"" call _addLine; | |||
"config: " + configName _sideConfig call _addLine; | |||
"" call _addLine; | |||
for "_factionindex" from 0 to count _sideConfig -1 do | |||
{ // faction level | |||
local _factionConfig = _sideConfig select _factionindex; | |||
if (isClass _factionConfig) then | |||
{ | |||
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine; | |||
"" call _addLine; | |||
"config: " + configName _factionConfig call _addLine; | |||
"" call _addLine; | |||
"{| class=""wikitable""" call _addLine; | |||
for "_grouptypeindex" from 0 to count _factionConfig -1 do | |||
{ // groupType level | |||
local _groupTypeConfig = _factionConfig select _grouptypeindex; | |||
if (isClass _groupTypeConfig) then | |||
{ | |||
local _count = 0; | |||
for "_cnt" from 0 to count _groupTypeConfig -1 do { if (isClass (_groupTypeConfig select _cnt)) then { _count = _count + 1; }; }; | |||
local _groupLines = ceil (_count / _maxGroupWidth); | |||
"|- style=""vertical-align: top""" call _addLine; | |||
"! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine; | |||
"<div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "</div>" call _addLine; | |||
local _groupRow = 1; | |||
for "_groupindex" from 0 to count _groupTypeConfig -1 do | |||
{ // group level | |||
local _groupConfig = _groupTypeConfig select _groupindex; | |||
if (isClass _groupConfig) then | |||
{ | |||
"| <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; | |||
for "_unitindex" from 0 to count _groupConfig -1 do | |||
{ | |||
local _unitClass = _groupConfig select _unitindex; | |||
if (isClass _unitClass) then | |||
{ | |||
("# " + getText (_unitClass >> "vehicle")) call _addLine; | |||
}; | |||
}; | |||
"</div></div>" call _addLine; | |||
_groupRow = _groupRow + 1; | |||
if (_groupRow > _maxGroupWidth) then { | |||
"|-" call _addLine; | |||
_groupRow = 1; | |||
}; | |||
}; | |||
}; | |||
"|-" call _addLine; | |||
}; | |||
}; | |||
"|}" call _addLine; | |||
}; | |||
}; | |||
}; | |||
}; | |||
"" call _addLine; | |||
"" call _addLine; | |||
"[[Category: CfgGroups]]" call _addLine; | |||
"" call _addLine; | |||
copyToClipboard _result; | |||
_result; | |||
</sqf> | |||
</spoiler> | </spoiler> | ||
* [[Arma 2: Operation Arrowhead: CfgGroups]]<br><spoiler> | * [[Arma 2: Operation Arrowhead: CfgGroups]]<br><spoiler> | ||
<sqf> | |||
local _result = ""; | |||
local _addLine = { | |||
_result = _result + _this + (toString [10]); | |||
}; | |||
local _maxGroupWidth = 5; | |||
local _cfgGroups = configFile >> "CfgGroups"; | |||
"{{TOC|horizontal|||y}}" call _addLine; | |||
for "_sideindex" from 0 to (count _cfgGroups -1) do | |||
{ // side level | |||
local _sideConfig = _cfgGroups select _sideindex; | |||
if (isClass _sideConfig) then | |||
{ | |||
if (_sideindex > 0) then | |||
{ | |||
"" call _addLine; | |||
}; | |||
"" call _addLine; | |||
"== " + getText (_sideConfig >> "name") + " ==" call _addLine; | |||
"" call _addLine; | |||
"config: " + configName _sideConfig call _addLine; | |||
"" call _addLine; | |||
for "_factionindex" from 0 to count _sideConfig -1 do | |||
{ // faction level | |||
local _factionConfig = _sideConfig select _factionindex; | |||
if (isClass _factionConfig) then | |||
{ | |||
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine; | |||
"" call _addLine; | |||
"config: " + configName _factionConfig call _addLine; | |||
"" call _addLine; | |||
"{| class=""wikitable""" call _addLine; | |||
for "_grouptypeindex" from 0 to count _factionConfig -1 do | |||
{ // groupType level | |||
local _groupTypeConfig = _factionConfig select _grouptypeindex; | |||
if (isClass _groupTypeConfig) then | |||
{ | |||
local _count = 0; | |||
for "_cnt" from 0 to count _groupTypeConfig -1 do { if (isClass (_groupTypeConfig select _cnt)) then { _count = _count + 1; }; }; | |||
local _groupLines = ceil (_count / _maxGroupWidth); | |||
"|- style=""vertical-align: top""" call _addLine; | |||
"! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine; | |||
"<div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "</div>" call _addLine; | |||
local _groupRow = 1; | |||
for "_groupindex" from 0 to count _groupTypeConfig -1 do | |||
{ // group level | |||
local _groupConfig = _groupTypeConfig select _groupindex; | |||
if (isClass _groupConfig) then | |||
{ | |||
"| <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; | |||
for "_unitindex" from 0 to count _groupConfig -1 do | |||
{ | |||
local _unitClass = _groupConfig select _unitindex; | |||
if (isClass _unitClass) then | |||
{ | |||
("# " + getText (_unitClass >> "vehicle")) call _addLine; | |||
}; | |||
}; | |||
"</div></div>" call _addLine; | |||
_groupRow = _groupRow + 1; | |||
if (_groupRow > _maxGroupWidth) then { | |||
"|-" call _addLine; | |||
_groupRow = 1; | |||
}; | |||
}; | |||
}; | |||
"|-" call _addLine; | |||
}; | |||
}; | |||
"|}" call _addLine; | |||
}; | |||
}; | |||
}; | |||
}; | |||
"" call _addLine; | |||
"" call _addLine; | |||
"[[Category: CfgGroups]]" call _addLine; | |||
"" call _addLine; | |||
copyToClipboard _result; | |||
_result; | |||
</sqf> | |||
</spoiler> | </spoiler> | ||
* [[Arma 3: CfgGroups]]<br><spoiler> | * [[Arma 3: CfgGroups]]<br><spoiler> | ||
<sqf> | |||
private _lines = []; | |||
private _maxGroupWidth = 5; | |||
private _groupSides = "true" configClasses (configFile >> "CfgGroups"); | |||
// _lines pushBack "{{TopMenu|" + (_groupSides apply { format ["[[#%1|%1]]", getText (_x >> "name")] } joinString "") + "}}"; | |||
_lines pushBack "{{TOC|horizontal|||y}}"; | |||
{ // side level | |||
if (_forEachIndex > 0) then { | |||
_lines pushBack ""; | |||
}; | |||
_lines pushBack ""; | |||
_lines pushBack "== " + getText (_x >> "name") + " =="; | |||
_lines pushBack ""; | |||
_lines pushBack "config: " + configName _x; | |||
_lines pushBack ""; | |||
private _factions = "true" configClasses _x; | |||
{ // faction level | |||
_lines pushBack "=== " + getText (_x >> "name") + " ==="; | |||
_lines pushBack ""; | |||
_lines pushBack "config: " + configName _x; | |||
_lines pushBack ""; | |||
_lines pushBack "{| class=""wikitable"""; | |||
private _groupTypes = "true" configClasses _x; | |||
{ // groupType level | |||
private _groups = "true" configClasses _x; | |||
private _groupLines = ceil (count _groups / _maxGroupWidth); | |||
_lines pushBack "|- style=""vertical-align: top"""; | |||
_lines pushBack "! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_x >> "name"); | |||
_lines pushBack "<div style=""font-weight: normal"">config: " + configName _x + "</div>"; | |||
private _groupRow = 1; | |||
{ // group level | |||
_lines pushBack "| <div style=""white-space: pre"">'''" + getText(_x >> "name") + "'''<br>config: " + configName _x + "</div>"; | |||
private _units = "true" configClasses _x; | |||
_lines pushBack "Composition:<div style=""" + (["", "columns: 2; "] select (count _units > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">"; | |||
{ | |||
_lines pushBack ("# " + getText (_x >> "vehicle")); | |||
} forEach _units; | |||
_lines pushBack "</div></div>"; | |||
_groupRow = _groupRow + 1; | |||
if (_groupRow > _maxGroupWidth) then { | |||
_lines pushBack "|-"; | |||
_groupRow = 1; | |||
} | |||
} forEach _groups; | |||
_lines pushBack "|-"; | |||
} forEach _groupTypes; | |||
_lines pushBack "|}"; | |||
} forEach _factions; | |||
} forEach _groupSides; | |||
_lines pushBack ""; | |||
_lines pushBack ""; | |||
_lines pushBack "[[Category: CfgGroups]]"; | |||
_lines pushBack ""; | |||
private _result = _lines joinString endl; | |||
copyToClipboard _result; | |||
_result; | |||
</sqf> | |||
</spoiler> | </spoiler> | ||
Line 844: | Line 889: | ||
'''Author:''' {{User|Killzone Kid}}<br> | '''Author:''' {{User|Killzone Kid}}<br> | ||
<spoiler> | <spoiler> | ||
<sqf> | |||
"if ((configName _x) select [0, 5] == 'group') then | |||
{ | |||
diag_log ('%' + configName _x); | |||
for '_i' from 0 to count _x - 1 do { | |||
diag_log ('* ""' + configName (_x select _i) + '"" &rarr; ' + getText ((_x select _i) >> "name")); | |||
}; | |||
}; false" configClasses (configFile >> "CfgWorlds"); | |||
</sqf> | |||
</spoiler> | </spoiler> | ||
Line 857: | Line 904: | ||
'''Author:''' {{User|POLPOX}}<br> | '''Author:''' {{User|POLPOX}}<br> | ||
<spoiler>< | <spoiler> | ||
<sqf> | |||
_r = []; | |||
{ | { | ||
_r pushBack [getText (_x >> "name"),[]] ; | _r pushBack [getText (_x >> "name"),[]]; | ||
_index = _forEachIndex ; | _index = _forEachIndex; | ||
{ | { | ||
private _actionName = actionName _x ; | private _actionName = actionName _x; | ||
(_r#_index#1) pushBack [_x,_actionName] ; | (_r#_index#1) pushBack [_x,_actionName]; | ||
} forEach getArray (_x >> "group") ; | } forEach getArray (_x >> "group"); | ||
} forEach ("true" configClasses (configFile >> "UserActionGroups")) ; | } forEach ("true" configClasses (configFile >> "UserActionGroups")); | ||
_rFinal = [ | _rFinal = [ | ||
'{| class="sortable wikitable"' | '{| class="sortable wikitable"' | ||
] ; | ]; | ||
_presets = ("configName _x != 'Empty'" configClasses (configFile >> "CfgDefaultKeysPresets")) ; | _presets = ("configName _x != 'Empty'" configClasses (configFile >> "CfgDefaultKeysPresets")); | ||
_str = '! Type !! actionName !! Name' ; | _str = '! Type !! actionName !! Name'; | ||
{ | { | ||
_str = _str + " !! " + getText (_x >> "displayName") ; | _str = _str + " !! " + getText (_x >> "displayName"); | ||
if (getNumber (_x >> "default") == 1) then { | if (getNumber (_x >> "default") == 1) then { | ||
_str = _str + "<br/>(Default)" ; | _str = _str + "<br/>(Default)"; | ||
} ; | }; | ||
} forEach _presets ; | } forEach _presets; | ||
_rFinal pushBack format ['! colspan="3"| Action information !! colspan="%1"| Presets',count _presets] ; | _rFinal pushBack format ['! colspan="3"| Action information !! colspan="%1"| Presets',count _presets]; | ||
_rFinal pushBack "|-" ; | _rFinal pushBack "|-"; | ||
_rFinal pushBack _str ; | _rFinal pushBack _str; | ||
{ | { | ||
_type = _x#0 ; | _type = _x#0; | ||
{ | { | ||
_rFinal pushBack "|-" ; | _rFinal pushBack "|-"; | ||
_x params ["_actionName","_name"/*,"_tooltip"*/] ; | _x params ["_actionName","_name"/*,"_tooltip"*/]; | ||
if (_name isEqualTo "") then { | if (_name isEqualTo "") then { | ||
_name = "{{n/a}}" ; | _name = "{{n/a}}"; | ||
} ; | }; | ||
_str = format ["| %1 || {{hl|%2}} || %3 ",_type,_actionName,_name] ; | _str = format ["| %1 || {{hl|%2}} || %3 ",_type,_actionName,_name]; | ||
{ | { | ||
_keys = getArray (_x >> "Mappings" >> _actionName) ; | _keys = getArray (_x >> "Mappings" >> _actionName); | ||
if (count _keys != 0) then { | if (count _keys != 0) then { | ||
_keys = _keys apply { | _keys = _keys apply { | ||
call { | call { | ||
if (typeName _x == "STRING") exitWith { | if (typeName _x == "STRING") exitWith { | ||
keyName call compile _x ; | keyName call compile _x; | ||
} ; | }; | ||
if (typeName _x == "ARRAY") exitWith { | if (typeName _x == "ARRAY") exitWith { | ||
_r = [] ; | _r = []; | ||
{ | { | ||
if (typeName _x == "STRING") then { | if (typeName _x == "STRING") then { | ||
_r pushBack ((keyName call compile _x) splitString """")#0 ; | _r pushBack ((keyName call compile _x) splitString """")#0; | ||
} ; | }; | ||
_r pushBack ((keyName _x) splitString """")#0 ; | _r pushBack ((keyName _x) splitString """")#0; | ||
} forEach _x ; | } forEach _x; | ||
_r = (_r joinString "+") ; | _r = (_r joinString "+"); | ||
_r | _r | ||
} ; | }; | ||
keyName _x | keyName _x | ||
} ; | }; | ||
} ; | }; | ||
_str = _str + format ["|| %1 ",(_keys joinString ", " splitString """")#0] ; | _str = _str + format ["|| %1 ", (_keys joinString ", " splitString """")#0]; | ||
} else { | } else { | ||
_str = _str + "|| " ; | _str = _str + "|| "; | ||
} ; | }; | ||
} forEach _presets ; | } forEach _presets; | ||
_rFinal pushBack _str ; | _rFinal pushBack _str; | ||
} forEach (_x#1) ; | } forEach (_x#1); | ||
} forEach _r ; | } forEach _r; | ||
_rFinal pushBack "|}" ; | _rFinal pushBack "|}"; | ||
copyToClipboard (_rFinal joinString endl) ;</ | copyToClipboard (_rFinal joinString endl); | ||
</sqf> | |||
</spoiler> | |||
Line 935: | Line 986: | ||
'''Author:''' {{User|R3vo}}<br> | '''Author:''' {{User|R3vo}}<br> | ||
<spoiler> | <spoiler> | ||
<sqf> | |||
private _version = format ["Last updated: {{GVI|arma3|%1}}", productVersion # 2 / 100]; | |||
private _counter = 0; | |||
private _export = _version + endl + "{| class=""wikitable""" + endl + "! Module Name !! Category !! Addon !! Function !! Description" + endl + "|-" + endl; | |||
private _modules = "(configName inheritsFrom _x) == 'Module_F'" configClasses (configFile >> "CfgVehicles"); | |||
{ | |||
if ((getNumber (_x >> "scope") > 1)) then | |||
{ | |||
private _name = getText (_x >> "displayName"); | |||
private _cat = getText (_x >> "category"); | |||
private _mod = configSourceMod _x; | |||
private _fnc = getText (_x >> "function"); | |||
if !(_fnc isEqualTo "") then | |||
{ | |||
_fnc = _fnc select [7]; | |||
_fnc = "[[BIS_fnc" + _fnc + "]]"; | |||
}; | |||
private _desc = getText (_x >> "ModuleDescription" >> "Description"); | |||
if (_desc isEqualTo "") then {_desc = ""}; | |||
if (_mod == "") then {_mod = "A3"}; | |||
private _modName = modParams [_mod,["name"]]; | |||
_modName = _modName select 0; | |||
_cat = getText (configFile >> "CfgFactionClasses" >> _cat >> "displayName"); | |||
if (_cat isEqualTo "") then {_cat = "Others"}; | |||
_export = _export + "| " + _name + endl + "|| " + _cat + endl + "|| " + _modName + endl + "|| " + _fnc + endl + "|| " + _desc + endl + "|-" + endl; | |||
}; | |||
_counter = _counter + 1; | |||
} forEach _modules; | |||
_export = _export + "|}" + endl + format ["Total number of modules: %1", _counter]; | |||
copyToClipboard _export; | |||
</sqf> | |||
</spoiler> | </spoiler> | ||
Line 974: | Line 1,027: | ||
<spoiler> | <spoiler> | ||
< | <sqf> | ||
[] spawn | [] spawn | ||
{ | { | ||
Line 1,016: | Line 1,069: | ||
copyToClipboard _export; | copyToClipboard _export; | ||
}; | }; | ||
</ | </sqf> | ||
</spoiler> | </spoiler> | ||
[[Category: Maintenance]] | [[Category: Maintenance]] |
Revision as of 14:49, 28 March 2022
This page contains all export scripts used to generate data on various pages on this wiki.
Arma 3: CfgFunctions
Author: R3vo
private _export = format ["Last updated: {{GVI|arma3|%1}}",productVersion # 2 / 100] + endl + "{| class=""wikitable sortable"" border=""1"" style=""border-collapse:collapse; font-size:100%;"" cellpadding=""0.5em""
! Group
! Category
! Functions";
{ // Config
private _indexConfig = _forEachIndex;
private _nameConfig = _x # 0;
{ // Tags
private _nameTAG = configName _x;
private _valueTAG = getText (_x >> "tag");
if (_valueTAG == "") then { _valueTag = configName _x };
{ // Categories
private _nameCategory = configName _x;
_export = _export + endl + "|-" + endl + "!" + _nameTAG + endl + "!" + _nameCategory + endl + "|";
private _pathCategory = getText (_x >> "file");
{ // Functions
private _prefix = ["BIS_fnc_", "BIN_fnc_"] select (_nameTAG in ["A3_Enoch", "A3_Contact"]);
_export = _export + endl + ":[[" + _prefix + (configName _x) + "]]";
} forEach ((_nameConfig >> "CfgFunctions" >> _nameTAG >> _nameCategory) call BIS_fnc_returnChildren);
} forEach ((_nameConfig >> "CfgFunctions" >> configName _x) call BIS_fnc_returnChildren);
} forEach ((_nameConfig >> "CfgFunctions") call BIS_fnc_returnChildren);
} foreach [[configFile, "configFile"]];
_export = _export + endl + "|}";
copyToClipboard _export;
Arma 3: CfgMarkers
Author: R3vo
// Marker data to biki table
_classes = ("true" configClasses (ConfigFile >> "CfgMarkers"));
_classes = [_classes, [], {configName _x}, "ASCEND"] call BIS_fnc_sortBy;
_export = "{| class=""wikitable - sortable""
|-
! No. !! Class !! Name !! Icon Path !! Shadow !! Scope !! Added with
|-";
{
_addon = _x call ENH_fnc_getConfigSourceAddon params [["_addonClass", ""]];
if (_addonClass isNotEqualTo "") then {_addonClass = format ["{{Icon|%1|24}}", _addonClass]};
_shadow = ["{{Icon|checked}}", "{{Icon|unchecked}}"] select (getNumber (_x >> "shadow"));
_export = _export + endl + "| " + str (_forEachIndex + 1) + "." + " || " + "{{hl|" + configName _x + "}}" + " || " + getText (_x >> "name") + " || " + "{{hl|" + getText (_x >> "icon") + "}}" + " || " + _shadow + " || " + str getNumber (_x >> "scope") + " || " + _addonClass + endl + "|-"
} forEach _classes;
copyToClipboard ((_export trim ["|-", 2]) + "|}");
// Marker icons screenshot
//Create a solid, grey area marker in the editor first. Set its size to 100000x100000
_startPos = [-33000, 20000, 0];
_classes = ("true" configClasses (ConfigFile >> "CfgMarkers"));
_classes = [_classes, [], {configName _x}, "ASCEND"] call BIS_fnc_sortBy;
{
if (_startPos # 0 > 30000) then
{
_startPos set [0, -33000];
_startPos = _startPos vectorAdd [0, -1600, 0];
};
_marker = createMarker [configName _x , _startPos];
_marker setMarkerType configName _x;
_marker setMarkerText format [" %1.", _forEachIndex + 1];
_startPos = _startPos vectorAdd [3500, 0, 0];
} forEach _classes;
Arma 3: CfgMarkerColors
Author: R3vo
private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl;
_output = _output + "{| class =""wikitable""" + endl + format ["|-%1! %2 !! %3",endl,"Config Name","RGBA"];
{
private _colour = getArray (_x >> "color") call BIS_fnc_colorConfigToRGBA;
private _colourName = configName _x;
_output = _output + format ["%1|-%1|%2 || %3",endl,_colourName,_colour];
} forEach configProperties [configFile >> "CfgMarkerColors"];
_output = _output + endl + "|}";
copyToClipboard _output;
Arma 3: CfgMusic
Author: Killzone_kid
_cfgMusic = [];
_cfgMusic pushBack format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100];
_cfgMusic pushBack format ["{| class=""wikitable sortable"" width=""100%1""", "%"];
_cfgMusic pushBack format ["! width=""5%1"" |No.", "%"];
_cfgMusic pushBack format ["! width=""35%1"" |Title", "%"];
_cfgMusic pushBack format ["! width=""30%1"" |Class Name", "%"];
_cfgMusic pushBack format ["! width=""15%1"" |Duration", "%"];
_cfgMusic pushBack format ["! width=""15%1"" |DLC", "%"];
_cfgMusic pushBack "";
{
private _name = getText (_x >> "name");
private _duration = getNumber (_x >> "duration");
_duration = round _duration;
private _minutes = floor (_duration / 60);
private _mod = _duration mod 60;
private _seconds = _mod / 1;
_minutesStr = if (_minutes < 10) then {format ["0%1",_minutes]} else {format ["%1",_minutes]};
_secondsStr = if (_seconds < 10) then {format ["0%1",_seconds]} else {format ["%1",_seconds]};
_duration = format ["%1:%2",_minutesStr,_secondsStr];
private _dlc = if (configSourceMod _x == "") then
{
"Arma 3";
}
else
{
format ["%1",(modParams [configSourceMod _x,["name"]]) select 0];
};
//Some work around to make wiki link work
if (_dlc isEqualTo "[[Arma 3 Contact (Platform)]]") then
{
_dlc = "Arma 3 Contact";
};
if (_dlc isEqualTo "[[Arma 3 Tac-Ops]]") then
{
_dlc = "[[Arma 3 Tac-Ops Mission Pack]]";
};
_cfgMusic pushBack "|-";
_cfgMusic pushBack format ["| %1", _forEachIndex + 1];
_cfgMusic pushBack format ["| %1", if (_name == "") then {"N/A"} else {_name}];
_cfgMusic pushBack format ["| %1", configName _x];
_cfgMusic pushBack format ["| %1", if (_duration == "00:00") then {"N/A"} else {_duration}];
_cfgMusic pushBack format ["| %1", _dlc];
_cfgMusic pushBack "";
} forEach ("isClass _x" configClasses (configFile >> "CfgMusic"));
_cfgMusic pushBack "|}";
copyToClipboard (_cfgMusic joinString toString[10]);
Arma 3: Difficulty Settings
Author: Killzone_kid
"debug_console" callExtension format ["class Difficulties"];
"debug_console" callExtension format ["{"];
_cfg = configFile >> "CfgDifficulties";
{
_class = configName _x;
"debug_console" callExtension format [" class %1", _class];
"debug_console" callExtension format [" {"];
"debug_console" callExtension format [" class Flags"];
"debug_console" callExtension format [" {"];
_flags = _cfg >> _class >> "Flags";
_flagNames = [];
for "_i" from 0 to count _flags - 1 do {
_flag = _flags select _i;
_flagNames pushBack configName _flag;
};
_flagNames sort true;
{
getArray (_flags >> _x) params ["_current", "_canChange"];
if (_canChange == 1) then {
"debug_console" callExtension format [
" %1 = %2;",
_x, _current];
} else {
"debug_console" callExtension format [
" /* %1 = %2; - cannot be changed */",
_x, _current];
}
} forEach _flagNames;
"debug_console" callExtension format [" };"];
{
"debug_console" callExtension format [
" %1 = %2;",
_x, getNumber(_cfg >> _class >> _x)];
} foreach [
"precisionEnemy",
"precisionFriendly",
"skillEnemy",
"skillFriendly"
];
"debug_console" callExtension format [" };"];
} forEach ("true" configClasses _cfg);
"debug_console" callExtension format ["};"];
Arma 3: Display3DEN IDCs
Author: R3vo
private _controls = "{| class=""wikitable sortable""
|-
! Config Name !! IDC !! Config Path" + endl;
private _fnc_scanConfig =
{
params ["_config"];
"true" configClasses _config apply
{
_idc = getNumber (_x >> "idc");
if (_idc > 0) then
{
_controls = _controls + "|-" + endl + "|" + "{{hl|" + configName _x + "}}" + " || " + str _idc + " || " + "{{ic|" + ([_x, ""] call BIS_fnc_configPath) + "}}" + endl;
};
_x call _fnc_scanConfig;
};
};
[configFile >> "display3DEN"] call _fnc_scanConfig;
copyToClipboard (_controls + endl + "|}");
Arma 3: Hitpoints
Author: R3vo
//If 3den Enhanced is installed, the script will also fill the "Name" column with available translations
[] spawn
{
startLoadingScreen ["Loading"];
private _hitPoints = [];
{
_veh = configName _x createVehicle [0, 0, 0];
{
_hitpoints pushBackUnique _x;
} forEach (getAllHitPointsDamage _veh # 0);
deleteVehicle _veh;
} forEach ("isClass (_x >> 'HitPoints') && getNumber (_x >> 'Scope') >= 1" configClasses (configFile >> "CfgVehicles"));
_hitpoints sort true;
private _text = "{| class=""wikitable sortable""" + endl +"|-" + endl + "! No. !! Hit Point !! Name";
{
_text = _text + endl + "|-" + endl + "| " + str (_forEachIndex + 1) + " || " + _x + " || " + localize ("STR_ENH_DAMAGE_" + _x);
} forEach _hitpoints;
copyToClipboard (_text + endl + "|}");
systemChat "Data copied!";
endLoadingScreen;
};
Arma 3: createVehicle/vehicles
light version (without hitpoints)
Author: Lou Montana
private _result = "";
"if (getNumber (_x >> 'scope') > 0) then
{
_result = format ["%1* %2\n", _result, configName _x];
}" configClasses (configFile >> "CfgVehicles");
copyToClipboard _result;
_result;
heavy version (with hitpoints)
Author: Killzone_Kid
private _result = "";
"if (getNumber (_x >> 'scope') > 0) then
{
_result = _result + '* ' + configName _x + ""\n"";
for '_i' from 0 to count (_x >> 'AnimationSources') - 1 do
{
_animSource = (_x >> 'AnimationSources') select _i;
_source = getText (_animSource >> 'source');
if (_source == 'hit') then { _source = 'hit [' + getText (_animSource >> 'hitpoint') + ']' };
if (_source != '') then { _source = ' => ' + _source };
_result = _result + ('*# ' + configName _animSource + _source) + ""\n"";
};
}" configClasses (configFile >> "CfgVehicles");
copyToClipboard _result;
_result;
Arma 3: DLC Restrictions
Author: POLPOX
//Use unicode to prevent export error
forceUnicode 0;
// 0: personal equipments 1: vehicles
private _mode = 0;
// Create hashmap to check looked models
private _lookedModels = createHashMap;
//Get classes
private "_classes";
if (_mode == 0) then {
//Get weapons, equipments, glasses, bags (in CfgVehicles)
_classes = ("
getNumber (_x >> "scope") == 2 and
[configName _x] call BIS_fnc_baseWeapon == configName _x and
getNumber (_x >> "type") != 65536 and
!('UnknownEquipment' in (configName _x call BIS_fnc_itemType))
" configClasses (configFile >> "CfgWeapons")) +
("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgGlasses")) +
("getNumber (_x >> 'scope') == 2 and configName _x isKindOf 'Bag_Base'" configClasses (configFile >> "CfgVehicles"));
};
if (_mode == 1) then {
// Get vehicles, except Men
_classes = ("
getNumber (_x >> 'scope') == 2 and
(configName _x isKindOf 'AllVehicles' and
!(configName _x isKindOf 'Man'))
" configClasses (configFile >> "CfgVehicles"));
};
private _data = _classes apply {
private _class = configName _x;
private _model = toLower (call {
//Check if the thing is a uniform
if ((getNumber (_x >> "itemInfo" >> "type")) == 801) exitWith {
getText (_x >> "itemInfo" >> "uniformClass")
};
//Normalize model path to prevent errors
private _split = (getText (_x >> "model") splitString "\");
if ((count _split >= 2) and {!(".p3d" in toLower (_split#(count _split-1)))}) then {
_split set [count _split -1,(_split#(count _split-1)) + ".p3d"];
};
(_split joinString "\")
});
// Get DLC info per items
if (isNil {_lookedModels get _model}) then {
systemChat _class;
// Create a simple object and check the DLC via getObjectDLC
private _obj = createSimpleObject [_model,[0,0,0]];
private _dlc = getObjectDLC _obj;
// And remove the object. bye-bye
deleteVehicle _obj;
// If it is a part of the base game, -1, otherwise DLC id
if (isNil "_dlc") then {
_lookedModels set [_model,-1];
[_x,-1]
} else {
_lookedModels set [_model,_dlc];
[_x,_dlc]
};
} else {
// Skip the generation if the model is already checked
systemChat ("simple object generate skipped: " + _class);
[_x, _lookedModels get _model]
};
};
// Return value preparation
private _return = [
'{| class="wikitable sortable"',
'|-'
];
if (_mode == 0) then {
_return pushBack '!Type'
} else {
_return pushBack '!Faction'
};
_return append [
'!classname',
'!displayName',
'!Icon',
'!Restricted?'
];
//Code to convert things to things
private _IDtoDLC = {
switch _this do {
case 275700: {"arma3zeus"};
case 288520: {"arma3karts"};
case 304380: {"arma3helicopters"};
case 332350: {"arma3marksmen"};
case 395180: {"arma3apex"};
case 571710: {"arma3lawsofwar"};
case 601670: {"arma3jets"};
case 612480: {"arma3malden"};
case 744950: {"arma3tacops"};
case 798390: {"arma3tanks"};
case 1021790: {"arma3contact"};
case 1325500: {"arma3artofwar"};
default {""};
};
};
private _DLCToName = {
switch _this do {
case "arma3zeus": {"Zeus"};
case "arma3karts": {"Karts"};
case "arma3helicopters": {"Helicopters"};
case "arma3marksmen": {"Marksmen"};
case "arma3apex": {"Apex"};
case "arma3lawsofwar": {"Laws of War"};
case "arma3jets": {"Jets"};
case "arma3malden": {"Malden"};
case "arma3tacops": {"Tac-Ops"};
case "arma3tanks": {"Tanks"};
case "arma3contact": {"Contact"};
case "arma3artofwar": {"Art of War"};
default {""};
};
};
private _MODtoDLC = {
switch toLower _this do {
case "curator": {"arma3zeus"};
case "kart": {"arma3karts"};
case "heli": {"arma3helicopters"};
case "mark": {"arma3marksmen"};
case "expansion": {"arma3apex"};
case "orange": {"arma3lawsofwar"};
case "jets": {"arma3jets"};
case "argo": {"arma3malden"};
case "tacops": {"arma3tacops"};
case "tank": {"arma3tanks"};
case "enoch": {"arma3contact"};
case "aow": {"arma3artofwar"};
default {""};
};
};
{
_x params ["_class","_dlc"];
private _dlcName = _dlc call _IDtoDLC;
_return pushBack "|-";
// Make the BG red when is restricted
private _BGCol = (call { if (_dlcName != "") exitWith { "style="background: #EDD; color: #333"|" }; "" });
// Categorize personal equipments
if (_mode == 0) then {
_return pushBack ("|" + _BGCol + call {
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgWeapons")) exitWith {
#define IKO(typeClass) (configName (_x select 0) isKindOf [typeClass,configFile >> "CfgWeapons"])
_type = (configName (_x#0)) call BIS_fnc_itemType;
if (IKO("Rifle")) exitWith {"Rifle"};
if (IKO("Pistol")) exitWith {"Pistol"};
if (IKO("Launcher")) exitWith {"Launcher"};
if (_type#1 == "GPS") exitWith {"Terminal"};
if (_type#1 == "UAVTerminal") exitWith {"Terminal"};
if (_type#1 == "AccessoryMuzzle") exitWith {"Muzzle Attachment"};
if (_type#1 == "AccessorySights") exitWith {"Sight"};
if (_type#1 == "AccessoryPointer") exitWith {"Rail Attachment"};
if (_type#1 == "AccessoryBipod") exitWith {"Bipod"};
if (_type#1 == "LaserDesignator") exitWith {"Binocular"};
if (_type#1 == "NVGoggles") exitWith {"NVGs"};
if (_type#1 == "Radio") exitWith {"Communication"};
if (
_type#1 == "FirstAidKit" or
_type#1 == "Medikit" or
_type#1 == "Toolkit" or
_type#1 == "MineDetector"
) exitWith {"Item"};
_type#1
};
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgGlasses")) exitWith {
"Facewear"
};
if ((configHierarchy (_x#0))#1 == (configFile >> "CfgVehicles") and configName (_x#0) isKindOf "Bag_Base") exitWith {
"Backpack"
};
});
} else {
_return pushBack ("|" + _BGCol + getText (configfile >> "CfgFactionClasses" >> (getText (_class >> "faction")) >> "displayName"));
};
_return append [
("|" + _BGCol + configName _class),
("|" + _BGCol + getText (_class >> "displayName"))
];
// DLC Icons
private _MOD = call {
private _return = "";
//Emulate Arsenal icons
if (_mode == 0) then {
private _addon = (configSourceAddonList (_x#0));
private _MOD = configSourceMODList (configFile >> "CfgPatches" >> _addon#0);
if (count _MOD > 0) then {
_MOD = _MOD#0
} else {
_MOD = ""
};
_return = _MOD;
};
// Emulate Eden Editor icons
if (_mode == 1) then {
private _MOD = (configSourceMODList (_x#0));
if (count _MOD > 0) then {
_MOD = _MOD#0
} else {
_MOD = ""
};
_return = _MOD;
};
_return
};
_return pushBack ("|" + _BGCol + (["",format ["{{Icon|%1|25}}",_MOD call _MODtoDLC]] select (_MOD != "")));
if (_dlcName == "") then {
_return pushBack ("|" + "No");
} else {
_return pushBack ("|" + _BGCol + (_dlcName call _DLCToName));
};
} forEach _data;
_return pushBack "|}";
// And finally done, use joinString to make line breaks and copy
copyToClipboard (_return joinString endl);
Arma 3: Shooting Targets
Author: R3vo
popUpTargets = "{| class=""wikitable""
|-
! Display Name !! Class !! Animation Sources"
{
private _anims = "true" configClasses (_x >> "AnimationSources");
if (_anims isNotEqualTo []) then
{
private _animsStr = "";
{
_animsStr = _animsStr + "{{hl|" + configName _x + "}}" + "<br>" + endl;
} forEach _anims;
popUpTargets = popUpTargets + endl + "|-" + endl + "| " + getText (_x >> "displayName") + " || " + "{{hl|" + configName _x + "}}" + " || " + endl + _animsStr;
};
} forEach ("getNumber (_x >> 'scope') > 1 && getText (_x >> 'editorSubcategory') == 'EdSubcat_Targets'" configClasses (configfile >> "CfgVehicles"));
copyToClipboard (popUpTargets + endl + "|}");
CfgGroups
Author: Lou Montana
- Arma 2: CfgGroups↑ Back to spoiler's toplocal _result = ""; local _addLine = { _result = _result + _this + (toString [10]); }; local _maxGroupWidth = 5; local _cfgGroups = configFile >> "CfgGroups"; "{{TOC|horizontal}}" call _addLine; for "_sideindex" from 0 to (count _cfgGroups -1) do { // side level local _sideConfig = _cfgGroups select _sideindex; if (isClass _sideConfig) then { if (_sideindex > 0) then { "" call _addLine; }; "" call _addLine; "== " + getText (_sideConfig >> "name") + " ==" call _addLine; "" call _addLine; "config: " + configName _sideConfig call _addLine; "" call _addLine; for "_factionindex" from 0 to count _sideConfig -1 do { // faction level local _factionConfig = _sideConfig select _factionindex; if (isClass _factionConfig) then { "=== " + getText (_factionConfig >> "name") + " ===" call _addLine; "" call _addLine; "config: " + configName _factionConfig call _addLine; "" call _addLine; "{| class=""wikitable""" call _addLine; for "_grouptypeindex" from 0 to count _factionConfig -1 do { // groupType level local _groupTypeConfig = _factionConfig select _grouptypeindex; if (isClass _groupTypeConfig) then { local _count = 0; for "_cnt" from 0 to count _groupTypeConfig -1 do { if (isClass (_groupTypeConfig select _cnt)) then { _count = _count + 1; }; }; local _groupLines = ceil (_count / _maxGroupWidth); "|- style=""vertical-align: top""" call _addLine; "! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine; "<div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "</div>" call _addLine; local _groupRow = 1; for "_groupindex" from 0 to count _groupTypeConfig -1 do { // group level local _groupConfig = _groupTypeConfig select _groupindex; if (isClass _groupConfig) then { "| <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; for "_unitindex" from 0 to count _groupConfig -1 do { local _unitClass = _groupConfig select _unitindex; if (isClass _unitClass) then { ("# " + getText (_unitClass >> "vehicle")) call _addLine; }; }; "</div></div>" call _addLine; _groupRow = _groupRow + 1; if (_groupRow > _maxGroupWidth) then { "|-" call _addLine; _groupRow = 1; }; }; }; "|-" call _addLine; }; }; "|}" call _addLine; }; }; }; }; "" call _addLine; "" call _addLine; "[[Category: CfgGroups]]" call _addLine; "" call _addLine; copyToClipboard _result; _result;
- Arma 2: Operation Arrowhead: CfgGroups↑ Back to spoiler's toplocal _result = ""; local _addLine = { _result = _result + _this + (toString [10]); }; local _maxGroupWidth = 5; local _cfgGroups = configFile >> "CfgGroups"; "{{TOC|horizontal|||y}}" call _addLine; for "_sideindex" from 0 to (count _cfgGroups -1) do { // side level local _sideConfig = _cfgGroups select _sideindex; if (isClass _sideConfig) then { if (_sideindex > 0) then { "" call _addLine; }; "" call _addLine; "== " + getText (_sideConfig >> "name") + " ==" call _addLine; "" call _addLine; "config: " + configName _sideConfig call _addLine; "" call _addLine; for "_factionindex" from 0 to count _sideConfig -1 do { // faction level local _factionConfig = _sideConfig select _factionindex; if (isClass _factionConfig) then { "=== " + getText (_factionConfig >> "name") + " ===" call _addLine; "" call _addLine; "config: " + configName _factionConfig call _addLine; "" call _addLine; "{| class=""wikitable""" call _addLine; for "_grouptypeindex" from 0 to count _factionConfig -1 do { // groupType level local _groupTypeConfig = _factionConfig select _grouptypeindex; if (isClass _groupTypeConfig) then { local _count = 0; for "_cnt" from 0 to count _groupTypeConfig -1 do { if (isClass (_groupTypeConfig select _cnt)) then { _count = _count + 1; }; }; local _groupLines = ceil (_count / _maxGroupWidth); "|- style=""vertical-align: top""" call _addLine; "! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine; "<div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "</div>" call _addLine; local _groupRow = 1; for "_groupindex" from 0 to count _groupTypeConfig -1 do { // group level local _groupConfig = _groupTypeConfig select _groupindex; if (isClass _groupConfig) then { "| <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; for "_unitindex" from 0 to count _groupConfig -1 do { local _unitClass = _groupConfig select _unitindex; if (isClass _unitClass) then { ("# " + getText (_unitClass >> "vehicle")) call _addLine; }; }; "</div></div>" call _addLine; _groupRow = _groupRow + 1; if (_groupRow > _maxGroupWidth) then { "|-" call _addLine; _groupRow = 1; }; }; }; "|-" call _addLine; }; }; "|}" call _addLine; }; }; }; }; "" call _addLine; "" call _addLine; "[[Category: CfgGroups]]" call _addLine; "" call _addLine; copyToClipboard _result; _result;
- Arma 3: CfgGroups↑ Back to spoiler's topprivate _lines = []; private _maxGroupWidth = 5; private _groupSides = "true" configClasses (configFile >> "CfgGroups"); // _lines pushBack "" + (_groupSides apply { format ["%1", getText (_x >> "name")] } joinString "") + ""; _lines pushBack "{{TOC|horizontal|||y}}"; { // side level if (_forEachIndex > 0) then { _lines pushBack ""; }; _lines pushBack ""; _lines pushBack "== " + getText (_x >> "name") + " =="; _lines pushBack ""; _lines pushBack "config: " + configName _x; _lines pushBack ""; private _factions = "true" configClasses _x; { // faction level _lines pushBack "=== " + getText (_x >> "name") + " ==="; _lines pushBack ""; _lines pushBack "config: " + configName _x; _lines pushBack ""; _lines pushBack "{| class=""wikitable"""; private _groupTypes = "true" configClasses _x; { // groupType level private _groups = "true" configClasses _x; private _groupLines = ceil (count _groups / _maxGroupWidth); _lines pushBack "|- style=""vertical-align: top"""; _lines pushBack "! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_x >> "name"); _lines pushBack "<div style=""font-weight: normal"">config: " + configName _x + "</div>"; private _groupRow = 1; { // group level _lines pushBack "| <div style=""white-space: pre"">'''" + getText(_x >> "name") + "'''<br>config: " + configName _x + "</div>"; private _units = "true" configClasses _x; _lines pushBack "Composition:<div style=""" + (["", "columns: 2; "] select (count _units > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed""><div style=""margin-right: 5em; padding-top: 1em"">"; { _lines pushBack ("# " + getText (_x >> "vehicle")); } forEach _units; _lines pushBack "</div></div>"; _groupRow = _groupRow + 1; if (_groupRow > _maxGroupWidth) then { _lines pushBack "|-"; _groupRow = 1; } } forEach _groups; _lines pushBack "|-"; } forEach _groupTypes; _lines pushBack "|}"; } forEach _factions; } forEach _groupSides; _lines pushBack ""; _lines pushBack ""; _lines pushBack "[[Category: CfgGroups]]"; _lines pushBack ""; private _result = _lines joinString endl; copyToClipboard _result; _result;
CfgWorlds/Group*
Author: Killzone Kid
"if ((configName _x) select [0, 5] == 'group') then
{
diag_log ('%' + configName _x);
for '_i' from 0 to count _x - 1 do {
diag_log ('* ""' + configName (_x select _i) + '"" &rarr; ' + getText ((_x select _i) >> "name"));
};
}; false" configClasses (configFile >> "CfgWorlds");
inputAction/actions
Author: POLPOX
_r = [];
{
_r pushBack [getText (_x >> "name"),[]];
_index = _forEachIndex;
{
private _actionName = actionName _x;
(_r#_index#1) pushBack [_x,_actionName];
} forEach getArray (_x >> "group");
} forEach ("true" configClasses (configFile >> "UserActionGroups"));
_rFinal = [
'{| class="sortable wikitable"'
];
_presets = ("configName _x != 'Empty'" configClasses (configFile >> "CfgDefaultKeysPresets"));
_str = '! Type !! actionName !! Name';
{
_str = _str + " !! " + getText (_x >> "displayName");
if (getNumber (_x >> "default") == 1) then {
_str = _str + "<br/>(Default)";
};
} forEach _presets;
_rFinal pushBack format ['! colspan="3"| Action information !! colspan="%1"| Presets',count _presets];
_rFinal pushBack "|-";
_rFinal pushBack _str;
{
_type = _x#0;
{
_rFinal pushBack "|-";
_x params ["_actionName","_name"/*,"_tooltip"*/];
if (_name isEqualTo "") then {
_name = "{{n/a}}";
};
_str = format ["| %1 || {{hl|%2}} || %3 ",_type,_actionName,_name];
{
_keys = getArray (_x >> "Mappings" >> _actionName);
if (count _keys != 0) then {
_keys = _keys apply {
call {
if (typeName _x == "STRING") exitWith {
keyName call compile _x;
};
if (typeName _x == "ARRAY") exitWith {
_r = [];
{
if (typeName _x == "STRING") then {
_r pushBack ((keyName call compile _x) splitString """")#0;
};
_r pushBack ((keyName _x) splitString """")#0;
} forEach _x;
_r = (_r joinString "+");
_r
};
keyName _x
};
};
_str = _str + format ["|| %1 ", (_keys joinString ", " splitString """")#0];
} else {
_str = _str + "|| ";
};
} forEach _presets;
_rFinal pushBack _str;
} forEach (_x#1);
} forEach _r;
_rFinal pushBack "|}";
copyToClipboard (_rFinal joinString endl);
Modules
Author: R3vo
private _version = format ["Last updated: {{GVI|arma3|%1}}", productVersion # 2 / 100];
private _counter = 0;
private _export = _version + endl + "{| class=""wikitable""" + endl + "! Module Name !! Category !! Addon !! Function !! Description" + endl + "|-" + endl;
private _modules = "(configName inheritsFrom _x) == 'Module_F'" configClasses (configFile >> "CfgVehicles");
{
if ((getNumber (_x >> "scope") > 1)) then
{
private _name = getText (_x >> "displayName");
private _cat = getText (_x >> "category");
private _mod = configSourceMod _x;
private _fnc = getText (_x >> "function");
if !(_fnc isEqualTo "") then
{
_fnc = _fnc select [7];
_fnc = "[[BIS_fnc" + _fnc + "]]";
};
private _desc = getText (_x >> "ModuleDescription" >> "Description");
if (_desc isEqualTo "") then {_desc = ""};
if (_mod == "") then {_mod = "A3"};
private _modName = modParams [_mod,["name"]];
_modName = _modName select 0;
_cat = getText (configFile >> "CfgFactionClasses" >> _cat >> "displayName");
if (_cat isEqualTo "") then {_cat = "Others"};
_export = _export + "| " + _name + endl + "|| " + _cat + endl + "|| " + _modName + endl + "|| " + _fnc + endl + "|| " + _desc + endl + "|-" + endl;
};
_counter = _counter + 1;
} forEach _modules;
_export = _export + "|}" + endl + format ["Total number of modules: %1", _counter];
copyToClipboard _export;
nearestTerrainObjects
Author: R3vo
[] spawn
{
private _types = ["TREE", "SMALL TREE", "BUSH", "BUILDING", "HOUSE", "FOREST BORDER", "FOREST TRIANGLE", "FOREST SQUARE", "CHURCH", "CHAPEL",
"CROSS", "BUNKER", "FORTRESS", "FOUNTAIN", "VIEW-TOWER", "LIGHTHOUSE", "QUAY", "FUELSTATION", "HOSPITAL", "FENCE", "WALL", "HIDE", "BUSSTOP",
"ROAD", "FOREST", "TRANSMITTER", "STACK", "RUIN", "TOURISM", "WATERTOWER", "TRACK", "MAIN ROAD", "ROCK", "ROCKS", "POWER LINES", "RAILWAY",
"POWERSOLAR", "POWERWAVE", "POWERWIND", "SHIPWRECK", "TRAIL"];
_types sort true;
private _counts = [];
private _countTypes = count _types;
["R3vo_GetNearestTerrainObjects",""] call BIS_fnc_startLoadingScreen;
{
private _terrainObjects = nearestTerrainObjects [
[worldSize / 2, worldSize / 2],
[_x],
worldSize,
false
];
if (count _terrainObjects > 0) then
{
_counts pushBack [_x,count _terrainObjects];
};
((_forEachIndex + 1) / _countTypes) call BIS_fnc_progressLoadingScreen;
} forEach _types;
"R3vo_GetNearestTerrainObjects" call BIS_fnc_endLoadingScreen;
private _export = "<big>[[" + getText (configFile >> "CfgWorlds" >> worldName >> "description") + "]]</big>" + endl + "{{Columns|5|";
{
_export = _export + endl + "* " + (_x # 0) + ": " + (str (_x # 1));
} forEach _counts;
_export = _export + endl + "}}";
copyToClipboard _export;
};