Biki Export Scripts: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(info about mod)
m (Fix Arma_3:_DLC_Restrictions export (set color)… then got carried away)
Line 1: Line 1:
{{TOC|side}}
{{TOC|side}}
= Introduction =
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>
<syntaxhighlight lang="cpp">
<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;</syntaxhighlight></spoiler>
copyToClipboard _export;
</sqf>
</spoiler>




Line 40: Line 41:
'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
<syntaxhighlight lang="cpp">//Marker data to biki table
<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]) + "|}");</syntaxhighlight></spoiler>
copyToClipboard ((_export trim ["|-", 2]) + "|}");
</sqf>
</spoiler>


<spoiler>
<spoiler>
<syntaxhighlight lang="cpp">//Marker icons screenshot
<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;</syntaxhighlight></spoiler>
} forEach _classes;
</sqf>
</spoiler>




Line 82: Line 89:
'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
<pre>private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl;
<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;</pre></spoiler>
copyToClipboard _output;
</sqf>
</spoiler>




Line 96: Line 106:


'''Author:''' {{User|Killzone_kid}}<br>
'''Author:''' {{User|Killzone_kid}}<br>
<spoiler><code>_cfgMusic [[a = b|=]] [];
<spoiler>
_cfgMusic [[pushBack]] [[format]] ["Last updated: <noWiki>{{GVI|arma3|%1}}</noWiki>", ([[productVersion]] [[select]] 2) [[a / b|/]] 100];
<sqf>
_cfgMusic [[pushBack]] [[format]] ["{| class=""wikitable [[sort]]able"" width=""100%1""", "%"];
_cfgMusic = [];
_cfgMusic [[pushBack]] [[format]] ["[[! a|!]] width=""5%1"" |No.", "%"];
_cfgMusic pushBack format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100];
_cfgMusic [[pushBack]] [[format]] ["[[! a|!]] width=""35%1"" |Title", "%"];
_cfgMusic pushBack format ["{| class=""wikitable sortable"" width=""100%1""", "%"];
_cfgMusic [[pushBack]] [[format]] ["[[! a|!]] width=""30%1"" |Class Name", "%"];
_cfgMusic pushBack format ["! width=""5%1"" |No.", "%"];
_cfgMusic [[pushBack]] [[format]] ["[[! a|!]] width=""15%1"" |Duration", "%"];
_cfgMusic pushBack format ["! width=""35%1"" |Title", "%"];
_cfgMusic [[pushBack]] [[format]] ["[[! a|!]] width=""15%1"" |DLC", "%"];
_cfgMusic pushBack format ["! width=""30%1"" |Class Name", "%"];
_cfgMusic [[pushBack]] "";
_cfgMusic pushBack format ["! width=""15%1"" |Duration", "%"];
_cfgMusic pushBack format ["! width=""15%1"" |DLC", "%"];
_cfgMusic pushBack "";
{
{
[[private]] _[[name]] [[a = b|=]] [[getText]] (_x [[config greater greater name|>>]] "name");
private _name = getText (_x >> "name");
[[private]] _duration [[a = b|=]] [[getNumber]] (_x [[config greater greater name|>>]] "duration");
private _duration = getNumber (_x >> "duration");
_duration [[a = b|=]] [[round]] _duration;
_duration = round _duration;
[[private]] _minutes [[a = b|=]] [[floor]] (_duration [[a / b|/]] 60);
private _minutes = floor (_duration / 60);
[[private]] _[[mod]] [[a = b|=]] _duration [[mod]] 60;
private _mod = _duration mod 60;
[[private]] _seconds [[a = b|=]] _[[mod]] [[a / b|/]] 1;
private _seconds = _mod / 1;
_minutesStr [[a = b|=]] [[if]] (_minutes [[a less b|<]] 10) [[then]] {[[format]] ["0%1",_minutes]} [[else]] {[[format]] ["%1",_minutes]};
_minutesStr = if (_minutes < 10) then {format ["0%1",_minutes]} else {format ["%1",_minutes]};
_secondsStr [[a = b|=]] [[if]] (_seconds [[a less b|<]] 10) [[then]] {[[format]] ["0%1",_seconds]} [[else]] {[[format]] ["%1",_seconds]};
_secondsStr = if (_seconds < 10) then {format ["0%1",_seconds]} else {format ["%1",_seconds]};
_duration [[a = b|=]] [[format]] ["%1:%2",_minutesStr,_secondsStr];
_duration = format ["%1:%2",_minutesStr,_secondsStr];
[[private]] _dlc [[a = b|=]] [[if]] ([[configSourceMod]] _x [[a == b|==]] "") [[then]]
private _dlc = if (configSourceMod _x == "") then
{
{
"Arma 3";
"Arma 3";
}
}
[[else]]
else
{
{
[[format]] ["%1",([[modParams]] [<nowiki/>[[configSourceMod]] _x,["name"]]) [[select]] 0];
format ["%1",(modParams [configSourceMod _x,["name"]]) select 0];
};
};
//Some work a[[round]] [[to]] make wiki link work
//Some work around to make wiki link work
[[if]] (_dlc [[isEqualTo]] "<noWiki>[[Arma 3 Contact (Platform)]]</noWiki>") [[then]]
if (_dlc isEqualTo "[[Arma 3 Contact (Platform)]]") then
{
{
_dlc [[a = b|=]] "Arma 3 Contact";
_dlc = "Arma 3 Contact";
};
};
[[if]] (_dlc [[isEqualTo]] "<noWiki>[[Arma 3 Tac-Ops]]</noWiki>") [[then]]
if (_dlc isEqualTo "[[Arma 3 Tac-Ops]]") then
{
{
_dlc [[a = b|=]] "<noWiki>[[Arma 3 Tac-Ops Mission Pack]]</noWiki>";
_dlc = "[[Arma 3 Tac-Ops Mission Pack]]";
};
};
_cfgMusic [[pushBack]] "|-";
_cfgMusic pushBack "|-";
_cfgMusic [[pushBack]] [[format]] ["| [[a % b|%]]1", _forEachIndex [[+]] 1];
_cfgMusic pushBack format ["| %1", _forEachIndex + 1];
_cfgMusic [[pushBack]] [[format]] ["| [[a % b|%]]1", [[if]] (_[[name]] [[a == b|==]] "") [[then]] {"N/A"} [[else]] {_name}];
_cfgMusic pushBack format ["| %1", if (_name == "") then {"N/A"} else {_name}];
_cfgMusic [[pushBack]] [[format]] ["| [[a % b|%]]1", [[configName]] _x];
_cfgMusic pushBack format ["| %1", configName _x];
_cfgMusic [[pushBack]] [[format]] ["| [[a % b|%]]1", [[if]] (_duration [[a == b|==]] "00:00") [[then]] {"N/A"} [[else]] {_duration}];
_cfgMusic pushBack format ["| %1", if (_duration == "00:00") then {"N/A"} else {_duration}];
_cfgMusic [[pushBack]] [[format]] ["| [[a % b|%]]1", _dlc];
_cfgMusic pushBack format ["| %1", _dlc];
_cfgMusic [[pushBack]] "";
_cfgMusic pushBack "";
} [[forEach]] ("[[isClass]] _x" [[configClasses]] ([[configFile]] [[config greater greater name|>>]] "CfgMusic"));
} forEach ("isClass _x" configClasses (configFile >> "CfgMusic"));
_cfgMusic [[pushBack]] "|}";
_cfgMusic pushBack "|}";
[[copyToClipboard]] (_cfgMusic [[joinString]] [[toString]][10]);</code></spoiler>
copyToClipboard (_cfgMusic joinString toString[10]);
</sqf>
</spoiler>




Line 147: Line 161:


'''Author:''' {{User|Killzone_kid}}<br>
'''Author:''' {{User|Killzone_kid}}<br>
<spoiler><code>"debug_console" callExtension format ["class Difficulties"];
<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 ["   class %1", _class];
"debug_console" callExtension format [" class %1", _class];
"debug_console" callExtension format ["   {"];
"debug_console" callExtension format [" {"];
"debug_console" callExtension format ["       class Flags"];
"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;",
" %1 = %2;",
_x, _current];
_x, _current];
} else {
} else {
"debug_console" callExtension format [
"debug_console" callExtension format [
"           /* %1 = %2; - cannot be changed */",
" /* %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 ["};"];</code></spoiler>
"debug_console" callExtension format ["};"];
</sqf>
</spoiler>




Line 194: Line 212:


'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler><pre>private _controls = "{| class=""wikitable sortable""
<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 + "|}");;</pre></spoiler>
copyToClipboard (_controls + endl + "|}");
</sqf>
</spoiler>
 


= [[Arma 3: Hitpoints]] =
= [[Arma 3: Hitpoints]] =


'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler><pre><nowiki>
<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;
};</nowiki></pre></spoiler>
};
</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><syntaxhighlight lang="cpp">private _result = "";
<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;</syntaxhighlight></spoiler>
_result;
</sqf>
</spoiler>


'''heavy version (with hitpoints)'''<br>
'''heavy version (with hitpoints)'''<br>
'''Author:''' {{User|Killzone_Kid}}<br>
'''Author:''' {{User|Killzone_Kid}}<br>
<spoiler><syntaxhighlight lang="cpp">private _result = "";
<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;</syntaxhighlight></spoiler>
_result;
</sqf>
</spoiler>




Line 279: Line 313:


'''Author:''' {{User|POLPOX}}<br>
'''Author:''' {{User|POLPOX}}<br>
<spoiler><pre><nowiki>//Use unicode to prevent export error
<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 >> 'scope') == 2 and
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 >> 'type') != 65536 and
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 {'style="background: #edd;"|'} ; ""}) ;
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) ;</nowiki></pre></spoiler>
copyToClipboard (_return joinString endl);</sqf></spoiler>




Line 519: Line 555:


'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler><pre>popUpTargets = "{| class=""wikitable""
<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 + "|}");</pre></spoiler>
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>
local _result = "";
<sqf>
local _addLine = {
local _result = "";
_result = _result + _this + (toString [10]);
local _addLine = {
};
_result = _result + _this + (toString [10]);
};
local _maxGroupWidth = 5;
 
local _cfgGroups = configFile >> "CfgGroups";
local _maxGroupWidth = 5;
local _cfgGroups = configFile >> "CfgGroups";
"{{<nowiki/>TOC|horizontal}}" call _addLine;
 
"{{TOC|horizontal}}" call _addLine;
for "_sideindex" from 0 to (count _cfgGroups -1) do
 
{ // side level
for "_sideindex" from 0 to (count _cfgGroups -1) do
{ // side level
local _sideConfig = _cfgGroups select _sideindex;
 
local _sideConfig = _cfgGroups select _sideindex;
if (isClass _sideConfig) then
 
{
if (isClass _sideConfig) then
if (_sideindex > 0) then
{
{
if (_sideindex > 0) then
"" call _addLine;
{
};
"" call _addLine;
"" call _addLine;
};
"== " + getText (_sideConfig >> "name") + " ==" call _addLine;
"" call _addLine;
"" call _addLine;
"== " + getText (_sideConfig >> "name") + " ==" call _addLine;
"config: " + configName _sideConfig call _addLine;
"" call _addLine;
"" call _addLine;
"config: " + configName _sideConfig call _addLine;
"" call _addLine;
for "_factionindex" from 0 to count _sideConfig -1 do
 
{ // faction level
for "_factionindex" from 0 to count _sideConfig -1 do
{ // faction level
local _factionConfig = _sideConfig select _factionindex;
 
local _factionConfig = _sideConfig select _factionindex;
if (isClass _factionConfig) then
 
{
if (isClass _factionConfig) then
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine;
{
"" call _addLine;
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine;
"config: " + configName _factionConfig call _addLine;
"" call _addLine;
"" call _addLine;
"config: " + configName _factionConfig call _addLine;
"{| class=""wikitable""" call _addLine;
"" call _addLine;
"{| class=""wikitable""" call _addLine;
for "_grouptypeindex" from 0 to count _factionConfig -1 do
 
{ // groupType level
for "_grouptypeindex" from 0 to count _factionConfig -1 do
{ // groupType level
local _groupTypeConfig = _factionConfig select _grouptypeindex;
 
local _groupTypeConfig = _factionConfig select _grouptypeindex;
if (isClass _groupTypeConfig) then
 
{
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 _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);
 
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;
"|- style=""vertical-align: top""" call _addLine;
"&lt;div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "&lt;/div>" call _addLine;
"! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine;
"&lt;div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "&lt;/div>" call _addLine;
local _groupRow = 1;
 
local _groupRow = 1;
for "_groupindex" from 0 to count _groupTypeConfig -1 do
 
{ // group level
for "_groupindex" from 0 to count _groupTypeConfig -1 do
{ // group level
local _groupConfig = _groupTypeConfig select _groupindex;
 
local _groupConfig = _groupTypeConfig select _groupindex;
if (isClass _groupConfig) then
 
{
if (isClass _groupConfig) then
"| &lt;div style=""white-space: pre""><nowiki>'''</nowiki>" + getText(_groupConfig >> "name") + "<nowiki>'''</nowiki>&lt;br&gt;config: " + configName _groupConfig + "&lt;/div>" call _addLine;
{
"| &lt;div style=""white-space: pre"">'''" + getText(_groupConfig >> "name") + "'''&lt;br&gt;config: " + configName _groupConfig + "&lt;/div>" call _addLine;
"Composition:&lt;div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed"">&lt;div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
 
"Composition:&lt;div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed"">&lt;div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
for "_unitindex" from 0 to count _groupConfig -1 do
 
{
for "_unitindex" from 0 to count _groupConfig -1 do
local _unitClass = _groupConfig select _unitindex;
{
if (isClass _unitClass) then
local _unitClass = _groupConfig select _unitindex;
{
if (isClass _unitClass) then
("# " + getText (_unitClass >> "vehicle")) call _addLine;
{
};
("# " + getText (_unitClass >> "vehicle")) call _addLine;
};
};
};
"&lt;/div>&lt;/div>" call _addLine;
 
"&lt;/div>&lt;/div>" call _addLine;
_groupRow = _groupRow + 1;
 
if (_groupRow > _maxGroupWidth) then {
_groupRow = _groupRow + 1;
"|-" call _addLine;
if (_groupRow > _maxGroupWidth) then {
_groupRow = 1;
"|-" call _addLine;
};
_groupRow = 1;
};
};
};
};
};
"|-" call _addLine;
 
};
"|-" call _addLine;
};
};
 
};
"|}" call _addLine;
 
"|}" call _addLine;
};
 
};
};
};
};
};
};
};
"" call _addLine;
 
"" call _addLine;
"" call _addLine;
"[[<nowiki/>Category: CfgGroups]]" call _addLine;
"" call _addLine;
"" call _addLine;
"[[Category: CfgGroups]]" call _addLine;
"" call _addLine;
copyToClipboard _result;
 
_result;
copyToClipboard _result;
_result;
</sqf>
</spoiler>
</spoiler>
* [[Arma 2: Operation Arrowhead: CfgGroups]]<br><spoiler>
* [[Arma 2: Operation Arrowhead: CfgGroups]]<br><spoiler>
local _result = "";
<sqf>
local _addLine = {
local _result = "";
_result = _result + _this + (toString [10]);
local _addLine = {
};
_result = _result + _this + (toString [10]);
};
local _maxGroupWidth = 5;
 
local _cfgGroups = configFile >> "CfgGroups";
local _maxGroupWidth = 5;
local _cfgGroups = configFile >> "CfgGroups";
"{{<nowiki/>TOC|horizontal|||y}}" call _addLine;
 
"{{TOC|horizontal|||y}}" call _addLine;
for "_sideindex" from 0 to (count _cfgGroups -1) do
 
{ // side level
for "_sideindex" from 0 to (count _cfgGroups -1) do
{ // side level
local _sideConfig = _cfgGroups select _sideindex;
 
local _sideConfig = _cfgGroups select _sideindex;
if (isClass _sideConfig) then
 
{
if (isClass _sideConfig) then
if (_sideindex > 0) then
{
{
if (_sideindex > 0) then
"" call _addLine;
{
};
"" call _addLine;
"" call _addLine;
};
"== " + getText (_sideConfig >> "name") + " ==" call _addLine;
"" call _addLine;
"" call _addLine;
"== " + getText (_sideConfig >> "name") + " ==" call _addLine;
"config: " + configName _sideConfig call _addLine;
"" call _addLine;
"" call _addLine;
"config: " + configName _sideConfig call _addLine;
"" call _addLine;
for "_factionindex" from 0 to count _sideConfig -1 do
 
{ // faction level
for "_factionindex" from 0 to count _sideConfig -1 do
{ // faction level
local _factionConfig = _sideConfig select _factionindex;
 
local _factionConfig = _sideConfig select _factionindex;
if (isClass _factionConfig) then
 
{
if (isClass _factionConfig) then
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine;
{
"" call _addLine;
"=== " + getText (_factionConfig >> "name") + " ===" call _addLine;
"config: " + configName _factionConfig call _addLine;
"" call _addLine;
"" call _addLine;
"config: " + configName _factionConfig call _addLine;
"{| class=""wikitable""" call _addLine;
"" call _addLine;
"{| class=""wikitable""" call _addLine;
for "_grouptypeindex" from 0 to count _factionConfig -1 do
 
{ // groupType level
for "_grouptypeindex" from 0 to count _factionConfig -1 do
{ // groupType level
local _groupTypeConfig = _factionConfig select _grouptypeindex;
 
local _groupTypeConfig = _factionConfig select _grouptypeindex;
if (isClass _groupTypeConfig) then
 
{
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 _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);
 
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;
"|- style=""vertical-align: top""" call _addLine;
"&lt;div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "&lt;/div>" call _addLine;
"! style=""vertical-align: middle; white-space: pre""" + (["", format [" rowspan=""%1""", _groupLines]] select (_groupLines > 1)) + " | " + getText (_groupTypeConfig >> "name") call _addLine;
"&lt;div style=""font-weight: normal"">config: " + configName _groupTypeConfig + "&lt;/div>" call _addLine;
local _groupRow = 1;
 
local _groupRow = 1;
for "_groupindex" from 0 to count _groupTypeConfig -1 do
 
{ // group level
for "_groupindex" from 0 to count _groupTypeConfig -1 do
{ // group level
local _groupConfig = _groupTypeConfig select _groupindex;
 
local _groupConfig = _groupTypeConfig select _groupindex;
if (isClass _groupConfig) then
 
{
if (isClass _groupConfig) then
"| &lt;div style=""white-space: pre""><nowiki>'''</nowiki>" + getText(_groupConfig >> "name") + "<nowiki>'''</nowiki>&lt;br&gt;config: " + configName _groupConfig + "&lt;/div>" call _addLine;
{
"| &lt;div style=""white-space: pre"">'''" + getText(_groupConfig >> "name") + "'''&lt;br&gt;config: " + configName _groupConfig + "&lt;/div>" call _addLine;
"Composition:&lt;div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed"">&lt;div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
 
"Composition:&lt;div style=""" + (["", "columns: 2; "] select (count _groupConfig > 600 /* if needed */)) + "font-size: small"" class=""mw-collapsible mw-collapsed"">&lt;div style=""margin-right: 5em; padding-top: 1em"">" call _addLine;
for "_unitindex" from 0 to count _groupConfig -1 do
 
{
for "_unitindex" from 0 to count _groupConfig -1 do
local _unitClass = _groupConfig select _unitindex;
{
if (isClass _unitClass) then
local _unitClass = _groupConfig select _unitindex;
{
if (isClass _unitClass) then
("# " + getText (_unitClass >> "vehicle")) call _addLine;
{
};
("# " + getText (_unitClass >> "vehicle")) call _addLine;
};
};
};
"&lt;/div>&lt;/div>" call _addLine;
 
"&lt;/div>&lt;/div>" call _addLine;
_groupRow = _groupRow + 1;
 
if (_groupRow > _maxGroupWidth) then {
_groupRow = _groupRow + 1;
"|-" call _addLine;
if (_groupRow > _maxGroupWidth) then {
_groupRow = 1;
"|-" call _addLine;
};
_groupRow = 1;
};
};
};
};
};
"|-" call _addLine;
 
};
"|-" call _addLine;
};
};
 
};
"|}" call _addLine;
 
"|}" call _addLine;
};
 
};
};
};
};
};
};
};
"" call _addLine;
 
"" call _addLine;
"" call _addLine;
"[[<nowiki/>Category: CfgGroups]]" call _addLine;
"" call _addLine;
"" call _addLine;
"[[Category: CfgGroups]]" call _addLine;
"" call _addLine;
copyToClipboard _result;
 
_result;
copyToClipboard _result;
_result;
</sqf>
</spoiler>
</spoiler>
* [[Arma 3: CfgGroups]]<br><spoiler>
* [[Arma 3: CfgGroups]]<br><spoiler>
[[private]] _lines = [];
<sqf>
private _lines = [];
[[private]] _maxGroupWidth = 5;
private _maxGroupWidth = 5;
private _groupSides = "true" configClasses (configFile >> "CfgGroups");
[[private]] _groupSides = "true" [[configClasses]] (configFile &gt;&gt; "CfgGroups");
 
// _lines pushBack "{{TopMenu|" + (_groupSides apply { format ["[[#%1|%1]]", getText (_x >> "name")] } joinString "") + "}}";
{{cc|_lines [[pushBack]] "{{<nowiki/>TopMenu|" + (_groupSides [[apply]] { [[format]] ["[[#%1|%1]]", [[getText]] (_x &gt;&gt; "name")] } [[joinString]] "") + "}}";}}
_lines pushBack "{{TOC|horizontal|||y}}";
_lines [[pushBack]] "{{<nowiki/>TOC|horizontal|||y}}";
 
{ // side level
{ {{cc|side level}}
if (_forEachIndex > 0) then {
[[if]] (_forEachIndex &gt; 0) [[then]] {
_lines pushBack "";
_lines [[pushBack]] "";
};
};
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "== " + getText (_x >> "name") + " ==";
_lines [[pushBack]] "== " + [[getText]] (_x &gt;&gt; "name") + " ==";
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "config: " + configName _x;
_lines [[pushBack]] "config: " + [[configName]] _x;
_lines pushBack "";
_lines [[pushBack]] "";
 
private _factions = "true" configClasses _x;
[[private]] _factions = "true" [[configClasses]] _x;
{ // faction level
{ {{cc|faction level}}
 
_lines pushBack "=== " + getText (_x >> "name") + " ===";
_lines [[pushBack]] "=== " + [[getText]] (_x &gt;&gt; "name") + " ===";
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "config: " + configName _x;
_lines [[pushBack]] "config: " + [[configName]] _x;
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "{| class=""wikitable""";
_lines [[pushBack]] "{|<nowiki/> class=""wikitable""";
 
private _groupTypes = "true" configClasses _x;
[[private]] _groupTypes = "true" [[configClasses]] _x;
{ // groupType level
{ {{cc|groupType level}}
 
private _groups = "true" configClasses _x;
[[private]] _groups = "true" [[configClasses]] _x;
private _groupLines = ceil (count _groups / _maxGroupWidth);
[[private]] _groupLines = [[ceil]] ([[count]] _groups / _maxGroupWidth);
 
_lines pushBack "|- style=""vertical-align: top""";
_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]] "! style=""vertical-align: middle; white-space: pre""" + (["", [[format]] [" rowspan=""%1""", _groupLines]] [[select]] (_groupLines &gt; 1)) + " | " + [[getText]] (_x &gt;&gt; "name");
_lines pushBack "<div style=""font-weight: normal"">config: " + configName _x + "</div>";
_lines [[pushBack]] "&lt;div style=""font-weight: normal""&gt;config: " + [[configName]] _x + "&lt;/div&gt;";
 
private _groupRow = 1;
[[private]] _groupRow = 1;
{ // group level
{ {{cc|group level}}
_lines pushBack "| <div style=""white-space: pre"">'''" + getText(_x >> "name") + "'''<br>config: " + configName _x + "</div>";
_lines [[pushBack]] "| &lt;div style=""white-space: pre""&gt;<nowiki>'''</nowiki>" + getText(_x &gt;&gt; "name") + "<nowiki>'''</nowiki>&lt;br&gt;config: " + [[configName]] _x + "&lt;/div&gt;";
 
private _units = "true" configClasses _x;
[[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]] "Composition:&lt;div style=""" + (["", "columns: 2; "] [[select]] ([[count]] _units &gt; 600 {{codecomment|/* if needed */}})) + "font-size: small"" class=""mw-collapsible mw-collapsed""&gt;&lt;div style=""margin-right: 5em; padding-top: 1em""&gt;";
{
{
_lines pushBack ("# " + getText (_x >> "vehicle"));
_lines [[pushBack]] ("# " + [[getText]] (_x &gt;&gt; "vehicle"));
 
} forEach _units;
} [[forEach]] _units;
 
_lines pushBack "</div></div>";
_lines [[pushBack]] "&lt;/div&gt;&lt;/div&gt;";
 
_groupRow = _groupRow + 1;
_groupRow = _groupRow + 1;
if (_groupRow > _maxGroupWidth) then {
[[if]] (_groupRow &gt; _maxGroupWidth) [[then]] {
_lines pushBack "|-";
_lines [[pushBack]] "|-";
_groupRow = 1;
_groupRow = 1;
}
}
 
} forEach _groups;
} [[forEach]] _groups;
 
_lines pushBack "|-";
_lines [[pushBack]] "|-";
 
} forEach _groupTypes;
} [[forEach]] _groupTypes;
 
_lines pushBack "|}";
_lines [[pushBack]] "|}";
 
} forEach _factions;
} [[forEach]] _factions;
 
} forEach _groupSides;
} [[forEach]] _groupSides;
 
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "";
_lines [[pushBack]] "";
_lines pushBack "[[Category: CfgGroups]]";
_lines [[pushBack]] "[[Category: CfgGroups]]";
_lines pushBack "";
_lines [[pushBack]] "";
 
private _result = _lines joinString endl;
[[private]] _result = _lines [[joinString]] [[endl]];
 
copyToClipboard _result;
[[copyToClipboard]] _result;
_result;
_result;
</sqf>
</spoiler>
</spoiler>


Line 844: Line 889:
'''Author:''' {{User|Killzone Kid}}<br>
'''Author:''' {{User|Killzone Kid}}<br>
<spoiler>
<spoiler>
[[if]] (([[configName]] _x) [[select]] [0, 5] [[a == b|==]] 'group') [[then]]
<sqf>
{
"if ((configName _x) select [0, 5] == 'group') then
[[diag_log]] ('%' + [[configName]] _x);
{
[[for]] '_i' [[from]] 0 [[to]] [[count]] [[Magic Variables#x|_x]] - 1 [[do]] {
diag_log ('%' + configName _x);
[[diag_log]] ('* ""' [[+]] [[configName]] (_x [[select]] _i) [[+]] '"" &amp;rarr; ' + [[getText]] (([[Magic Variables#x|_x]] [[select]] _i) >> 'name'));
for '_i' from 0 to count _x - 1 do {
};
diag_log ('* ""' + configName (_x select _i) + '"" &amp;rarr; ' + getText ((_x select _i) >> "name"));
}; [[false]]" [[configClasses]] ([[configFile]] >> "CfgWorlds");
};
}; false" configClasses (configFile >> "CfgWorlds");
</sqf>
</spoiler>
</spoiler>


Line 857: Line 904:


'''Author:''' {{User|POLPOX}}<br>
'''Author:''' {{User|POLPOX}}<br>
<spoiler><pre><nowiki>_r = [] ;
<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) ;</nowiki></pre></spoiler>
copyToClipboard (_rFinal joinString endl);
</sqf>
</spoiler>




Line 935: Line 986:
'''Author:''' {{User|R3vo}}<br>
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
[[private]] _version = format ["Last updated: {{<nowiki/>GVI|arma3|%1}}", productVersion # 2 / 100];
<sqf>
[[private]] _counter = 0;
private _version = format ["Last updated: {{GVI|arma3|%1}}", productVersion # 2 / 100];
[[private]] _export = _version + endl + "{<nowiki/>| class=""wikitable""" + [[endl]] + "! Module Name !! Category !! Addon !! Function !! Description" + endl + "|-" + endl;
private _counter = 0;
[[private]] _modules = "([[configName]] [[inheritsFrom]] _x) == 'Module_F'" [[configClasses]] ([[configFile]] >> "CfgVehicles");
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]]
{
{
if ((getNumber (_x >> "scope") > 1)) then
[[private]] _name = [[getText]] (_x >> "displayName");
{
[[private]] _cat = [[getText]] (_x >> "category");
private _name = getText (_x >> "displayName");
[[private]] _mod = [[configSourceMod]] _x;
private _cat = getText (_x >> "category");
[[private]] _fnc = [[getText]] (_x >> "function");
private _mod = configSourceMod _x;
[[if]] !(_fnc [[isEqualTo]] "") [[then]]
private _fnc = getText (_x >> "function");
{
if !(_fnc isEqualTo "") then
_fnc = _fnc [[select]] [7];
{
_fnc = "[[<nowiki/>BIS_fnc" + _fnc + "]]";
_fnc = _fnc select [7];
};
_fnc = "[[BIS_fnc" + _fnc + "]]";
[[private]] _desc = [[getText]] (_x >> "ModuleDescription" >> "Description");
};
[[if]] (_desc [[isEqualTo]] "") [[then]] {_desc = ""};
private _desc = getText (_x >> "ModuleDescription" >> "Description");
[[if]] (_mod == "") [[then]] {_mod = "A3"};
if (_desc isEqualTo "") then {_desc = ""};
[[private]] _modName = [[modParams]] [_mod,["name"]];
if (_mod == "") then {_mod = "A3"};
_modName = _modName [[select]] 0;
private _modName = modParams [_mod,["name"]];
_cat = [[getText]] ([[configFile]] >> "CfgFactionClasses" >> _cat >> "displayName");
_modName = _modName select 0;
[[if]] (_cat [[isEqualTo]] "") [[then]] {_cat = "Others"};
_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]];
_export = _export + "| " + _name + endl + "|| " + _cat + endl + "|| " + _modName + endl + "|| " + _fnc + endl + "|| " + _desc + endl + "|-" + endl;
};
};
_counter = _counter + 1;
_counter = _counter + 1;
} [[forEach]] _modules;
} forEach _modules;


_export = _export + "|<nowiki/>}" + [[endl]] + [[format]] ["Total number of modules: %1", _counter];
_export = _export + "|}" + endl + format ["Total number of modules: %1", _counter];
[[copyToClipboard]] _export;
copyToClipboard _export;
</sqf>
</spoiler>
</spoiler>


Line 974: Line 1,027:


<spoiler>
<spoiler>
<syntaxhighlight lang="cpp">
<sqf>
[] spawn
[] spawn
{
{
Line 1,016: Line 1,069:
copyToClipboard _export;
copyToClipboard _export;
};
};
</syntaxhighlight>
</sqf>
</spoiler>
</spoiler>




<syntaxhighlight lang="cpp"></syntaxhighlight>
[[Category: Maintenance]]
[[Category: Maintenance]]

Revision as of 15:49, 28 March 2022

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

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

Arma 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]);

↑ Back to spoiler's top


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 ["};"];

↑ Back to spoiler's top


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);

↑ Back to spoiler's top


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


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) + '"" &amp;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);

↑ Back to spoiler's top


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;

↑ Back to spoiler's top


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; };

↑ Back to spoiler's top