Merge pull request #4 from Ghostrider-DbD-/Version-0.21

Version 0 21
This commit is contained in:
Ghostrider-DbD- 2017-08-15 14:53:56 -04:00 committed by GitHub
commit e74527d7be
41 changed files with 1216 additions and 120 deletions

View File

@ -0,0 +1,58 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
fn_generateItemList = {
params["_items"];
private["_clipBoard"];
_clipBoard = "";
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _items;
_clipBoard;
};
fn_generatePriceList = {
params["_items"];
private["_clipBoard"];
_clipBoard = "";
{
if (GRG_mod == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
//_clipboard = _clipboard + format["5, %1 %2",_x,endl];
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 100; };%2",_x,endl];
};
}forEach _items;
_clipBoard
};
fn_generateLootTableEntries = {
params["_items"];
private["_clipBoard"];
_clipBoard = "";
{
if (GRG_mod == "Exile") then
{
_clipboard = _clipboard + format["5, %1 %2",_x,endl];
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipboard + format['{ { "%1", "item" /*"backpack" "magazine" "item" "weapon"*/ }, 5 },%2',_x,endl];
};
}forEach _items;
_clipBoard
};

View File

@ -0,0 +1,20 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
GRG_Epoch_Pricelist_Header = endl + endl + "/*" + endl + endl + " Epoch Pricelists" + endl + endl + "*/";
GRG_Epoch_Loottable_Header = endl + endl + "/*" + endl + endl + " Epoch Loottable Entries" + endl + endl + "*/";
GRG_Epoch_ItemLists_Header = endl + endl + "/*" + endl + endl + " Epoch Item Name Lists" + endl + endl + "*/";
GRG_Exile_Pricelist_Header = endl + endl + "/*" + endl + endl + " Exile Pricelists" + endl + endl + "*/";
GRG_Exile_TraderItemLists_Header = endl + endl + "/*" + endl + endl + " Exile Trader Item Lists" + endl + endl + "*/";
GRG_Exile_Loottable_Header = endl + endl + "/*" + endl + endl + " Exile Loottable Entries" + endl + endl + "*/";

View File

@ -0,0 +1,26 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
Lists magazines that should excluded from the output for the script.
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
// Magazines
/*
Add the class names of any magazines you wish to exclude to _baseMagazines using the formating shown in the example below.
For example, if you wish to exclude smoke rounds add:
"VehicleMagazine",
"SmokeLauncherMag",
"SmokeLauncherMag_boat"
*/
_baseMagazines = [
];

View File

@ -0,0 +1,34 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
Lists weapons that should excluded from the output for the script.
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
/*
Include any classnames you wish to exclude from the lists generated by the tool by adding them to _airBase using the formating below.
The list below includes the default Arma 3 UAVs of APEX.
"B_UAV_01_F",
"O_UAV_01_F",
"I_UAV_01_F",
"UAV_02_base_F",
"UAV_02_CAS_base_F",
"B_UAV_02_F",
"O_UAV_02_F",
"I_UAV_02_F",
"B_UAV_02_CAS_F",
"O_UAV_02_CAS_F",
"I_UAV_02_CAS_F"
*/
_airBase = [
];

View File

@ -0,0 +1,31 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
Lists weapons that should excluded from the output for the script.
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
/*
Include any classnames you wish to exclude from the lists generated by the tool by adding them to _knownWeapons using the formating below.
The list below includes the default Arma 3 MX series of assaault rifles as of APEX.
"arifle_MX_Base_F",
"arifle_MXC_F",
"arifle_MX_F",
"arifle_MXM_F",
"arifle_MXC_Black_F",
"arifle_MX_Black_F",
"arifle_MXM_Black_F"
*/
_knownWeapons = [
];

View File

@ -0,0 +1,34 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
Lists weapons that should excluded from the output for the script.
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
/*
Include any classnames you wish to exclude from the lists generated by the tool using the formating below.
The list below includes certains default Arma 3 glasses as of APEX.
"G_Sport_Red",
"G_Tactical_Black",
"G_Aviator",
"G_Lady_Mirror",
"G_Lady_Dark",
"G_Lady_Red",
"G_Lady_Blue",
"G_Diving",
"G_B_Diving",
"G_O_Diving",
"G_I_Diving"
*/
_baseWearables = [
];

View File

@ -0,0 +1,33 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
// load string library
nul=[] execVM "KRON_Strings.sqf";
DBD_priceConfiguration = "Exile"; // Options are "Exile" or "Epoch". This configuration pertains only to generating pre-formated price lists.
DBD_includedWeaponMagazines = false;
player addAction["Run vehiclesConfig","vehiclesConfig.sqf"];
player addAction["Run vehiclesPricelist","vehiclesPriceList.sqf"];
player addAction["Run airConfig","airConfig.sqf"];
player addAction["Run airPriceList","airPriceList.sqf"];
player addAction["Run weaponsConfig","weaponsConfig.sqf"];
player addAction["Run weaponsPriceList","weaponsPriceList.sqf"];
player addAction["Run magazinesConfig","magazinesConfig.sqf"];
player addAction["Run magazinesPriceList","magazinesPriceList.sqf"];
player addAction["Run wearablesConfig","wearablesConfig.sqf"];
player addAction["Run wearablesPriceList","wearablesPriceList.sqf"];
player addAction["Run headgearConfig","headgearConfig.sqf"];
player addAction["Run headgearPriceList","headgearPriceList.sqf"];
player addAction["Run vestsConfig","vestsConfig.sqf"];
player addAction["Run vestsPriceList","vestsPriceList.sqf"];
player addAction["Run uniformsConfig","uniformsConfig.sqf"];
player addAction["Run uniformsPriceList","uniformsPriceList.sqf"];

View File

@ -2,7 +2,7 @@
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
@ -17,7 +17,7 @@ _cars = [];
_clipboard = "";
_wpnSmokeShell = []; // "B_IR_Grenade"
_wpnLauncherRound = [];
_wpnMagazines = [];
//_wpnMagazines = [];
_wpnVehicleAmmo = [];
_wpnMines = []; // "ATMine_Range_Mag" "SatchelCharge_Remote_Mag" "DemoCharge_Remote_Mag" "IEDUrbanSmall_Remote_Mag"
_isMagazine = true;
@ -41,10 +41,7 @@ _scannedMags = [];
};
};
}forEach _veh;
_clipBoard = _clipBoard + format["%1%2// Magazines%3",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1",%2',_x,endl];
}forEach _wpnMagazines;
_clipBoard = _clipBoard + format["%1%2// Grenades, Smoke Grenades, Chemlights and Flares%3",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1",%2',_x,endl];
@ -57,5 +54,11 @@ _clipBoard = _clipBoard + format["%1%2// Vehicle Ammo%3",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1",%2',_x,endl];
}forEach _wpnVehicleAmmo;
_clipBoard = _clipBoard + format["%1%2// Magazines%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Includes Weapon Magazines and anything not captured above%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Check for duplicates if you also run the extraction tool for weapons%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Which extracts all magazines available for player weapons%3",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1",%2',_x,endl];
}forEach _wpnMagazines;
copyToClipboard _clipboard;

View File

@ -2,7 +2,7 @@
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
@ -37,17 +37,7 @@ _scannedMags = [];
};
};
}forEach _veh;
_clipBoard = _clipBoard + format["%1%2// Magazines%3",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 15; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 15; };%2",_x,endl];
};
}forEach _wpnMagazines;
_clipBoard = _clipBoard + format["%1%2// Grenades, Smoke Grenades, Chemlights and Flares%3",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
@ -82,5 +72,20 @@ _clipBoard = _clipBoard + format["%1%2// Vehicle Ammo%3",endl,endl,endl];
};
}forEach _wpnVehicleAmmo;
_clipBoard = _clipBoard + format["%1%2// Magazines%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Includes Weapon Magazines and anything not captured above%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Check for duplicates if you also run the extraction tool for weapons%3",endl,endl,endl];
_clipBoard = _clipBoard + format["%1%2// Which extracts all magazines available for player weapons%3",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 15; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 15; };%2",_x,endl];
};
}forEach _wpnMagazines;
copyToClipboard _clipboard;
systemChat "Magazines Pricelist Generated";

View File

@ -2,7 +2,7 @@
Original script by KiloSwiss
https://epochmod.com/forum/topic/32239-howto-get-available-weapons-mod-independent/
Modified and enhanced by GhostriderDbD
5/22/17
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
@ -27,6 +27,10 @@ _wpnShotGun = []; //Shotguns
_wpnThrow = []; // throwables
_wpnUnknown = []; //Misc
_wpnMagazines = [];
_wpnOptics = [];
_wpnPointers = [];
_wpnMuzzles = [];
_aBaseNames = [];
_wpList = (configFile >> "cfgWeapons") call BIS_fnc_getCfgSubClasses;
@ -67,9 +71,30 @@ _wpList sort true;
case "Throw" : {_wpnThrow pushBack _baseName};
default{_wpnUnknown pushBack _baseName};
};
// Get options for magazines and attachments for that weapon and store these if they are not duplicates for items already listed.
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _baseName >> "magazines");
{
if !(_x in _wpnMagazines) then {_wpnMagazines pushback _x};
}forEach _ammoChoices;
_optics = getArray (configfile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
{
if !(_x in _wpnOptics) then {_wpnOptics pushback _x};
}forEach _optics;
_pointers = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
{
if !(_x in _wpnPointers) then {_wpnPointers pushback _x};
}forEach _pointers;
_muzzles = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
{
if !(_x in _wpnMuzzles) then {_wpnMuzzles pushback _x};
}forEach _muzzles;
_underbarrel = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
{
if !(_x in _wpnUnderbarrel) then {_wpnUnderbarrel pushback _x};
}forEach _underbarrel;
};
};
//};
};
} foreach _wpList;
@ -125,7 +150,32 @@ _clipBoard = _clipBoard + format["%2%3// Throwables %1",endl,endl,endl];
_clipBoard = _clipBoard + format["%2%3// Unknown %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnUnknown;
_clipBoard = _clipBoard + format["%2%3// Magazines %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnMagazines;
_clipBoard = _clipBoard + format["%2%3// Optics %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnOptics;
_clipBoard = _clipBoard + format["%2%3// Muzzles %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnMuzzles;
_clipBoard = _clipBoard + format["%2%3// Pointers %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnPointers;
_clipBoard = _clipBoard + format["%2%3// Underbarrel %1",endl,endl,endl];
{
_clipBoard = _clipBoard + format['"%1%",%2',_x,endl]
}forEach _wpnUnderbarrel;
copyToClipboard _clipBoard;

View File

@ -2,7 +2,7 @@
Original script by KiloSwiss
https://epochmod.com/forum/topic/32239-howto-get-available-weapons-mod-independent/
Modified and enhanced by GhostriderDbD
5/22/17
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
@ -27,6 +27,10 @@ _wpnShotGun = []; //Shotguns
_wpnThrow = []; // throwables
_wpnUnknown = []; //Misc
_wpnMagazines = [];
_wpnOptics = [];
_wpnPointers = [];
_wpnMuzzles = [];
_aBaseNames = [];
_wpList = (configFile >> "cfgWeapons") call BIS_fnc_getCfgSubClasses;
@ -67,6 +71,28 @@ _wpList sort true;
case "Throw" : {_wpnThrow pushBack _baseName};
default{_wpnUnknown pushBack _baseName};
};
// Get options for magazines and attachments for that weapon and store these if they are not duplicates for items already listed.
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _baseName >> "magazines");
{
if !(_x in _wpnMagazines) then {_wpnMagazines pushback _x};
}forEach _ammoChoices;
_optics = getArray (configfile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
{
if !(_x in _wpnOptics) then {_wpnOptics pushback _x};
}forEach _optics;
_pointers = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
{
if !(_x in _wpnPointers) then {_wpnPointers pushback _x};
}forEach _pointers;
_muzzles = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
{
if !(_x in _wpnMuzzles) then {_wpnMuzzles pushback _x};
}forEach _muzzles;
_underbarrel = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
{
if !(_x in _wpnUnderbarrel) then {_wpnUnderbarrel pushback _x};
}forEach _underbarrel;
};
};
//};
@ -205,5 +231,65 @@ _clipBoard = _clipBoard + format["%2%3// Unknown %1",endl,endl,endl];
};
}forEach _wpnUnknown;
_clipBoard = _clipBoard + format["%2%3// Magazines %1",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 150; };%2",_x,endl];
};
}forEach _wpnMagazines;
_clipBoard = _clipBoard + format["%2%3// Optics %1",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 150; };%2",_x,endl];
};
}forEach _wpnOptics;
_clipBoard = _clipBoard + format["%2%3// Muzzles %1",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 150; };%2",_x,endl];
};
}forEach _wpnMuzzles;
_clipBoard = _clipBoard + format["%2%3// Pointers %1",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 150; };%2",_x,endl];
};
}forEach _wpnPointers;
_clipBoard = _clipBoard + format["%2%3// Underbarrel %1",endl,endl,endl];
{
if (DBD_priceConfiguration == "Exile") then
{
_clipboard = _clipboard + format["class %1 { quality = 3; price = 150; };%2",_x,endl];
};
if (DBD_priceConfiguration == "Epoch") then
{
_clipboard = _clipboard + format["class %1 { price = 150; };%2",_x,endl];
};
}forEach _wpnUnderbarrel;
copyToClipboard _clipBoard;
systemChat "Weapon Pricelist Generated";

View File

@ -15,15 +15,15 @@ _allWearableRoots = ["Pistol","Rifle","Launcher"];
_allWearableTypes = ["AssaultRifle","MachineGun","SniperRifle","Shotgun","Rifle","Pistol","SubmachineGun","Handgun","MissileLauncher","RocketLauncher","Throw","GrenadeCore"];
_addedBaseNames = [];
_allBannedWearables = [];
_uniforms = []; //Assault Rifles
_headgear = []; //Assault Rifles with GL
_glasses = []; //Light Machine Guns
_masks = []; //Sub Machine Guns
_backpacks = []; //Designated Marksman Rifles
_uniforms = [];
_headgear = [];
_glasses = [];
_masks = [];
_backpacks = [];
_vests = [];
_goggles = []; //Sniper rifles
_binocs = []; //HandGuns/Pistols
_NVG = []; //Shotguns // NVGoggles
_goggles = [];
_binocs = [];
_NVG = [];
//_wpnThrow = []; // throwables
//_wpnUnknown = []; //Misc
@ -116,3 +116,5 @@ _clipBoard = _clipBoard + format["%2%3// Unknown %1",endl,endl,endl];
}forEach _wpnUnknown;
*/
copyToClipboard _clipBoard;
_clipboard

View File

@ -15,15 +15,15 @@ _allWearableRoots = ["Pistol","Rifle","Launcher"];
_allWearableTypes = ["AssaultRifle","MachineGun","SniperRifle","Shotgun","Rifle","Pistol","SubmachineGun","Handgun","MissileLauncher","RocketLauncher","Throw","GrenadeCore"];
_addedBaseNames = [];
_allBannedWearables = [];
_uniforms = []; //Assault Rifles
_headgear = []; //Assault Rifles with GL
_glasses = []; //Light Machine Guns
_masks = []; //Sub Machine Guns
_backpacks = []; //Designated Marksman Rifles
_uniforms = [];
_headgear = [];
_glasses = [];
_masks = [];
_backpacks = [];
_vests = [];
_goggles = []; //Sniper rifles
_binocs = []; //HandGuns/Pistols
_NVG = []; //Shotguns // NVGoggles
_goggles = [];
_binocs = [];
_NVG = [];
//_wpnThrow = []; // throwables
//_wpnUnknown = []; //Misc
@ -193,3 +193,5 @@ _clipBoard = _clipBoard + format["%2%3// Unknown %1",endl,endl,endl];
}forEach _wpnUnknown;
*/
copyToClipboard _clipBoard;
_clipBoard

View File

@ -4,14 +4,21 @@ How To Use This Tool.
2) Start the Eden Editor.
3) Open the testConfig.Altis mission.
You are now ready to generate the class names. The tools copy these to the clipboard. All you need to do to generate a list of classnames is select the tool, Alt-Tab out of Arma, and paste the contents of the clipboard into a text editor such as notepad ++.
For each category (e.g., uniforms, weapons, vehicles) there are two tools.
One generates a simple list of class names which could be used when configuring traders for Exile.
The second will generate a pre-configured price list using either Epoch or Exile formats.
You can determine which format of price list will be generated by changing DBD_priceConfiguration in init.sqf.
You are now ready to generate the class names. The tools copy these to the clipboard.
All you need to do to generate a list of classnames:
- is select the tool for the category for which you want to generate lists of class names,
- Alt-Tab out of Arma,
- and paste the contents of the clipboard into a text editor such as notepad ++.
For each category (e.g., uniforms, weapons, vehicles) the tools will generate three types of lists:
- a list of class names in quotes, useful for putting together lists of items that are available through certain traders.
- pricelists formated in either Epoch or Exile format (which, of course need prices adjusted).
- a list suitable for addition to either the loot tables in Epoch or the loot table compiler in Exile.
You can determine which format of price list will be generated by changing GRG_mod in init.sqf.
Credits:
This tool uses Kronzky's string library: http://www.kronzky.info/snippets/strings/index.htm
The algorithm for extracting weapons class names is derived from one posted by KiloSwiss on EpochMod:
https://epochmod.com/forum/topic/32239-howto-get-available-weapons-mod-independent/
@ -21,7 +28,7 @@ License
http://creativecommons.org/licenses/by-nc-sa/4.0/
there is no charge to use these tools.
There is no charge to use these tools.
You may modify any of the tools as you like.
Please give credit to me and those listed above if redistributing modified code.

71
testConfig.Altis/help.sqf Normal file
View File

@ -0,0 +1,71 @@
disableSerialization;
["",0,0.2,10,0,0,8] spawn BIS_fnc_dynamicText;
createDialog "RscDisplayWelcome";
_display = findDisplay 999999;
_text1 = _display displayCtrl 1100;
_buttonSpoiler = _display displayCtrl 2400;
_textSpoiler = _display displayCtrl 1101;
_text2 = _display displayCtrl 1102;
_message = _message + "<t align='left' size='1' shadow='0'><t color='#ff9900'>General rules:</t><br/><br/>";
_message = _message + "We ask that you follow just a few basic rules.<br/><br/>";
_message = _message + "<br/>";
_message = _message + "* There is NO PVP allowed except in designated PVP Zones, should these be present on the server.<br/><br/>";
_message = _message + "* STEALING from players, vehicles, bases or corpses is not allowed.<br/><br/>";
_message = _message + "* Please be respectful toward other players<br/>";
_message = _message + "* Foul language will result in an automatick kick.<br/>";
_message = _message + "* Hacking, taking advantage of glitches or dupping is just a no-no.<br/>";
_message = _message + "* Please Respect Admins: They work hard to keep order and help players with issues.<br/><br/><br/>";
_message = _message + "* To keep language respectful you will be kicked for using certain words in chat. <br/>";
_message = _message + "* This is not intended to stiffle play but to maintain a polite decorum.<br/>";
_message = _message + "<a color='#ff9900'>Base Building Rules:</a><br/><br/>";
_message = _message + "* Please do not build closer thaan 150 meeters from the nearest building or structure.<br/>";
_message = _message + "* Your flag or frequency jammer may block spawning of loot for other players.<br/>";
_message = _message + "* Please do Not block roads.<br/><br/>";
_message = _message + "* Do Not build in airfields or place safes at these locations.<br/><br/>";
_message = _message + "* Please do not build snipping towers at strongholds.<br/>";
_message = _message + "<a color='#ff9900'>Mission Rules:</a><br/><br/>";
_message = _message + "* Call Missions in Side Chat AND place a marker with your name on the map in Side Chat.<br/><br/>";
_message = _message + "* Call missions once you are ready to go there.<br/><br/>";
_message = _message + "* Each player or group may only claim one mission at a time.<br/><br/>";
_message = _message + "<a color='#ff9900'>PVP Zone Rules:</a><br/><br/>";
_message = _message + "* Anything goes in PVP Zones.<br/><br/>";
_message = _message + "<a color='#ff9900'>Player Tips:</a><br/><br/>";
_message = _message + "* AI are sneaky and the last few AI at a mission often lay hidden and waiting for unwary players<br/><br/>";
_message = _message + "* Grenades and HE rounds are your friend, especially at town invasions<br/><br/>";
_message = _message + "* You can starve or die of thrist in Exile - never leave home without snacks<br/><br/>";
_message = _message + "* You can die of hypothermia on Namalsk - bundle up, light fires, bring thermal buddies<br/><br/>";
_message = _message + "* Missions tend to spawn in certain locations. If you build there do not be surprised if AI are waiting<br/><br/>";
_message = _message + "* If you build near missions or Mafia locations the AI may destroy any vehicles left outside even if you are not in-game<br/><br/>";
_message = _message + "* Arma and Exile are glitchy. Do not park vehicles/aircraft on roofs if you are not prepared for them to go Boom<br/><br/>";
_message = _message + "* Use the grid function to place pieces oriented north/south and park vehicles headed North to reduce issues with them going Boom<br/><br/>";
_message = _message + "* Remember that players and AI share the same roads.<br/><br/>";
_message = _message + "* Admins are here to keep order and enforce rules. They volunteer their time based on a love of Arma. Please respect them.<br/><br/>";
_message = _message + "<a color='#ff9900'>Roles of our Admins:</a><br/><br/>";
_message = _message + "* Our Admins volunteer their time to keep our servers running smoothly<br/><br/>";
_message = _message + "* Please treat them with the respect you would ask if you fulfilled their roles<br/><br/>";
_message = _message + "* Admins are responsible for ensuring that players adhere to our rules as stated above<br/><br/>";
_message = _message + "* If you have an issue with a player please check our teamspeak or post a report of the incident on our website or discord<br/><br/>";
_message = _message + "* Admins MAY offer assistance to players who are getting started, or who lost gear or vehicles. <br/><br/>";
_message = _message + "* However, we are not responsible for damaged or destroyed vehicles, missing gear or lost tabs or respect<br/><br/>";
_message = _message + "Have fun and play fair. <a color='#ff9900'></a><br/><br/><t/>";
_text1 ctrlSetStructuredText (parseText _message);
_positionText1 = ctrlPosition _text1;
_yText1 = _positionText1 select 1;
_hText1 = ctrlTextHeight _text1;
_text1 ctrlSetPosition [_positionText1 select 0, _yText1, _positionText1 select 2, _hText1];
_text1 ctrlCommit 0;
_buttonSpoiler ctrlSetFade 1;
_buttonSpoiler ctrlCommit 0;
_buttonSpoiler ctrlEnable false;
_textSpoiler ctrlSetFade 1;
_textSpoiler ctrlCommit 0;
_text2 ctrlSetFade 1;
_text2 ctrlCommit 0;

View File

@ -9,24 +9,21 @@
*/
// load string library
nul=[] execVM "KRON_Strings.sqf";
DBD_priceConfiguration = "Exile"; // Options are "Exile" or "Epoch". This configuration pertains only to generating pre-formated price lists.
//nul=[] execVM "KRON_Strings.sqf";
GRG_mod = "Exile"; // Options are "Exile" or "Epoch". This configuration pertains only to generating pre-formated price lists.
GRG_includedWeaponMagazines = false;
GRG_configuratorPathName = "ExcludedClassNames\";
#include "code\variables.sqf";
#include "code\functions.sqf";
player addAction ["Vehicles","vehicles.sqf", [], 9];
player addAction ["Weapons","weapons.sqf",[], 8.9];
player addAction ["Magazines","magazines.sqf", 8.7];
player addAction ["Wearables","wearables.sqf", 8.8];
player addAction["Run vehiclesConfig","vehiclesConfig.sqf"];
player addAction["Run vehiclesPricelist","vehiclesPriceList.sqf"];
player addAction["Run airConfig","airConfig.sqf"];
player addAction["Run airPriceList","airPriceList.sqf"];
player addAction["Run weaponsConfig","weaponsConfig.sqf"];
player addAction["Run weaponsPriceList","weaponsPriceList.sqf"];
player addAction["Run magazinesConfig","magazinesConfig.sqf"];
player addAction["Run magazinesPriceList","magazinesPriceList.sqf"];
player addAction["Run wearablesConfig","wearablesConfig.sqf"];
player addAction["Run wearablesPriceList","wearablesPriceList.sqf"];
player addAction["Run headgearConfig","headgearConfig.sqf"];
player addAction["Run headgearPriceList","headgearPriceList.sqf"];
player addAction["Run vestsConfig","vestsConfig.sqf"];
player addAction["Run vestsPriceList","vestsPriceList.sqf"];
player addAction["Run uniformsConfig","uniformsConfig.sqf"];
player addAction["Run uniformsPriceList","uniformsPriceList.sqf"];

View File

@ -0,0 +1,102 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
_baseMagazines = [];
#include "ExcludedClassNames\baseMagazines.sqf"
_cfgMagazines = (configfile >> "CfgMagazines") call BIS_fnc_getCfgSubClasses;
//_cfgMagazines sort true;
_sortedMagazines = [];
_clipboard = "";
_wpnSmokeShell = []; // "B_IR_Grenade"
_wpnLauncherRound = [];
_wpnMagazines = [];
_wpnVehicleAmmo = [];
_wpnMines = []; // "ATMine_Range_Mag" "SatchelCharge_Remote_Mag" "DemoCharge_Remote_Mag" "IEDUrbanSmall_Remote_Mag"
_isMagazine = true;
_scannedMags = [];
{
//diag_log format["Magazine = %1",_x];
_isKindOf = (_x isKindOF ["CA_Magazine", configFile >> "CfgMagazines"]);
if (true) then
{
//diag_log format["Acceptable Magazine = %1",_x];
if (_isKindOf and !(_x in _baseMagazines)) then
{
//diag_log format["Evaluated Magazine = %1",_x];
//if (!(_x isKindOF ["CA_LauncherMagazine", configFile >> "CfgMagazines"]) && !(_x isKindOF ["HandGrenade", configFile >> "CfgMagazines"]) && !(_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) && !(_x isKindOf ["Exile_AbstractItem", configFile >> "CfgMagazines"])) then {_wpnMagazines pushBack _x};
if (_x isKindOF ["CA_LauncherMagazine", configFile >> "CfgMagazines"]) then {_wpnLauncherRound pushBack _x; _scannedMags pushBack _x;};
if(_x isKindOF ["HandGrenade", configFile >> "CfgMagazines"]) then {_wpnSmokeShell pushBack _x; _scannedMags pushBack _x;};
if (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) then {_wpnVehicleAmmo pushBack _x; _scannedMags pushBack _x;};
if (_x isKindOf ["Exile_AbstractItem", configFile >> "CfgMagazines"]) then { _scannedMags pushBack _x;}; // Ignore these for now
if !(_x in _scannedMags) then {_wpnMagazines pushBack _x; _scannedMags pushBack _x;};
};
};
}forEach _cfgMagazines;
if (GRG_mod == "Exile") then
{
_clipboard = _clipboard + GRG_Exile_TraderItemLists_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipboard + GRG_Epoch_ItemLists_Header;
};
_clipboard = _clipboard + format["%1%2// Grenades, Smoke Grenades, Chemlights and Flares%3",endl,endl,endl];
_temp = [_wpnSmokeShell] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Launcher Rounds%3",endl,endl,endl];
_temp = [_wpnLauncherRound] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Vehicle Ammo%3",endl,endl,endl];
_temp = [_wpnVehicleAmmo] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Pricelist_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Pricelist_Header;
};
_clipboard = _clipboard + format["%1%2// Grenades, Smoke Grenades, Chemlights and Flares%3",endl,endl,endl];
_temp = [_wpnSmokeShell] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Launcher Rounds%3",endl,endl,endl];
_temp = [_wpnLauncherRound] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Vehicle Ammo%3",endl,endl,endl];
_temp = [_wpnVehicleAmmo] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Loottable_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Loottable_Header;
};
_clipboard = _clipboard + format["%1%2// Grenades, Smoke Grenades, Chemlights and Flares%3",endl,endl,endl];
_temp = [_wpnSmokeShell] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Launcher Rounds%3",endl,endl,endl];
_temp = [_wpnLauncherRound] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1%2// Vehicle Ammo%3",endl,endl,endl];
_temp = [_wpnVehicleAmmo] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
copyToClipboard _clipboard;
hint format["Special Magazines Config Extractor Run complete%1Output copied to clipboard%1Paste it into a text editor to acces",endl];

View File

@ -8,7 +8,7 @@ class EditorData
toggles=1;
class ItemIDProvider
{
nextID=3;
nextID=5;
};
class Camera
{
@ -21,25 +21,17 @@ class EditorData
binarizationWanted=0;
addons[]=
{
"A3_Characters_F_Exp",
"A3_Soft_F_Exp_Offroad_01"
"A3_Characters_F"
};
class AddonsMetaData
{
class List
{
items=2;
items=1;
class Item0
{
className="A3_Characters_F_Exp";
name="Arma 3 Apex - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item1
{
className="A3_Soft_F_Exp";
name="Arma 3 Apex - Unarmored Land Vehicles";
className="A3_Characters_F";
name="Arma 3 Alpha - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
@ -72,7 +64,7 @@ class Mission
};
class Entities
{
items=2;
items=1;
class Item0
{
dataType="Group";
@ -85,59 +77,22 @@ class Mission
dataType="Object";
class PositionInfo
{
position[]={15192.831,17.911438,16745.836};
position[]={14380.203,17.801437,15920.507};
};
side="West";
flags=6;
flags=7;
class Attributes
{
isPlayer=1;
};
id=2;
type="B_GEN_Commander_F";
id=4;
type="B_RangeMaster_F";
};
};
class Attributes
{
};
class CrewLinks
{
class LinkIDProvider
{
nextID=1;
};
class Links
{
items=1;
class Item0
{
linkID=0;
item0=2;
item1=1;
class CustomData
{
role=1;
};
};
};
};
id=0;
};
class Item1
{
dataType="Object";
class PositionInfo
{
position[]={15192.831,19.521503,16745.816};
};
side="West";
flags=6;
class Attributes
{
aiRadarUsage=-861312960;
};
id=1;
type="B_GEN_Offroad_01_gen_F";
id=3;
};
};
};

View File

@ -0,0 +1,96 @@
/*
Class Name Extraction Tool
By GhostriderDbD
For Arma 3
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
_vehiclesBase = [];
#include "ExcludedClassNames\baseVehicles.sqf"
_veh = (configfile >> "CfgVehicles") call BIS_fnc_getCfgSubClasses;
//_veh sort true;
systemChat format[" _veh contains %1 entries",count _veh];
_index = 0;
_cars = [];
_boats = [];
_air = [];
_exile = 0;
{
if (_x isKindOf "Car" && !(_x in _vehiclesBase)) then
{
_cars pushback _x;
};
if (_x isKindOf "Air" && !(_x in _vehiclesBase)) then
{
_air pushback _x;
};
if (_x isKindOf "Boat" && !(_x in _vehiclesBase)) then
{
_boat pushback _x;
};
}forEach _veh;
_clipBoard = "";
if (GRG_mod == "Exile") then
{
_clipboard = _clipboard + GRG_Exile_TraderItemLists_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipboard + GRG_Epoch_ItemLists_Header;
};
_clipboard = _clipboard + format["// Cars%1%2",endl,endl,endl];
_temp = [_cars] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Boats%2%3",endl,endl,endl];
_temp = [_boats] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Air%2%3",endl,endl,endl];
_temp = [_air] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Pricelist_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Pricelist_Header;
};
_clipboard = _clipboard + format["// Cars%1%2",endl,endl,endl];
_temp = [_cars] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Boats%2%3",endl,endl,endl];
_temp = [_boats] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Air%2%3",endl,endl,endl];
_temp = [_air] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Loottable_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Loottable_Header;
};
_clipboard = _clipboard + format["// Cars%1%2",endl,endl,endl];
_temp = [_cars] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Boats%2%3",endl,endl,endl];
_temp = [_boats] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%1// Air%2%3",endl,endl,endl];
_temp = [_air] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
copyToClipboard _clipboard;
hint format["Vehicles Config Extractor Run complete%1Output copied to clipboard%1Paste it into a text editor to acces",endl];

View File

@ -0,0 +1,326 @@
/*
Original script by KiloSwiss
https://epochmod.com/forum/topic/32239-howto-get-available-weapons-mod-independent/
Modified and enhanced by GhostriderDbD
7/20/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
_weaponsBase = [];
#include "ExcludedClassNames\baseWeapons.sqf"
_knownWeapons = [];
_allWeaponRoots = ["Pistol","Rifle","Launcher"];
_allWeaponTypes = ["AssaultRifle","MachineGun","SniperRifle","Shotgun","Rifle","Pistol","SubmachineGun","Handgun","MissileLauncher","RocketLauncher","Throw","GrenadeCore"];
_addedBaseNames = [];
_allBannedWeapons = [];
_wpnAR = []; //Assault Rifles
_wpnARG = []; //Assault Rifles with GL
_wpnLMG = []; //Light Machine Guns
_wpnSMG = []; //Sub Machine Guns
_wpnDMR = []; //Designated Marksman Rifles
_wpnLauncher = [];
_wpnSniper = []; //Sniper rifles
_wpnHandGun = []; //HandGuns/Pistols
_wpnShotGun = []; //Shotguns
_wpnThrow = []; // throwables
_wpnUnknown = []; //Misc
_wpnUnderbarrel = [];
_wpnMagazines = [];
_wpnOptics = [];
_wpnPointers = [];
_wpnMuzzles = [];
_aBaseNames = [];
_wpList = (configFile >> "cfgWeapons") call BIS_fnc_getCfgSubClasses;
//_wpList sort true;
{
_item = _x;
_isWeap = false;
_isKindOf = false;
{
_isKindOf = (_item isKindOF [_x, configFile >> "CfgWeapons"]);
if (_isKindOf) exitWith {};
} forEach _allWeaponRoots;
if (_isKindOf) then
{
//if (getnumber (configFile >> "cfgWeapons" >> _x >> "scope") == 2) then {
_itemType = _x call bis_fnc_itemType;
_itemCategory = _itemType select 1;
//diag_log format["pullWepClassNames:: _itemType = %1 || _itemCategory = %2",_itemType, _itemCategory];
if (((_itemType select 0) == "Weapon") && ((_itemType select 1) in _allWeaponTypes)) then {
_baseName = _x call BIS_fnc_baseWeapon;
//diag_log format["pullWepClassNames:: Processing for _baseName %3 || _itemType = %1 || _itemCategory = %2",_itemType, _itemCategory, _baseName];
if (!(_baseName in _addedBaseNames) && !(_baseName in _allBannedWeapons)) then {
_addedBaseNames pushBack _baseName;
switch(_itemCategory)do{
case "AssaultRifle" :{
if(count getArray(configfile >> "cfgWeapons" >> _baseName >> "muzzles") > 1)then[{_wpnARG pushBack _baseName},{_wpnAR pushBack _baseName}];
};
case "MachineGun" :{_wpnLMG pushBack _baseName};
case "SubmachineGun" :{_wpnSMG pushBack _baseName};
case "Rifle" :{_wpnDMR pushBack _baseName};
case "SniperRifle" :{_wpnSniper pushBack _baseName};
case "Shotgun" :{_wpnShotGun pushBack _baseName};
case "Handgun" :{_wpnHandGun pushBack _baseName};
case "MissileLauncher" :{_wpnLauncher pushBack _baseName};
case "RocketLauncher" :{_wpnLauncher pushBack _baseName};
case "DMR" : {_wpnDMR pushBack _baseName};
case "Throw" : {_wpnThrow pushBack _baseName};
default{_wpnUnknown pushBack _baseName};
};
// Get options for magazines and attachments for that weapon and store these if they are not duplicates for items already listed.
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _baseName >> "magazines");
{
if !(_x in _wpnMagazines) then {_wpnMagazines pushback _x};
}forEach _ammoChoices;
_optics = getArray (configfile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
{
if !(_x in _wpnOptics) then {_wpnOptics pushback _x};
}forEach _optics;
_pointers = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
{
if !(_x in _wpnPointers) then {_wpnPointers pushback _x};
}forEach _pointers;
_muzzles = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
{
if !(_x in _wpnMuzzles) then {_wpnMuzzles pushback _x};
}forEach _muzzles;
_underbarrel = getArray (configFile >> "CfgWeapons" >> _baseName >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
{
if !(_x in _wpnUnderbarrel) then {_wpnUnderbarrel pushback _x};
}forEach _underbarrel;
};
};
};
} foreach _wpList;
_clipboard = "";
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_TraderItemLists_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_ItemLists_Header;
};
_clipboard = _clipboard + format["%2%3// // Assault Rifles %1",endl,endl,endl];
_temp = [_wpnAR] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Assault Rifles with GL %1",endl,endl,endl];
_temp = [_wpnARG] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// LMGs %1",endl,endl,endl];
_temp = [_wpnLMG] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// SMGs %1",endl,endl,endl];
_temp = [_wpnSMG] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Snipers %1",endl,endl,endl];
_temp = [_wpnSniper] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// DMRs %1",endl,endl,endl];
_temp = [_wpnDMR] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Launchers %1",endl,endl,endl];
_temp = [_wpnLauncher] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Handguns %1",endl,endl,endl];
_temp = [_wpnHandGun] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Shotguns %1",endl,endl,endl];
_temp = [_wpnShotGun] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Throwables %1",endl,endl,endl];
_temp = [_wpnThrow] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Unknown %1",endl,endl,endl];
_temp = [_wpnUnknown] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Magazines %1",endl,endl,endl];
_temp = [_wpnMagazines] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Optics %1",endl,endl,endl];
_temp = [_wpnOptics] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Muzzles %1",endl,endl,endl];
_temp = [_wpnMuzzles] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Pointers %1",endl,endl,endl];
_temp = [_wpnPointers] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Underbarrel %1",endl,endl,endl];
_temp = [_wpnUnderbarrel] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Pricelist_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Pricelist_Header;
};
_clipboard = _clipboard + format["%2%3// // Assault Rifles %1",endl,endl,endl];
_temp = [_wpnAR] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Assault Rifles with GL %1",endl,endl,endl];
_temp = [_wpnARG] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// LMGs %1",endl,endl,endl];
_temp = [_wpnLMG] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// SMGs %1",endl,endl,endl];
_temp = [_wpnSMG] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Snipers %1",endl,endl,endl];
_temp = [_wpnSniper] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// DMRs %1",endl,endl,endl];
_temp = [_wpnDMR] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Launchers %1",endl,endl,endl];
_temp = [_wpnLauncher] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Handguns %1",endl,endl,endl];
_temp = [_wpnHandGun] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Shotguns %1",endl,endl,endl];
_temp = [_wpnShotGun] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Throwables %1",endl,endl,endl];
_temp = [_wpnThrow] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Unknown %1",endl,endl,endl];
_temp = [_wpnUnknown] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Magazines %1",endl,endl,endl];
_temp = [_wpnMagazines] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Optics %1",endl,endl,endl];
_temp = [_wpnOptics] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Muzzles %1",endl,endl,endl];
_temp = [_wpnMuzzles] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Pointers %1",endl,endl,endl];
_temp = [_wpnPointers] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Underbarrel %1",endl,endl,endl];
_temp = [_wpnUnderbarrel] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Loottable_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Loottable_Header;
};
_clipboard = _clipboard + format["%2%3// // Assault Rifles %1",endl,endl,endl];
_temp = [_wpnAR] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Assault Rifles with GL %1",endl,endl,endl];
_temp = [_wpnARG] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// LMGs %1",endl,endl,endl];
_temp = [_wpnLMG] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// SMGs %1",endl,endl,endl];
_temp = [_wpnSMG] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Snipers %1",endl,endl,endl];
_temp = [_wpnSniper] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// DMRs %1",endl,endl,endl];
_temp = [_wpnDMR] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Launchers %1",endl,endl,endl];
_temp = [_wpnLauncher] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Handguns %1",endl,endl,endl];
_temp = [_wpnHandGun] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Shotguns %1",endl,endl,endl];
_temp = [_wpnShotGun] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Throwables %1",endl,endl,endl];
_temp = [_wpnThrow] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Unknown %1",endl,endl,endl];
_temp = [_wpnUnknown] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Magazines %1",endl,endl,endl];
_temp = [_wpnMagazines] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Optics %1",endl,endl,endl];
_temp = [_wpnOptics] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Muzzles %1",endl,endl,endl];
_temp = [_wpnMuzzles] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Pointers %1",endl,endl,endl];
_temp = [_wpnPointers] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Underbarrel %1",endl,endl,endl];
_temp = [_wpnUnderbarrel] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
copyToClipboard _clipBoard;
hint format["Weapons Config Extractor Run complete%1Output copied to clipboard%1Paste it into a text editor to acces",endl];

View File

@ -0,0 +1,158 @@
/*
some of the algorithm/script is based on a script by KiloSwiss
https://epochmod.com/forum/topic/32239-howto-get-available-weapons-mod-independent/
Modified and enhanced by GhostriderDbD
5/22/17
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
_baseWearables = [];
#include "ExcludedClassNames\baseWearables.sqf"
_allWearableRoots = ["Pistol","Rifle","Launcher"];
_allWearableTypes = ["AssaultRifle","MachineGun","SniperRifle","Shotgun","Rifle","Pistol","SubmachineGun","Handgun","MissileLauncher","RocketLauncher","Throw","GrenadeCore"];
_addedBaseNames = [];
_allBannedWearables = [];
_uniforms = [];
_headgear = [];
_glasses = [];
_masks = [];
_backpacks = [];
_vests = [];
_goggles = [];
_binocs = [];
_NVG = [];
_wearablesList = (configfile >> "cfgGlasses") call BIS_fnc_getCfgSubClasses;
{
if ( !(_x in _baseWearables) && !(_x in _addedBaseNames) ) then
{
_addedBaseNames pushBack _x;
_glasses pushBack _x;
};
}forEach _wearablesList;
_aBaseNames = [];
_wearablesList = (configFile >> "cfgWeapons") call BIS_fnc_getCfgSubClasses;
//_wearablesList sort true;
{
if ( !(_x in _baseWearables) && !(_x in _addedBaseNames) ) then
{
_addedBaseNames pushBack _x;
// Uniforms
if (_x isKindOF ["Uniform_Base", configFile >> "CfgWeapons"]) then {_uniforms pushBack _x};
// Headgear / Masks
if ( (_x isKindOF ["HelmetBase", configFile >> "CfgWeapons"]) or (_x isKindOF ["H_HelmetB", configFile >> "CfgWeapons"]) ) then {_headgear pushBack _x};
// Goggles
if (_x isKindOF ["GoggleItem", configFile >> "CfgWeapons"]) then {_goggles pushBack _x};
// NVG
if (_x isKindOF ["NVGoggles", configFile >> "CfgWeapons"]) then {_NVG pushBack _x};
// Masks
// Vests
if ( (_x isKindOF ["Vest_Camo_Base", configFile >> "CfgWeapons"]) or (_x isKindOF ["Vest_NoCamo_Base", configFile >> "CfgWeapons"]) ) then {_vests pushBack _x};
// Backpacks
if (_x isKindOF ["Bag_Base", configFile >> "CfgVehicles"]) then {_backpacks pushBack _x};
};
} foreach _wearablesList;
_clipBoard = "";
if (GRG_mod == "Exile") then
{
_clipboard = _clipboard + GRG_Exile_TraderItemLists_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipboard + GRG_Epoch_ItemLists_Header;
};
_clipboard = _clipboard + format["%2%3// // Uniforms %1",endl,endl,endl];
_temp = [_uniforms] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Headgear / Masks %1",endl,endl,endl];
_temp = [_headgear] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Goggles %1",endl,endl,endl];
_temp = [_goggles] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Vests %1",endl,endl,endl];
_temp = [_vests] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Backpacks %1",endl,endl,endl];
_temp = [_backpacks] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3//Glasses %1",endl,endl,endl];
_temp = [_glasses] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// NVG %1",endl,endl,endl];
_temp = [_NVG] call fn_generateItemList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Pricelist_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Pricelist_Header;
};
_clipboard = _clipboard + format["%2%3// // Uniforms %1",endl,endl,endl];
_temp = [_uniforms] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Headgear / Masks %1",endl,endl,endl];
_temp = [_headgear] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Goggles %1",endl,endl,endl];
_temp = [_goggles] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Vests %1",endl,endl,endl];
_temp = [_vests] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Backpacks %1",endl,endl,endl];
_temp = [_backpacks] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3//Glasses %1",endl,endl,endl];
_temp = [_glasses] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// NVG %1",endl,endl,endl];
_temp = [_NVG] call fn_generatePriceList;
_clipBoard = _clipBoard + _temp;
if (GRG_mod == "Exile") then
{
_clipboard = _clipBoard + GRG_Exile_Loottable_Header;
};
if (GRG_mod == "Epoch") then
{
_clipboard = _clipBoard + GRG_Epoch_Loottable_Header;
};
_clipboard = _clipboard + format["%2%3// // Uniforms %1",endl,endl,endl];
_temp = [_uniforms] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Headgear / Masks %1",endl,endl,endl];
_temp = [_headgear] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipboard = _clipboard + format["%2%3// Goggles %1",endl,endl,endl];
_temp = [_goggles] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Vests %1",endl,endl,endl];
_temp = [_vests] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// Backpacks %1",endl,endl,endl];
_temp = [_backpacks] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3//Glasses %1",endl,endl,endl];
_temp = [_glasses] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
_clipBoard = _clipBoard + format["%2%3// NVG %1",endl,endl,endl];
_temp = [_NVG] call fn_generateLootTableEntries;
_clipBoard = _clipBoard + _temp;
copyToClipboard _clipBoard;
hint format["Wearables Config Extractor Run complete%1Output copied to clipboard%1Paste it into a text editor to acces",endl];