Biki Export Scripts: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (added script for Arma 3: CfgMarkers)
m (Add nearestTerrainObjects export script)
Line 1: Line 1:
{{TOC|side}}
{{TOC|side}}
= Introduction =
= Introduction =
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  
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
<pre>{{Feature|Informative|Extraction script can be found on the [[Biki Export Scripts#{{PAGENAME}}|Biki Export Scripts]] page.}}</pre> on that specific page.
<pre>{{Feature|Informative|Extraction script can be found on the [[Biki Export Scripts#{{PAGENAME}}|Biki Export Scripts]] page.}}</pre> on that specific page.


= [[Arma 3: CfgFunctions]] =
= [[Arma 3: CfgFunctions]] =
'''Author:''' {{User|R3vo}} <br>
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
<syntaxhighlight lang="cpp">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""
<syntaxhighlight lang="cpp">
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
! Category
! Category
Line 36: Line 37:


= [[Arma 3: CfgMarkers]] =
= [[Arma 3: CfgMarkers]] =
'''Author:''' {{User|R3vo}} <br>
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
<syntaxhighlight lang="cpp">//Marker data to biki table
<syntaxhighlight lang="cpp">//Marker data to biki table
Line 47: Line 48:


{
{
  _addon = _x call ENH_fnc_getConfigSourceAddon params [["_addonClass", ""]];
_addon = _x call ENH_fnc_getConfigSourceAddon params [["_addonClass", ""]];
  if (_addonClass isNotEqualTo "") then {_addonClass = format ["{{Icon|%1|24}}", _addonClass]};
if (_addonClass isNotEqualTo "") then {_addonClass = format ["{{Icon|%1|24}}", _addonClass]};


  _shadow = ["{{Icon|checked}}", "{{Icon|unchecked}}"] select (getNumber (_x >> "shadow"));
_shadow = ["{{Icon|checked}}", "{{Icon|unchecked}}"] select (getNumber (_x >> "shadow"));
  _export = _export + endl + "| " + str (_forEachIndex + 1) + "." + " || " + "<tt>" + configName _x + "</tt>" + " || " + getText (_x >> "name") + " || " + "<tt>" + getText (_x >> "icon") + "</tt>" + " || " + _shadow + " || " + str getNumber (_x >> "scope") + " || " + _addonClass + endl + "|-"
_export = _export + endl + "| " + str (_forEachIndex + 1) + "." + " || " + "<tt>" + configName _x + "</tt>" + " || " + getText (_x >> "name") + " || " + "<tt>" + getText (_x >> "icon") + "</tt>" + " || " + _shadow + " || " + str getNumber (_x >> "scope") + " || " + _addonClass + endl + "|-"
} forEach _classes;
} forEach _classes;


Line 64: Line 65:


{
{
  if (_startPos # 0 > 30000) then {_startPos set [0, -33000]; _startPos = _startPos vectorAdd [0, -1600, 0]};
if (_startPos # 0 > 30000) then
  _marker = createMarker [configName _x , _startPos];
{
  _marker setMarkerType configName _x;
_startPos set [0, -33000];
  _marker setMarkerText format ["  %1.", _forEachIndex + 1];
_startPos = _startPos vectorAdd [0, -1600, 0];
  _startPos = _startPos vectorAdd [3500, 0, 0];
};
_marker = createMarker [configName _x , _startPos];
_marker setMarkerType configName _x;
_marker setMarkerText format ["  %1.", _forEachIndex + 1];
_startPos = _startPos vectorAdd [3500, 0, 0];
} forEach _classes;</syntaxhighlight></spoiler>
} forEach _classes;</syntaxhighlight></spoiler>


= [[Arma 3: CfgMarkerColors]] =
= [[Arma 3: CfgMarkerColors]] =
'''Author:''' {{User|R3vo}} <br>
 
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
<pre>private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl;
<pre>private _output = format ["Last updated: {{GVI|arma3|%1}}", (productVersion select 2) / 100] + endl;
Line 84: Line 91:
copyToClipboard _output;</pre></spoiler>
copyToClipboard _output;</pre></spoiler>


= [[Arma 3: CfgMusic]] =  
 
'''Author:''' {{User|Killzone_kid}} <br>
= [[Arma 3: CfgMusic]] =
 
'''Author:''' {{User|Killzone_kid}}<br>
<spoiler><code>_cfgMusic [[a = b|=]] [];
<spoiler><code>_cfgMusic [[a = b|=]] [];
_cfgMusic [[pushBack]] [[format]] ["Last updated: <noWiki>{{GVI|arma3|%1}}</noWiki>", ([[productVersion]] [[select]] 2) [[a / b|/]] 100];
_cfgMusic [[pushBack]] [[format]] ["Last updated: <noWiki>{{GVI|arma3|%1}}</noWiki>", ([[productVersion]] [[select]] 2) [[a / b|/]] 100];
Line 105: Line 114:
_secondsStr [[a = b|=]] [[if]] (_seconds [[a less b|<]] 10) [[then]] {[[format]] ["0%1",_seconds]} [[else]] {[[format]] ["%1",_seconds]};
_secondsStr [[a = b|=]] [[if]] (_seconds [[a less b|<]] 10) [[then]] {[[format]] ["0%1",_seconds]} [[else]] {[[format]] ["%1",_seconds]};
_duration [[a = b|=]] [[format]] ["%1:%2",_minutesStr,_secondsStr];
_duration [[a = b|=]] [[format]] ["%1:%2",_minutesStr,_secondsStr];
[[private]] _dlc [[a = b|=]] [[if]] ([[configSourceMod]] _x [[a == b|==]] "") [[then]]  
[[private]] _dlc [[a = b|=]] [[if]] ([[configSourceMod]] _x [[a == b|==]] "") [[then]]
{
{
"Arma 3";
"Arma 3";
}  
}
[[else]]  
[[else]]
{
{
[[format]] ["%1",([[modParams]] [[[configSourceMod]] _x,["name"]]) [[select]] 0];
[[format]] ["%1",([[modParams]] [[[configSourceMod]] _x,["name"]]) [[select]] 0];
};
};
//Some work a[[round]] [[to]] make wiki link work
//Some work a[[round]] [[to]] make wiki link work
Line 133: Line 142:
[[copyToClipboard]] (_cfgMusic [[joinString]] [[toString]][10]);</code></spoiler>
[[copyToClipboard]] (_cfgMusic [[joinString]] [[toString]][10]);</code></spoiler>


= [[Arma 3: Difficulty Settings]] =  
 
'''Author:''' {{User|Killzone_kid}} <br>
= [[Arma 3: Difficulty Settings]] =
 
'''Author:''' {{User|Killzone_kid}}<br>
<spoiler><code>"debug_console" callExtension format ["class Difficulties"];
<spoiler><code>"debug_console" callExtension format ["class Difficulties"];
"debug_console" callExtension format ["{"];
"debug_console" callExtension format ["{"];
Line 169: Line 180:
_x, getNumber(_cfg >> _class >> _x)];
_x, getNumber(_cfg >> _class >> _x)];
} foreach [
} foreach [
"precisionEnemy",  
"precisionEnemy",
"precisionFriendly",  
"precisionFriendly",
"skillEnemy",  
"skillEnemy",
"skillFriendly"
"skillFriendly"
];
];
Line 178: Line 189:
"debug_console" callExtension format ["};"];</code></spoiler>
"debug_console" callExtension format ["};"];</code></spoiler>


= [[Arma 3: Display3DEN IDCs]] =  
 
'''Author:''' {{User|R3vo}} <br>
= [[Arma 3: Display3DEN IDCs]] =
 
'''Author:''' {{User|R3vo}}<br>
<spoiler><pre>private _controls = "{| class=""wikitable sortable""
<spoiler><pre>private _controls = "{| class=""wikitable sortable""
|-
|-
Line 186: Line 199:
private _fnc_scanConfig =
private _fnc_scanConfig =
{
{
  params ["_config"];
params ["_config"];
  "true" configClasses _config apply
"true" configClasses _config apply
  {
{
    _idc = getNumber (_x >> "idc");
_idc = getNumber (_x >> "idc");
    if (_idc > 0) then
if (_idc > 0) then
    {
{
      _controls = _controls + "|-" + endl + "|" + "<tt>" + configName _x + "</tt>" + " || " + str _idc + " || " + "{{ic|" + ([_x, ""] call BIS_fnc_configPath) + "}}" + endl;
_controls = _controls + "|-" + endl + "|" + "<tt>" + configName _x + "</tt>" + " || " + str _idc + " || " + "{{ic|" + ([_x, ""] call BIS_fnc_configPath) + "}}" + endl;
    };
};
    _x call _fnc_scanConfig;
_x call _fnc_scanConfig;
  };
};
};
};


Line 203: Line 216:




= [[Arma 3: Hitpoints]] =  
= [[Arma 3: Hitpoints]] =
'''Author:''' {{User|R3vo}} <br>
 
'''Author:''' {{User|R3vo}}<br>
<spoiler><pre><nowiki>
<spoiler><pre><nowiki>
//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
{
{
  startLoadingScreen ["Loading"];
startLoadingScreen ["Loading"];
  private _hitPoints = [];
private _hitPoints = [];
  {
{
    _veh = configName _x createVehicle [0, 0, 0];
_veh = configName _x createVehicle [0, 0, 0];
    {
{
      _hitpoints pushBackUnique _x;
_hitpoints pushBackUnique _x;
    } forEach (getAllHitPointsDamage _veh # 0);
} forEach (getAllHitPointsDamage _veh # 0);
    deleteVehicle _veh;
deleteVehicle _veh;
  } forEach ("isClass (_x >> 'HitPoints') && getNumber (_x >> 'Scope') >= 1" configClasses (configFile >> "CfgVehicles"));
} forEach ("isClass (_x >> 'HitPoints') && getNumber (_x >> 'Scope') >= 1" configClasses (configFile >> "CfgVehicles"));
  _hitpoints sort true;
_hitpoints sort true;


  private _text = "{| class=""wikitable sortable""" + endl +"|-" + endl + "! No. !! Hit Point !! Name";
private _text = "{| class=""wikitable sortable""" + endl +"|-" + endl + "! No. !! Hit Point !! Name";


  {
{
    _text = _text + endl + "|-" + endl + "| " + str (_forEachIndex + 1) + " || " + _x + " || " + localize ("STR_ENH_DAMAGE_" + _x);
_text = _text + endl + "|-" + endl + "| " + str (_forEachIndex + 1) + " || " + _x + " || " + localize ("STR_ENH_DAMAGE_" + _x);
  } forEach _hitpoints;
} forEach _hitpoints;
  copyToClipboard (_text + endl + "|}");
copyToClipboard (_text + endl + "|}");
  systemChat "Data copied!";
systemChat "Data copied!";
  endLoadingScreen;
endLoadingScreen;
};</nowiki></pre></spoiler>
};</nowiki></pre></spoiler>


= [[Arma 3: createVehicle/vehicles]] =  
 
'''Author:''' {{User|Killzone_Kid}} <br>
= [[Arma 3: createVehicle/vehicles]] =
 
'''Author:''' {{User|Killzone_Kid}}<br>
<spoiler><syntaxhighlight lang="cpp">private _result = "";
<spoiler><syntaxhighlight lang="cpp">private _result = "";
"if (getNumber (_x >> 'scope') > 0) then
"if (getNumber (_x >> 'scope') > 0) then
{  
{
_result = _result + '* ' + configName _x + ""\n"";
_result = _result + '* ' + configName _x + ""\n"";
for '_i' from 0 to count (_x >> 'AnimationSources') - 1 do
for '_i' from 0 to count (_x >> 'AnimationSources') - 1 do
Line 248: Line 264:
_result;</syntaxhighlight></spoiler>
_result;</syntaxhighlight></spoiler>


= [[Arma 3: DLC Restrictions]] =  
 
'''Author:''' {{User|POLPOX}} <br>
= [[Arma 3: DLC Restrictions]] =
 
'''Author:''' {{User|POLPOX}}<br>
<spoiler><pre><nowiki>//Use unicode to prevent export error
<spoiler><pre><nowiki>//Use unicode to prevent export error
forceUnicode 0 ;
forceUnicode 0 ;
Line 266: Line 284:
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")) +
Line 479: Line 497:
_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) ;</nowiki></pre></spoiler>


= [[Arma 3: Shooting Targets]] =
= [[Arma 3: Shooting Targets]] =
'''Author:''' {{User|R3vo}} <br>
 
<spoiler><pre>popUpTargets = "{| class=""wikitable""  
'''Author:''' {{User|R3vo}}<br>
|-  
<spoiler><pre>popUpTargets = "{| class=""wikitable""
! Display Name !! Class !! Animation Sources";  
|-
 
! Display Name !! Class !! Animation Sources";
{  
 
  private _anims = "true" configClasses (_x >> "AnimationSources");
{
  if (_anims isNotEqualTo []) then
private _anims = "true" configClasses (_x >> "AnimationSources");
  {
if (_anims isNotEqualTo []) then
    private _animsStr = "";
{
    {
private _animsStr = "";
      _animsStr = _animsStr + "<tt>" + configName _x + "</tt>" + "</br>" + endl;
{
    } forEach _anims;
_animsStr = _animsStr + "<tt>" + configName _x + "</tt>" + "</br>" + endl;
    popUpTargets = popUpTargets + endl + "|-" + endl + "| " + getText (_x >> "displayName") + " || " + "<tt>" + configName _x + "</tt>" + " || " + endl + _animsStr;  
} forEach _anims;
  };  
popUpTargets = popUpTargets + endl + "|-" + endl + "| " + getText (_x >> "displayName") + " || " + "<tt>" + configName _x + "</tt>" + " || " + endl + _animsStr;
} 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 + "|}");</pre></spoiler>


= [[inputAction/actions]] =  
 
'''Author:''' {{User|POLPOX}} <br>
= [[inputAction/actions]] =
 
'''Author:''' {{User|POLPOX}}<br>
<spoiler><pre><nowiki>_r = [] ;
<spoiler><pre><nowiki>_r = [] ;
{
{
Line 580: Line 602:


copyToClipboard (_rFinal joinString endl) ;</nowiki></pre></spoiler>
copyToClipboard (_rFinal joinString endl) ;</nowiki></pre></spoiler>


= [[Modules]] =
= [[Modules]] =
'''Author:''' {{User|R3vo}} <br>
 
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<spoiler>
  [[private]] _version = format ["Last updated: {{<nowiki/>GVI|arma3|%1}}", productVersion # 2 / 100];
  [[private]] _version = format ["Last updated: {{<nowiki/>GVI|arma3|%1}}", productVersion # 2 / 100];
Line 607: Line 631:
  _cat = [[getText]] ([[configFile]] >> "CfgFactionClasses" >> _cat >> "displayName");
  _cat = [[getText]] ([[configFile]] >> "CfgFactionClasses" >> _cat >> "displayName");
  [[if]] (_cat [[isEqualTo]] "") [[then]] {_cat = "Others"};
  [[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 + "|<nowiki/>}" + [[endl]] + [[format]] ["Total number of modules: %1", _counter];
  [[copyToClipboard]] _export;
  [[copyToClipboard]] _export;
</spoiler>
</spoiler>


= [[nearestTerrainObjects]] =
'''Author:''' {{User|R3vo}}<br>
<spoiler>
<syntaxhighlight lang="cpp">
[] 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;
};
</syntaxhighlight>
</spoiler>
<syntaxhighlight lang="cpp"></syntaxhighlight>
[[Category: Maintenance]]
[[Category: Maintenance]]

Revision as of 15:52, 19 June 2021

Introduction

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

{{Feature|Informative|Extraction script can be found on the [[Biki Export Scripts#{{PAGENAME}}|Biki Export Scripts]] page.}}

on that specific page.

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) + "." + " || " + "<tt>" + configName _x + "</tt>" + " || " + getText (_x >> "name") + " || " + "<tt>" + getText (_x >> "icon") + "</tt>" + " || " + _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 + "|" + "<tt>" + configName _x + "</tt>" + " || " + 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

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;"|'} ; ""}) ;
	
	//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 + "<tt>" + configName _x + "</tt>" + "</br>" + endl;
		} forEach _anims;
		popUpTargets = popUpTargets + endl + "|-" + endl + "| " + getText (_x >> "displayName") + " || " + "<tt>" + configName _x + "</tt>" + " || " + endl + _animsStr;
	};
} forEach ("getNumber (_x >> 'scope') > 1 && getText (_x >> 'editorSubcategory') == 'EdSubcat_Targets'" configClasses (configfile >> "CfgVehicles"));

copyToClipboard (popUpTargets + endl + "|}");


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 || <tt>%2</tt> || %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